diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..a2f2b7f346c8115ede5f718e3afa0906bd40606e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,16 @@
+.project
+.settings
+.classpath
+.metadata
+
+/bin/
+/ttcn3build/
+/.apt_generated/
+
+/lib/
+/tracefiles/
+/build/
+/clf/
+/tt3plugins/
+*log*
+taconfig.xml
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
index a0190691dc9b6dd49e1c4ffa41a963518932b0ba..7f0c753616b09df31f8192a165902f9b8d2986d7 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
diff --git a/.project b/.project
deleted file mode 100644
index 696eeef40740f5b604655cbe29b990e8cfb9bbc4..0000000000000000000000000000000000000000
--- a/.project
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
+ * @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_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 + 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_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; + 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_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; + 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_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; + 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
+ * @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")){
+
+ //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
+ }*/
+ encode_ProtocolFilter(filter, (EnumeratedValue)value_.getField("protocol"));
+
+ write(filter," and ");
+ encode_InterfaceInfoList(filter,(RecordOfValue) value_.getField("interfaceInfos"));
+
+ write(filter,")");
+
+ //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:protocol= "ip";break;
+ case 1:protocol= "udp";break;
+ case 2:/**/
+ case 3:protocol= "(tcp or sctp)";break;
+ default:
+
+ }
+ protocol="ip"; //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 ");//commented out because of IP fragmentation
+ //encode_PortNumberList(out,(RecordOfValue)value.getField("portNumbers"));//commented out because of IP fragmentation
+
+ }
+
+ 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++) {
+ write(out,"(");
+ //RecordValue rv=(RecordValue) value.getField(i);
+ encode_InterfaceInfo(out, (UnionValue)value.getField(i));
+ write(out,")");
+ }
+ 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 0000000000000000000000000000000000000000..064d7c7d3f2d6643c9a89d9adfc9c79c1554821f
--- /dev/null
+++ b/javasrc/com/iskratel/ttcn/tci/codec/LibUpperTesterCodec/LibUpperTesterCodec.java
@@ -0,0 +1,228 @@
+/**
+ * @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:
+
+ 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);
+ }
+ //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 0000000000000000000000000000000000000000..f6b0f0ed26db24d775c30d09dbf7f33be0638ccf
--- /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 0000000000000000000000000000000000000000..793099f39327ab84ec4d93f8188dbf5712c1236f
--- /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 0000000000000000000000000000000000000000..af075075d7c9dc7099fb20c61ae2e431a69427c2
--- /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 0000000000000000000000000000000000000000..0c653fef9c4eb551c216a8f9a5c6272bf7ce6b13
--- /dev/null
+++ b/javasrc/com/iskratel/ttcn/tri/IotConnectionOffline.java
@@ -0,0 +1,395 @@
+/**
+ * @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.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.tri.TriAddressImpl;
+import com.testingtech.ttcn.tri.TriMessageImpl;
+import com.testingtech.ttcn.tri.TriStatusImpl;
+
+import jpcap.packet.Packet;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+
+public class IotConnectionOffline extends Thread/*PCAP*/ implements LocalAdapterBase {
+
+ TriCommunicationTE cte = null;
+ TriPortId comPortId = null;
+ TriPortId tsiPortId = null;
+
+ protected Logger log = null;
+
+ public static Hashtable
+ *
+ * Unlike processPacket(), this method ignores the timeout.
+ * This method also does not support "non-blocking" mode.
+ *
+ * @param count
+ * Number of packets to be captured
+ *
+ * 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 0000000000000000000000000000000000000000..e7907fd94cd016e1c5f8e337b7331aab83da38c8
--- /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 0000000000000000000000000000000000000000..e7988af7ccdf427de5431a5b9e1b0875220ac512
--- /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.
+ * 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.
+ * 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
+ * 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 0000000000000000000000000000000000000000..50e5103d9803378c8ca45d59e647758f7100613b
--- /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;inull
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
+ * 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.
+ *
+ * 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.
+ *
+ *
+ * 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.
+ * 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 0000000000000000000000000000000000000000..0f76db28205daf3ec372c3ceb871a4f04648c3dc
--- /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 0000000000000000000000000000000000000000..021e0c52e4e6dea4df1287162a8f641de858e333
--- /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 0000000000000000000000000000000000000000..3ff8a55c19eb5af78bf4fb677d1b6c5b8df86fb2
--- /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 0000000000000000000000000000000000000000..31e58ba777ebdbb7a88ad43faf79cb7858b5ee90
--- /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 0000000000000000000000000000000000000000..c75b9446338270151bee709e9dc591a9b11876f7
--- /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 0000000000000000000000000000000000000000..32cff9e0919e094f095accd4a2789c6ad5ad5a00
--- /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 0000000000000000000000000000000000000000..cd9cf370134ac94f6c74d33b686be8539ed7c594
--- /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 0000000000000000000000000000000000000000..6ce9156fae99fbebed0244be342ef8c0e9679aca
--- /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 0000000000000000000000000000000000000000..66121632414bcce8fb42de83d9ab5a1b63cdecfc
--- /dev/null
+++ b/javasrc/jpcap/package.html
@@ -0,0 +1,13 @@
+
+
+
+ *
+ *
+ * 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 0000000000000000000000000000000000000000..06ef3f5a353b67c6b3377c729e67ccb5a4e4d81e
--- /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 0000000000000000000000000000000000000000..7a2be2e3db4e9bb1c27c941650137478ddfcca99
--- /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 0000000000000000000000000000000000000000..f2c19566d64da40d9e2be160bc63b9db90b8a722
--- /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 0000000000000000000000000000000000000000..4f4002e4cf48b830eea620ad17745c754984c2de
--- /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 0000000000000000000000000000000000000000..c40713516e0622af7278b4f708deb9c192efbbec
--- /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.
+ *
+ * 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: 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 0000000000000000000000000000000000000000..071dc76c5e1f9e8eb66c0ca8c930e821c81d3938
--- /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 0000000000000000000000000000000000000000..b86e690564f67566b34dee15dfb6d8c76d9eeb0e
--- /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 0000000000000000000000000000000000000000..e479cb2d4a9692e93bf7d33a010d0480eee0de3d
--- /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 0000000000000000000000000000000000000000..8e906e190f0f0d0289f0dacf5e855916bf7cf445
--- /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 0000000000000000000000000000000000000000..dd5c3ad6b7d31d919c83fb3548699c7d6b700ea4
--- /dev/null
+++ b/javasrc/jpcap/packet/package.html
@@ -0,0 +1,11 @@
+
+
+
+
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;
- }
-
- 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(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_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;
- 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_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_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))) ))},
- {},
- {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_IMS_5097_01_gm
- * 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_IMS_5097_01_gm
- * 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_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
-
-}//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.hostPort), *},
- {mw_ViaBody_interface(v_pcscfEutAIpUrl.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 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
- 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_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn
new file mode 100644
index 0000000000000000000000000000000000000000..9680275d453990c569aa1410e78710835f02f7f4
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn
@@ -0,0 +1,1751 @@
+/**
+ * @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_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};
+ import from LibDiameter_Types_S9_AVPs all;
+
+ 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_any_Code(c_abort_Cause_AVP_Code),
+ aVP_Data := p_avpData
+ };
+
+ 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_flowStatusEnabled_flowUsageAfSignalling_SignallingSip},
+ 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_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 := *,
+ flow_Usage := *,
+ max_Requested_Bw_Ul := *,
+ max_Requested_Bw_Dl := *,
+ 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),
+ aVP_Data := SIP_E
+ }
+
+ template Flow_Status_AVP mw_flowStatus(template (present) Flow_Status_Type p_avpData) :=
+ {
+ 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_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),//
+ * 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,
+ in boolean p_checkMessage := false,
+ 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(mw_publicIdentity(v_publicIdentity))}
+ },
+ {
+ 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
+
+
+ /**
+ * 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,
+ 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:{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
+
+
+ /**
+ * 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,
+ in boolean p_checkMessage := false,
+ 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_publicIdentity(v_publicIdentity))}
+ },
+ {
+ 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
+
+
+ /**
+ * 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,
+ in boolean p_checkMessage := false,
+ 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(mw_publicIdentity(v_publicIdentity))}
+ },
+ {
+ 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
+
+
+ /**
+ * 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,
+ in boolean p_checkMessage := false,
+ 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(mw_publicIdentity(v_publicIdentity))}
+ },
+ {
+ 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}
+ },
+ {
+ 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
+
+ /**
+ * 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,
+ in boolean p_checkMessage := false,
+ 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(mw_publicIdentity(v_publicIdentity))}
+ },
+ {
+ 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:{uAA_MSG := mw_UAA_basic}
+ },
+ {0, omit},
+ "TP_CX_HSS_UAA_02 - UAA",
+ p_forward_to_mtc,
+ p_checkMessage
+ )
+ );
+ 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,
+ 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:{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
+
+ /**
+ * 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,
+ in boolean p_checkMessage := false,
+ 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(mw_publicIdentity(v_publicIdentity))}
+ },
+ {
+ 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
+
+
+} // 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 0000000000000000000000000000000000000000..cec6cb6aaee05febe453544f7d2187da7a9c8208
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn
@@ -0,0 +1,3513 @@
+/**
+ * @author STF 574
+ * @version $Id$
+ * @desc This module provides the TP behaviour functions at GM interface
+ */
+
+module AtsImsIot_TP_behavior_GM {
+
+ // 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_Templates_GM 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 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
+ * }
+ * 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,
+ * 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(
+ SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := true
+ ) runs on ImsTestCoordinator {
+ 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
+
+ // 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
+ * }
+ * }
+ */
+ function f_mtc_check_TP_GM_PCSCF_REGISTER_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 SipMessage v_sip;
+
+ // Check the first REGISTER
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {
+ mw_SipRequest(
+ 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_userInfoA.publicId, v_userInfoA.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);
+ 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_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
+
+ /**
+ * @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 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 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_userInfoA.publicId, v_userInfoA.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);
+ 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_REGISTER_02 - 200 OK",
+ 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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false
+ ) runs on ImsTestCoordinator {
+ 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_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
+ )
+ )
+ },
+ {
+ 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);
+ 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_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
+ 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 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 - 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_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 - 401 Unauthorized",
+ 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 := false
+ ) runs on ImsTestCoordinator {
+ 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 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_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
+
+ 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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)) {
+ var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
+ 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_userInfoA.publicId, v_userInfoA.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);
+ if (not(isbound(v_sip))) {
+ return;
+ }
+ // Check DeREGISTER 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_REGISTER_07 - 200 OK",
+ false,
+ p_checkMessage
+ )
+ );
+ 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 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)
+ //AXR 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 {
+
+ /**
+ * @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 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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ 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
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {
+ mw_SipRequest(
+ mw_TP_GM_PCSCF_SUBSCRIBE_01(
+ -, // FIXME Set expected value
+ mw_From_AddrUnion_TelUrl(v_userInfoA.publicId),
+ mw_To_AddrUnion_TelUrl(v_userInfoB.publicId)
+ ))
+ },
+ { mw_SipRequest(mw_SUBSCRIBE_Request_Base) },
+ {0, omit},
+ "TP_GM_PCSCF_SUBSCRIBE_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_SUBSCRIBE_01 - Response",
+ 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
+ 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 ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
+ var ImsUserInfo v_userInfoB := f_getTelUserId(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_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_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,
+ 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_SUBSCRIBE_02 - Response",
+ false,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+ }
+ } // End of function f_mtc_check_TP_GM_PCSCF_SUBSCRIBE_02
+
+ } // 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
+ * }
+ * 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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ 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
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {
+ mw_SipRequest(mw_TP_GM_PCSCF_NOTIFY_01(
+ -,
+ -, // FIXME Set expected value
+ mw_From_AddrUnion_TelUrl(v_userInfoA.publicId),
+ mw_To_AddrUnion_TelUrl(v_userInfoB.publicId)
+ ))
+ },
+ { 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,
+ 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_NOTIFY_01 - Response",
+ false,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+ }
+ } // End of function f_mtc_check_TP_GM_PCSCF_NOTIFY_01
+
+ } // 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,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+
+ 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
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ ))
+ },
+ { 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 {
+
+ /**
+ * @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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ out SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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_GM_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_GM_PCSCF_INVITE_01 - Request",
+ true,
+ p_checkMessage
+ )
+ );
+ 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
+
+ /**
+ * @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 SipInterfaceMonitor p_monitorCompRef,
+ 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);
+
+ // Check the INVITE
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ { mw_SipRequest(mw_TP_GM_PCSCF_INVITE_02(
+ -, // FIXME Set expected value
+ (
+ 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) },
+ {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 := 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);
+
+ // 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 := 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);
+
+ // 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",
+ true,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+ // Retrieve messge
+ f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
+ }
+ } // 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 {
+ * 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"
+ * ;
+ * ;;
+ * from 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_GM_PCSCF_RE_INVITE_01( // FIXME RMI To be reviewed
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ 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(
+ f_Iot_Sip_receive(
+ {
+ mw_SipRequest(mw_TP_GM_PCSCF_RE_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_GM_PCSCF_RE_INVITE_01 - Request",
+ false,
+ 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_B entity previouslyEstablishedCallWith the UE_A
+ * }
+ *
+ * Expected behaviour
+ * ensure that {
+ * when {
+ * 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 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,
+ * 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_RE_INVITE_02( // FIXME RMI To be reviewed
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ 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(
+ f_Iot_Sip_receive(
+ {
+ mw_SipRequest(mw_TP_GM_PCSCF_RE_INVITE_02(
+ -, // FIXME Set expected value
+ mw_From_AddrUnion_TelUrl(v_userInfoB.publicId),
+ mw_To_AddrUnion_TelUrl(v_userInfoA.publicId)
+ ))
+ },
+ { 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 := 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 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 := 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 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
+
+
+ } // 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 IMS_P_CSCF_A entity receives a 100_Trying
+ * from the UE_A entity
+ * }
+ * then {
+ * the IMS_P_CSCF_A entity forwards the 100_Trying
+ * to the IMS_S_CSCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_GM_PCSCF_100Trying_01(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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
+
+ /**
+ * @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(
+ SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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 := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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 := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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
+
+ 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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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
+
+ /**
+ * @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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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
+
+ 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 {
+
+ /**
+ * @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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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.callId,
+ p_sip.request.msgHeader.fromField,
+ (
+ 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) },
+ { 0, omit },
+ "TP_GM_PCSCF_200OK_01",
+ false,
+ 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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_GM_PCSCF_200OK_02
+
+ 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 {
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_GM_PCSCF_200OK_03
+
+ 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 {
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_GM_PCSCF_200OK_04
+
+ } // 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 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_01(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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
+
+ /**
+ * @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_B entity hasAchieveInitialINVITE
+ * }
+ * then {
+ * 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 IMS_P_CSCF_B entity
+ * }
+ */
+ function f_mtc_check_TP_GM_PCSCF_ACK_02(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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 := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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
+
+ 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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ -, // FIXME To be set
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ ))
+ },
+ { mw_SipRequest(mw_BYE_Request_Base) },
+ { 0, omit },
+ "TP_GM_PCSCF_BYE_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_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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ -, // FIXME To be set
+ {
+ 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_BYE_Request_Base) },
+ { 0, omit },
+ "TP_GM_PCSCF_BYE_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_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_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,
+ * Route indicating value PX_UE_B_SERVICE_ROUTE
+ * ;
+ * from the UE_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_GM_PCSCF_BYE_03(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ -, // FIXME To be set
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ ))
+ },
+ { mw_SipRequest(mw_BYE_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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ -, // FIXME To be set
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ ))
+ },
+ { mw_SipRequest(mw_BYE_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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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
+
+ 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(
+ 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.callId,
+ 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
+
+ /**
+ * @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(
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_02
+
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_03
+
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_04
+
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_GM_PCSCF_200OK_BYE_05
+
+ 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.callId,
+ 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;
+ }
+ } // 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,
+ * 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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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",
+ 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
+
+ /**
+ * @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 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 UE_B entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_GM_PCSCF_CANCEL_02(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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",
+ 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,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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",
+ 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,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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",
+ 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
+
+ } // 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(
+ 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.callId,
+ 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
+
+ /**
+ * @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(
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_02
+
+ 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 {
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_03
+
+ 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 {
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_GM_PCSCF_200OK_CANCEL_04
+
+ } // End of group ims200OkCancel
+
+ 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 a 486_INVITE
+ * }
+ * then {
+ * 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
+ * ;
+ * to the UE_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_GM_PCSCF_486INVITE_01(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // 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)
+ },
+ { 0, omit },
+ "TP_GM_PCSCF_486INVITE_01",
+ 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
+
+ /**
+ * @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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // 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)
+ },
+ { 0, omit },
+ "TP_GM_PCSCF_486INVITE_02",
+ 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,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ )
+ )
+ },
+ {
+ mw_SipResponse(mdw_4XX_Base)
+ },
+ { 0, omit },
+ "TP_GM_PCSCF_486INVITE_03",
+ 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,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ )
+ )
+ },
+ {
+ mw_SipResponse(mdw_4XX_Base)
+ },
+ { 0, omit },
+ "TP_GM_PCSCF_486INVITE_04",
+ 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
+
+ } // 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 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_GM_PCSCF_487INVITE_01(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField,
+ omit
+ )
+ )
+ },
+ {
+ mw_SipResponse(mdw_4XX_Base)
+ },
+ { 0, omit },
+ "TP_GM_PCSCF_487INVITE_01",
+ 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
+
+ /**
+ * @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_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_487INVITE_02(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ )
+ )
+ },
+ {
+ mw_SipResponse(mdw_4XX_Base)
+ },
+ { 0, omit },
+ "TP_GM_PCSCF_487INVITE_02",
+ 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,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ )
+ )
+ },
+ {
+ mw_SipResponse(mdw_4XX_Base)
+ },
+ { 0, omit },
+ "TP_GM_PCSCF_487INVITE_03",
+ 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,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ )
+ )
+ },
+ {
+ mw_SipResponse(mdw_4XX_Base)
+ },
+ { 0, omit },
+ "TP_GM_PCSCF_487INVITE_04",
+ 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
+
+ } // 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_GX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn
new file mode 100644
index 0000000000000000000000000000000000000000..7596bc0d4586027312dc4f03354d17bda475fb8c
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn
@@ -0,0 +1,1113 @@
+/*
+ * @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 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;
+ import from LibDiameter_TypesAndValues {type DIAMETER_MSG;};
+
+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,
+ 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:{ 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,
+ 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
+ *
+ * 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,
+ 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:{ 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,
+ p_checkMessage
+ )
+ );
+ 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,
+ 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:{ rAR_MSG := mw_RAR_Gx_basic }
+ },
+ {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}
+ },
+ {
+ DIAMETER_MSG:{ rAA_MSG := mw_RAA_Gx_basic }
+ },
+ {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
+
+
+ /**
+ * 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,
+ 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_Gx_basic }
+ },
+ {
+ 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 }
+ },
+ {
+ DIAMETER_MSG:{ rAA_MSG := mw_RAA_Gx_basic}
+ },
+ {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
+
+
+ /**
+ * 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,
+ 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_Gx_basic}
+ },
+ {
+ 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 }
+ },
+ {
+ DIAMETER_MSG:{ rAA_MSG := mw_RAA_basic }
+ },
+ {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
+
+
+ /**
+ * 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,
+ 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_ChargingRuleRemove }
+ },
+ {
+ DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic }
+ },
+ {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 }
+ },
+ {
+ DIAMETER_MSG:{ rAA_MSG := mw_RAA_Gx_basic }
+ },
+ {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
+
+
+} // 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
+ * 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,
+ 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:{ 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,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode }
+ },
+ {
+ DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic }
+ },
+ {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
+
+
+ /**
+ * 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."
+ *
+ *
+ *
+ * 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 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,
+ 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:{ 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,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ 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,
+ p_checkMessage
+ )
+ );
+ 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,
+ 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:{ 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,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ 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,
+ p_checkMessage
+ )
+ );
+ 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,
+ 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:{ 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,
+ p_checkMessage
+ )
+ );
+ 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,
+ 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:{ cCA_MSG := mw_CCA_resultCode }
+ },
+ {
+ DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic }
+ },
+ {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
+
+
+ /**
+ * 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,
+ 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_Qos)}
+ },
+ {
+ DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic}
+ },
+ {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
+
+ /**
+ * 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,
+ 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_ChargingRuleRemove}
+ },
+ {
+ DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic}
+ },
+ {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
+
+ /**
+ * 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,
+ 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_Qos) } //During validation some additions may be required
+ },
+ {
+ DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic }
+ },
+ {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
+
+ /**
+ * 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,
+ 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_ChargingRuleRemove } //During validation some additions may be required
+ },
+ {
+ DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic }
+ },
+ {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
+
+
+} // end group g_PCRF
+
+
+} // end module AtsImsIot_TP_behavior_GX
\ No newline at end of file
diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
new file mode 100644
index 0000000000000000000000000000000000000000..f46956de12723e164ff64f815ff1636c3be18682
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn
@@ -0,0 +1,1651 @@
+/*
+ * @author STF 574, TTF006
+ * @version $Id$
+ * @desc This module provides the TP behaviour functions at IC interface
+ */
+
+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 };
+
+ 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 }
}
+ * @remark source function f_mtc_check_TP_IMS_4002_01_ic
+ */
+ 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)
+ },
+ { 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_1();//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) //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)) {
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {
+ mw_SipRequest(
+ mdw_TP_IC_IBCF_INVITE_03(
+ mw_TEL_URI_Base,
+ mw_SIP_URI_Base
+ ))
+ },
+ { 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 := 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_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_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 {
+ if (isvalue(p_monitorCompRef)) {
+
+ 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;
+ }}
+
+ } // 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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false //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)},
+ {0, omit},
+ "TP_IC_IBCF_REINVITE_01",
+ false,
+ p_checkMessage
+ )
+ );
+ 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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false
+ ) runs on ImsTestCoordinator {
+ 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,
+ p_checkMessage
+ )
+ );
+ 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 {
+ 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_02",
+ false,
+ p_checkMessage
+ )
+ );
+ 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 {
+ if (isvalue(p_monitorCompRef)) {
+ var template RecordRoute v_recordRoute := ?;
+
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {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,
+ p_checkMessage
+ )
+ );
+ 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))},
+ {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 {
+ 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))},
+ {mw_SipResponse(mw_180Ringing_Base)},
+ {0, omit},
+ "TP_IC_IBCF_1XXRESP_04",
+ 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_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
+
+ 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 := 0
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)) {
+
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {mw_SipResponse(mw_TP_IC_IBCF_2XXRESP_04)},
+ {mw_SipResponse(mdw_2XX_Base)},
+ {p_skipCount, omit},
+ "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 {
+ 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(mdw_2XX_Base)},
+ {p_skipCount, mw_SipResponse(mdw_2XX_Base)},
+ "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 {
+ 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(mdw_2XX_Base)},
+ {p_skipCount, mw_SipResponse(mdw_2XX_Base)},
+ "TP_IC_IBCF_2XXRESP_06",
+ false,
+ false
+ )
+ );
+ p_monitorCompRef.done;
+ }}
+
+ /**
+ * @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_07(?,?,mw_SIP_URI_Base, v_recordRoute))},
+ {mw_SipResponse(mdw_2XX_Base)},
+ {p_skipCount, mw_SipResponse(mdw_2XX_Base)},
+ "TP_IC_IBCF_2XXRESP_07",
+ 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(
+ 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)
+
+ 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
+
+ /**
+ * @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_1();//f_GetEUTScscfAddress(PX_EUT_A);
+
+ 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;
+
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))},
+ {},
+ {0,omit},
+ "TP_IC_IBCF_BYE_02_200OK",
+ 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 {
+ if (isvalue(p_monitorCompRef)) {
+
+ 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;
+
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))},
+ {},
+ {0,omit},
+ "TP_IC_IBCF_BYE_01_200OK",
+ 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(
+ 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)*/);
+
+ if (isvalue(p_monitorCompRef)) {
+ // Check the CANCEL
+ 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,?,?))
+ },
+ {},
+ {0, omit},
+ "TP_IC_IBCF_CANCEL_01 - Request",
+ false,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+ }
+ } //function
+
+ function f_mtc_check_TP_IC_IBCF_CANCEL_02(
+ 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)*/);
+
+ if (isvalue(p_monitorCompRef)) {
+ // Check the CANCEL
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ { mw_SipRequest(mdw_TP_IC_IBCF_CANCEL_01(?, v_scscfImsAUrl,?,?)) },
+ {},
+ {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 {
+ if (isvalue(p_monitorCompRef)) {
+
+ var template SipUrl v_scscfImsBUrl := mw_SipUrl_Host(f_GetEUTScscfAddress_1());//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 {
+
+ if (isvalue(p_monitorCompRef)) {
+ // Check the CANCEL
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))},
+ {},
+ {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 {
+
+ if (isvalue(p_monitorCompRef)) {
+ // Check the CANCEL
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))},
+ {},
+ {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 {
+ if (isvalue(p_monitorCompRef)) {
+
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {mw_SipResponse(mw_Response_Base_ToFrom(c_statusLine200, ?, ?,?,?))},
+ {},
+ {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 := false
+ ) runs on ImsTestCoordinator {
+
+ if (isvalue(p_monitorCompRef)) {
+ // Check the INVITE
+ 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_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 := false
+ ) runs on ImsTestCoordinator {
+
+ if (isvalue(p_monitorCompRef)) {
+ 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 {
+ if (isvalue(p_monitorCompRef)) {
+
+ 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_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 {
+ if (isvalue(p_monitorCompRef)) {
+
+ 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 {
+ 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
+
+ /**
+ * @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 {
+
+ if (isvalue(p_monitorCompRef)) {
+ 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 := false
+ ) runs on ImsTestCoordinator {
+
+ if (isvalue(p_monitorCompRef)) {
+ 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 {
+
+ if (isvalue(p_monitorCompRef)) {
+ 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 := false
+ ) runs on ImsTestCoordinator {
+
+ if (isvalue(p_monitorCompRef)) {
+ 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 := false
+ ) runs on ImsTestCoordinator {
+
+ if (isvalue(p_monitorCompRef)) {
+ 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 {
+ 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)};
+ 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;
+
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {mw_SipResponse(mw_200OK_Base)},
+ {},
+ {0, omit},
+ "TP_IC_IBCF_SUBSCRIBE_01_200OK",
+ 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 {
+ 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_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;
+
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {mw_SipResponse(mw_200OK_Base)},
+ {},
+ {0, omit},
+ "TP_IC_IBCF_NOTIFY_01_200OK",
+ 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 {
+ if (isvalue(p_monitorCompRef)) {
+
+ 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_401",
+ 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 {
+ if (isvalue(p_monitorCompRef)) {
+ 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_1());//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_200OK",
+ 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 {
+ if (isvalue(p_monitorCompRef)) {
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))},
+ {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_1());//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_200OK",
+ 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 {
+ if (isvalue(p_monitorCompRef)) {
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {mw_SipRequest(mdw_TP_IC_IBCF_REGISTER_EXPIRES_03(?,?))},
+ {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_1());//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_200OK",
+ 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
+
+
+} // end module AtsImsIot_TP_behavior_IC
\ No newline at end of file
diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn
new file mode 100644
index 0000000000000000000000000000000000000000..0559a250ed280d9a5aa2b102e20d70e4ef87feb7
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn
@@ -0,0 +1,97 @@
+/*
+ * @author STF 574, TTF006
+ * @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, 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 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 };
+ // 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_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(
+ SipInterfaceMonitor p_monitorCompRef,
+ boolean p_checkMessage := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
+
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {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",
+ false,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+
+ 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(
+ {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
+
+} // end module AtsImsIot_TP_behavior_IC
\ 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 0000000000000000000000000000000000000000..69203d79b2c941dc9e904fcd50a520026822d8ec
--- /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
+ */
+// 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_IS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn
new file mode 100644
index 0000000000000000000000000000000000000000..21076ef9a2207c352d39fc2ae51efc3189860372
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn
@@ -0,0 +1,602 @@
+/**
+ * @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_MW all;
+ import from AtsImsIot_Templates all;
+ import from AtsImsIot_TypesAndValues all;
+ import from AtsImsIot_Functions all;
+
+ group imsMessages {
+
+ /**
+ * @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
+ * }
+ *
+ * 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(
+ 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_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
+ group imsRegistration {
+
+ /**
+ * @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
+ * 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 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 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_userInfoA.publicId, v_userInfoA.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);
+ 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_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
+
+ /**
+ * @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
+ * 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 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 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_userInfoA.publicId, v_userInfoA.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);
+ 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_02 - 200 OK",
+ false,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+ }
+ } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_02
+
+ /**
+ * @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 {
+ 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
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := true
+ ) runs on ImsTestCoordinator {
+ 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)){
+ 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
+
+ group imsDeRegistration {
+
+ /**
+ * @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
+ * }
+ *
+ * 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 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 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",
+ 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
new file mode 100644
index 0000000000000000000000000000000000000000..c6aaded8d4ba8de6bfaf61368c3f3fd0f97b9ff4
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn
@@ -0,0 +1,3729 @@
+/**
+ * @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;
+ // 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;
+
+ 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(
+ 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_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
+
+ // 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 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 SipMessage v_sip;
+
+ // Check first REGISTER request
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {
+ mw_SipRequest(
+ 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_userInfoA.publicId, v_userInfoA.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);
+ 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_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
+
+ /**
+ * @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 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 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_userInfoA.publicId, v_userInfoA.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);
+ 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_02 - 200 OK",
+ 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 IMS_P_CSCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_PCSCF_REGISTER_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); // User removed from HSS
+ 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_userInfoA.publicId, v_userInfoA.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);
+ 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_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
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := true
+ ) runs on ImsTestCoordinator {
+ 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)) {
+ 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
+
+ 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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)) {
+ var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
+ 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_userInfoA.publicId, v_userInfoA.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);
+ 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_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",
+ false,
+ p_checkMessage
+ )
+ );
+ 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 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 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
+
+ /**
+ * @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 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 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
+
+ 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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)) {
+ 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
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {
+ mw_SipRequest(
+ mw_TP_MW_PCSCF_SUBSCRIBE_01(
+ -, // FIXME Set expected value
+ mw_From_AddrUnion_TelUrl(v_userInfoA.publicId),
+ mw_To_AddrUnion_TelUrl(v_userInfoB.publicId)
+ ))
+ },
+ { mw_SipRequest(mw_SUBSCRIBE_Request_Base) },
+ {0, omit},
+ "TP_MW_PCSCF_SUBSCRIBE_01 - Request",
+ 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_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,
+ 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(
+ 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 ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A);
+ var ImsUserInfo v_userInfoB := f_getTelUserId(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_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",
+ 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_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
+
+ 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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)) {
+ 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
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {
+ mw_SipRequest(mw_TP_MW_PCSCF_NOTIFY_01(
+ -,
+ -, // FIXME Set expected value
+ mw_From_AddrUnion_TelUrl(v_userInfoA.publicId),
+ mw_To_AddrUnion_TelUrl(v_userInfoB.publicId)
+ ))
+ },
+ { 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
+
+ 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,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+
+ 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
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ ))
+ },
+ { 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 {
+
+ /**
+ * @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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ out SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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
+
+ /**
+ * @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 SipInterfaceMonitor p_monitorCompRef,
+ 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_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_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) },
+ {0, omit},
+ "TP_MW_PCSCF_INVITE_02 - 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_02
+
+ function f_mtc_check_TP_MW_PCSCF_INVITE_03( // FIXME RMI To be reviewed
+ in SipInterfaceMonitor p_monitorCompRef,
+ 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);
+
+ // 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",
+ 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,
+ out SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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_04(
+ -, // 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_04 - 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_04
+
+ /**
+ * @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"
+ * ;
+ * ;;
+ * from 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( // FIXME RMI To be reviewed
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ out SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)) {
+ 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(
+ f_Iot_Sip_receive(
+ {
+ mw_SipRequest(mw_TP_MW_PCSCF_RE_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_RE_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 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 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
+ * 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_RE_INVITE_02( // FIXME RMI To be reviewed
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ out SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)) {
+ 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(
+ f_Iot_Sip_receive(
+ {
+ mw_SipRequest(mw_TP_MW_PCSCF_RE_INVITE_02(
+ -, // 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_RE_INVITE_02 - Request",
+ 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
+
+ function f_mtc_check_TP_MW_PCSCF_RE_INVITE_03( // FIXME RMI To be reviewed
+ 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 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;
+ }
+ } // 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 := 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 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;
+ }
+ } // End of function TP_MW_PCSCF_RE_INVITE_04
+
+
+ } // 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 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
+ * to the UE_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_PCSCF_100Trying_01(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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
+
+ /**
+ * @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 IMS_P_CSCF_B entity receives a 100_Trying
+ * from the UE_B entity
+ * }
+ * then {
+ * the IMS_P_CSCF_B entity sends a 100_Trying
+ * to the IMS_S_CSCF_B entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_PCSCF_100Trying_02(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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
+
+ 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_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_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_180RINGING_01(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ mw_To_NameAddr_TelUrl(
+ -,
+ p_sip.request.msgHeader.toField.addressField.addrSpecUnion.components.tel.subscriber
+ )))
+ },
+ { 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
+
+ /**
+ * @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_PCSCF_180RINGING_02(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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
+
+ 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 {
+
+ /**
+ * @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_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_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,
+ * PChargingVector,
+ * PChargingFunctionAddresses,
+ * PPreferredIdentity
+ * ;
+ * to the UE_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_PCSCF_200OK_01(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ 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(
+ { mw_SipResponse(mw_200OK(
+ p_sip.request.msgHeader.cSeq,
+ p_sip.request.msgHeader.callId,
+ p_sip.request.msgHeader.fromField,
+ (
+ 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) },
+ { 0, omit },
+ "TP_MW_PCSCF_200OK_01",
+ false,
+ 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 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,
+ * PChargingVector,
+ * PChargingFunctionAddresses,
+ * PPreferredIdentity
+ * ;
+ * from the UE_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
+ * ;
+ * from the IMS_S_CSCF_B entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_PCSCF_200OK_02(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_MW_PCSCF_200OK_02
+
+ 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 {
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_MW_PCSCF_200OK_03
+
+ 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 {
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_MW_PCSCF_200OK_04
+
+ } // 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_PCSCF_ACK_01(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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
+
+ /**
+ * @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_PCSCF_ACK_02(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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
+
+ 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_PCSCF_BYE_01(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ -, // FIXME To be set
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ ))
+ },
+ { mw_SipRequest(mw_BYE_Request_Base) },
+ { 0, omit },
+ "TP_MW_PCSCF_BYE_01 - Request",
+ 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
+
+ /**
+ * @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_PCSCF_BYE_02(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq,
+ -, // FIXME To be set
+ {
+ 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_BYE_Request_Base) },
+ { 0, omit },
+ "TP_MW_PCSCF_BYE_02 - Request",
+ 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
+
+ /**
+ * @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_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,
+ * 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_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,
+ * Route indicating value PX_UE_B_SERVICE_ROUTE
+ * ;
+ * from the UE_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_PCSCF_BYE_03(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq,
+ -, // FIXME To be set
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ ))
+ },
+ { mw_SipRequest(mw_BYE_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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ -, // FIXME To be set
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ ))
+ },
+ { mw_SipRequest(mw_BYE_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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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
+
+ 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(
+ 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.callId,
+ 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
+
+ /**
+ * @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(
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_02
+
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_03
+
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_04
+
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_MW_PCSCF_200OK_BYE_05
+
+ 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.callId,
+ 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;
+ }
+ } // 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,
+ * 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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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",
+ 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
+
+ /**
+ * @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
+ * ;
+ * to the UE_B entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_PCSCF_CANCEL_02(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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",
+ 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,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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",
+ 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,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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",
+ 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
+
+ } // 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(
+ 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.callId,
+ 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
+
+ /**
+ * @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(
+ 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.callId,
+ 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;
+ }
+ } // End of function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_02
+
+ function f_mtc_check_TP_MW_PCSCF_200OK_CANCEL_03(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout 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.callId,
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ ))
+ },
+ { mw_SipResponse(mw_200OK_Base) },
+ { 0, omit },
+ "TP_MW_PCSCF_200OK_CANCEL_03",
+ 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,
+ inout 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.callId,
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ ))
+ },
+ { mw_SipResponse(mw_200OK_Base) },
+ { 0, omit },
+ "TP_MW_PCSCF_200OK_CANCEL_04",
+ 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
+
+ } // End of group ims200OkCancel
+
+ 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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // 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)
+ },
+ { 0, omit },
+ "TP_MW_PCSCF_486INVITE_01",
+ 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
+
+ /**
+ * @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 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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // 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)
+ },
+ { 0, omit },
+ "TP_MW_PCSCF_486INVITE_02",
+ 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,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ )
+ )
+ },
+ {
+ mw_SipResponse(mdw_4XX_Base)
+ },
+ { 0, omit },
+ "TP_MW_PCSCF_486INVITE_03",
+ 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,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ )
+ )
+ },
+ {
+ mw_SipResponse(mdw_4XX_Base)
+ },
+ { 0, omit },
+ "TP_MW_PCSCF_486INVITE_04",
+ 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
+
+ } // 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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField,
+ omit
+ )
+ )
+ },
+ {
+ mw_SipResponse(mdw_4XX_Base)
+ },
+ { 0, omit },
+ "TP_MW_PCSCF_487INVITE_01",
+ 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
+
+ /**
+ * @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
+ * 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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField,
+ omit
+ )
+ )
+ },
+ {
+ mw_SipResponse(mdw_4XX_Base)
+ },
+ { 0, omit },
+ "TP_MW_PCSCF_487INVITE_02",
+ 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,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ )
+ )
+ },
+ {
+ mw_SipResponse(mdw_4XX_Base)
+ },
+ { 0, omit },
+ "TP_MW_PCSCF_487INVITE_03",
+ 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,
+ inout SipMessage p_sip
+ ) runs on ImsTestCoordinator {
+ 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,
+ -, // New CSeq
+ p_sip.request.msgHeader.fromField,
+ p_sip.request.msgHeader.toField
+ )
+ )
+ },
+ {
+ mw_SipResponse(mdw_4XX_Base)
+ },
+ { 0, omit },
+ "TP_MW_PCSCF_487INVITE_04",
+ 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
+
+ } // 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
new file mode 100644
index 0000000000000000000000000000000000000000..9ccf70c563b167d1ea1a52d4523d73dd46a54878
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn
@@ -0,0 +1,1865 @@
+/**
+ * @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;
+ // 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;
+
+ 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_S_CSCF_A entity receives the 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 containing
+ * ContentLength indicating value greater than 1300 bytes
+ * ;;
+ * to the IMS_IBCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_MESSAGE_01(
+ 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_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
+
+ // 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_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_I_CSCF_A entity
+ * }
+ * then {
+ * 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,
+ * 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_I_CSCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_REGISTER_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 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);
+ 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_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
+
+ /**
+ * @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_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,
+ * 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_I_CSCF_A entity
+ * }
+ * then {
+ * 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,
+ * 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_I_CSCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_REGISTER_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);
+ 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);
+ 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 SUT S-CSCF?
+ ))
+ },
+ {
+ mw_SipResponse(mw_Response_2xx_Base)
+ },
+ {0, omit},
+ "TP_MW_SCSCF_REGISTER_02 - 200 OK",
+ false,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+ }
+ } // End of function f_mtc_check_TP_MW_SCSCF_REGISTER_02
+
+ } // 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_S_CSCF_A entity sends a REGISTER containing
+ * Expire indicating value 0
+ * ;
+ * from the IMS_I_CSCF_A entity
+ * }
+ * then {
+ * the IMS_S_CSCF_A entity sends a 200_OK
+ * to the IMS_I_CSCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_REGISTER_07(
+ 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),
+ mw_SipResponse(mw_200OK_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
+
+ /**
+ * @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 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),
+ mw_SipResponse(mw_200OK_Base)
+ },
+ {},
+ {0, omit},
+ "TP_MW_SCSCF_REGISTER_10",
+ false,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+
+ p_monitorCompRef.start(
+ f_Iot_Sip_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 {
+
+ /**
+ * @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
+ * }
+ *
+ * Expected behaviour
+ * ensure that {
+ * when {
+ * 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 IMS_P_CSCF_A entity
+ * }
+ * then {
+ * 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_P_CSCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_SUBSCRIBE_01(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)) {
+ // Check the SUBSCRIBE
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ {
+ mw_SipRequest(mw_SUBSCRIBE_Request_Base)
+ },
+ { 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
+
+ group imsNotify {
+
+ /**
+ * @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
+ * }
+ *
+ * Expected behaviour
+ * ensure that {
+ * when {
+ * the IMS_S_CSCF_A entity isRequestedToDeregisterUser
+ * }
+ * 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 and
+ * the IMS_S_CSCF_A entity sends an NOTIFY containing
+ * Event indicating value "de-reg"
+ * ;
+ * to the IMS_P_CSCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_NOTIFY_01(
+ 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
+
+ /**
+ * @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 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
+
+ group imsInvite {
+
+ /**
+ * @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
+ * 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_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_P_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,
+ * MessageBody containing
+ * SDP containing
+ * Version indicating value "0"
+ * ;
+ * ;;
+ * to the IMS_IBCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_INVITE_01(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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
+
+ /**
+ * @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
+ * 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_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_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,
+ * 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 IMS_P_CSCF_B entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_INVITE_02(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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
+
+ /**
+ * @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
+ * 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 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_P_CSCF_A entity
+ * }
+ * then {
+ * 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,
+ * 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_IBCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_RE_INVITE_01(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ 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) {
+ 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_01",
+ p_forward_to_mtc,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+ }} // End of function TP_MW_SCSCF_RE_INVITE_01
+
+ /**
+ * @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
+ * 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 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_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,
+ * 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 IMS_P_CSCF_B entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_RE_INVITE_02(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ 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) {
+ 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_02",
+ p_forward_to_mtc,
+ p_checkMessage
+ )
+ );
+ 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 := false,
+ 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) {
+ 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 := false,
+ 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) {
+ 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
+
+ group ims100Trying {
+
+ /**
+ * @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
+ * 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_IBCF_A entity
+ * }
+ * then {
+ * the IMS_S_CSCF_A entity forwards a 100_Trying
+ * to the IMS_P_CSCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_100Trying_01(
+ SipInterfaceMonitor 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_Sip_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 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
+ * 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_IBCF_B entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_100Trying_02(
+ SipInterfaceMonitor 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_Sip_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 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
+ * 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 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_IBCF_A entity
+ * }
+ * then {
+ * 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 IMS_P_CSCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_180RINGING_01(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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
+
+ /**
+ * @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
+ * 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 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_P_CSCF_B entity
+ *
+ * }
+ * then {
+ * 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,
+ * Via indicating value PX_UE_B_VIA,
+ * Route indicating value PX_UE_B_SERVICE_ROUTE,
+ * not PChargingVector,
+ * not PChargingFunctionAddresses,
+ * not PPreferredIdentity
+ * ;
+ * to the IMS_IBCF_B entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_180RINGING_02(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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
+
+ group ims200Ok {
+
+ /**
+ * @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
+ * 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_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 IMS_IBCF_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,
+ * PChargingVector,
+ * PChargingFunctionAddresses,
+ * PPreferredIdentity
+ * ;
+ * to the IMS_P_CSCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_200OK_01(
+ SipInterfaceMonitor 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_Sip_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 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
+ * 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_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_P_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_B_VIA,
+ * Route indicating value PX_UE_B_SERVICE_ROUTE,
+ * not PChargingVector,
+ * not PChargingFunctionAddresses,
+ * not PPreferredIdentity
+ * ;
+ * to the IMS_IBCF_B entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_200OK_02(
+ SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ 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) {
+ v_skip := {1, mw_SipResponse(mdw_2XX_Base)};
+ }
+ p_monitorCompRef.start(
+ f_Iot_Sip_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 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
+ * 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_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 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_IBCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_ACK_01(
+ in SipInterfaceMonitor 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_Sip_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 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
+ * 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 SipInterfaceMonitor 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_Sip_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 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
+ * 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 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
+ * }
+ * then {
+ * 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_IBCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_BYE_01(
+ in SipInterfaceMonitor 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_Sip_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 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
+ * 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_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 IMS_P_CSCF_B entity
+ * }
+ * then {
+ * 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_IBCF_B entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_BYE_02(
+ in SipInterfaceMonitor 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_Sip_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 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
+ * 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_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
+ * ;
+ * to the IMS_IBCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_BYE_03(
+ in SipInterfaceMonitor 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_Sip_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 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
+ * 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 SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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
+
+ /**
+ * @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
+ * 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_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_IBCF_B entity
+ * }
+ * then {
+ * 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
+ * ;
+ * to the IMS_P_CSCF_B entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_CANCEL_02(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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
+
+ }
+
+ group imsBusy {
+
+ /**
+ * @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
+ * 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_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_IBCF_A entity
+ * }
+ * then {
+ * 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
+ * ;
+ * to the IMS_P_CSCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_486INVITE_01(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)) {
+ // Check the INVITE
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ { (mw_SipResponse(mw_Response_Base(c_statusLine486)), mw_SipResponse(mw_Response_Base(c_statusLine600))) }, //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 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
+ * 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_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 IMS_P_CSCF_B entity
+ * }
+ * then {
+ * 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_IBCF_B entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_486INVITE_02(
+ in SipInterfaceMonitor p_monitorCompRef,
+ in boolean p_checkMessage := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)) {
+ // Check the INVITE
+ p_monitorCompRef.start(
+ f_Iot_Sip_receive(
+ { (mw_SipResponse(mw_Response_Base(c_statusLine486)), mw_SipResponse(mw_Response_Base(c_statusLine600))) }, //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 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
+ * 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
+ * ;
+ * from the IMS_IBCF_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
+ * ;
+ * to the IMS_P_CSCF_A entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_487INVITE_01(
+ in SipInterfaceMonitor 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_Sip_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 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
+ * 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
+ * ;
+ * 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
+ * ;
+ * to the IMS_IBCF_B entity
+ * }
+ * }
+ */
+ function f_mtc_check_TP_MW_SCSCF_487INVITE_02(
+ in SipInterfaceMonitor 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_Sip_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
diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn
new file mode 100644
index 0000000000000000000000000000000000000000..606a44dae44cdab2468f4bb427ffc6c0f43a858f
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn
@@ -0,0 +1,1780 @@
+/*
+ * @author STF 574, TTF006
+ * @version $Id$
+ * @desc This module provides the TP behaviour functions at RX interface
+ */
+
+module AtsImsIot_TP_behavior_RX
+{
+
+ // 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 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 {
+
+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
+ * 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,
+ 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:{ 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,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ 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,
+ p_checkMessage
+ )
+ );
+ 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
+ *
+ * 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,
+ 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_basic }
+ },
+ {
+ 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_resultCode/*mw_AAA_AcceptableService*/ }
+ },
+ {
+ DIAMETER_MSG:{ aAA_MSG := mw_AAA_basic }
+ },
+ {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
+
+ /**
+ * 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)"
+ * ;
+ * ;
+ * 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,
+ 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:{ aAA_MSG := mw_AAA_resultCode }
+ },
+ {
+ DIAMETER_MSG:{ aAA_MSG := mw_AAA_basic }
+ },
+ {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
+
+ /**
+ * Starts monitor component behavior for TP_RX_PCRF_AAA_02
+ * @param p_monitorCompRef Reference to monitor component
+ *
+ * Test objective "Verify that IUT receives AA-Request from home PCRF and sends AA-Answer towards visited P-CSCF."
+ *
+ *
+ *
+ * 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
+ * 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,
+ 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:{ aAA_MSG := mw_AAA_resultCode }
+ },
+ {
+ DIAMETER_MSG:{ aAA_MSG := mw_AAA_basic }
+ },
+ {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
+
+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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ 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,
+ 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 {
+
+ /**
+ * 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.
+ *
+ * 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 IMS_S_CSCF_A entity sends a 200_Response_REGISTER
+ * to the IMS_P_CSCF_A entity
+ * }
+ * 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 653-1 clause 7.6
+ * @remark source function f_mtc_check_TP_EPC_6013_01
+ */
+ function f_mtc_check_TP_RX_PCSCF_AAR_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:{ 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,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+ }
+ } // End of function f_mtc_check_TP_RX_PCSCF_AAR_01
+
+ /**
+ * 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 := false,
+ 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(
+ {
+ //check if nothing received
+ },
+ {
+ DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } //Fail criteria: check if AAR is sent
+ },
+ {0, omit},
+ "TP_RX_PCSCF_AAR_02 - AAR",
+ p_forward_to_mtc,
+ p_checkMessage,
+ v_noDiameterMessageExpected
+ )
+ );
+ p_monitorCompRef.done;
+ }
+ } // End of function f_mtc_check_TP_RX_PCSCF_AAR_02
+
+ /**
+ * 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 := 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_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}
+ },
+ {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
+
+ /**
+ * 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 := 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_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 }
+ },
+ {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
+
+ /**
+ * 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 := 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_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 }
+ },
+ {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
+
+ /**
+ * 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 := 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_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 }
+ },
+ {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
+
+ /**
+ * 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 := 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_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 }
+ },
+ {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
+
+ /**
+ * 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 := 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_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 }
+ },
+ {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
+
+ /**
+ * 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 := 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_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 }
+ },
+ {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
+
+ /**
+ * 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 := 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_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 }
+ },
+ {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
+
+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 {
+
+ /**
+ * 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+ }
+ } // End of function f_mtc_check_TP_RX_PCSCF_STR_08
+
+} // 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_TP_behavior_S6A.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn
new file mode 100644
index 0000000000000000000000000000000000000000..ebfc870fb79f194fc152f096f38f60e1d81dd008
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn
@@ -0,0 +1,681 @@
+/*
+ * @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 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;
+ import from LibDiameter_TypesAndValues {type DIAMETER_MSG;};
+
+
+
+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,
+ 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:{ aIR_MSG := mw_AIR_basic }
+ },
+ {
+ 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 }
+ },
+ {
+ DIAMETER_MSG:{ aIA_MSG := mw_AIA_basic }
+ },
+ {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
+
+ /**
+ * 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,
+ 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:{ cLR_MSG := mw_CLR_cancelation }
+ },
+ {
+ DIAMETER_MSG:{ cLR_MSG := mw_CLR_basic }
+ },
+ {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
+
+ /**
+ * 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,
+ 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:{ pUER_MSG := mw_PUER_basic }
+ },
+ {
+ 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 }
+ },
+ {
+ DIAMETER_MSG:{ pUEA_MSG := mw_PUEA_basic }
+ },
+ {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
+
+ /**
+ * 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,
+ 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:{ uLR_MSG := mw_ULR_userName }
+ },
+ {
+ DIAMETER_MSG:{ uLR_MSG := mw_ULR_basic }
+ },
+ {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 }
+ },
+ {
+ DIAMETER_MSG:{ uLA_MSG := mw_ULA_basic }
+ },
+ {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
+
+ /**
+ * 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,
+ 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:{ uLR_MSG := mw_ULR_basic }
+ },
+ {
+ 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 }
+ },
+ {
+ DIAMETER_MSG:{ uLA_MSG := mw_ULA_basic }
+ },
+ {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
+
+
+} // 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,
+ 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:{ aIR_MSG := mw_AIR }
+ },
+ {
+ DIAMETER_MSG:{ aIR_MSG := mw_AIR_basic }
+ },
+ {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
+
+ /**
+ * 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,
+ 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:{ cLR_MSG := mw_CLR_basic }
+ },
+ {
+ 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 }
+ },
+ {
+ DIAMETER_MSG:{ cLA_MSG := mw_CLA_basic}
+ },
+ {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
+
+ /**
+ * 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,
+ 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:{ pUER_MSG := mw_PUER_userName }
+ },
+ {
+ DIAMETER_MSG:{ pUER_MSG := mw_PUER_basic }
+ },
+ {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
+
+ /**
+ * 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,
+ 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:{ uLR_MSG := mw_ULR_userName }
+ },
+ {
+ DIAMETER_MSG:{ uLR_MSG := mw_ULR_basic}
+ },
+ {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
+
+ /**
+ * 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,
+ 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:{ uLR_MSG := mw_ULR_userName }
+ },
+ {
+ DIAMETER_MSG:{ uLR_MSG := mw_ULR_basic }
+ },
+ {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
+
+
+} // 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 0000000000000000000000000000000000000000..a0bdc8be2e313011d1f3249921559f3264a7a0c1
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn
@@ -0,0 +1,760 @@
+/*
+ * @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 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;
+ import from LibDiameter_TypesAndValues {type DIAMETER_MSG;};
+
+
+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 := 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_S9_basic }
+ },
+ {
+ 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
+
+
+ /**
+ * 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
+ * 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ 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,
+ p_checkMessage
+ )
+ );
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_Termination(TERMINATION_REQUEST_E) }
+ },
+ {
+ DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_basic }
+ },
+ {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
+
+ /**
+ * 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ 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,
+ 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 := false,
+ in boolean p_forward_to_mtc := false
+ ) runs on ImsTestCoordinator {
+ if (isvalue(p_monitorCompRef)){
+ p_monitorCompRef.start (
+ f_Iot_Diameter_receive(
+ {
+ 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,
+ p_checkMessage
+ )
+ );
+ p_monitorCompRef.done;
+ }
+ } // End of function f_mtc_check_TP_S9_PCRF_STA_02
+
+
+} // 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 0000000000000000000000000000000000000000..92729988708498b921818b0aee493b941c3e3199
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn
@@ -0,0 +1,121 @@
+/*
+ * @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;}
+ 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;};
+
+
+
+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 := false,
+ 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_publicIdentity("tel:"&v_userInfoA.publicId)}
+ },
+ {},
+ {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
+
+
+} // end group g_HSS
+
+
+} // end module AtsImsIot_TP_behavior_SH
\ No newline at end of file
diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn
index 4c023cab413d074949806fb331091b22f69946f4..94df95f1cc06e7a08d97f3b52c79eeb7fbbc15cc 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 }
}
}
@@ -185,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 := *
},
@@ -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)
}
}
@@ -399,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
}
}
@@ -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)),
@@ -776,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)),
+// *
+// }
+// }
}
}
@@ -1889,6 +1899,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,
@@ -1934,6 +1951,38 @@ module AtsImsIot_Templates {
payload := *
}
+ template Response mw_480TemporaryUnavailable_Base modifies m_Response_Dummy :=
+ {
+ statusLine := c_statusLine480,
+ msgHeader := ?,
+ messageBody := *,
+ payload := *
+ }
+
+ template Response mw_486Busy_Base modifies m_Response_Dummy :=
+ {
+ statusLine := c_statusLine486,
+ msgHeader := ?,
+ messageBody := *,
+ payload := *
+ }
+
+ template Response mw_600BusyEverywhere_Base modifies m_Response_Dummy :=
+ {
+ statusLine := c_statusLine600,
+ msgHeader := ?,
+ messageBody := *,
+ payload := *
+ }
+
+ template Response mw_487RequestTerminated_Base modifies m_Response_Dummy :=
+ {
+ statusLine := c_statusLine487,
+ msgHeader := ?,
+ messageBody := *,
+ payload := *
+ }
+
template Response mdw_404Or604NotFound_Base modifies m_Response_Dummy :=
{
statusLine := ({c_sipNameVersion, 404, ?}, {c_sipNameVersion, 604, ?}),
@@ -1967,7 +2016,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 +2227,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 +2245,7 @@ module AtsImsIot_Templates {
template PChargingVector mw_PChargingVector (template SemicolonParam_List p_List) := {
fieldName := P_CHARGING_VECTOR_E,
+ icidValue := ?,
chargeParams := p_List
} // template
@@ -2227,7 +2277,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 := ?},
@@ -2237,7 +2287,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 +2300,19 @@ 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" }},
+ *}
+
+ }
+ }
+
+ 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 := ?},
*}
}
@@ -2264,7 +2326,7 @@ module AtsImsIot_Templates {
acRcParams := {
{
id := "Video Sharing Feature Tag",
- paramValue := "+g.3gpp.cs-voice"
+ paramValue := {quotedString:="+g.3gpp.cs-voice"}
}
}
}
@@ -2280,7 +2342,7 @@ module AtsImsIot_Templates {
contactParams := {
{
id := "Video Sharing Feature Tag",
- paramValue := "+g.3gpp.cs-voice"
+ paramValue := {quotedString:="+g.3gpp.cs-voice"}
}
}
}
@@ -2294,21 +2356,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 +2395,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/AtsImsIot/AtsImsIot_Templates_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
new file mode 100644
index 0000000000000000000000000000000000000000..ce18a371d79cd7c25531969f7ede57b2761eff34
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn
@@ -0,0 +1,694 @@
+/*
+ * @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 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) 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) 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
+ }
+ } // 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 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
+ }
+ } // 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 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_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 := ?,
+ template (present) From p_from := ?,
+ template (present) To p_to := ?,
+ template 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 {
+
+ 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 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
+ }
+ } // 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 PChargingVector p_pChargingVector := *,
+ template PVisitedNetworkID p_pVisitedNetworkID := *
+ ) modifies mw_TP_GM_PCSCF_REGISTER_01 := {
+ } // 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 PChargingVector p_pChargingVector := *,
+ template 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 PChargingVector p_pChargingVector := *,
+ template 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 PChargingVector p_pChargingVector := *,
+ template 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 := ?,
+ template (present) Authorization p_authorization := ?,
+ template PChargingVector p_pChargingVector := *,
+ template PVisitedNetworkID p_pVisitedNetworkID := *,
+ template (present) charstring p_expires := "0"
+ ) modifies mw_TP_GM_PCSCF_REGISTER_01 := {
+ msgHeader := {
+ 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 := *},
+ // *
+ // }),
+ route := ?
+ }
+ } // 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 := *},
+ // *
+ // }),
+ }
+ } // 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,
+ // 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
+
+ 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
+
+ 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 := ?,
+ 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_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 := ?,
+ 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
+
+ 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_bye_uri := ?,
+ template (present) From p_from := ?,
+ template (present) To p_to := ?
+ ) modifies mw_BYE_Request_Base := {
+ requestLine := {
+ method := BYE_E,
+ requestUri := p_bye_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_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_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_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_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_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_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_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_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_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_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn
new file mode 100644
index 0000000000000000000000000000000000000000..4624eff87d242859548fb3da05c8adfacc9bd069
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn
@@ -0,0 +1,863 @@
+/*
+ * @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,
+ PX_IMS_A_ICID;
+ }
+
+ import from AtsImsIot_Templates all;
+
+ group g_IBCF {
+
+ group g_IBCF_GC{
+
+ /**
+ *
+ * @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 modifies mw_MESSAGE_Request_Base := {
+ msgHeader := {
+ contact := *
+ },
+ messageBody := {
+ textplain := pattern "?#(1300,)"
+ }
+ }
+
+ } // group g_IBCF_GC
+
+ group g_IBCF_INVITE {
+
+ /**
+ * @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) 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 := {
+ *,
+ 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 := ?}),
+ *
+ }
+ },
+ pAccessNetworkInfo := omit
+ }
+ }
+
+
+ /**
+ * @desc INVITE Request checking TP_IC_IBCF_INVITE_02
+ * @remark source template mdw_TP_IMS_5097_02_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) 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}),
+ *)
+ }
+ }
+ }
+ }
+
+
+ /**
+ * @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(
+ 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 := {
+ msgHeader := {
+ fromField := p_from,
+ toField := p_to,
+ pChargingVector := {
+ fieldName := P_CHARGING_VECTOR_E,
+ chargeParams := {
+ *,
+ complement({id := "access-network-charging-info", paramValue := ?}),
+ *
+ }
+ }
+
+ }
+ }
+
+ /**
+ *
+ * @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 := {quotedString :=PX_IMS_A_ICID}},
+ *
+ })
+ }
+ }
+
+ /**
+ * @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), TODO
+ toField := ?//mw_To_NameAddr_SipUrl ({quotedString:=p_EUTB_PublicId}, ?, ?) TODO
+ }
+ }
+
+ } // 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 := *},
+ *,
+ complement({id := "access-network-charging-info", 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_IC_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
+ * @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)}, // only if availble, ie. optional
+ *
+ }
+ }
+ }
+ }
+
+ /**
+ *
+ * @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),
+
+ {
+ 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)},
+// *
+// }
+// },
+ 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
+
+ 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 := ?}),
+ *
+ }
+ }
+ }
+ }
+
+ /**
+ *
+ * @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 := {
+ 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 := *, //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
+
+ 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 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(
+ 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_AKA
+ }
+ }
+
+
+ } // end group g_IBCF_401
+
+ 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 := *
+// route := {
+// fieldName := ROUTE_E,
+// routeBody := {
+// *,
+// complement(mw_routeBody(p_SCSCF_SIP_URI)),
+// *
+// }
+// }
+ }
+ }
+
+ /**
+ *
+ * @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
+
+ 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
+
+ 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,
+ 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,
+ {
+ fieldName := ROUTE_E,
+ routeBody := {
+ *,
+ complement(mw_routeBody(p_SCSCF_SIP_URI)),
+ *
+ }
+ }
+ )
+ }
+ }
+
+ } // 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")
+ }
+ }
+
+ /**
+ *
+ * @desc REGISTER Request checking TP_ISC_SCSCF_REGISTER_01.
+ */
+ template REGISTER_Request mdw_TP_ISC_SCSCF_REGISTER_01(
+ 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 },
+ msgHeader := {
+ fromField := p_from,
+ toField := p_to,
+ authorization := p_authorization,
+ pChargingVector := p_pChargingVector,
+ pChargingFunctionAddresses := ?,
+ pAccessNetworkInfo := ?,
+ pVisitedNetworkID := p_pVisitedNetworkID,
+ contact := {
+ fieldName := CONTACT_E,
+ contactBody := {
+ contactAddresses := ?
+ }
+ }
+
+ }
+ }
+
+ } // end group g_IBCF_REGISTER
+
+ } // end group g_IBCF
+
+
+ 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/AtsImsIot/AtsImsIot_Templates_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
new file mode 100644
index 0000000000000000000000000000000000000000..4d82cc0f3b7e301dfd2aed15b89766799e34931a
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
@@ -0,0 +1,894 @@
+/*
+ * @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 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) 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) Contact mw_contact(
+ template (present) ContactAddress p_contactAddresses := ?
+ ) := {
+ fieldName := CONTACT_E,
+ contactBody := { contactAddresses := { p_contactAddresses } }
+ } // End of template mw_Contact
+
+ 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
+ }
+ } // 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 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
+ }
+ } // 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 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_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 := ?,
+ template (present) From p_from := ?,
+ template (present) To p_to := ?,
+ template 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 {
+
+ 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 PChargingVector p_pChargingVector := *,
+ template 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 PChargingVector p_pChargingVector := *,
+ template PVisitedNetworkID p_pVisitedNetworkID := *
+ ) 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 := ?,
+ template (present) Authorization p_authorization := ?,
+ template PChargingVector p_pChargingVector := *,
+ template PVisitedNetworkID p_pVisitedNetworkID := *,
+ template (present) charstring p_expires := "0"
+ ) modifies mw_TP_MW_PCSCF_REGISTER_01 := {
+ msgHeader := {
+ expires := mw_Expires(p_expires)
+ }
+ } // 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 PChargingVector p_pChargingVector := *,
+ template PVisitedNetworkID p_pVisitedNetworkID := *,
+ template (present) charstring p_expires := "0"
+ ) modifies mw_TP_MW_PCSCF_REGISTER_01 := {
+ msgHeader := {
+ 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 := ?,
+ 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 := *},
+ // *
+ // }),
+ route := ?
+ }
+ } // 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 := *},
+ // *
+ // }),
+ }
+ } // 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,
+ // 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
+
+ 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
+
+ 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 := ?,
+ 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_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 := ?,
+ 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 := {
+ 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
+ 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
+
+ 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_bye_uri := ?,
+ template (present) From p_from := ?,
+ template (present) To p_to := ?
+ ) modifies mw_BYE_Request_Base := {
+ requestLine := {
+ method := BYE_E,
+ requestUri := p_bye_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_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_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_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_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_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_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_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_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_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 {
+
+ 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_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 := ?,
+ 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_TestCases_CALL.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn
deleted file mode 100644
index 2a74342799172dcaf5a9de9663d12aba69e41a83..0000000000000000000000000000000000000000
--- a/ttcn/AtsImsIot/AtsImsIot_TestCases_CALL.ttcn
+++ /dev/null
@@ -1,2108 +0,0 @@
-/**
- * @author STF 370
- * @version $Id: $
- * @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);
- 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
- 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
- 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_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
- 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_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_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
- 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
- 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_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_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_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_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_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_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_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_IMS_5097_01_gm(v_gmA, true); // Check1
- f_mtc_check_TP_IMS_5097_02_gm(v_gmA, false); // Check2
- 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
- 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
-
- // 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_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
- 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)
- 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
-
- // 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_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
- 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_response_mx(v_mxA, c_statusLine200);
- 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_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_response_mx(v_mxB, c_statusLine200);
-
- //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_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);
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- 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);
- 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);
- 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);
-
- // 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);
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- 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);
- 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);
- 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);
-
- // 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);
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- 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);
- 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);
-
- // 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);
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- 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);
- 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);
- 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);
-
- // 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_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);
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- 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);
- 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);
- 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);
-
- // 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);
- 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);
-
- // 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);
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- 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);
- 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);
- 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);
-
- // 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);
- 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);
-
- // 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);
- 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);
-
- // 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
-// 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_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_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
- 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_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
- 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_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 31c52337e4f443f2aeadbf8e1bc81ca1d28e2e76..0000000000000000000000000000000000000000
--- a/ttcn/AtsImsIot/AtsImsIot_TestCases_ENUM.ttcn
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * @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 );
-
- // 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 );
-
- // 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 f34bfbb893bdc9da5bf88a40cfa208f7c67b5f59..0000000000000000000000000000000000000000
--- 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 54c3e0ad2764ab3d537b4f4237f58824c8197918..0000000000000000000000000000000000000000
--- a/ttcn/AtsImsIot/AtsImsIot_TestCases_MESS.ttcn
+++ /dev/null
@@ -1,378 +0,0 @@
-/**
- * @author STF 370
- * @version $Id: $
- * @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);
- 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);
- f_mtc_check_message_mx(v_mxA);
- 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);
- 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
- 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_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_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_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);
- f_mtc_check_message_mx(v_mxA);
- 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_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_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.
- f_mtc_check_message_mx(v_mxA);
- 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_check_response_mx(v_mxB, c_statusLine200);
- 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);
- 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");
-
- f_mtc_check_message_mx(v_mxA);
- 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_check_response_mx(v_mxA, c_statusLine200);
- 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);
- 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);
- f_mtc_check_message_mx(v_mxA);
- 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);
- 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);
- f_mtc_check_message_mx(v_mxA);
- 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();
- }
-}
\ 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 45a801dddcd3160c46c0c826d1ce10077d854a1f..0000000000000000000000000000000000000000
--- a/ttcn/AtsImsIot/AtsImsIot_TestCases_RCS.ttcn
+++ /dev/null
@@ -1,5111 +0,0 @@
-/**
- * @author STF 407
- * @version $Id: $
- * @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; }
-
- /**
- * @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
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0); // Check2
- 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
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- f_mtc_check_TP_IMS_5313_01_ic(v_ic, false); // Check3
- 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
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- f_mtc_check_TP_IMS_5313_01_ic(v_ic, false); // Check2
- 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_IMS_5097_01_gm(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
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0); // Check 3
- 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_IMS_5097_01_gm(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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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_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, 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
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0); // Check 3
- 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_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, 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
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0);// Check4
- 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
- f_mtc_check_response_mx(v_mxA, c_statusLine200);
- f_mtc_check_TP_IMS_5110_01_ic(v_ic); // Check 2
- 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_IMS_5097_01_gm(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
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0);// Check4
- 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_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, 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
- f_mtc_check_response_mx(v_gmB, c_statusLine603); // Step22
-
- // Check 4 - 603 Decline
- f_mtc_check_response_mx(v_ic, c_statusLine603);
- 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)
- 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
- 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_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, 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
- f_mtc_check_response_mx(v_gmB, c_statusLine603); // Step22
-
- // Check 4 - 603 Decline
- f_mtc_check_response_mx(v_ic, c_statusLine603);
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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)
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- 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
-
- 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);
- 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);
- 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_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, 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
- 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_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_IMS_5097_01_gm ( 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_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, 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
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- f_mtc_check_TP_IMS_5115_08_ic(v_ic, false, 0); // Check 3
- 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
- f_mtc_check_response_mx(v_mxB, c_statusLine200);
- f_mtc_check_TP_IMS_5121_02_ic(v_ic, 0); // Check2
- 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)
- f_mtc_check_response_mx(v_mxA, c_statusLine200);
- f_mtc_check_TP_IMS_5312_01_ic(v_ic, 0); // Check 2
- 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
- f_mtc_check_response_mx(v_mxA, c_statusLine603);
- f_mtc_check_TP_IMS_CONTENT_SHARE_03_ic(v_ic, false); // Check2
- 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
- f_mtc_check_response_mx(v_mxA, c_statusLine603);
- f_mtc_check_TP_IMS_CONTENT_SHARE_03_ic(v_ic, false); // Check2
- 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 6cb2a7f62762cc8be177534d37f61f5e4e085264..0000000000000000000000000000000000000000
--- a/ttcn/AtsImsIot/AtsImsIot_TestCases_REG.ttcn
+++ /dev/null
@@ -1,348 +0,0 @@
-/**
- * @author STF 370
- * @version $Id: $
- * @desc This module provides ATS specific test case definitions.
- */
-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;
- }
-
- import from LibSip_SIPTypesAndValues all;
-
-
-
- /**
- * @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);
- 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_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);
- 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_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
- 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();
- }
-
- /**
- * @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);
- 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_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_response_mx(v_mxB, c_statusLine200);
- 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
- 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();
- }
-
- /**
- * @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);
-
- 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_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 e3230788f1342ed94228e9f13efd8ac94ab7b340..0000000000000000000000000000000000000000
--- a/ttcn/AtsImsIot/AtsImsIot_TestCases_SS.ttcn
+++ /dev/null
@@ -1,808 +0,0 @@
-/**
- * @author STF 370
- * @version $Id: $
- * @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);
- 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
- f_mtc_check_response_mx(v_mxA, c_statusLine200);
- 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_invite_mx(v_mxB);
-
- 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, 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);
- 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
- 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_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
- f_mtc_check_response_mx(v_mxA, c_statusLine200);
- 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);
- 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
- 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
- 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_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_IMS_5097_02_gm(v_gmA, false);// 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
- 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_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
- f_mtc_check_response_mx(v_mxB, c_statusLine433);
- 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);
- 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_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, 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
- 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_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
- f_mtc_check_response_mx(v_mxA, c_statusLine200);
- 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);
- 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_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, 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
- 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_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);
- 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
-}
diff --git a/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn
index a65d5b47caa2a2c0495806c7c62176fc638129c4..237f8314eb96c7170ec3a1d73c4f41194252ff51 100644
--- a/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn
+++ b/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn
@@ -14,19 +14,20 @@ 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; }
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, 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,
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
@@ -71,6 +72,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 {
@@ -134,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
@@ -150,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,
@@ -181,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 {
@@ -198,10 +422,58 @@ 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 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;
+ }
+ /**
+ * @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 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;
+ }
+ /**
+ * @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 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;
+ }
+ /**
+ * @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 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;
+ }
}
- group testConfiguration {
+ group testConfiguration { //TODO: check to delete at end of STF574 ATS devel
/**
* @desc
@@ -1233,6 +1505,307 @@ module AtsImsIot_TestConfiguration {
return v_info;
}
-
+ group g_release15 {
+
+ 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;
+
+ 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.mwPS);
+ 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.mwPS.start(f_cf_setFilter(
+ valueof (m_SetFilterReq(
+ e_sip,
+ {f_getInterfaceInfo("Mw", PX_PRODUCTS[PX_EUT_A])}
+ )
+ )));
+ p_config.mwPS.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_old(
+ inout CF_ATT_old 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.mwPS);
+ 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
}
\ No newline at end of file
diff --git a/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn
new file mode 100644
index 0000000000000000000000000000000000000000..71567c68f4ce6bfb4534e788e8b2acd75beacc5e
--- /dev/null
+++ b/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn
@@ -0,0 +1,74 @@
+/**
+ * @author STF 574
+ * @version $Id: $
+ * @desc This module provides ATS specific test control declarations.
+ */
+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_INI all;
+ import from AtsImsIot_TD_REG all;
+
+ control {
+ // ATT TCs
+ //execute(TC_VxLTE_INT_ATT_01());
+ //execute(TC_VxLTE_RMI_ATT_01());
+ //execute(TC_VxLTE_RMI_ATT_02());
+
+ // 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
diff --git a/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn3 b/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn3
deleted file mode 100644
index 7be0d9a5b6ad58fc81aaada491977bc86458e32c..0000000000000000000000000000000000000000
--- a/ttcn/AtsImsIot/AtsImsIot_TestControl.ttcn3
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * @author STF 370
- * @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;
-
- control {
- // MESS TCs
- //execute(TC_IMS_MESS_0001());
-
- // 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());
- }
-}
\ No newline at end of file
diff --git a/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn
index 96b74a7f80f4f7f3b7f721c2a33b6fc03f7d2721..a86c23287c338cafa4992b3fcedb4749b1d85e30 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;}
/**
@@ -12,6 +13,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 +31,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
@@ -35,15 +57,20 @@ 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 {
type port ImsCoordinationPort message {
- inout SipMessage;
+ inout SipMessage, DIAMETER_MSG;
}
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;
}
@@ -89,4 +116,50 @@ 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_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,
+ ImsInterfaceMonitor rx,
+ ImsInterfaceMonitor s6a,
+ ImsInterfaceMonitor gx,
+ ImsInterfaceMonitor mxA,
+ 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
+ }
+
+ 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
diff --git a/ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn b/ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn
index 69330524706eaa0017afa2d5496b170d00037f50..61a232b5d73119e38c4ba6877068aee442e13f8f 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 {
/**
diff --git a/ttcn/LibDiameter b/ttcn/LibDiameter
index 9d2e24aeb673ade20d4e6c4e69184285b8b43c7f..1f3760b09ac67c211d11508263c565c50776c98a 160000
--- a/ttcn/LibDiameter
+++ b/ttcn/LibDiameter
@@ -1 +1 @@
-Subproject commit 9d2e24aeb673ade20d4e6c4e69184285b8b43c7f
+Subproject commit 1f3760b09ac67c211d11508263c565c50776c98a
diff --git a/ttcn/LibIms b/ttcn/LibIms
index 476286ca120c7f740d669f4a768e966fed02d36b..d640fce7b8bd65dbb77c93a98f80c53a73bb2a24 160000
--- a/ttcn/LibIms
+++ b/ttcn/LibIms
@@ -1 +1 @@
-Subproject commit 476286ca120c7f740d669f4a768e966fed02d36b
+Subproject commit d640fce7b8bd65dbb77c93a98f80c53a73bb2a24
diff --git a/ttcn/LibIot/LibIot_PIXITS.ttcn b/ttcn/LibIot/LibIot_PIXITS.ttcn
index 22091fa5d4ffee8ede2dff74d48cba8b7221f658..f94b9658871741f3d0d94523c79b0b32fbb9a3db 100644
--- a/ttcn/LibIot/LibIot_PIXITS.ttcn
+++ b/ttcn/LibIot/LibIot_PIXITS.ttcn
@@ -1,364 +1,379 @@
-/*
- * @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 STF370
+ * @version $Id: LibIot_PIXITS.ttcn $
+ * @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
+ */
+// remove at end of validation phase
+ modulepar ProductList PX_PRODUCTS := {
+ {
+ // productIndex = 0
+ productName := "ProductA",
+ monitorInterfaces := {
+ {
+ interfaceName := "Gm",
+ //available := true,
+ 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",
+ //available := true,
+ 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",
+ //available := true,
+ interfaceInfo := {
+ IpInterfaceInfo := {
+ {
+ domainName := "ibcf.ProductA.etsi",
+ IpAddress := "fe80::21a:a0ff:fe07:100", //"192.86.1.100",
+ portNumbers := {5060}
+ }
+ }
+ }
+ },
+ {
+ interfaceName := "ISC",
+ //available := true,
+ 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",
+ //available := true,
+ interfaceInfo := {
+ IpInterfaceInfo := {
+ {
+ domainName := "",
+ IpAddress := "",
+ portNumbers := {1111}
+ }
+ }
+ }
+ },
+ {
+ interfaceName := "Sgi",
+ //available := true,
+ interfaceInfo := {
+ IpInterfaceInfo := {
+ {
+ domainName := "",
+ IpAddress := "",
+ portNumbers := {1111}
+ }
+ }
+ }
+ },
+ {
+ interfaceName := "Mw",
+ //available := true,
+ interfaceInfo := {
+ IpInterfaceInfo := {
+ {
+ domainName := "",
+ IpAddress := "",
+ portNumbers := {2222}
+ }
+ }
+ }
+ }
+ }
+ },
+ {
+ // productIndex = 1
+ productName := "ProductB",
+ monitorInterfaces := {
+ {
+ interfaceName := "Gm",
+ //available := true,
+ 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",
+ //available := true,
+ 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",
+ //available := true,
+ interfaceInfo := {
+ IpInterfaceInfo := {
+ {
+ domainName := "ibcf.ProductB.etsi",
+ IpAddress := "fec0::216:d3ff:fe0d:10",
+ portNumbers := {5185,5187,5188,5189}
+ }
+ }
+ }
+ },
+ {
+ interfaceName := "ISC",
+ //available := true,
+ 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
+
+
+}
+
diff --git a/ttcn/LibIot/LibIot_TestInterface.ttcn b/ttcn/LibIot/LibIot_TestInterface.ttcn
index 41a2ae4a4fa74f6a209bf923bd3aed500fbc446a..6baefb05c86d42054e94210995f6a29d9967f65f 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;
}
diff --git a/ttcn/LibIot/LibIot_TypesAndValues.ttcn b/ttcn/LibIot/LibIot_TypesAndValues.ttcn
index a24b0e5437a0000c0df9965a917bfb1eb078a4f2..8a97ca9c9100f9b50ec6e86e56d3c0bf15324ba9 100644
--- a/ttcn/LibIot/LibIot_TypesAndValues.ttcn
+++ b/ttcn/LibIot/LibIot_TypesAndValues.ttcn
@@ -92,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
+ }
/**
*
@@ -228,6 +251,9 @@ module LibIot_TypesAndValues {
}
}
+ with{
+ encode "IOTCodec";
+ }
group oracleRelatedTypes {
// used for PIXIT definition
diff --git a/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn
new file mode 100644
index 0000000000000000000000000000000000000000..096ee757473fddda2d2e7ac569a0cbd4dfc09d95
--- /dev/null
+++ b/ttcn/LibIot/LibIot_VxLTE_Functions.ttcn
@@ -0,0 +1,607 @@
+/*
+ * @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;
+
+ 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_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);
+ }
+ 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);
+ }
+
+
+
+ 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){
+ 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).
+ timer tc_noAct;
+ f_cf_initCapture();
+
+ if (isvalue(vc_MonIntfList.gmA)){
+ f_cf_monitor_up_sip(vc_vxlte_monitor_components.gmA);
+ 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.gmB.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.ic.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.mwPI.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.mwPS.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.mwIS.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.mwPB.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.mwIB.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.isc.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.cxIH.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.cxSH.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.gx.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.rx.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.s6a.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.s9.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.sh.start(f_cf_setFilter(
+ valueof (m_SetFilterReq(
+ e_diameter,
+ {vc_MonIntfList.sh.interfaceInfo}
+ )
+ )));
+ }
+
+ tc_noAct.start(3.0);
+ alt {
+ [] tc_noAct.timeout {
+ }
+ }
+ 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