#!/bin/bash
#set -e
#set -vx
clear
if [ -z $ATS ]
then
echo "ATS shall be defined"
exit 1
fi
CURPWD=`pwd`
if [ ! "${PWD##*/}" == "scripts" ]
then
cd ../scripts
if [ ! $? == 0 ]
then
echo "Please move to PROJECT/scripts directory"
exit 1
fi
fi
if [ -f ./core ]
then
rm -f ./core
fi
sudo LD_LIBRARY_PATH=$LD_LIBRARY_PATH ../bin/$ATS 127.0.0.1 12000
cd ${CURPWD}
https://gitlab.eclipse.org/eclipse/titan/titan.core.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.Common_Components.Abstract_Socket.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.HTTPmsg.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.LANL2asp.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.PCAPasp.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.PIPEasp.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SCTPasp.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SIPmsg.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SQLasp.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.TCPasp.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.TELNETasp.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.UDPasp.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.COMMON.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DHCP.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DHCPv6.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DIAMETER_ProtocolModule_Generator.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.DNS.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ICMP.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ICMPv6.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IP.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.RTP.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.RTSP.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SMPP.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SMTP.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SNMP.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.TCP.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.UDP.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.XMPP.git
https://gitlab.eclipse.org/eclipse/titan/titan.misc.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.LDAPasp_RFC4511.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.LDAPmsg.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.Common_Components.Socket-API.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SSHCLIENTasp.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.STDINOUTmsg.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.SUNRPCasp.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.UNIX_DOMAIN_SOCKETasp.git
https://gitlab.eclipse.org/eclipse/titan/titan.TestPorts.IPL4asp.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.FrameRelay.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.H248_v2.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IMAP_4rev1.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ICAP.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IKEv2.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IPsec.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.IUA.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.JSON_v07_2006.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.L2TP.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.M3UA.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.MIME.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.MSRP.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.PPP.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.ProtoBuff.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.RADIUS_ProtocolModule_Generator.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.SRTP.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.WebSocket.git
https://gitlab.eclipse.org/eclipse/titan/titan.ProtocolModules.HTTP2.0.git
https://gitlab.eclipse.org/eclipse/titan/titan.Libraries.TCCUsefulFunctions.git
#!/bin/bash
# Debug mode
#set -e
#set -vx
# Usage: sudo ./update_user_name.bash
# TODO Use git clone in temporary directory
USER_NAME='s/etsi/vagrant/g'
for i in `find /home/vagrant/dev/$1 -name "*.cf*"`
do
sed --in-place ${USER_NAME} $i
done
exit 0
......@@ -513,6 +513,47 @@ Package TP_GM {
}
} // End of TP_GM_PCSCF_ECO_INVITE_05
Test Purpose {
TP Id TP_GM_PCSCF_ECO_INVITE_05
Test objective "Verify that the P-CSCF successfully receives an initial emergency INVITE from a registered but not emergency registered UE."
Reference
"ETSI TS 124 229 [1], Clauses 5.1.6.8.4"
Config Id CF_VoLTE_RMI_ES
PICS Selection NONE
Initial conditions with {
the UE_A entity isAttachedTo the EPC_B and
the UE_A entity isRegisteredTo the IMS_A and
the UE_A entity not isEmergencyRegisteredTo the IMS_A
/* This implies that the UE is currently attached and registered
to its home operator's network and the IP-CAN does not define emergency bearers
see 5.1.6.1 3rd paragraph */
}
Expected behaviour
ensure that {
when {
the UE_A entity isRequestedToEstablishEmergencyCall
}
then {
the IMS_P_CSCF_A entity receives an INVITE containing
From indicating value PX_UE_A_SIP_URI,
To indicating value PX_SIP_EMERGENCY_SERVICE_URN,
CallId indicating value PX_UE_A_CALLID,
Via indicating value PX_UE_A_VIA,
Route indicating value PX_UE_A_SERVICE_ROUTE,
PPreferredIdentity, // one or two instances
MessageBody;
from the UE_A entity
}
}
} // End of TP_GM_PCSCF_ECO_INVITE_05
Test Purpose {
TP Id TP_GM_PCSCF_ECO_BYE_01
......
Subproject commit c38a2f267cb659c8180548bc82721d34dc71ef85
......@@ -15,9 +15,9 @@ module AtsImsIot_Diameter_Templates {
//LibDiameter
import from LibDiameter_TypesAndValues all;
import from LibDiameter_Types_Base_AVPs 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;
......@@ -215,6 +215,18 @@ module AtsImsIot_Diameter_Templates {
aVP_Data := p_avpData
}
template AF_Requested_Data_AVP mw_aF_Requested_Data(template (present) UInt32 p_avpData := ?) :=
{
aVP_Header := mw_aVP_Header_any_Code(?),
aVP_Data := p_avpData
};
template Service_URN_AVP mw_service_URN(template (present) octetstring p_avpData := ?) :=
{
aVP_Header := mw_aVP_Header_any_Code(c_service_URN_AVP_Code),
aVP_Data := p_avpData
};
} //end group RxHeaderFields
group GxHeaderFields{
......@@ -405,7 +417,7 @@ module AtsImsIot_Diameter_Templates {
template Subscription_Data_AVP mw_subscriptionData_emergencyInfo:= {
aVP_Header := mw_aVP_Header_any_Code(c_subscription_Data_AVP_Code),
emergency_Info := ?
aVP_Type := ?//emergency_Info := ? FIXME To be reviewed
}
} //end group S6aHeaderFields
......@@ -893,6 +905,27 @@ module AtsImsIot_Diameter_Templates {
}
}
template AAR_MSG mw_AAR_AfRequestedData_ServiceUrn modifies mw_AAR_basic := {
aAR_Body :={
//media_Component_Description := {mw_mediaComponentDescription_FlowStatusEnabled},
specific_Action := *,
framed_IP_Address := ?,
//framed_IPv6_Address := *,
aF_Requested_Data := mw_aF_Requested_Data,
service_URN := mw_service_URN
}
}
template AAR_MSG mw_AAR_ServiceUrn modifies mw_AAR_basic := {
aAR_Body :={
//media_Component_Description := {mw_mediaComponentDescription_FlowStatusEnabled},
specific_Action := *,
framed_IP_Address := ?,
//framed_IPv6_Address := *,
service_URN := mw_service_URN
}
}
template ASR_MSG mw_ASR_abortCause(template (present) Abort_Cause_Type p_avpData) modifies mw_ASR_basic := {
aSR_Body :={
abort_cause := mw_abortCause(p_avpData)
......@@ -959,6 +992,31 @@ module AtsImsIot_Diameter_Templates {
}
}
template AAA_MSG mw_AAA_resultCode_subscriptionId_userEquipmentInfo modifies mw_AAA_basic := {
aAA_Body :={
result_Code := mw_resultCode(mw_resultCode_diameterSuccess),
user_Equipment_Info := ?,
subscription_Id_AVP := ?
}
}
template AAA_MSG mw_AAA_resultCode_userEquipmentInfo modifies mw_AAA_basic := {
aAA_Body :={
result_Code := mw_resultCode(mw_resultCode_diameterSuccess),
user_Equipment_Info := ?
}
}
template AAA_MSG mw_AAA_resultCode_subscriptionId modifies mw_AAA_basic := {
aAA_Body :={
result_Code := mw_resultCode(mw_resultCode_diameterSuccess),
subscription_Id_AVP := ?
}
}
template ASA_MSG mw_ASA_resultCode modifies mw_ASA_basic := {
aSA_Body :={
result_Code := mw_resultCode(mw_resultCode_diameterSuccess)
......
......@@ -42,6 +42,10 @@ module AtsImsIot_Emergency {
import from AtsImsIot_TP_behavior_RX all;
import from AtsImsIot_PIXITS all;
// For Diameter codec tests only
import from LibDiameter_TypesAndValues all;
/**
* @see ETSI TS 103 795-2 Clause 5 Test Descriptions (Interoperability at HPLMN)
*/
......@@ -54,11 +58,12 @@ module AtsImsIot_Emergency {
group UENetworkAttachmentWithUSIM {
/**
* @desc Emergency Network Attachment and Establishment of the Emergency Bearer with USIM.
* @desc UE Emergency Network Attachment and Establishment of the Emergency Bearer with USIM.
* On successful emergency attachment, the UE/IVS should discover the P-CSCF IP address.
* The EPC will create the Emergency Bearers which will allow communication only between the UE and the P-CSCF
* and allowed forwarding towards E-CSCF
* @see TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12;
* @see ETSI TS 103 795-2 Clause 5.1.1
* TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12;
* TS 129 272 [8], clause 5.2.1.1 (MME shall proceed even if Update Location fails)
*
*/
......@@ -67,6 +72,9 @@ module AtsImsIot_Emergency {
var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A );
var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A );
// f_validate_uar('010001a0c000012c010000000001fc43c521ba2d000001074000002d7363736366696d73342e696d73342e69736b726174656c2e6d616b3b3131303b373131333400000000000104400000200000010a4000000c000028af000001024000000c01000000000001154000000c0000000100000108400000237363736366696d73342e696d73342e69736b726174656c2e6d616b000000012840000019696d73342e69736b726174656c2e6d616b00000000000125400000236873733131696d73342e696d73342e69736b726174656c2e6d616b000000011b40000019696d73342e69736b726174656c2e6d616b00000000000258c000001d000028af696d73342e69736b726174656c2e6d616b0000000000026fc0000010000028af0000000000000259c0000041000028af7369703a30303130313130303130303232303740696d732e6d6e633030312e6d63633030312e336770706e6574776f726b2e6f7267000000000000014000003930303130313130303130303232303740696d732e6d6e633030312e6d63633030312e336770706e6574776f726b2e6f7267000000'O);
// stop;
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){
......@@ -98,15 +106,37 @@ module AtsImsIot_Emergency {
setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
}
} // End of TC TC_VoLTE_ECO_INT_ATT_01
// function f_validate_uar(in octetstring p_uar) {
// var bitstring v_conv := oct2bit(p_uar);
// var UAR_MSG v_msg;
// var integer v_result := decvalue(v_conv, v_msg);
// log("msg: ", v_msg);
// if (v_result == 0) {
// var octetstring v_uar_enc := bit2oct(encvalue(v_msg));
// log("v_uar_enc: ", v_uar_enc);
// log("Matching v_uar_enc: ", match(p_uar, v_uar_enc));
// if (match(p_uar, v_uar_enc)) {
// setverdict(pass);
// } else {
// setverdict(fail);
// }
// } else {
// setverdict(fail);
// }
// stop;
// }
} // End of group UENetworkAttachmentWithUSIM
group UENetworkAttachmentWithoutUSIM {
/**
* @desc Emergency Network Attachment and Establishment of the Emergency Bearer without USIM.
* @desc UE Emergency Network Attachment and Establishment of the Emergency Bearer without USIM.
* On successful emergency attachment, the UE/IVS should discover the P-CSCF IP address.
* The EPC will create the Emergency Bearers which will allow communication only between the UE and the P-CSCF
* and allowed forwarding towards E-CSCF
* @see TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12;
* @see ETSI TS 103 795-2 Clause 5.1.2
* TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12;
* TS 129 272 [8], clause 5.2.1.1 (MME shall proceed even if Update Location fails)
*
*/
......@@ -278,6 +308,9 @@ module AtsImsIot_Emergency {
*/
group EmergencySessionEmergencyBearerOperations {
/**
* @see ETSI TS 103 795-2 Clause 5.3.1 Emergency Session Establishment
*/
group EmergencySessionEstablishment {
/**
......@@ -522,7 +555,6 @@ module AtsImsIot_Emergency {
*/
testcase TD_VoLTE_ECO_INT_INI_03() runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A );
var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP );
......@@ -1286,14 +1318,16 @@ module AtsImsIot_Emergency {
/**
* @desc
* @desc To demonstrate the establishment of dedicated bearers at the originating EPC due to SIP emergency session establishment over AS with non-emergency registration.
* PSAP is located in the IM CN subsystem of IMS A.
*
* @see ETSI TS 103 795-2 Clause 5.3.1.10 UE calling PSAP over AS with non-emergency registration
*/
testcase TD_VoLTE_ECO_INT_INI_09() runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A );
var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A );
var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP );
f_setVxLteMonIterfacesAvailability();
......@@ -1303,7 +1337,8 @@ module AtsImsIot_Emergency {
PX_DIAMETER_RX_INTERFACENAME,
PX_SIP_MW_PE_INTERFACENAME,
PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF
PX_SIP_MM_B_PSAP_INTERFACENAME
PX_SIP_MM_B_PSAP_INTERFACENAME,
PX_SIP_ISC_INTERFACENAME
}))
{
var SipMessage v_sip;
......@@ -1324,20 +1359,51 @@ module AtsImsIot_Emergency {
// TODO Check OPTIONS from PSAP to E-CSCF
}
f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_09_01();
f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1
// Test body
//f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);
// TODO
//f_mtc_userInitiateCall (v_ueA, v_infoPsap);
action("UE A needs to trigger an emergency call"); // Event 1
// Session INVITE
f_mtc_check_TP_ISC_SCSCF_ECO_INVITE_01(vc_vxlte_monitor_components.isc, -, v_sip); // INVITE Event 2
f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.isc, -, v_sip);
f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwIE, -, v_sip); // Event 3
f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwIE, -, v_sip);
f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // Event 4
f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip);
// 183 Session Progress
f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // Event 5
f_mtc_check_TP_MI_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwIE, -, v_sip); // Event 6
f_mtc_check_TP_ISC_SCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.isc, -, v_sip); // Event 7
// 180 Ringing
f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.mwS_PSAP, true); // 180 Ringing – Event 10
f_mtc_check_TP_MX_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwIE, -, v_sip); // Event 11
f_mtc_check_TP_ISC_SCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.isc, -, v_sip); // Event 12
f_mtc_userCheckCallEstablished(v_ueA); // Event 34
f_mtc_userCheckCallEstablished(v_psap); // Event 34
f_mtc_userCheckRinging(v_psap);
f_mtc_userCheckPeerIsRinging(v_ueA);
f_mtc_userAnswerCall(v_psap);
// 200 OK
f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // Event 14
f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwIE, -, v_sip); // Event 15
f_mtc_check_TP_ISC_SCSCF_ECO_200OK_01(vc_vxlte_monitor_components.isc, -, v_sip); // Event 16
f_mtc_check_TP_ISC_SCSCF_ECO_ACK_01(vc_vxlte_monitor_components.isc, -, v_sip); // Event 19
f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwIE, -, v_sip); // Event 20
f_mtc_check_TP_MX_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // Event 21
f_mtc_userCheckCallEstablished(v_ueA); // Event 22
f_mtc_userCheckCallEstablished(v_psap); // Event 22
// Postamble
f_mtc_EndCall(v_ueA);
f_PO_user_home_deregistration(v_ueA);
f_PO_user_home_deregistration(v_psap);
//f_cf_int_call_down(v_config);
//unmap/disconnect component ports
f_cf_user_down ( v_psap );
......@@ -1362,7 +1428,7 @@ module AtsImsIot_Emergency {
/**
* @desc To demonstrate that if an emergency call has been terminated, the attempt by the PSAP call taker to communicate back to the emergency caller shall be answered.
* @see ETSI TS 103 795-2 Clause 5.3.1.11 Callback from PSAP
* @remark Ipetion 1: PSAP in IMS A
* @remark Option 1: PSAP in IMS A
*/
testcase TD_VoLTE_ECO_INT_INI_10_01() runs on ImsTestCoordinator system IotSystemInterface {
......@@ -1462,7 +1528,7 @@ module AtsImsIot_Emergency {
/**
* @desc To demonstrate that if an emergency call has been terminated, the attempt by the PSAP call taker to communicate back to the emergency caller shall be answered.
* @see ETSI TS 103 795-2 Clause 5.3.1.11 Callback from PSAP
* @remark Ipetion 1: PSAP NOT in IMS A
* @remark Option 2: PSAP NOT in IMS A
*/
testcase TD_VoLTE_ECO_INT_INI_10_02() runs on ImsTestCoordinator system IotSystemInterface {
......@@ -1567,7 +1633,7 @@ module AtsImsIot_Emergency {
/**
* @desc To demonstrate that if an emergency call has been terminated, the attempt by the PSAP call taker to communicate back to the emergency caller shall be answered.
* @see ETSI TS 103 795-2 Clause 5.3.1.11 Callback from PSAP
* @remark Ipetion 1: PSAP in PSTN A
* @remark Option 3: PSAP in PSTN A
*/
testcase TD_VoLTE_ECO_INT_INI_10_03() runs on ImsTestCoordinator system IotSystemInterface {
......@@ -1680,7 +1746,7 @@ module AtsImsIot_Emergency {
/**
* @desc To perform originating UE session release and the tear down of related dedicated bearers.
* @see ETSI TS 103 795-2 Clause 5.3.3.1 UE Initiated Emergency Session Release
* @see ETSI TS 103 795-2 Clause 5.3.2.1 UE Initiated Emergency Session Release
* @remark This is option 1: PSAP is in IMS A network
*/
testcase TD_VoLTE_EMC_INT_REL_01_01() runs on ImsTestCoordinator system IotSystemInterface {
......@@ -1764,7 +1830,7 @@ module AtsImsIot_Emergency {
/**
* @desc To perform originating UE session release and the tear down of related dedicated bearers.
* @see ETSI TS 103 795-2 Clause 5.3.3.1 UE Initiated Emergency Session Release
* @see ETSI TS 103 795-2 Clause 5.3.2.1 UE Initiated Emergency Session Release
* @remark This is option 2: PSAP is not in IMS A network
*/
testcase TD_VoLTE_EMC_INT_REL_01_02 ( ) runs on ImsTestCoordinator system IotSystemInterface {
......@@ -1890,8 +1956,8 @@ module AtsImsIot_Emergency {
f_mtc_check_precond_TD_VoLTE_EMC_INT_REL_01_03();
// Test body
//f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);
// SIP BYE
f_mtc_check_TP_GM_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2
f_mtc_check_TP_MW_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 3
f_mtc_check_TP_MI_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 7
......@@ -1936,7 +2002,7 @@ module AtsImsIot_Emergency {
/**
* @desc To perform originating PSAP session release and the tear down of related dedicated bearers.
* @see ETSI TS 103 795-2 Clause 5.3.3.2 PSAP Initiated Emergency Session Release
* @see ETSI TS 103 795-2 Clause 5.3.2.2 PSAP Initiated Emergency Session Release
* @remark This is option 1: PSAP is in IMS A network
*/
testcase TD_VoLTE_ECO_INT_REL_02_01() runs on ImsTestCoordinator system IotSystemInterface {
......@@ -1978,7 +2044,6 @@ module AtsImsIot_Emergency {
// Test body
f_mtc_check_TP_MM_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 1
f_mtc_check_TP_MW_PCSCF_ECO_BYE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 7
f_mtc_check_TP_GM_PCSCF_ECO_BYE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 8
......@@ -2023,7 +2088,7 @@ module AtsImsIot_Emergency {
/**
* @desc To perform originating PSAP session release and the tear down of related dedicated bearers.
* @see ETSI TS 103 795-2 Clause 5.3.3.2 PSAP Initiated Emergency Session Release
* @see ETSI TS 103 795-2 Clause 5.3.2.2 PSAP Initiated Emergency Session Release
* @remark This is option2: PSAP is not in IMS A network
*/
testcase TD_VoLTE_ECO_INT_REL_02_02() runs on ImsTestCoordinator system IotSystemInterface {
......@@ -2114,8 +2179,8 @@ module AtsImsIot_Emergency {
/**
* @desc To perform originating PSAP session release and the tear down of related dedicated bearers.
* On call release initiated bye PSAP, the P-CSCF A should trigger the removal of all relevant previously created bearers
* @see ETSI TS 103 795-2 Clause 5.3.3.2 PSAP Initiated Emergency Session Release
* @remark This is option2: PSAP is in the same network
* @see ETSI TS 103 795-2 Clause 5.3.2.2 PSAP Initiated Emergency Session Release
* @remark This is option3: PSAP is in PSTN network
*/
testcase TD_VoLTE_ECO_INT_REL_02_03() runs on ImsTestCoordinator system IotSystemInterface {
......@@ -2155,8 +2220,8 @@ module AtsImsIot_Emergency {
// Test body
f_mtc_check_TP_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic); // Event 4
f_mtc_check_TP_MX_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 5
action("PSAP Initiated Emergency Session Release via PSTN"); // Event 5
f_mtc_check_TP_MX_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 6
f_mtc_check_TP_MW_PCSCF_ECO_BYE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 7
f_mtc_check_TP_GM_PCSCF_ECO_BYE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 8
......@@ -2203,11 +2268,14 @@ module AtsImsIot_Emergency {
} // End of group EmergencySessionRelease
/**
* @see ETSI TS 103 795-2 Clause 5.3.3 Emergency Session Abort/Reject
*/
group EmergencySessionAbortOrReject {
/**
* @desc To perform SIP session abort (originating side) and the related interactions with PCRF A and EPC A.
* @see ETSI TS 103 795-2 Clause 5.3.4.1 Emergency Session Abort
* @see ETSI TS 103 795-2 Clause 5.3.3.1 Emergency Session Abort
* @remark This is option 1: PSAP is in IMS A network
*/
testcase TD_VoLTE_EMC_INT_ABT_01_01() runs on ImsTestCoordinator system IotSystemInterface {
......@@ -2258,7 +2326,10 @@ module AtsImsIot_Emergency {
f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 5)
f_mtc_check_TP_MW_PCSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6
// Option 1
f_mtc_check_TP_MM_ECSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 7
f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 8
f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17
f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18
......@@ -2300,8 +2371,8 @@ module AtsImsIot_Emergency {
/**
* @desc To perform SIP session abort (originating side) and the related interactions with PCRF A and EPC A.
* @see ETSI TS 103 795-2 Clause 5.3.4.1 Emergency Session Abort
* @remark This is option 1: PSAP is not in IMS A network
* @see ETSI TS 103 795-2 Clause 5.3.3.1 Emergency Session Abort
* @remark This is option 2: PSAP is not in IMS A network
*/
testcase TD_VoLTE_EMC_INT_ABT_01_02() runs on ImsTestCoordinator system IotSystemInterface {
......@@ -2352,7 +2423,9 @@ module AtsImsIot_Emergency {
f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 5)
f_mtc_check_TP_MW_PCSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6
f_mtc_check_TP_MX_ECSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 9
f_mtc_check_TP_IC_IBCF_CANCEL_01(vc_vxlte_monitor_components.ic, true); // CANCEL Event 10 (NOTE: comment out if ISC simulated by Ic)
f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic); // 200 CANCEL – Event 11
......@@ -2400,8 +2473,8 @@ module AtsImsIot_Emergency {
/**
* @desc To perform SIP session abort (originating side) and the related interactions with PCRF A and EPC A.
* @see ETSI TS 103 795-2 Clause 5.3.4.1 Emergency Session Abort
* @remark This is option 1: PSAP is in PSTN network
* @see ETSI TS 103 795-2 Clause 5.3.3.1 Emergency Session Abort
* @remark This is option 3: PSAP is in PSTN network
*/
testcase TD_VoLTE_EMC_INT_ABT_01_03() runs on ImsTestCoordinator system IotSystemInterface {
......@@ -2452,15 +2525,18 @@ module AtsImsIot_Emergency {
f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 5)
f_mtc_check_TP_MW_PCSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6
f_mtc_check_TP_MI_ECSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 13
f_mtc_check_TP_MM_ECSCF_EMC_CANCEL_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 14
f_mtc_check_TP_MI_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 16
f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17
f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18
f_mtc_check_TP_MM_ECSCF_EMC_487INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 22
f_mtc_check_TP_MI_ECSCF_EMC_487INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 23
f_mtc_check_TP_MW_PCSCF_EMC_487INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24
f_mtc_check_TP_GM_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25
......@@ -2499,7 +2575,7 @@ module AtsImsIot_Emergency {
/**
* @desc To demonstrate interaction between UE A and PSAP when an emergency session is rejected.
* @see ETSI TS 103 795-2 5.3.4.3 Emergency Session Reject
* @see ETSI TS 103 795-2 5.3.3.2 Emergency Session Reject from PSAP
* @remark This is option 1: PSAP is in IMS A network
*/
testcase TD_VoLTE_ECO_INT_REJ_01_01() runs on ImsTestCoordinator system IotSystemInterface {
......@@ -2531,13 +2607,8 @@ module AtsImsIot_Emergency {
// Preamble
f_mtc_userRegistration(v_ueA, v_userInfoA);
if (PX_PSAP_REGISTERED) {
f_mtc_userRegistration(v_psap, v_infoPsap);
} else {
// TODO Check OPTIONS from PSAP to E-CSCF
}
f_cf_user_down ( v_psap ); // PSAP unavailable
f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_01_01();
f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 3
// Test body
//f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);
......@@ -2559,8 +2630,6 @@ module AtsImsIot_Emergency {
f_mtc_check_TP_MW_PCSCF_ECO_INVITE_03(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 13
f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip);
f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 11
// 480 Temporary Unvailable
f_mtc_check_TP_MM_ECSCF_ECO_480INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 480 Temporary Unavailables Event 14
f_mtc_check_TP_MW_PCSCF_ECO_480INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 23
......@@ -2581,10 +2650,8 @@ module AtsImsIot_Emergency {
// Postamble
f_PO_user_home_deregistration(v_ueA);
f_PO_user_home_deregistration(v_psap);
//unmap/disconnect component ports
f_cf_user_down ( v_psap );
f_cf_user_down ( v_ueA );
f_cf_VxLteMonitor_Down();
f_cf_adapter_down ( );
......@@ -2630,19 +2697,16 @@ module AtsImsIot_Emergency {
f_cf_createVxLteMonitor();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueA );
f_cf_user_up ( v_psap );
f_cf_VxLteMonitor_Up();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueA );
f_cf_user_up ( v_psap );
f_cf_VxLteMonitor_Up();
// Preamble
f_mtc_userRegistration(v_ueA, v_userInfoA);
f_cf_user_down ( v_psap ); // PSAP unavailable
// Preamble
f_mtc_userRegistration(v_ueA, v_userInfoA);
if (PX_PSAP_REGISTERED) {
f_mtc_userRegistration(v_psap, v_infoPsap);
} else {
// TODO Check OPTIONS from PSAP to E-CSCF
}
f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_01_02();
f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 3
......@@ -2660,9 +2724,14 @@ module AtsImsIot_Emergency {
f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 8,9
f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 10,11
f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 12
f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 15
f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip);
f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 16 (NOTE: comment out if ISC simulated by Ic)
// 480 Temporary Unavailable
f_mtc_check_TP_IC_IBCF_480TEMPAV_01(vc_vxlte_monitor_components.ic, -, v_sip); // INVITE Event 18 (NOTE: comment out if ISC simulated by Ic)
f_mtc_check_TP_MX_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 11
f_mtc_check_TP_MX_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip);
......@@ -2688,10 +2757,8 @@ module AtsImsIot_Emergency {
// Postamble
f_PO_user_home_deregistration(v_ueA);
f_PO_user_home_deregistration(v_psap);
//unmap/disconnect component ports
f_cf_user_down ( v_psap );
f_cf_user_down ( v_ueA );
f_cf_VxLteMonitor_Down();
f_cf_adapter_down ( );
......@@ -2743,15 +2810,11 @@ module AtsImsIot_Emergency {
f_cf_user_up ( v_psap );
f_cf_VxLteMonitor_Up();
// Preamble
f_mtc_userRegistration(v_ueA, v_userInfoA);
if (PX_PSAP_REGISTERED) {
f_mtc_userRegistration(v_psap, v_infoPsap);
} else {
// TODO Check OPTIONS from PSAP to E-CSCF
}
// Preamble
f_mtc_userRegistration(v_ueA, v_userInfoA);
f_cf_user_down ( v_psap ); // PSAP unavailable
f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_01_03();
f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1
// Test body
//f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);
......@@ -2796,10 +2859,8 @@ module AtsImsIot_Emergency {
// Postamble
f_PO_user_home_deregistration(v_ueA);
f_PO_user_home_deregistration(v_psap);
//unmap/disconnect component ports
f_cf_user_down ( v_psap );
f_cf_user_down ( v_ueA );
f_cf_VxLteMonitor_Down();
f_cf_adapter_down ( );
......@@ -2853,8 +2914,8 @@ module AtsImsIot_Emergency {
} else {
// TODO Check OPTIONS from PSAP to E-CSCF
}
// Configure IMS so that IMS is not capable to handle emergency session
f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_02();
f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1
// Test body
f_mtc_check_TP_GM_PCSCF_ECO_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1
......@@ -2881,6 +2942,7 @@ module AtsImsIot_Emergency {
function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_02() runs on ImsTestCoordinator {
log("If the test case fails, please check the preconditions");
log("Check that IMS is not capable to handle emergency session");
// TODO Add real code to check pre-conditions
} // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_02
......@@ -2903,6 +2965,7 @@ module AtsImsIot_Emergency {
PX_DIAMETER_GX_INTERFACENAME
}))
{
var SipMessage v_sip;
f_cf_createVxLteMonitor();
......@@ -2910,7 +2973,9 @@ module AtsImsIot_Emergency {
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueA );
f_cf_user_up ( v_psap );
f_cf_VxLteMonitor_Up();
// Preamble
......@@ -2920,11 +2985,12 @@ module AtsImsIot_Emergency {
} else {
// TODO Check OPTIONS from PSAP to E-CSCF
}
f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_03();
f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1
// Test body
f_mtc_check_TP_GM_PCSCF_ECO_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1
//Send incorrect URN to SIP message
f_mtc_check_TP_GM_PCSCF_ECO_INVALID_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1
f_mtc_check_TP_GM_PCSCF_ECO_380ALTSRV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2
f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 3
......@@ -2955,7 +3021,344 @@ module AtsImsIot_Emergency {
} // End of group EmergencySessionAbortOrReject
} // End of group EmergencySessionEmergencyBearerOperations
/**
* @see ETSI TS 103 795-2 Clause 5.3.4 NG eCall tests
*/
group NGeCallTests {
/**
* @desc To demonstrate the establishment of IMS emergency call of the (automatically or manually) initiated eCall type of emergency service within an emergency registration
* @see ETSI TS 103 795-2 Clause 5.3.4.1 MSD sent during NG eCall establishment
*/
testcase TD_VoLTE_NGC_INT_INI_01() runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP );
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
PX_DIAMETER_GX_INTERFACENAME,
PX_DIAMETER_RX_INTERFACENAME,
PX_SIP_MW_PE_INTERFACENAME,
PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> PSAP
}))
{
var SipMessage v_sip;
f_cf_createVxLteMonitor();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueA );
f_cf_user_up ( v_psap );
f_cf_VxLteMonitor_Up();
// Preamble
f_mtc_userRegistration(v_ueA, v_userInfoA);
if (PX_PSAP_REGISTERED) {
f_mtc_userRegistration(v_psap, v_infoPsap);
} else {
// TODO Check OPTIONS from PSAP to E-CSCF
}
f_mtc_check_precond_TD_VoLTE_NGC_INT_INI_01();
// Test body
f_mtc_check_TP_GM_PCSCF_NGC_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1
f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip);
//Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2
f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 3
f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4
f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5
f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8
f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9
f_mtc_check_TP_MW_PCSCF_NGC_INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10
f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip);
f_mtc_check_TP_MM_ECSCF_NGC_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 11
f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip);
// 183 Session Progress
f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 183 In Progress Event 12
f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 13
f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18
//Rx/Gx exchange after 183(SDP) was received at P-CSCF
f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 14
f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 15
f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 16
f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 17
f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 180 Ringing – Event 20
f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 21
f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 22
f_mtc_userCheckRinging(v_psap); // Event 19
f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19
f_mtc_userAnswerCall(v_psap); // Event 26
f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 200 OK Event 23
f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24
f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25
f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // ACK Event 26
f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 27
f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 28
f_mtc_userCheckCallEstablished(v_ueA); // Event 29
f_mtc_userCheckCallEstablished(v_psap); // Event 29
// Postamble
f_mtc_EndCall(v_ueA);
f_PO_user_home_deregistration(v_ueA);
f_PO_user_home_deregistration(v_psap);
//f_cf_int_call_down(v_config);
//unmap/disconnect component ports
f_cf_user_down ( v_psap );
f_cf_user_down ( v_ueA );
f_cf_VxLteMonitor_Down();
}else{
//log...
setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
}
f_cf_adapter_down ( );
} // End of TC TD_VoLTE_NGC_INT_INI_01
group f_TD_VoLTE_NGC_INT_INI_01 {
function f_mtc_check_precond_TD_VoLTE_NGC_INT_INI_01() runs on ImsTestCoordinator {
log("If the test case fails, please check the preconditions");
// TODO Add real code to check pre-conditions
} // End of function f_mtc_check_precond_TD_VoLTE_NGC_INT_INI_01
} // End of group f_TD_VoLTE_NGC_INT_INI_01
/**
* @desc To demonstrate the if an IMS emergency call of the (automatically or manually) initiated eCall type of emergency service has been established,
* the attempt by the PSAP to request transfer of an updated MSD shall be answered.
* @see ETSI TS 103 795-2 Clause 5.3.4.1 MSD update during NG eCall
*/
testcase TD_VoLTE_NGC_INT_INF_01_01() runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP );
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
PX_DIAMETER_GX_INTERFACENAME,
PX_DIAMETER_RX_INTERFACENAME,
PX_SIP_MW_PE_INTERFACENAME,
PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> PSAP
}))
{
var SipMessage v_sip;
f_cf_createVxLteMonitor();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueA );
f_cf_user_up ( v_psap );
f_cf_VxLteMonitor_Up();
// Preamble
f_mtc_userRegistration(v_ueA, v_userInfoA);
if (PX_PSAP_REGISTERED) {
f_mtc_userRegistration(v_psap, v_infoPsap);
} else {
// TODO Check OPTIONS from PSAP to E-CSCF
}
f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1
f_mtc_check_precond_TD_VoLTE_NGC_INT_INF_01();
// Test body
//Send INFO
f_mtc_check_TP_MM_ECSCF_NGC_INFO_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // INFO Event 1
f_mtc_check_TP_MW_PCSCF_NGC_INFO_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // INFO Event 6
f_mtc_check_TP_GM_PCSCF_NGC_INFO_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INFO Event 7
//Receive INFO
f_mtc_check_TP_GM_PCSCF_NGC_INFO_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INFO Event 8
f_mtc_check_TP_MW_PCSCF_NGC_INFO_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // INFO Event 9
f_mtc_check_TP_MM_ECSCF_NGC_INFO_02(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // INFO Event 10
// Postamble
f_mtc_EndCall(v_ueA);
f_PO_user_home_deregistration(v_ueA);
f_PO_user_home_deregistration(v_psap);
//unmap/disconnect component ports
f_cf_user_down ( v_psap );
f_cf_user_down ( v_ueA );
f_cf_VxLteMonitor_Down();
}else{
//log...
setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
}
f_cf_adapter_down ( );
} // End of TC TD_VoLTE_NGC_INT_INF_01_01
testcase TD_VoLTE_NGC_INT_INF_01_02() runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP );
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
PX_DIAMETER_GX_INTERFACENAME,
PX_DIAMETER_RX_INTERFACENAME,
PX_SIP_MW_PE_INTERFACENAME,
PX_SIP_MW_EB_INTERFACENAME // E-CSCCF -> IBCF
}))
{
var SipMessage v_sip;
f_cf_createVxLteMonitor();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueA );
f_cf_user_up ( v_psap );
f_cf_VxLteMonitor_Up();
// Preamble
f_mtc_userRegistration(v_ueA, v_userInfoA);
if (PX_PSAP_REGISTERED) {
f_mtc_userRegistration(v_psap, v_infoPsap);
} else {
// TODO Check OPTIONS from PSAP to E-CSCF
}
f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1
f_mtc_check_precond_TD_VoLTE_NGC_INT_INF_01();
// Test body
//Send INFO
f_mtc_check_TP_MX_ECSCF_NGC_INFO_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // INFO Event 3
f_mtc_check_TP_MW_PCSCF_NGC_INFO_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // INFO Event 6
f_mtc_check_TP_GM_PCSCF_NGC_INFO_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INFO Event 7
//Receive INFO
f_mtc_check_TP_GM_PCSCF_NGC_INFO_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INFO Event 8 TODO
f_mtc_check_TP_MW_PCSCF_NGC_INFO_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // INFO Event 9 TODO
f_mtc_check_TP_MX_ECSCF_NGC_INFO_02(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // INFO Event 11
// Postamble
f_mtc_EndCall(v_ueA);
f_PO_user_home_deregistration(v_ueA);
f_PO_user_home_deregistration(v_psap);
//unmap/disconnect component ports
f_cf_user_down ( v_psap );
f_cf_user_down ( v_ueA );
f_cf_VxLteMonitor_Down();
}else{
//log...
setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
}
f_cf_adapter_down ( );
} // End of TC TD_VoLTE_NGC_INT_INF_01_02
testcase TD_VoLTE_NGC_INT_INF_01_03() runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP );
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
PX_DIAMETER_GX_INTERFACENAME,
PX_DIAMETER_RX_INTERFACENAME,
PX_SIP_MW_PE_INTERFACENAME,
PX_SIP_MI_EB_INTERFACENAME // E-CSCCF -> BGCF
}))
{
var SipMessage v_sip;
f_cf_createVxLteMonitor();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueA );
f_cf_user_up ( v_psap );
f_cf_VxLteMonitor_Up();
// Preamble
f_mtc_userRegistration(v_ueA, v_userInfoA);
if (PX_PSAP_REGISTERED) {
f_mtc_userRegistration(v_psap, v_infoPsap);
} else {
// TODO Check OPTIONS from PSAP to E-CSCF
}
f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1
f_mtc_check_precond_TD_VoLTE_NGC_INT_INF_01();
// Test body
//Send INFO
f_mtc_check_TP_MI_ECSCF_NGC_INFO_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // INFO Event 5
f_mtc_check_TP_MW_PCSCF_NGC_INFO_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // INFO Event 6
f_mtc_check_TP_GM_PCSCF_NGC_INFO_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INFO Event 7
//Receive INFO
f_mtc_check_TP_GM_PCSCF_NGC_INFO_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INFO Event 8 TODO
f_mtc_check_TP_MW_PCSCF_NGC_INFO_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // INFO Event 9 TODO
f_mtc_check_TP_MI_ECSCF_NGC_INFO_02(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // INFO Event 13
// Postamble
f_mtc_EndCall(v_ueA);
f_PO_user_home_deregistration(v_ueA);
f_PO_user_home_deregistration(v_psap);
//unmap/disconnect component ports
f_cf_user_down ( v_psap );
f_cf_user_down ( v_ueA );
f_cf_VxLteMonitor_Down();
}else{
//log...
setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
}
f_cf_adapter_down ( );
} // End of TC TD_VoLTE_NGC_INT_INF_01_03
group f_TD_VoLTE_NGC_INT_INF_01 {
function f_mtc_check_precond_TD_VoLTE_NGC_INT_INF_01() runs on ImsTestCoordinator {
log("If the test case fails, please check the preconditions");
// TODO Add real code to check pre-conditions
} // End of function f_mtc_check_precond_TD_VoLTE_NGC_INT_INI_01
} // End of group f_TD_VoLTE_NGC_INT_INF_01_01
}
} // End of group EmergencySessionEmergencyBearerOperations
/**
* @see ETSI TS 103 795-2 Clause 5.5 Emergency Network Detachment
......@@ -2984,8 +3387,9 @@ module AtsImsIot_Emergency {
f_cf_VxLteMonitor_Up();
//preamble
f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
f_mtc_userRadioEnabled ( v_ueA, true, true ); // UE-A trigger an initial network_attachment by enabling radio interface of its mobile
f_mtc_userRadioEnabled ( v_ueA, false, true );
// test body
// Check that user A starts initial network attachment
f_mtc_check_TP_GX_PCRF_EMC_CCA_01(vc_vxlte_monitor_components.gx, false);//f_mtc_check_TP_GX_PCRF_ECO_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3)
......@@ -3045,10 +3449,10 @@ module AtsImsIot_Emergency {
f_mtc_check_TP_GM_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2
//Rx/Gx exchange after BYE was received at P-CSCF
f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 3
f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 4)
f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 5)
f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 6)
f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // Event 3
f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // Event 4
f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // Event 5
f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 6
f_mtc_check_TP_MW_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 7
......@@ -3058,7 +3462,7 @@ module AtsImsIot_Emergency {
f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 18
f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 19
f_mtc_check_TP_GX_PCRF_ECO_CCA_01/*f_mtc_check_TP_GX_PCRF_ECO_CCA_02*/ ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 20)
f_mtc_check_TP_GX_PCRF_ECO_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 20)
f_mtc_userCheckCallTerminated(v_ueA); // Event 22
f_mtc_userCheckCallCancelled(v_psap); // Event 23
......@@ -3144,7 +3548,7 @@ module AtsImsIot_Emergency {
f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 18
f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 19
f_mtc_check_TP_GX_PCRF_ECO_CCA_01/*f_mtc_check_TP_GX_PCRF_ECO_CCA_02*/ ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 20)
f_mtc_check_TP_GX_PCRF_ECO_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 20)
f_mtc_userCheckCallTerminated(v_ueA); // Event 22
f_mtc_userCheckCallCancelled(v_psap); // Event 23
......@@ -3228,7 +3632,7 @@ module AtsImsIot_Emergency {
f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 18
f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 19
f_mtc_check_TP_GX_PCRF_ECO_CCA_01/*f_mtc_check_TP_GX_PCRF_ECO_CCA_02*/ ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 20)
f_mtc_check_TP_GX_PCRF_ECO_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 20)
f_mtc_userCheckCallTerminated(v_ueA); // Event 22
f_mtc_userCheckCallCancelled(v_psap); // Event 23
......@@ -3272,6 +3676,104 @@ module AtsImsIot_Emergency {
*/
group NetworkAttachment {
group UENetworkAttachmentWithUSIM {
/**
* @desc Emergency Network Attachment and Establishment of the Emergency Bearer with USIM.
* On successful emergency attachment, the UE/IVS should discover the P-CSCF IP address.
* The EPC will create the Emergency Bearers which will allow communication only between the UE and the P-CSCF
* and allowed forwarding towards E-CSCF
* @see ETSI TS 103 795-2 6.1.1 UE Emergency Network Attachment with USIM
* TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12;
* TS 129 272 [8], clause 5.2.1.1 (MME shall proceed even if Update Location fails)
*
*/
testcase TC_VoLTE_ECO_RMI_ATT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B );
var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B );
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){
f_cf_createVxLteMonitor();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueB );
f_cf_VxLteMonitor_Up();
// preamble
f_mtc_userRadioEnabled ( v_ueB, true, true ); // UE-B trigger an initial network_attachment by enabling radio interface of its mobile
// test body
// TODO: Check that user B starts initial network attachment
f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 2)
f_mtc_check_TP_S6A_HSS_ECO_ULA_01 ( vc_vxlte_monitor_components.s6a); // Check (ULA – Event 3)
f_mtc_check_TP_GX_PCRF_ECO_CCA_01 ( vc_vxlte_monitor_components.gx); // Check (CCR, CCA – Events 4, 5)
// postamble
f_mtc_userRadioEnabled ( v_ueB, false, true );
//unmap/disconnect component ports
f_cf_user_down ( v_ueB );
f_cf_VxLteMonitor_Down();
f_cf_adapter_down ( );
}else{
//log...
setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
}
} // End of TC TC_VoLTE_ECO_RMI_ATT_01
} // End of group UENetworkAttachmentWithUSIM
group UENetworkAttachmentWithoutUSIM {
/**
* @desc Emergency Network Attachment and Establishment of the Emergency Bearer without USIM.
* On successful emergency attachment, the UE/IVS should discover the P-CSCF IP address.
* The EPC will create the Emergency Bearers which will allow communication only between the UE and the P-CSCF
* and allowed forwarding towards E-CSCF
* @see ETSI TS 103 795-2 6.1.2 UE Emergency Network Attachment without USIM
* TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12;
* TS 129 272 [8], clause 5.2.1.1 (MME shall proceed even if Update Location fails)
*
*/
testcase TC_VoLTE_EMC_RMI_ATT_02 ( ) runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B );
var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B );
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){
f_cf_createVxLteMonitor();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueB );
f_cf_VxLteMonitor_Up();
// preamble
f_mtc_userRadioEnabled ( v_ueB, true, true ); // UE-B trigger an initial network_attachment by enabling radio interface of its mobile
// test body
// TODO Check that user B starts initial network attachment
f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 2)
f_mtc_check_TP_S6A_HSS_ECO_ULA_01 ( vc_vxlte_monitor_components.s6a); // Check (ULA – Event 3)
f_mtc_check_TP_GX_PCRF_EMC_CCA_01 ( vc_vxlte_monitor_components.gx); // Check (CCR, CCA – Events 4, 5)
// postamble
f_mtc_userRadioEnabled ( v_ueB, false, true );
//unmap/disconnect component ports
f_cf_user_down ( v_ueB );
f_cf_VxLteMonitor_Down();
f_cf_adapter_down ( );
}else{
//log...
setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
}
} // End of TC TC_VoLTE_ECO_RMI_ATT_02
} // End of group UENetworkAttachmentWithoutUSIM
} // End of group NetworkAttachment
/**
......@@ -3279,7 +3781,544 @@ module AtsImsIot_Emergency {
*/
group IMSEmergencyRegistration {
/**
* @desc To attempt initial emergency registration via the established emergency bearer. In this case, the emergency registration is not successful due to not accepted UE credentials. Emergency call can be established without emergency registration.
* @see ETSI TS 103 795-2 Clause 6.2.1 IMS Emergency Registration - Rejection
* @remark This is option 1: Emergency registration rejected by the visited network
*/
testcase TD_VoLTE_ECO_RMI_REG_01_01() runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A_EMERGENCY );
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
PX_SIP_MW_PI_INTERFACENAME,
PX_DIAMETER_CX_SH_INTERFACENAME,
PX_DIAMETER_CX_IH_INTERFACENAME,
PX_DIAMETER_RX_INTERFACENAME}))
{
f_cf_createVxLteMonitor();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueA );
f_cf_VxLteMonitor_Up();
// preamble
f_mtc_userRadioEnabled ( v_ueA, true, true ); // UE-A trigger an initial network_attachment by enabling radio interface of its mobile
// Test body
f_mtc_check_TP_GM_PCSCF_ECO_REGISTER_04(vc_vxlte_monitor_components.gmA); // Events 1, 8
f_mtc_check_TP_RX_PCSCF_ECO_AAR_01(vc_vxlte_monitor_components.rx, true);// Event 2 //true because AAR repeated in next TP
f_mtc_check_TP_RX_PCRF_ECO_AAA_01(vc_vxlte_monitor_components.rx); // Event 3
f_mtc_check_TP_MW_ICSCF_ECO_REGISTER_04(vc_vxlte_monitor_components.mwPI); // Event 4, 7
f_mtc_check_TP_CX_HSS_UAA_03(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 5, 6
// postamble
f_PO_user_home_deregistration ( v_ueA );
f_mtc_userRadioEnabled ( v_ueA, false, true );
//unmap/disconnet component ports
f_cf_user_down ( v_ueA );
f_cf_VxLteMonitor_Down();
f_cf_adapter_down ( );
}else{
//log...
setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs");
}
} // End of testcase TD_VoLTE_ECO_RMI_REG_01_01
/**
* @desc To attempt initial emergency registration via the established emergency bearer. In this case, the emergency registration is not successful due to not accepted UE credentials. Emergency call can be established without emergency registration.
* @see ETSI TS 103 795-2 Clause 6.2.1 IMS Emergency Registration - Rejection
* @remark This is option 1: Emergency registration rejected - UE not supporting GIBA
*/
testcase TD_VoLTE_ECO_RMI_REG_01_02() runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A_EMERGENCY );
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
PX_SIP_MW_PI_INTERFACENAME,
PX_DIAMETER_CX_SH_INTERFACENAME,
PX_DIAMETER_CX_IH_INTERFACENAME,
PX_DIAMETER_RX_INTERFACENAME}))
{
f_cf_createVxLteMonitor();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueA );
f_cf_VxLteMonitor_Up();
// preamble
f_mtc_userRadioEnabled ( v_ueA, true, true ); // UE-A trigger an initial network_attachment by enabling radio interface of its mobile
// Test body
f_mtc_check_TP_GM_PCSCF_ECO_REGISTER_05(vc_vxlte_monitor_components.gmA); // Events 1, 10
f_mtc_check_TP_RX_PCSCF_ECO_AAR_01(vc_vxlte_monitor_components.rx, true);// Event 2 //true because AAR repeated in next TP
f_mtc_check_TP_RX_PCRF_ECO_AAA_01(vc_vxlte_monitor_components.rx); // Event 3
f_mtc_check_TP_MW_ICSCF_ECO_REGISTER_05(vc_vxlte_monitor_components.mwPI); // Event 4, 9
f_mtc_check_TP_CX_HSS_UAA_03(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 5, 6
// postamble
f_PO_user_home_deregistration ( v_ueA );
f_mtc_userRadioEnabled ( v_ueA, false, true );
//unmap/disconnet component ports
f_cf_user_down ( v_ueA );
f_cf_VxLteMonitor_Down();
f_cf_adapter_down ( );
}else{
//log...
setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs");
}
} // End of testcase TD_VoLTE_ECO_RMI_REG_01_02
} // End of group IMSEmergencyRegistration
/**
* @see ETSI TS 103 795-3 Clause 6.3 Emergency Session Establishment(Roaming)
*/
group EmergencySessionEstablishmentRoaming {
/**
* @see ETSI TS 103 795-3 Clause 6.3.1 Roaming UE calling PSAP with emergency registration
*/
group RoamingUECallingPSAPWithEmergencyRegistration {
/**
* @desc To demonstrate the establishment of dedicated bearers at the originating EPC due to SIP roaming emergency session establishment within an emergency registration.
* PSAP is located in the IM CN subsystem of IMS A
* @see ETSI TS 103 795-2 Clause 6.3.1 Roaming UE calling PSAP with emergency registration
*/
testcase TD_VoLTE_ECO_RMI_INI_01() runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B_emergency );
var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B_EMERGENCY );
var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP );
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
PX_DIAMETER_GX_INTERFACENAME,
PX_DIAMETER_RX_INTERFACENAME,
PX_SIP_MW_PE_INTERFACENAME,
PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> PSAP
}))
{
var SipMessage v_sip;
f_cf_createVxLteMonitor();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueB );
f_cf_user_up ( v_psap );
f_cf_VxLteMonitor_Up();
// Preamble
f_mtc_userRegistration(v_ueB, v_userInfoB);
if (PX_PSAP_REGISTERED) {
f_mtc_userRegistration(v_psap, v_infoPsap);
} else {
// TODO Check OPTIONS from PSAP to E-CSCF
}
f_mtc_check_precond_TD_VoLTE_ECO_RMI_INI_01();
// Test body
if (not PX_ECALL) {
f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // INVITE Event 1
} else {
f_mtc_check_TP_GM_PCSCF_ECO_INVITE_04(vc_vxlte_monitor_components.gmB, -, v_sip); // INVITE Event 1
}
f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmB, -, v_sip);
//Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2
f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 3
f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4
f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5
f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8
f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9
f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10
f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip);
f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 11
f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip);
// 183 Session Progress
f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 183 In Progress Event 12
f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 13
f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 18
//Rx/Gx exchange after 183(SDP) was received at P-CSCF
f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 14
f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 15
f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 16
f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 17
f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 180 Ringing – Event 20
f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 21
f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 22
f_mtc_userCheckRinging(v_psap); // Event 19
f_mtc_userCheckPeerIsRinging(v_ueB); // Event 19
f_mtc_userAnswerCall(v_psap);
f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 200 OK Event 23
f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24
f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 25
f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, -, v_sip); // ACK Event 26
f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // ACK Event 27
f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 28
f_mtc_userCheckCallEstablished(v_ueB); // Event 29
f_mtc_userCheckCallEstablished(v_psap); // Event 29
// Postamble
f_mtc_EndCall(v_ueB);
f_PO_user_home_deregistration(v_ueB);
f_PO_user_home_deregistration(v_psap);
//f_cf_int_call_down(v_config);
//unmap/disconnect component ports
f_cf_user_down ( v_psap );
f_cf_user_down ( v_ueB );
f_cf_VxLteMonitor_Down();
}else{
//log...
setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
}
f_cf_adapter_down ( );
} // End of TC TD_VoLTE_ECO_INT_INI_01
group f_TD_VoLTE_ECO_RMI_INI_01 {
function f_mtc_check_precond_TD_VoLTE_ECO_RMI_INI_01() runs on ImsTestCoordinator {
log("If the test case fails, please check the preconditions");
// TODO Add real code to check pre-conditions
} // End of function f_mtc_check_precond_TD_VoLTE_ECO_RMI_INI_01
} // End of group f_TD_VoLTE_ECO_RMI_INI_01
} // End of group RoamingUECallingPSAPWithEmergencyRegistration
/**
* @see ETSI TS 103 795-3 Clause 6.3.2 Roaming UE calling PSAP with non-emergency registration
*/
group RoamingUECallingPSAPWithNonEmergencyRegistration {
/**
* @desc To demonstrate the establishment of dedicated bearers at the originating EPC due to roaming SIP emergency session establishment within non-emergency registration.
* PSAP is located in the IM CN subsystem of IMS A
* @see ETSI TS 103 795-2 Clause 6.3.2.1 Roaming UE calling PSAP in same network
*/
testcase TD_VoLTE_ECO_RMI_INI_02() runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B_emergency );
var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); //non-emergency registration
var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP );
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMB_INTERFACENAME,
PX_DIAMETER_GX_INTERFACENAME,
PX_DIAMETER_RX_INTERFACENAME,
PX_SIP_MW_PE_INTERFACENAME,
PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> PSAP
}))
{
var SipMessage v_sip;
f_cf_createVxLteMonitor();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueB );
f_cf_user_up ( v_psap );
f_cf_VxLteMonitor_Up();
// Preamble
f_mtc_userRegistration(v_ueB, v_userInfoB);
if (PX_PSAP_REGISTERED) {
f_mtc_userRegistration(v_psap, v_infoPsap);
} else {
// TODO Check OPTIONS from PSAP to E-CSCF
}
f_mtc_check_precond_TD_VoLTE_ECO_RMI_INI_02();
// Test body
// Test body
if (not PX_ECALL) {
f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmB, -, v_sip); // INVITE Event 1
} else {
f_mtc_check_TP_GM_PCSCF_ECO_INVITE_04(vc_vxlte_monitor_components.gmB, -, v_sip); // INVITE Event 1
}
f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmB, -, v_sip);
//Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2
f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 3
f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4
f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5
f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8
f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9
f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10
f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip);
f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 11
f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip);
// 183 Session Progress
f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 183 In Progress Event 12
f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 13
f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 18
//Rx/Gx exchange after 183(SDP) was received at P-CSCF
f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 14
f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 15
f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 16
f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 17
f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 180 Ringing – Event 20
f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 21
f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 22
f_mtc_userCheckRinging(v_psap); // Event 19
f_mtc_userCheckPeerIsRinging(v_ueB); // Event 19
f_mtc_userAnswerCall(v_psap);
f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 200 OK Event 23
f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24
f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 25
f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, -, v_sip); // ACK Event 26
f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // ACK Event 27
f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 28
f_mtc_userCheckCallEstablished(v_ueB); // Event 29
f_mtc_userCheckCallEstablished(v_psap); // Event 29
// Postamble
f_mtc_EndCall(v_ueB);
f_PO_user_home_deregistration(v_ueB);
f_PO_user_home_deregistration(v_psap);
//f_cf_int_call_down(v_config);
//unmap/disconnect component ports
f_cf_user_down ( v_psap );
f_cf_user_down ( v_ueB );
f_cf_VxLteMonitor_Down();
}else{
//log...
setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
}
f_cf_adapter_down ( );
} // End of TC TD_VoLTE_ECO_RMI_INI_02
group f_TD_VoLTE_ECO_RMI_INI_02 {
function f_mtc_check_precond_TD_VoLTE_ECO_RMI_INI_02() runs on ImsTestCoordinator {
log("If the test case fails, please check the preconditions");
// TODO Add real code to check pre-conditions
} // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_02
} // End of group f_TD_VoLTE_ECO_RMI_INI_02
/**
* @desc To demonstrate the rejection of roaming UE emergency session establishment when the
* P-CFCF is in home operator's network within non-emergency registration.
* P-CFCF is located in the IM CN subsystem of IMS A
* @see ETSI TS 103 795-2 Clause 6.3.2.2 Roaming UE calling PSAP in home operator's network
*/
testcase TD_VoLTE_ECO_RMI_INI_03() runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); //non-emergency registration
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME
}))
{
var SipMessage v_sip;
f_cf_createVxLteMonitor();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueA );
f_cf_VxLteMonitor_Up();
// Preamble
//registration is not needed
//similar to TC_VxLTE_RMI_ATT_01 UE A has perform a network_attachment
f_mtc_userRadioEnabled ( v_ueA, true, true ); // UE-A trigger an initial network_attachment by enabling radio interface of its mobile
// Test body
// UE A requests emergency session initiation // Event 1
f_mtc_check_TP_GM_PCSCF_ECO_INVITE_05(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 2
f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip);
// 380 (Alternative Service)
f_mtc_check_TP_GM_PCSCF_ECO_380ALTSRV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 3
// ACK
f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 6
//unmap/disconnect component ports
f_cf_user_down ( v_ueA );
f_cf_VxLteMonitor_Down();
}else{
//log...
setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
}
f_cf_adapter_down ( );
} // End of TC TD_VoLTE_ECO_RMI_INI_02
group f_TD_VoLTE_ECO_RMI_INI_03 {
function f_mtc_check_precond_TD_VoLTE_ECO_RMI_INI_03() runs on ImsTestCoordinator {
log("If the test case fails, please check the preconditions");
// TODO Add real code to check pre-conditions
} // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_02
} // End of group f_TD_VoLTE_ECO_RMI_INI_03
/**
* @desc To demonstrate the establishment of dedicated bearers for a roaming UE without any registration.
* PSAP is located in the IM CN subsystem of IMS A
* @see ETSI TS 103 795-2 Clause 6.3.2.3 Roaming UE calling PSAP with non-registration
*/
testcase TD_VoLTE_ECO_RMI_INI_04() runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B_emergency );
var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP );
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMB_INTERFACENAME,
PX_DIAMETER_GX_INTERFACENAME,
PX_DIAMETER_RX_INTERFACENAME,
PX_SIP_MW_PE_INTERFACENAME,
PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> PSAP
}))
{
var SipMessage v_sip;
f_cf_createVxLteMonitor();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueB );
f_cf_user_up ( v_psap );
f_cf_VxLteMonitor_Up();
// Preamble
//UE B non-registered
if (PX_PSAP_REGISTERED) {
f_mtc_userRegistration(v_psap, v_infoPsap);
} else {
// TODO Check OPTIONS from PSAP to E-CSCF
}
f_mtc_check_precond_TD_VoLTE_ECO_RMI_INI_04();
// Test body
f_mtc_check_TP_GM_PCSCF_ECO_INVITE_03(vc_vxlte_monitor_components.gmB, -, v_sip); // INVITE Event 1
f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmB, -, v_sip);
//Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2
f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 3
f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4
f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5
f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8
f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9
f_mtc_check_TP_MW_PCSCF_ECO_INVITE_03(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10
f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip);
f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 11
f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip);
// 183 Session Progress
f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 183 In Progress Event 12
f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 13
f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 18
//Rx/Gx exchange after 183(SDP) was received at P-CSCF
f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 14
f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 15
f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 16
f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 17
f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 180 Ringing – Event 22
f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24
f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 25
f_mtc_userCheckRinging(v_psap); // Event 19
f_mtc_userCheckPeerIsRinging(v_ueB); // Event 19
f_mtc_userAnswerCall(v_psap); // Event 26
f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 200 OK Event 23
f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24
f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 25
f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmB, -, v_sip); // Event 26
f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 27
f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 28
f_mtc_userCheckCallEstablished(v_ueB); // Event 29
f_mtc_userCheckCallEstablished(v_psap); // Event 29
// Postamble
f_mtc_EndCall(v_ueB);
f_PO_user_home_deregistration(v_ueB);
f_PO_user_home_deregistration(v_psap);
//f_cf_int_call_down(v_config);
//unmap/disconnect component ports
f_cf_user_down ( v_psap );
f_cf_user_down ( v_ueB );
f_cf_VxLteMonitor_Down();
}else{
//log...
setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
}
f_cf_adapter_down ( );
}
group f_TD_VoLTE_ECO_RMI_INI_04 {
function f_mtc_check_precond_TD_VoLTE_ECO_RMI_INI_04() runs on ImsTestCoordinator {
log("If the test case fails, please check the preconditions");
// TODO Add real code to check pre-conditions
} // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_04
} // End of group f_TD_VoLTE_ECO_RMI_INI_02
} // End of group RoamingUECallingPSAPWithNonEmergencyRegistration
} // End of group EmergencySessionEstablishmentRoaming
} // End of group Roaming
......
/*
* @author STF 574
* @version $Id$
* @desc This module provides the module parameter
*/
module AtsImsIot_PIXITS
{
group SUT {
group SUT_CONF {
/**
* @desc charstring for SUT/conference domain
*/
modulepar charstring PX_IMS_SUT_CONF_HOME_DOMAIN := "conf.sut.net";
/**
* @desc charstring for conference factory URI name
*/
modulepar charstring PX_IMS_SUT_CONF_FACTORY_NAME := "factory.uri.name";
/**
* @desc charstring for PChargingVector TP_IC_IBCF_INVITE_04
*/
modulepar charstring PX_IMS_A_ICID := "PX_IMS_A_ICID";
/**
* @desc Set to true of PSAP shall be registered to the IMS
*/
modulepar boolean PX_PSAP_REGISTERED := true;
/**
* @desc Set to true if the emergency call is an issued by an eCall
*/
modulepar boolean PX_ECALL := false;
} // end group SUT_CONF
} // end group SUT
group TS {
} // end group TS
} // end module AtsImsIot_PIXITS
/*
* @author STF 574
* @version $Id$
* @desc This module provides the module parameter
*/
module AtsImsIot_PIXITS {
import from LibSip_SIPTypesAndValues all;
group SUT {
group SUT_CONF {
/**
* @desc charstring for SUT/conference domain
*/
modulepar charstring PX_IMS_SUT_CONF_HOME_DOMAIN := "conf.sut.net";
/**
* @desc charstring for conference factory URI name
*/
modulepar
charstring PX_IMS_SUT_CONF_FACTORY_NAME := "factory.uri.name";
/**
* @desc charstring for PChargingVector TP_IC_IBCF_INVITE_04
*/
modulepar charstring PX_IMS_A_ICID := "PX_IMS_A_ICID";
/**
* @desc Set to true of PSAP shall be registered to the IMS
*/
modulepar boolean PX_PSAP_REGISTERED := true;
/**
* @desc Set to true if the emergency call is an issued by an eCall
*/
modulepar boolean PX_ECALL := false;
/**
* @desc charstring for emergency service urn
*/
// modulepar charstring PX_URN_SERVICE_SOS := "urn:service:sos";
// modulepar UrnUriComponents PX_URN_SERVICE_SOS := {
// namespaceId := "service",
// namespaceSpecificString := "sos"
// };
modulepar SipUrl PX_URN_SERVICE_SOS := {
scheme := "sip",
components := {
urn := {
namespaceId := "service",
namespaceSpecificString := "sos"
}
},
urlParameters := omit,
headers := omit
};
} // end group SUT_CONF
} // end group SUT
group TS {
} // end group TS
}
\ No newline at end of file
......@@ -706,6 +706,52 @@ group g_HSS {
}
} // End of function f_mtc_check_TP_CX_HSS_UAA_02
function f_mtc_check_TP_CX_HSS_ECO_UAA_02( // FIXME To be reviewed
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;
var template DIAMETER_MSG mw_diameter_msg_pass := { uAR_MSG := mw_UAR(mw_publicIdentity(v_publicIdentity)) };
var template DIAMETER_MSG mw_diameter_msg_fail := { uAR_MSG := mw_UAR_basic };
p_monitorCompRef.start (
f_Iot_Diameter_receive(
{
mw_diameter_msg_pass
},
{
mw_diameter_msg_fail
},
{0, omit},
"TP_CX_HSS_UAA_02 - UAR",
p_forward_to_mtc,
p_checkMessage
)
);
p_monitorCompRef.done;
mw_diameter_msg_pass := { uAA_MSG := mw_UAA_diamSuccess/*uAA_MSG := mw_UAA_diamSubsequentRegistration*/ }; //TODO:Check TP
mw_diameter_msg_fail := { uAA_MSG := mw_UAA_basic };
p_monitorCompRef.start (
f_Iot_Diameter_receive(
{
mw_diameter_msg_pass
},
{
mw_diameter_msg_fail
},
{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_ECO_UAA_02
/**
* Starts monitor component behavior for TP_CX_HSS_UAA_03
* @param p_monitorCompRef Reference to monitor component
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -1248,6 +1248,50 @@ group g_PCRF {
}
} // End of function f_mtc_check_TP_GX_PCRF_ECO_CCA_01
function f_mtc_check_TP_GX_PCRF_ECO_CCA_02( // FIXME To be reviewd
DiameterInterfaceMonitor p_monitorCompRef,
in boolean p_checkMessage := false,
in boolean p_forward_to_mtc := false
) runs on ImsTestCoordinator {
if (isvalue(p_monitorCompRef)){
var template DIAMETER_MSG mw_diameter_msg_pass := { cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5_ES(INITIAL_REQUEST_E) };
var template DIAMETER_MSG mw_diameter_msg_fail := { cCR_MSG := mw_CCR_basic };
p_monitorCompRef.start (
f_Iot_Diameter_receive(
{
mw_diameter_msg_pass
},
{
mw_diameter_msg_fail
},
{0, omit},
"TP_RX_PCRF_ECO_CCA_02 - CCR",
p_forward_to_mtc,
p_checkMessage
)
);
p_monitorCompRef.done;
mw_diameter_msg_pass := { cCA_MSG := mw_CCA_resultCode };
mw_diameter_msg_fail := { cCA_MSG := mw_CCA_basic};
p_monitorCompRef.start (
f_Iot_Diameter_receive(
{
mw_diameter_msg_pass
},
{
mw_diameter_msg_fail
},
{0, omit},
"TP_RX_PCRF_ECO_CCA_01 - CCA",
p_forward_to_mtc,
p_checkMessage
)
);
p_monitorCompRef.done;
}
} // End of function f_mtc_check_TP_GX_PCRF_ECO_CCA_02
/**
* Starts monitor component behavior for TP_GX_PCRF_ECO_CCA_02
* @param p_monitorCompRef Reference to monitor component
......@@ -1341,7 +1385,7 @@ group g_PCRF {
);
p_monitorCompRef.done;
}
} // End of function f_mtc_check_TP_GX_PCRF_ECO_CCA_02
} // End of function f_mtc_check_TP_GX_PCRF_EMC_CCA_01
} //end group ES
} // end group g_PCRF
......
......@@ -21,7 +21,7 @@ module AtsImsIot_TP_behavior_ISC
import from LibSip_Common all;
import from AtsImsIot_Functions all;
import from AtsImsIot_Templates_MW all;
import from AtsImsIot_Templates_ISC all;
import from LibIot_PIXITS all;
// LibSip
import from LibSip_SDPTypes all;
......@@ -44,49 +44,250 @@ module AtsImsIot_TP_behavior_ISC
group g_ISC {
group imsRegistration {
/**
* @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);
* @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 imsRegistration
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;
group imsInvite {
/**
* @desc Verify that the S-CSCF successfully receives an initial emergency INVITE from a registered but not emergency registered UE.
* Reference
* "ETSI TS 124 229 [1], Clauses 5.7.1.14"
* Config Id CF_VoLTE_INT_ES
* PICS Selection NONE
* Initial conditions with {
* the UE_A entity isAttachedTo the EPC_A and
* the UE_A entity isRegisteredTo the IMS_A and
* the UE_A entity not isEmergencyRegisteredTo the IMS_A
* }
* Expected behaviour
* ensure that {
* when {
* the UE_A entity isRequestedToEstablishEmergencyCall
* }
* then {
* the IMS_S_CSCF_A entity receives an INVITE containing
* From indicating value PX_UE_A_SIP_URI,
* To indicating value PX_SIP_EMERGENCY_SERVICE_URN,
* CallId indicating value PX_UE_A_CALLID,
* Via indicating value PX_UE_A_VIA,
* Route indicating value PX_UE_A_SERVICE_ROUTE,
* PPreferredIdentity, // one or two instances
* MessageBody;
* from the UE_A entity
* }
* }
*/
function f_mtc_check_TP_ISC_SCSCF_ECO_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_getSipUserId(PX_EUT_A);
var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP);
// Check the INVITE
p_monitorCompRef.start(
f_Iot_Sip_receive(
{
mw_SipRequest(mw_TP_ISC_SCSCF_ECO_INVITE_01(
-, // FIXME Set expected value
mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
mw_To_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain)
))
},
{ mw_SipRequest(mw_INVITE_Request_Base) },
{0, omit},
"TP_GM_PCSCF_ECO_INVITE_01 - Request", //TODO
true,
p_checkMessage
)
);
p_monitorCompRef.done;
// Retrieve messge
f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
}
} // End of function f_mtc_check_TP_ISC_SCSCF_INVITE_01
}
group ims183SessionProgress {
function f_mtc_check_TP_ISC_SCSCF_ECO_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_ISC_SCSCF_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_ISC_SCSCF_ECO_183SESSION_PROGRESS_01",
false,
p_checkMessage
)
);
p_monitorCompRef.done;
}
} // End of function f_mtc_check_TP_ISC_SCSCF_ECO_183SESSION_PROGRESS_01
} // End of group ims183SessionProgress
var charstring v_EUT_A_Addr := f_GetEUTPcscfIpAddress_1();
var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress_1());
group ims180Ringing {
function f_mtc_check_TP_ISC_SCSCF_ECO_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_ISC_SCSCF_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_ISC_SCSCF_180RINGING_01",
false,
p_checkMessage
)
);
p_monitorCompRef.done;
}
} // End of function f_mtc_check_TP_ISC_SCSCF_ECO_180RINGING_01
} // End of group ims180Ringing
group ims200Ok {
function f_mtc_check_TP_ISC_SCSCF_ECO_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);
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
// 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_ISC_SCSCF_ECO_200OK_01",
false,
p_checkMessage
)
);
p_monitorCompRef.done;
}
} // End of function f_mtc_check_TP_ISC_SCSCF_ECO_200OK_01
} // End of group ims200Ok
group imsAck {
function f_mtc_check_TP_ISC_SCSCF_ECO_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_ISC_SCSCF_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_ISC_SCSCF_ECO_ACK_01 - Request",
false,
p_checkMessage
)
);
p_monitorCompRef.done;
}
} // End of function f_mtc_check_TP_ISC_SCSCF_ECO_ACK_01
} // End of group imsAck
} // end of g_ISC
......
......@@ -753,5 +753,161 @@ module AtsImsIot_TP_behavior_MI {
} // End of function f_mtc_check_TP_MI_ECSCF_EMC_487INVITE_01
} // End of group imsRequestTermination
group imsINFO{
/**
* @desc Verify that the E-CSCF sends an INFO request demanding a transfer of updated MSD.
*
* Reference
* "ETSI TS 124 229 [1], Clauses 5.1.6.11.3"
* Config Id CF_VoLTE_INT_ES
* PICS Selection NONE
* Initial conditions with {
* the UE_A entity isEmergencyAttachedTo the EPC_A and
* the UE_A entity isEmergencyRegisteredTo the IMS_A and
* the UE_A entity isEmergencyRegisteredTo the IMS_A and
* the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP
* }
* Expected behaviour
* ensure that {
when {
the IMS_P_CSCF_A entity receives a INFO containing "Request transfer of updated MSD";
from the IMS_E_CSCF entity
}
then {
the IMS_P_CSCF_A entity sends a INFO containing
From indicating value PX_PSAP_SIP_URI,
To indicating value PX_UE_A_SIP_URI,
CallId indicating value PX_PSAP_CALLID,
Via indicating value PX_PSAP_VIA,
Route indicating value PX_PSAP_SERVICE_ROUTE,
InfoPackage indicating value "EmergencyCallData.eCall.MSD",
ContentDisposition indicating value "Info-Package",
MessageBody containing
MIME indicating value "application/EmergencyCallData.Control+xml", // MIME may contain additional parts e.g., sdp, xml
request containing
action indicating value "send-data",
datatype indicating value "eCall.MSD";,
ContentDisposition indicating value "By-Reference";;
to the UE_A entity
}
}
*/
function f_mtc_check_TP_MI_ECSCF_NGC_INFO_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_getSipUserId(PX_EUT_A_EMERGENCY);
var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP);
// Check the INVITE
p_monitorCompRef.start(
f_Iot_Sip_receive(
{
mw_SipRequest(mw_TP_MI_ECSCF_NGC_INFO_01(
-,
-, // FIXME Set expected value
mw_From_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain),
mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
-,
-,
-,
mw_PPreferredID,
mw_accept({mw_acceptBody("application/EmergencyCallData.Control+xml")}),
mw_recvInfo({mw_infoPackage_Type("EmergencyCallData.eCall.MSD")})
))
},
{ mw_SipRequest(mw_INFO_Request_Base) },
{0, omit},
"TP_MI_ECSCF_NGC_INFO_01 - Request",
true,
p_checkMessage
)
);
p_monitorCompRef.done;
// Retrieve messge
f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
}
} // End of function f_mtc_check_TP_MI_ECSCF_NGC_INFO_01
/**
* @desc Verify that the E-CSCF successfully receives an INFO from the UE in an established eCall type emergency call that has been requested to transfer an updated MSD.
*
* Reference
* "ETSI TS 124 229 [1], Clauses 5.1.6.11.3"
* Config Id CF_VxLTE_INT
* PICS Selection NONE
* Initial conditions with {
* the UE_A entity isEmergencyAttachedTo the EPC_A and
* the UE_A entity isEmergencyRegisteredTo the IMS_A and
* the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP
* }
* Expected behaviour
* ensure that {
* when {
* the UE_A entity isRequestedToTransferUpdatedMSD
* // UE_A has received an INFO request as described in TP_MW_PCSCF_NGC_INFO_01
* }
* then {
* the IMS_P_CSCF_A entity receives an INFO containing
* From indicating value PX_UE_A_SIP_URI,
* To indicating value PX_SIP_ECALL_EMERGENCY_SERVICE_URN, // "urn:service:sos.ecall.manual" or "urn:service:sos.ecall.automatic"
* CallId indicating value PX_UE_A_CALLID,
* Via indicating value PX_UE_A_VIA,
* Route indicating value PX_UE_A_SERVICE_ROUTE,
* InfoPackage indicating value "EmergencyCallData.eCall.MSD",
* ContentDisposition indicating value "Info-Package",
* MessageBody containing
* MIME indicating value "application/EmergencyCallData.eCall.MSD", // MIME may contain additional parts e.g., sdp, xml
* // MSD not exceeding 140 bytes and encoded in binary ASN.1
* ContentDisposition indicating value "By-Reference";;
* from the UE_A entity
* }
* }
*/
function f_mtc_check_TP_MI_ECSCF_NGC_INFO_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_EMERGENCY);
var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP);
// Check the INVITE
p_monitorCompRef.start(
f_Iot_Sip_receive(
{
mw_SipRequest(mw_TP_MI_ECSCF_NGC_INFO_01(
-,
-, // FIXME Set expected value
mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
mw_To_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain),
-,
-,
-,
mw_PPreferredID,
mw_accept({mw_acceptBody("application/EmergencyCallData.MSD")}),
mw_recvInfo({mw_infoPackage_Type("EmergencyCallData.eCall.MSD")})
))
},
{ mw_SipRequest(mw_INFO_Request_Base) },
{0, omit},
"TP_MI_ECSCF_NGC_INFO_02 - Request",
true,
p_checkMessage
)
);
p_monitorCompRef.done;
// Retrieve messge
f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
}
} // End of function f_mtc_check_TP_MI_ECSCF_NGC_INFO_02
}// End of group imsINFO
} // End of module AtsImsIot_TP_behavior_MI
\ No newline at end of file
......@@ -232,6 +232,78 @@ module AtsImsIot_TP_behavior_MM {
log("##### p_sip: ", p_sip);
}
} // End of function f_mtc_check_TP_MM_ECSCF_ECO_INVITE_03
/**
* @desc Verify that the E-CSCF successfully receives an INFO from the UE in an established eCall type emergency call that has been requested to transfer an updated MSD.
*
* Reference
* "ETSI TS 124 229 [1], Clauses 5.1.6.11.3"
* Config Id CF_VxLTE_INT
* PICS Selection NONE
* Initial conditions with {
* the UE_A entity isEmergencyAttachedTo the EPC_A and
* the UE_A entity isEmergencyRegisteredTo the IMS_A and
* the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP
* }
* Expected behaviour
* ensure that {
* when {
* the UE_A entity isRequestedToTransferUpdatedMSD
* // UE_A has received an INFO request as described in TP_MW_PCSCF_NGC_INFO_01
* }
* then {
* the IMS_P_CSCF_A entity receives an INFO containing
* From indicating value PX_UE_A_SIP_URI,
* To indicating value PX_SIP_ECALL_EMERGENCY_SERVICE_URN, // "urn:service:sos.ecall.manual" or "urn:service:sos.ecall.automatic"
* CallId indicating value PX_UE_A_CALLID,
* Via indicating value PX_UE_A_VIA,
* Route indicating value PX_UE_A_SERVICE_ROUTE,
* InfoPackage indicating value "EmergencyCallData.eCall.MSD",
* ContentDisposition indicating value "Info-Package",
* MessageBody containing
* MIME indicating value "application/EmergencyCallData.eCall.MSD", // MIME may contain additional parts e.g., sdp, xml
* // MSD not exceeding 140 bytes and encoded in binary ASN.1
* ContentDisposition indicating value "By-Reference";;
* from the UE_A entity
* }
* }
*/
function f_mtc_check_TP_MM_ECSCF_NGC_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_getSipUserId(PX_EUT_A_EMERGENCY);
var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP);
// Check the INVITE
p_monitorCompRef.start(
f_Iot_Sip_receive(
{
mw_SipRequest(mw_TP_MM_ECSCF_NGC_INVITE_01(
-, // FIXME Set expected value
mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
mw_To_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain),
-, -, -,
mw_PPreferredID,
mw_accept({mw_acceptBody("application/EmergencyCallData.Control+xml")}),
mw_recvInfo({mw_infoPackage_Type("EmergencyCallData.eCall.MSD")})
))
},
{ mw_SipRequest(mw_INVITE_Request_Base) },
{0, omit},
"TP_MM_ECSCF_NGC_INFO_01 - Request",
true,
p_checkMessage
)
);
p_monitorCompRef.done;
// Retrieve messge
f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
}
} // End of function f_mtc_check_TP_MM_ECSCF_NGC_INVITE_01
} // End of group imsInvite
......@@ -748,4 +820,160 @@ module AtsImsIot_TP_behavior_MM {
} // End of group imsTemporaryUnavailable
group imsINFO{
/**
* @desc Verify that the E-CSCF sends an INFO request demanding a transfer of updated MSD.
*
* Reference
* "ETSI TS 124 229 [1], Clauses 5.1.6.11.3"
* Config Id CF_VoLTE_INT_ES
* PICS Selection NONE
* Initial conditions with {
* the UE_A entity isEmergencyAttachedTo the EPC_A and
* the UE_A entity isEmergencyRegisteredTo the IMS_A and
* the UE_A entity isEmergencyRegisteredTo the IMS_A and
* the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP
* }
* Expected behaviour
* ensure that {
when {
the IMS_P_CSCF_A entity receives a INFO containing "Request transfer of updated MSD";
from the IMS_E_CSCF entity
}
then {
the IMS_P_CSCF_A entity sends a INFO containing
From indicating value PX_PSAP_SIP_URI,
To indicating value PX_UE_A_SIP_URI,
CallId indicating value PX_PSAP_CALLID,
Via indicating value PX_PSAP_VIA,
Route indicating value PX_PSAP_SERVICE_ROUTE,
InfoPackage indicating value "EmergencyCallData.eCall.MSD",
ContentDisposition indicating value "Info-Package",
MessageBody containing
MIME indicating value "application/EmergencyCallData.Control+xml", // MIME may contain additional parts e.g., sdp, xml
request containing
action indicating value "send-data",
datatype indicating value "eCall.MSD";,
ContentDisposition indicating value "By-Reference";;
to the UE_A entity
}
}
*/
function f_mtc_check_TP_MM_ECSCF_NGC_INFO_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_getSipUserId(PX_EUT_A_EMERGENCY);
var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP);
// Check the INVITE
p_monitorCompRef.start(
f_Iot_Sip_receive(
{
mw_SipRequest(mw_TP_MM_ECSCF_NGC_INFO_01(
-,
-, // FIXME Set expected value
mw_From_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain),
mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
-, -, -,
mw_PPreferredID,
mw_accept({mw_acceptBody("application/EmergencyCallData.Control+xml")}),
mw_recvInfo({mw_infoPackage_Type("EmergencyCallData.eCall.MSD")})
))
},
{ mw_SipRequest(mw_INFO_Request_Base) },
{0, omit},
"TP_MM_ECSCF_NGC_INFO_01 - Request",
true,
p_checkMessage
)
);
p_monitorCompRef.done;
// Retrieve messge
f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
}
} // End of function f_mtc_check_TP_MM_ECSCF_NGC_INFO_01
/**
* @desc Verify that the E-CSCF successfully receives an INFO from the UE in an established eCall type emergency call that has been requested to transfer an updated MSD.
*
* Reference
* "ETSI TS 124 229 [1], Clauses 5.1.6.11.3"
* Config Id CF_VxLTE_INT
* PICS Selection NONE
* Initial conditions with {
* the UE_A entity isEmergencyAttachedTo the EPC_A and
* the UE_A entity isEmergencyRegisteredTo the IMS_A and
* the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP
* }
* Expected behaviour
* ensure that {
* when {
* the UE_A entity isRequestedToTransferUpdatedMSD
* // UE_A has received an INFO request as described in TP_MW_PCSCF_NGC_INFO_01
* }
* then {
* the IMS_P_CSCF_A entity receives an INFO containing
* From indicating value PX_UE_A_SIP_URI,
* To indicating value PX_SIP_ECALL_EMERGENCY_SERVICE_URN, // "urn:service:sos.ecall.manual" or "urn:service:sos.ecall.automatic"
* CallId indicating value PX_UE_A_CALLID,
* Via indicating value PX_UE_A_VIA,
* Route indicating value PX_UE_A_SERVICE_ROUTE,
* InfoPackage indicating value "EmergencyCallData.eCall.MSD",
* ContentDisposition indicating value "Info-Package",
* MessageBody containing
* MIME indicating value "application/EmergencyCallData.eCall.MSD", // MIME may contain additional parts e.g., sdp, xml
* // MSD not exceeding 140 bytes and encoded in binary ASN.1
* ContentDisposition indicating value "By-Reference";;
* from the UE_A entity
* }
* }
*/
function f_mtc_check_TP_MM_ECSCF_NGC_INFO_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_EMERGENCY);
var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP);
// Check the INVITE
p_monitorCompRef.start(
f_Iot_Sip_receive(
{
mw_SipRequest(mw_TP_MM_ECSCF_NGC_INFO_01(
-,
-, // FIXME Set expected value
mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
mw_To_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain),
-,
-,
-,
mw_PPreferredID,
mw_accept({mw_acceptBody("application/EmergencyCallData.MSD")}),
mw_recvInfo({mw_infoPackage_Type("EmergencyCallData.eCall.MSD")})
))
},
{ mw_SipRequest(mw_INFO_Request_Base) },
{0, omit},
"TP_MM_ECSCF_NGC_INFO_02 - Request",
true,
p_checkMessage
)
);
p_monitorCompRef.done;
// Retrieve messge
f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
}
} // End of function f_mtc_check_TP_MM_ECSCF_NGC_INFO_02
}// End of group imsINFO
} // End of module AtsImsIot_TP_behavior_MM
\ No newline at end of file
......@@ -29,6 +29,7 @@ module AtsImsIot_TP_behavior_MW_PS {
import from AtsImsIot_Templates all;
import from AtsImsIot_TypesAndValues all;
import from AtsImsIot_Functions all;
import from AtsImsIot_PIXITS all;
group imsMessages {
......@@ -1465,8 +1466,8 @@ module AtsImsIot_TP_behavior_MW_PS {
// Check the INVITE
p_monitorCompRef.start(
f_Iot_Sip_receive(
{ mw_SipRequest(mw_TP_MW_PCSCF_INVITE_01(
-, // FIXME Set expected value
{ mw_SipRequest(mw_TP_MW_PCSCF_INVITE_01(PX_URN_SERVICE_SOS,
// -, // FIXME Set expected value
mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId
mw_To_AddrUnion_TelUrl(-) // v_userInfoB.publicId
))
......@@ -2204,6 +2205,77 @@ module AtsImsIot_TP_behavior_MW_PS {
} // End of function TP_MW_PCSCF_RE_INVITE_04
/**
* @desc Verify that the P-CSCF successfully receives an INFO from the UE in an established eCall type emergency call that has been requested to transfer an updated MSD.
*
* Reference
* "ETSI TS 124 229 [1], Clauses 5.1.6.11.3"
* Config Id CF_VxLTE_INT
* PICS Selection NONE
* Initial conditions with {
* the UE_A entity isEmergencyAttachedTo the EPC_A and
* the UE_A entity isEmergencyRegisteredTo the IMS_A and
* the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP
* }
* Expected behaviour
* ensure that {
* when {
* the UE_A entity isRequestedToTransferUpdatedMSD
* // UE_A has received an INFO request as described in TP_MW_PCSCF_NGC_INFO_01
* }
* then {
* the IMS_P_CSCF_A entity receives an INFO containing
* From indicating value PX_UE_A_SIP_URI,
* To indicating value PX_SIP_ECALL_EMERGENCY_SERVICE_URN, // "urn:service:sos.ecall.manual" or "urn:service:sos.ecall.automatic"
* CallId indicating value PX_UE_A_CALLID,
* Via indicating value PX_UE_A_VIA,
* Route indicating value PX_UE_A_SERVICE_ROUTE,
* InfoPackage indicating value "EmergencyCallData.eCall.MSD",
* ContentDisposition indicating value "Info-Package",
* MessageBody containing
* MIME indicating value "application/EmergencyCallData.eCall.MSD", // MIME may contain additional parts e.g., sdp, xml
* // MSD not exceeding 140 bytes and encoded in binary ASN.1
* ContentDisposition indicating value "By-Reference";;
* from the UE_A entity
* }
* }
*/
function f_mtc_check_TP_MW_PCSCF_NGC_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_getSipUserId(PX_EUT_A_EMERGENCY);
var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP);
// Check the INVITE
p_monitorCompRef.start(
f_Iot_Sip_receive(
{
mw_SipRequest(mw_TP_MW_PCSCF_NGC_INVITE_01(
-, // FIXME Set expected value
mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
mw_To_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain),
-, -,
mw_PPreferredID,
mw_accept({mw_acceptBody("application/EmergencyCallData.Control+xml")}),
mw_recvInfo({mw_infoPackage_Type("EmergencyCallData.eCall.MSD")})
))
},
{ mw_SipRequest(mw_INVITE_Request_Base) },
{0, omit},
"TP_MW_PCSCF_NGC_INFO_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_NGC_INVITE_01
} // End of group imsInvite
group ims100Trying {
......@@ -2903,6 +2975,40 @@ module AtsImsIot_TP_behavior_MW_PS {
}
} // End of function f_mtc_check_TP_MW_PCSCF_ECO_200OK_01
function f_mtc_check_TP_MW_PCSCF_ECO_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_psapInfo := f_getSipUserId(PX_PSAP);
// 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:=v_psapInfo.publicId}),
mw_To_AddrUnion_TelUrl(v_psapInfo.publicId),
p_sip.request.msgHeader.toField
)
))
},
{ mw_SipResponse(mw_200OK_Base) },
{ 0, omit },
"TP_MW_ECSCF_ECO_200OK_01",
false,
p_checkMessage
)
);
p_monitorCompRef.done;
}
} // End of function f_mtc_check_TP_MW_PCSCF_ECO_200OK_01
/**
* @desc Verify that the P-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg).
* Initial conditions with {
......@@ -3116,6 +3222,34 @@ module AtsImsIot_TP_behavior_MW_PS {
}
} // End of function f_mtc_check_TP_MW_PCSCF_ECO_ACK_01
function f_mtc_check_TP_MW_PCSCF_ECO_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_ECSCF_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_ECSCF_ECO_ACK_01 - Request",
false,
p_checkMessage
)
);
p_monitorCompRef.done;
}
} // End of function f_mtc_check_TP_MW_PCSCF_ECO_ACK_01
/**
* @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Terminating Leg).
* Initial conditions with {
......@@ -4880,5 +5014,158 @@ module AtsImsIot_TP_behavior_MW_PS {
} // End of function f_mtc_check_TP_MW_PCSCF_ECO_480INVITE_01
} // End of group imsTemporaryUnavailable
group imsINFO{
/**
* @desc Verify that the P-CSCF sends an INFO request demanding a transfer of updated MSD.
*
* Reference
* "ETSI TS 124 229 [1], Clauses 5.1.6.11.3"
* Config Id CF_VoLTE_INT_ES
* PICS Selection NONE
* Initial conditions with {
* the UE_A entity isEmergencyAttachedTo the EPC_A and
* the UE_A entity isEmergencyRegisteredTo the IMS_A and
* the UE_A entity isEmergencyRegisteredTo the IMS_A and
* the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP
* }
* Expected behaviour
* ensure that {
when {
the IMS_P_CSCF_A entity receives a INFO containing "Request transfer of updated MSD";
from the IMS_E_CSCF entity
}
then {
the IMS_P_CSCF_A entity sends a INFO containing
From indicating value PX_PSAP_SIP_URI,
To indicating value PX_UE_A_SIP_URI,
CallId indicating value PX_PSAP_CALLID,
Via indicating value PX_PSAP_VIA,
Route indicating value PX_PSAP_SERVICE_ROUTE,
InfoPackage indicating value "EmergencyCallData.eCall.MSD",
ContentDisposition indicating value "Info-Package",
MessageBody containing
MIME indicating value "application/EmergencyCallData.Control+xml", // MIME may contain additional parts e.g., sdp, xml
request containing
action indicating value "send-data",
datatype indicating value "eCall.MSD";,
ContentDisposition indicating value "By-Reference";;
to the UE_A entity
}
}
*/
function f_mtc_check_TP_MW_PCSCF_NGC_INFO_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_getSipUserId(PX_EUT_A_EMERGENCY);
var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP);
// Check the INVITE
p_monitorCompRef.start(
f_Iot_Sip_receive(
{
mw_SipRequest(mw_TP_MW_PCSCF_NGC_INFO_01(
-,
-, // FIXME Set expected value
mw_From_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain),
mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
-, -,
mw_PPreferredID,
mw_accept({mw_acceptBody("application/EmergencyCallData.Control+xml")}),
mw_recvInfo({mw_infoPackage_Type("EmergencyCallData.eCall.MSD")})
))
},
{ mw_SipRequest(mw_INFO_Request_Base) },
{0, omit},
"TP_MW_PCSCF_NGC_INFO_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_NGC_INFO_01
/**
* @desc Verify that the P-CSCF successfully receives an INFO from the UE in an established eCall type emergency call that has been requested to transfer an updated MSD.
*
* Reference
* "ETSI TS 124 229 [1], Clauses 5.1.6.11.3"
* Config Id CF_VxLTE_INT
* PICS Selection NONE
* Initial conditions with {
* the UE_A entity isEmergencyAttachedTo the EPC_A and
* the UE_A entity isEmergencyRegisteredTo the IMS_A and
* the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP
* }
* Expected behaviour
* ensure that {
* when {
* the UE_A entity isRequestedToTransferUpdatedMSD
* // UE_A has received an INFO request as described in TP_MW_PCSCF_NGC_INFO_01
* }
* then {
* the IMS_P_CSCF_A entity receives an INFO containing
* From indicating value PX_UE_A_SIP_URI,
* To indicating value PX_SIP_ECALL_EMERGENCY_SERVICE_URN, // "urn:service:sos.ecall.manual" or "urn:service:sos.ecall.automatic"
* CallId indicating value PX_UE_A_CALLID,
* Via indicating value PX_UE_A_VIA,
* Route indicating value PX_UE_A_SERVICE_ROUTE,
* InfoPackage indicating value "EmergencyCallData.eCall.MSD",
* ContentDisposition indicating value "Info-Package",
* MessageBody containing
* MIME indicating value "application/EmergencyCallData.eCall.MSD", // MIME may contain additional parts e.g., sdp, xml
* // MSD not exceeding 140 bytes and encoded in binary ASN.1
* ContentDisposition indicating value "By-Reference";;
* from the UE_A entity
* }
* }
*/
function f_mtc_check_TP_MW_PCSCF_NGC_INFO_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_EMERGENCY);
var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP);
// Check the INVITE
p_monitorCompRef.start(
f_Iot_Sip_receive(
{
mw_SipRequest(mw_TP_MW_PCSCF_NGC_INFO_01(
-,
-, // FIXME Set expected value
mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
mw_To_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain),
-,
-,
mw_PPreferredID,
mw_accept({mw_acceptBody("application/EmergencyCallData.MSD")}),
mw_recvInfo({mw_infoPackage_Type("EmergencyCallData.eCall.MSD")})
))
},
{ mw_SipRequest(mw_INFO_Request_Base) },
{0, omit},
"TP_MW_PCSCF_NGC_INFO_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_NGC_INFO_02
}// End of group imsINFO
} // End of module AtsImsIot_TP_behavior_MW_PS
<<<<<<< HEAD
=======
<<<<<<<< HEAD:ttcn/AtsImsIot/AtsImsIot_TP_behavior_MX.ttcn
>>>>>>> 0593f0d89e43a3f1703bce34b66025c749549138
/**
* @author STF 574
* @version $Id$
......@@ -270,6 +274,10 @@ module AtsImsIot_TP_behavior_MX {
p_monitorCompRef.done;
}
} // End of function f_mtc_check_TP_MX_ECSCF_ECO_100Trying_01
<<<<<<< HEAD
=======
>>>>>>> 0593f0d89e43a3f1703bce34b66025c749549138
} // End of group ims100Trying
......@@ -820,4 +828,198 @@ module AtsImsIot_TP_behavior_MX {
} // End of group ims3xxAny
<<<<<<< HEAD
group imsINFO{
/**
* @desc Verify that the E-CSCF sends an INFO request demanding a transfer of updated MSD.
*
* Reference
* "ETSI TS 124 229 [1], Clauses 5.1.6.11.3"
* Config Id CF_VoLTE_INT_ES
* PICS Selection NONE
* Initial conditions with {
* the UE_A entity isEmergencyAttachedTo the EPC_A and
* the UE_A entity isEmergencyRegisteredTo the IMS_A and
* the UE_A entity isEmergencyRegisteredTo the IMS_A and
* the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP
* }
* Expected behaviour
* ensure that {
when {
the IMS_P_CSCF_A entity receives a INFO containing "Request transfer of updated MSD";
from the IMS_E_CSCF entity
}
then {
the IMS_P_CSCF_A entity sends a INFO containing
From indicating value PX_PSAP_SIP_URI,
To indicating value PX_UE_A_SIP_URI,
CallId indicating value PX_PSAP_CALLID,
Via indicating value PX_PSAP_VIA,
Route indicating value PX_PSAP_SERVICE_ROUTE,
InfoPackage indicating value "EmergencyCallData.eCall.MSD",
ContentDisposition indicating value "Info-Package",
MessageBody containing
MIME indicating value "application/EmergencyCallData.Control+xml", // MIME may contain additional parts e.g., sdp, xml
request containing
action indicating value "send-data",
datatype indicating value "eCall.MSD";,
ContentDisposition indicating value "By-Reference";;
to the UE_A entity
}
}
*/
function f_mtc_check_TP_MX_ECSCF_NGC_INFO_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_getSipUserId(PX_EUT_A_EMERGENCY);
var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP);
// Check the INVITE
p_monitorCompRef.start(
f_Iot_Sip_receive(
{
mw_SipRequest(mw_TP_MX_ECSCF_NGC_INFO_01(
-,
-, // FIXME Set expected value
mw_From_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain),
mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
-, -,
mw_PPreferredID,
mw_accept({mw_acceptBody("application/EmergencyCallData.Control+xml")}),
mw_recvInfo({mw_infoPackage_Type("EmergencyCallData.eCall.MSD")})
))
},
{ mw_SipRequest(mw_INFO_Request_Base) },
{0, omit},
"TP_MX_ECSCF_NGC_INFO_01 - Request",
true,
p_checkMessage
)
);
p_monitorCompRef.done;
// Retrieve messge
f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
}
} // End of function f_mtc_check_TP_MX_ECSCF_NGC_INFO_01
/**
* @desc Verify that the E-CSCF successfully receives an INFO from the UE in an established eCall type emergency call that has been requested to transfer an updated MSD.
*
* Reference
* "ETSI TS 124 229 [1], Clauses 5.1.6.11.3"
* Config Id CF_VxLTE_INT
* PICS Selection NONE
* Initial conditions with {
* the UE_A entity isEmergencyAttachedTo the EPC_A and
* the UE_A entity isEmergencyRegisteredTo the IMS_A and
* the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP
* }
* Expected behaviour
* ensure that {
* when {
* the UE_A entity isRequestedToTransferUpdatedMSD
* // UE_A has received an INFO request as described in TP_MW_PCSCF_NGC_INFO_01
* }
* then {
* the IMS_P_CSCF_A entity receives an INFO containing
* From indicating value PX_UE_A_SIP_URI,
* To indicating value PX_SIP_ECALL_EMERGENCY_SERVICE_URN, // "urn:service:sos.ecall.manual" or "urn:service:sos.ecall.automatic"
* CallId indicating value PX_UE_A_CALLID,
* Via indicating value PX_UE_A_VIA,
* Route indicating value PX_UE_A_SERVICE_ROUTE,
* InfoPackage indicating value "EmergencyCallData.eCall.MSD",
* ContentDisposition indicating value "Info-Package",
* MessageBody containing
* MIME indicating value "application/EmergencyCallData.eCall.MSD", // MIME may contain additional parts e.g., sdp, xml
* // MSD not exceeding 140 bytes and encoded in binary ASN.1
* ContentDisposition indicating value "By-Reference";;
* from the UE_A entity
* }
* }
*/
function f_mtc_check_TP_MX_ECSCF_NGC_INFO_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_EMERGENCY);
var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP);
// Check the INVITE
p_monitorCompRef.start(
f_Iot_Sip_receive(
{
mw_SipRequest(mw_TP_MX_ECSCF_NGC_INFO_01(
-,
-, // FIXME Set expected value
mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
mw_To_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain),
-,
-,
mw_PPreferredID,
mw_accept({mw_acceptBody("application/EmergencyCallData.MSD")}),
mw_recvInfo({mw_infoPackage_Type("EmergencyCallData.eCall.MSD")})
))
},
{ mw_SipRequest(mw_INFO_Request_Base) },
{0, omit},
"TP_MX_ECSCF_NGC_INFO_02 - Request",
true,
p_checkMessage
)
);
p_monitorCompRef.done;
// Retrieve messge
f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
}
} // End of function f_mtc_check_TP_MX_ECSCF_NGC_INFO_02
}// End of group imsINFO
} // End of module AtsImsIot_TP_behavior_MX
=======
} // End of module AtsImsIot_TP_behavior_MX
========
// /**
// * @author TTF T010
// * @version $Id$
// * @desc This module provides the TP behaviour functions at Mw interface at P-CSCF/E-CSCF
// */
// module AtsImsIot_TP_behavior_MW_EC { // TODO: To be removed
// // 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;
// } // End of module AtsImsIot_TP_behavior_MW_EC
>>>>>>>> 0593f0d89e43a3f1703bce34b66025c749549138:ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EC.ttcn
>>>>>>> 0593f0d89e43a3f1703bce34b66025c749549138
......@@ -194,6 +194,111 @@ group g_PCRF_AAA {
}
} // End of function f_mtc_check_TP_RX_PCRF_AAA_01
/**
* Starts monitor component behavior for TP_RX_PCRF_ECO_AAA_01
* @param p_monitorCompRef Reference to monitor component
* <pre>
* 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
* }
* }
*
* 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
* Subscription_Id_AVP containing
* Subscription_Id_Type_AVP
* indicating value END_USER_IMSI;, //or END_USERE_164
* "and/or"
* User_Equipment_Info_AVP containing
* User_Equipment_Info_Type
* indicating value IMEISV,
* User_Equipment_Info_Value;;
* to the IMS_P_CSCF_A entity
* }
* </pre>
* @see TS 103 653-1 clause 7.6
*/
function f_mtc_check_TP_RX_PCRF_ECO_AAA_01(
DiameterInterfaceMonitor p_monitorCompRef,
in boolean p_checkMessage := false,
in boolean p_forward_to_mtc := false
) runs on ImsTestCoordinator {
if (isvalue(p_monitorCompRef)){
var template DIAMETER_MSG mw_diameter_msg_pass := { aAR_MSG := mw_AAR_basic };
var template DIAMETER_MSG mw_diameter_msg_fail := { aAR_MSG := mw_AAR_dummy };
p_monitorCompRef.start (
f_Iot_Diameter_receive(
{
mw_diameter_msg_pass
},
{
mw_diameter_msg_fail
},
{0, omit},
"TP_RX_PCRF_ECO_AAA_01 - AAR",
p_forward_to_mtc,
p_checkMessage
)
);
p_monitorCompRef.done;
mw_diameter_msg_pass := { aAA_MSG := (mw_AAA_resultCode_subscriptionId_userEquipmentInfo,
mw_AAA_resultCode_userEquipmentInfo,
mw_AAA_resultCode_subscriptionId)
};
mw_diameter_msg_fail := { aAA_MSG := mw_AAA_basic };
p_monitorCompRef.start (
f_Iot_Diameter_receive(
{
mw_diameter_msg_pass
},
{
mw_diameter_msg_fail
},
{0, omit},
"TP_RX_PCRF_ECO_AAA_01 - AAA",
p_forward_to_mtc,
p_checkMessage
)
);
p_monitorCompRef.done;
}
} // End of function f_mtc_check_TP_RX_PCRF_ECO_AAA_01
/**
* Starts monitor component behavior for TP_RX_PCRF_AAA_02
* @param p_monitorCompRef Reference to monitor component
......@@ -581,6 +686,70 @@ group g_PCSCF_AAR {
}
} // End of function f_mtc_check_TP_RX_PCSCF_AAR_01
/**
* Starts monitor component behavior for TP_RX_PCSCF_ECO_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.
* <pre>
* Test objective "Verify that IUT after 2XX_Response on REGISTER sends an AA-Request due to provisioning of AF Signalling flow."
*
* <pre>
*
* Config Id CF_VxLTE_INT
*
* Initial conditions with {
* the UE_A entity isNotAttachedTo the EPC_A and
* the UE_A entity not isEmergencyRegisteredTo 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",
* AF_Requested_Data_AVP
* indicating value "EPC-level identities required",
* Service_URN_AVP
* indicating value "sos*";
* to the EPC_PCRF_A entity
* }
* }
* </pre>
* @see TS 103 795-1 clause 7.6
*/
function f_mtc_check_TP_RX_PCSCF_ECO_AAR_01(
DiameterInterfaceMonitor p_monitorCompRef,
in boolean p_checkMessage := false,
in boolean p_forward_to_mtc := false
) runs on ImsTestCoordinator {
if (isvalue(p_monitorCompRef)){
var template DIAMETER_MSG mw_diameter_msg_pass := { aAR_MSG := mw_AAR_AfRequestedData_ServiceUrn };
var template DIAMETER_MSG mw_diameter_msg_fail := { aAR_MSG := mw_AAR_basic };
p_monitorCompRef.start (
f_Iot_Diameter_receive(
{
mw_diameter_msg_pass
},
{
mw_diameter_msg_fail
},
{0, omit},
"TP_RX_PCSCF_ECO_AAR_01 - AAR",
p_forward_to_mtc,
p_checkMessage
)
);
p_monitorCompRef.done;
}
} // End of function f_mtc_check_TP_RX_PCSCF_ECO_AAR_01
/**
* Starts monitor component behavior for TP_RX_PCSCF_AAR_02
* @param p_monitorCompRef Reference to monitor component
......@@ -638,6 +807,68 @@ group g_PCSCF_AAR {
}
} // End of function f_mtc_check_TP_RX_PCSCF_AAR_02
/**
* Starts monitor component behavior for TP_RX_PCSCF_ECO_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.
* <pre>
* Test objective "Verify that IUT send AA-Request in case of emergency session establishment for originating side after INVITE is received."
*
* <pre>
*
* Config Id CF_VoLTE_INT_ES
*
* Initial conditions with {
* the UE_A entity isNotAttachedTo the EPC_A and
* the UE_A entity not isEmergencyRegisteredTo 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",
* Service_URN_AVP
* indicating value "sos*";
* to the EPC_PCRF_A entity
* }
* }
* </pre>
* @see TS 103 795-1 clause 7.6
*/
function f_mtc_check_TP_RX_PCSCF_ECO_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 template DIAMETER_MSG mw_diameter_msg_pass := { aAR_MSG := mw_AAR_ServiceUrn };
var template DIAMETER_MSG mw_diameter_msg_fail := { aAR_MSG := mw_AAR_basic };
p_monitorCompRef.start (
f_Iot_Diameter_receive(
{
mw_diameter_msg_pass
},
{
mw_diameter_msg_fail
},
{0, omit},
"TP_RX_PCSCF_ECO_AAR_02 - AAR",
p_forward_to_mtc,
p_checkMessage
)
);
p_monitorCompRef.done;
}
} // End of function f_mtc_check_TP_RX_PCSCF_ECO_AAR_02
/**
* Starts monitor component behavior for TP_RX_PCSCF_AAR_03
* @param p_monitorCompRef Reference to monitor component
......
......@@ -483,6 +483,23 @@ module AtsImsIot_Templates_GM {
pPreferredID := p_pPreferredID
}
} // End of template mw_TP_GM_PCSCF_ECO_INVITE_04
template (present) INVITE_Request mw_TP_GM_PCSCF_ECO_INVITE_05( // TODO To be enforced
template (present) SipUrl p_invite_uri := ?,
template (present) From p_from := ?,
template (present) To p_to := ?,
template (present) Contact p_contact := ?,
template (present) MessageBody p_messageBody := ?,
template (present) PPreferredID p_pPreferredID := ?,
template (present) Accept p_accept := ?,
template (present) RecvInfo p_recvInfo := ?
) modifies mw_TP_GM_PCSCF_ECO_INVITE_01 := {
msgHeader := {
accept := p_accept,
recvInfo := p_recvInfo,
pPreferredID := p_pPreferredID
}
} // End of template mw_TP_GM_PCSCF_ECO_INVITE_05
template (present) INVITE_Request mw_TP_GM_PCSCF_RE_INVITE_01( // TODO To be enforced
template (present) SipUrl p_invite_uri := ?,
......@@ -512,6 +529,47 @@ module AtsImsIot_Templates_GM {
) modifies mw_TP_GM_PCSCF_INVITE_01 := {
} // End of template mw_TP_GM_PCSCF_RE_INVITE_014
template (present) INVITE_Request mw_TP_GM_PCSCF_NGC_INVITE_01( // TODO To be enforced
template (present) SipUrl p_invite_uri := ?,
template (present) From p_from := ?,
template (present) To p_to := ?,
template (present) Contact p_contact := ?,
template (present) MessageBody p_messageBody := ?,
template (present) PPreferredID p_pPreferredID := ?,
template (present) Accept p_accept := ?,
template (present) RecvInfo p_recvInfo := ?
) modifies mw_TP_GM_PCSCF_INVITE_01 := {
} // End of template mw_TP_GM_PCSCF_NGC_INVITE_01
template (present) INFO_Request mw_TP_GM_PCSCF_NGC_INFO_01(
template CallId p_callId := omit,
template (present) SipUrl p_invite_uri := ?,
template (present) From p_from := ?,
template (present) To p_to := ?,
template (present) Contact p_contact := ?,
template (present) MessageBody p_messageBody := ?,
template (present) PPreferredID p_pPreferredID := ?,
template (present) Accept p_accept := ?,
template (present) RecvInfo p_recvInfo := ?
) modifies mw_INFO_Dummy := {
requestLine := {
requestUri := p_invite_uri // @TODO
},
msgHeader := {
accept := p_accept,
callId := p_callId,
contact := p_contact,
fromField := p_from,
pPreferredID := p_pPreferredID,
recvInfo := p_recvInfo,
toField := p_to
},
messageBody := p_messageBody
}
// End of template mw_TP_GM_PCSCF_NGC_INFO_01
// End of template mw_TP_GM_PCSCF_NGC_INFO_01
template (present) Response mw_TP_GM_PCSCF_100Trying_01(
template (present) CSeq p_cSeq := ?,
template (present) From p_from := ?,
......
/*
* @author TTF 010
* @version $Id$
* @desc This module provides TP related templates used at MW interface
*/
module AtsImsIot_Templates_ISC {
// LibCommon
//import from LibCommon_BasicTypesAndValues all;
//import from LibCommon_VerdictControl all;
// libSip
import from LibSip_SIPTypesAndValues all;
import from LibSip_MessageBodyTypes 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 (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
} // End of group sip_templates
group g_gmA {
template(present) REGISTER_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_REGISTER_01
template(present) REGISTER_Request mw_TP_ISC_SCSCF_ECO_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 := *,
template (present) Contact p_contact := ?,
template Path p_path := ?,
template Warning p_warning := ?
) modifies mw_TP_ISC_SCSCF_REGISTER_01 := {
msgHeader := {
contact := p_contact,
path := p_path,
warning := p_warning
}
} // End of template mw_TP_ISC_SCSCF_ECO_REGISTER_01
template(present) REGISTER_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_REGISTER_01 := {
} // End of template mw_TP_ISC_SCSCF_REGISTER_02
template(present) REGISTER_Request mw_TP_ISC_SCSCF_ECO_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 := *,
template (present) Contact p_contact := ?,
template Path p_path := ?,
template Warning p_warning := ?
) modifies mw_TP_ISC_SCSCF_ECO_REGISTER_01 := {
} // End of template mw_TP_ISC_SCSCF_REGISTER_02
template(present) REGISTER_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_REGISTER_01 := {
} // End of template mw_TP_ISC_SCSCF_REGISTER_03
template(present) REGISTER_Request mw_TP_ISC_SCSCF_ECO_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 := *,
template (present) Contact p_contact := ?,
template Path p_path := ?,
template Warning p_warning := ?
) modifies mw_TP_ISC_SCSCF_ECO_REGISTER_01 := {
} // End of template mw_TP_ISC_SCSCF_ECO_REGISTER_03
template(present) REGISTER_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_REGISTER_01 := {
} // End of template mw_TP_ISC_SCSCF_REGISTER_04
template(present) REGISTER_Request mw_TP_ISC_SCSCF_ECO_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 := *,
template (present) Contact p_contact := ?,
template Path p_path := ?,
template Warning p_warning := ?
) modifies mw_TP_ISC_SCSCF_ECO_REGISTER_01 := {
} // End of template mw_TP_ISC_SCSCF_ECO_REGISTER_04
template(present) REGISTER_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_REGISTER_01 := {
} // End of template mw_TP_ISC_SCSCF_REGISTER_04
template(present) REGISTER_Request mw_TP_ISC_SCSCF_ECO_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 := *,
template (present) Contact p_contact := ?,
template Path p_path := ?,
template Warning p_warning := ?
) modifies mw_TP_ISC_SCSCF_ECO_REGISTER_01 := {
} // End of template mw_TP_ISC_SCSCF_ECO_REGISTER_05
template(present) REGISTER_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_REGISTER_01 := {
msgHeader := {
expires := mw_Expires(p_expires)
}
} // End of template mw_TP_ISC_SCSCF_REGISTER_07
template (present) SUBSCRIBE_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_SUBSCRIBE_01
template (present) SUBSCRIBE_Request mw_TP_ISC_SCSCF_SUBSCRIBE_02(
template (present) SipUrl p_subscribe_uri := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_TP_ISC_SCSCF_SUBSCRIBE_01 := {
} // End of template mw_TP_ISC_SCSCF_SUBSCRIBE_02
template (present) NOTIFY_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_NOTIFY_01
template (present) PRACK_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_PRACK_01
template (present) INVITE_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_INVITE_01
template (present) INVITE_Request mw_TP_ISC_SCSCF_ECO_INVITE_01(
template (present) SipUrl p_invite_uri := ?,
template (present) From p_from := ?,
template (present) To p_to := ?,
template (present) Contact p_contact := ?,
template (present) MessageBody p_messageBody := ?
) modifies mw_TP_ISC_SCSCF_INVITE_01 := {
msgHeader := {
contact := p_contact
},
messageBody := p_messageBody
} // End of template mw_TP_ISC_SCSCF_ECO_INVITE_01
template (present) INVITE_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_INVITE_01 := {
} // End of template mw_TP_ISC_SCSCF_INVITE_02
template (present) INVITE_Request mw_TP_ISC_SCSCF_ECO_INVITE_02( // TODO To be enforced
template (present) SipUrl p_invite_uri := ?,
template (present) From p_from := ?,
template (present) To p_to := ?,
template (present) Contact p_contact := ?,
template (present) MessageBody p_messageBody := ?
) modifies mw_TP_ISC_SCSCF_ECO_INVITE_01 := {
} // End of template mw_TP_ISC_SCSCF_ECO_INVITE_02
template (present) INVITE_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_INVITE_01 := {
} // End of template mw_TP_ISC_SCSCF_INVITE_03
template (present) INVITE_Request mw_TP_ISC_SCSCF_ECO_INVITE_03( // TODO To be enforced
template (present) SipUrl p_invite_uri := ?,
template (present) From p_from := ?,
template (present) To p_to := ?,
template (present) Contact p_contact := ?,
template (present) MessageBody p_messageBody := ?
) modifies mw_TP_ISC_SCSCF_ECO_INVITE_01 := {
} // End of template mw_TP_ISC_SCSCF_ECO_INVITE_03
template (present) INVITE_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_INVITE_01 := {
} // End of template mw_TP_ISC_SCSCF_INVITE_04
template (present) INVITE_Request mw_TP_ISC_SCSCF_ECO_INVITE_04( // TODO To be enforced
template (present) SipUrl p_invite_uri := ?,
template (present) From p_from := ?,
template (present) To p_to := ?,
template (present) Contact p_contact := ?,
template (present) MessageBody p_messageBody := ?,
template (present) PPreferredID p_pPreferredID := ?,
template (present) Accept p_accept := ?,
template (present) RecvInfo p_recvInfo := ?
) modifies mw_TP_ISC_SCSCF_ECO_INVITE_01 := {
msgHeader := {
accept := p_accept,
recvInfo := p_recvInfo,
pPreferredID := p_pPreferredID
}
} // End of template mw_TP_ISC_SCSCF_ECO_INVITE_04
template (present) INVITE_Request mw_TP_ISC_SCSCF_ECO_INVITE_05( // TODO To be enforced
template (present) SipUrl p_invite_uri := ?,
template (present) From p_from := ?,
template (present) To p_to := ?,
template (present) Contact p_contact := ?,
template (present) MessageBody p_messageBody := ?,
template (present) PPreferredID p_pPreferredID := ?,
template (present) Accept p_accept := ?,
template (present) RecvInfo p_recvInfo := ?
) modifies mw_TP_ISC_SCSCF_ECO_INVITE_01 := {
msgHeader := {
accept := p_accept,
recvInfo := p_recvInfo,
pPreferredID := p_pPreferredID
}
} // End of template mw_TP_ISC_SCSCF_ECO_INVITE_05
template (present) INVITE_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_INVITE_01 := {
} // End of template mw_TP_ISC_SCSCF_RE_INVITE_01
template (present) INVITE_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_INVITE_01 := {
} // End of template mw_TP_ISC_SCSCF_RE_INVITE_02
template (present) INVITE_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_INVITE_01 := {
} // End of template mw_TP_ISC_SCSCF_RE_INVITE_03
template (present) INVITE_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_INVITE_01 := {
} // End of template mw_TP_ISC_SCSCF_RE_INVITE_014
template (present) Response mw_TP_ISC_SCSCF_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_ISC_SCSCF_100Trying_01
template (present) Response mw_TP_ISC_SCSCF_100Trying_02(
template (present) CSeq p_cSeq := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_TP_ISC_SCSCF_100Trying_01 := {
} // End of template mw_TP_ISC_SCSCF_100Trying_02
template (present) Response mw_TP_ISC_SCSCF_100Trying_03(
template (present) CSeq p_cSeq := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_TP_ISC_SCSCF_100Trying_01 := {
} // End of template mw_TP_ISC_SCSCF_100Trying_03
template (present) Response mw_TP_ISC_SCSCF_100Trying_04(
template (present) CSeq p_cSeq := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_TP_ISC_SCSCF_100Trying_01 := {
} // End of template mw_TP_ISC_SCSCF_100Trying_04
template (present) Response mw_TP_ISC_SCSCF_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_ISC_SCSCF_180Ringing_01
template (present) Response mw_TP_ISC_SCSCF_180Ringing_02(
template (present) CSeq p_cSeq := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_TP_ISC_SCSCF_180Ringing_01 := {
} // End of template mw_TP_ISC_SCSCF_180Ringing_02
template (present) Response mw_TP_ISC_SCSCF_180Ringing_03(
template (present) CSeq p_cSeq := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_TP_ISC_SCSCF_180Ringing_01 := {
} // End of template mw_TP_ISC_SCSCF_180Ringing_03
template (present) Response mw_TP_ISC_SCSCF_180Ringing_04(
template (present) CSeq p_cSeq := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_TP_ISC_SCSCF_180Ringing_01 := {
} // End of template mw_TP_ISC_SCSCF_180Ringing_04
template (present) Response mw_TP_ISC_SCSCF_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_ISC_SCSCF_183SessionProgress_01
template (present) Response mw_TP_ISC_SCSCF_183SessionProgress_02(
template (present) CSeq p_cSeq := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_TP_ISC_SCSCF_183SessionProgress_01 := {
} // End of template mw_TP_ISC_SCSCF_183SessionProgress_02
template (present) Response mw_TP_ISC_SCSCF_183SessionProgress_03(
template (present) CSeq p_cSeq := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_TP_ISC_SCSCF_183SessionProgress_01 := {
} // End of template mw_TP_ISC_SCSCF_183SessionProgress_03
template (present) Response mw_TP_ISC_SCSCF_183SessionProgress_04(
template (present) CSeq p_cSeq := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_TP_ISC_SCSCF_183SessionProgress_01 := {
} // End of template mw_TP_ISC_SCSCF_183SessionProgress_04
template (present) ACK_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_ACK_01
template (present) ACK_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_ACK_01 := {
} // End of template mw_TP_ISC_SCSCF_ACK_02
template (present) ACK_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_ACK_01 := {
} // End of template mw_TP_ISC_SCSCF_ACK_03
template (present) ACK_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_ACK_01 := {
} // End of template mw_TP_ISC_SCSCF_ACK_04
template (present) BYE_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_BYE_01
template (present) BYE_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_BYE_01 := {
} // End of template mw_TP_ISC_SCSCF_BYE_02
template (present) BYE_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_BYE_01 := {
} // End of template mw_TP_ISC_SCSCF_BYE_03
template (present) BYE_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_BYE_01 := {
} // End of template mw_TP_ISC_SCSCF_BYE_04
template (present) BYE_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_BYE_01 := {
} // End of template mw_TP_ISC_SCSCF_BYE_05
template (present) BYE_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_BYE_01 := {
} // End of template mw_TP_ISC_SCSCF_BYE_06
template (present) CANCEL_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_CANCEL_01
template (present) CANCEL_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_CANCEL_01 := {
} // End of template mw_TP_ISC_SCSCF_CANCEL_02
template (present) CANCEL_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_CANCEL_01 := {
} // End of template mw_TP_ISC_SCSCF_CANCEL_03
template (present) CANCEL_Request mw_TP_ISC_SCSCF_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_ISC_SCSCF_CANCEL_01 := {
} // End of template mw_TP_ISC_SCSCF_CANCEL_04
} // End of group g_gmA
} // End of module AtsImsIot_Templates_GM
\ No newline at end of file
......@@ -11,6 +11,7 @@ module AtsImsIot_Templates_MI {
// libSip
import from LibSip_SIPTypesAndValues all;
import from LibSip_MessageBodyTypes all;
import from LibSip_Templates all;
import from LibSip_Common all;
......@@ -38,14 +39,14 @@ module AtsImsIot_Templates_MI {
msgHeader := {
fromField := p_from,
toField := p_to,
route := ({
route := {
fieldName := ROUTE_E,
routeBody := {
*,
complement(mw_routeBody(p_invite_uri)),
*
}
}, omit),
} ifpresent,
recordRoute := {
fieldName := RECORD_ROUTE_E,
routeBody := {mw_routeBody(p_invite_uri), *}
......@@ -175,6 +176,44 @@ module AtsImsIot_Templates_MI {
}
}
} // End of template mw_TP_MW_PCSCF_BYE_01
template(present) INFO_Request mw_TP_MI_ECSCF_INFO_01 (
template CallId p_callId := omit,
template (present) SipUrl p_invite_uri := ?,
template (present) From p_from := ?,
template (present) To p_to := ?,
template (present) Contact p_contact := ?,
template (present) MessageBody p_messageBody := ?,
template (present) PAssertedID p_pAssertedID := ?
)modifies mw_INFO_Dummy := {
requestLine := {
requestUri := p_invite_uri // @TODO
},
msgHeader := {
callId := p_callId,
contact := p_contact,
fromField := p_from,
pAssertedID := p_pAssertedID,
toField := p_to
},
messageBody := p_messageBody
}
template(present) INFO_Request mw_TP_MI_ECSCF_NGC_INFO_01 (
template CallId p_callId := omit,
template (present) SipUrl p_invite_uri := ?,
template (present) From p_from := ?,
template (present) To p_to := ?,
template (present) Contact p_contact := ?,
template (present) MessageBody p_messageBody := ?,
template (present) PAssertedID p_pAssertedID := ?,
template (present) PPreferredID p_pPreferredID := ?,
template (present) Accept p_accept := ?,
template (present) RecvInfo p_recvInfo := ?
)
modifies mw_TP_MI_ECSCF_INFO_01 := {
}
template (present) CANCEL_Request mw_TP_MI_ECSCF_CANCEL_01( // TODO To be enforced
template (present) CallId p_callId := ?,
......