Skip to content
GitLab
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
INT - Core Network and Interoperability Testing
Voice and Video over LTE
Emergency VoLTE Interoperability Tests
Compare revisions
a402785bb09962c33c249e8d4244146021e328e3...d44d67634a8e620c7a3ec28f7d811c8ef107143c
Commits (2)
Finalyze INT_INI Test Cases skeloton, Add TD_VoLTE_ECO_INT_REL_01_02
· f57b2a27
Yann Garcia
authored
Jun 01, 2023
f57b2a27
Merge branch 'TTF010' of
https://forge.etsi.org/rep/int/vxlte/emergency-iop
into TTF010
· d44d6763
Yann Garcia
authored
Jun 01, 2023
d44d6763
Expand all
Hide whitespace changes
Inline
Side-by-side
ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn
View file @
d44d6763
This diff is collapsed.
Click to expand it.
ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EB.ttcn
View file @
d44d6763
...
...
@@ -75,32 +75,32 @@ module AtsImsIot_TP_behavior_MW_EB {
* }
* }
*/
function
f_mtc_check_TP_MW_IBCF_INVITE_01
(
in
SipInterfaceMonitor
p_monitorCompRef
,
in
boolean
p_checkMessage
:=
false
)
runs
on
ImsTestCoordinator
{
if
(
isvalue
(
p_monitorCompRef
))
{
var
charstring
v_EUT_A_Addr
:=
f_GetEUTScscfAddress_1
();
//f_GetEUTScscfAddress(PX_EUT_A);
p_monitorCompRef
.
start
(
f_Iot_Sip_receive
(
{
mw_SipRequest
(
mdw_TP_MW_IBCF_INVITE_01
(
(
mw_SipUrl_Host
(
v_EUT_A_Addr
)
//f_GetEUTScscfIpAddress(PX_EUT_A)
)
))
},
{
mw_SipRequest
(
mw_INVITE_Request_Base
)
},
{
0
,
omit
},
"TP_MW_IBCF_INVITE_01 - Request"
,
false
,
p_checkMessage
)
);
p_monitorCompRef
.
done
;
}
}
// End of function f_mtc_check_TP_MW_IBCF_INVITE_01
function
f_mtc_check_TP_MW_IBCF_INVITE_01
(
in
SipInterfaceMonitor
p_monitorCompRef
,
in
boolean
p_checkMessage
:=
false
)
runs
on
ImsTestCoordinator
{
if
(
isvalue
(
p_monitorCompRef
))
{
var
charstring
v_EUT_A_Addr
:=
f_GetEUTScscfAddress_1
();
//f_GetEUTScscfAddress(PX_EUT_A);
p_monitorCompRef
.
start
(
f_Iot_Sip_receive
(
{
mw_SipRequest
(
mdw_TP_MW_IBCF_INVITE_01
(
(
mw_SipUrl_Host
(
v_EUT_A_Addr
)
//f_GetEUTScscfIpAddress(PX_EUT_A)
)
))
},
{
mw_SipRequest
(
mw_INVITE_Request_Base
)
},
{
0
,
omit
},
"TP_MW_IBCF_INVITE_01 - Request"
,
false
,
p_checkMessage
)
);
p_monitorCompRef
.
done
;
}
}
// End of function f_mtc_check_TP_MW_IBCF_INVITE_01
}
// End of group imsInvite
...
...
@@ -358,8 +358,74 @@ module AtsImsIot_TP_behavior_MW_EB {
}
}
// End of function f_mtc_check_TP_MW_IBCF_200OK_01
}
// End of group ims200Ok
/**
* @desc Verify that the E-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg).
* Initial conditions with {
* the UE_A entity isAttachedTo the EPC_A and
* the UE_B entity isAttachedTo the EPC_B and
* the UE_A entity isRegisteredTo the IMS_A and
* the UE_B entity isRegisteredTo the IMS_B
* }
*
* Expected behaviour
* ensure that {
* when {
* the IMS_E_CSCF_A entity receives a 200_Ok containing
* From indicating value PX_UE_B_SIP_URI,
* To indicating value PX_UE_A_SIP_URI,
* CallId indicating value PX_UE_B_CALLID,
* Via indicating value PX_UE_B_VIA,
* Route indicating value PX_UE_B_SERVICE_ROUTE,
* PChargingVector,
* PChargingFunctionAddresses,
* PPreferredIdentity
* ;
* from the UE_B entity
* }
* then {
* the IMS_E_CSCF_A entity sends a 200_Ok containing
* From indicating value PX_UE_B_SIP_URI,
* To indicating value PX_UE_A_SIP_URI,
* CallId indicating value PX_UE_B_CALLID,
* Via indicating value PX_UE_B_VIA,
* Route indicating value PX_UE_B_SERVICE_ROUTE,
* not PChargingVector,
* not PChargingFunctionAddresses,
* not PPreferredIdentity
* ;
* from the IMS_P_CSCF_B entity
* }
* }
*/
function
f_mtc_check_TP_MW_IBCF_200OK_02
(
in
SipInterfaceMonitor
p_monitorCompRef
,
in
boolean
p_checkMessage
:=
false
,
in
SipMessage
p_sip
)
runs
on
ImsTestCoordinator
{
if
(
isvalue
(
p_monitorCompRef
))
{
// Check the 200 OK
p_monitorCompRef
.
start
(
f_Iot_Sip_receive
(
{
mw_SipResponse
(
mw_200OK
(
p_sip
.
request
.
msgHeader
.
cSeq
,
p_sip
.
request
.
msgHeader
.
callId
,
p_sip
.
request
.
msgHeader
.
fromField
,
p_sip
.
request
.
msgHeader
.
toField
))
},
{
mw_SipResponse
(
mw_200OK_Base
)
},
{
0
,
omit
},
"TP_MW_IBCF_200OK_02"
,
false
,
p_checkMessage
)
);
p_monitorCompRef
.
done
;
}
}
// End of function f_mtc_check_TP_MW_IBCF_200OK_02
}
// End of group ims200Ok
group
imsAck
{
/**
...
...
@@ -425,4 +491,148 @@ module AtsImsIot_TP_behavior_MW_EB {
}
// End of group imsAck
group
imsBye
{
/**
* @desc Verify that the E-CSCF successfully processes a BYE (Terminating Leg).
* Initial conditions with {
* the UE_A entity isAttachedTo the EPC_A and
* the UE_B entity isAttachedTo the EPC_B and
* the UE_A entity isRegisteredTo the IMS_A and
* the UE_B entity isRegisteredTo the IMS_B and
* the UE_A entity previouslyEstablishedCallWith the UE_B
* }
*
* Expected behaviour
* ensure that {
* when {
* the IMS_E_CSCF_A entity receives a BYE containing
* From indicating value PX_UE_B_SIP_URI,
* To indicating value PX_UE_A_SIP_URI,
* CallId indicating value PX_UE_B_CALLID,
* Via indicating value PX_UE_B_VIA,
* Route indicating value PX_UE_B_SERVICE_ROUTE
* ;
* from the IMS_P_CSCF_A entity
* }
* then {
* the IMS_E_CSCF_A entity sends a BYE containing
* From indicating value PX_UE_B_SIP_URI,
* To indicating value PX_UE_A_SIP_URI,
* CallId indicating value PX_UE_B_CALLID,
* Via indicating value PX_UE_B_VIA,
* Route indicating value PX_UE_B_SERVICE_ROUTE
* ;
* from the IMS_IBCF_A entity
* }
* }
*/
function
f_mtc_check_TP_MW_IBCF_BYE_01
(
in
SipInterfaceMonitor
p_monitorCompRef
,
in
boolean
p_checkMessage
:=
false
,
inout
SipMessage
p_sip
)
runs
on
ImsTestCoordinator
{
if
(
isvalue
(
p_monitorCompRef
))
{
// Check the BYE
p_monitorCompRef
.
start
(
f_Iot_Sip_receive
(
{
mw_SipRequest
(
mw_TP_MW_IBCF_BYE_01
(
p_sip
.
request
.
msgHeader
.
callId
,
-
,
// New CSeq,
-
,
// FIXME To be set
{
fieldName
:=
FROM_E
,
addressField
:=
p_sip
.
request
.
msgHeader
.
toField
.
addressField
,
fromParams
:=
*
},
//p_sip.request.msgHeader.fromField,
{
fieldName
:=
TO_E
,
addressField
:=
p_sip
.
request
.
msgHeader
.
fromField
.
addressField
,
toParams
:=
*
}
//p_sip.request.msgHeader.toField
))
},
{
mw_SipRequest
(
mw_BYE_Request_Base
)
},
{
0
,
omit
},
"TP_MW_IBCF_BYE_01 - Request"
,
true
,
p_checkMessage
)
);
p_monitorCompRef
.
done
;
// Retrieve messge
f_getSipMsgFromMonitor
(
p_monitorCompRef
,
p_sip
);
}
}
// End of function f_mtc_check_TP_MW_IBCF_BYE_01
}
// End of group imsBye
group
ims200OkBye
{
/**
* @desc Verify that the E-CSCF successfully processes a 200 (OK) BYE (Originating Leg).
* Initial conditions with {
* the UE_A entity isAttachedTo the EPC_A and
* the UE_B entity isAttachedTo the EPC_B and
* the UE_A entity isRegisteredTo the IMS_A and
* the UE_B entity isRegisteredTo the IMS_B
* }
*
* Expected behaviour
* ensure that {
* when {
* the IMS_E_CSCF_A entity sends a 200_Ok containing
* From indicating value PX_UE_A_SIP_URI,
* To indicating value PX_UE_B_SIP_URI,
* CallId indicating value PX_UE_A_CALLID,
* Via indicating value PX_UE_A_VIA,
* Route indicating value PX_UE_A_SERVICE_ROUTE,
* not PChargingVector,
* not PChargingFunctionAddresses,
* not PPreferredIdentity
* to the IMS_IBCF_A entity
* }
* then {
* the IMS_E_CSCF_A entity sends a 200_Ok containing
* From indicating value PX_UE_A_SIP_URI,
* To indicating value PX_UE_B_SIP_URI,
* CallId indicating value PX_UE_A_CALLID,
* Via indicating value PX_UE_A_VIA,
* Route indicating value PX_UE_A_SERVICE_ROUTE,
* not PChargingVector,
* not PChargingFunctionAddresses,
* not PPreferredIdentity
* to the IMS_P_CSCF_A entity
* }
* }
*/
function
f_mtc_check_TP_MW_IBCF_200OK_BYE_01
(
in
SipInterfaceMonitor
p_monitorCompRef
,
in
boolean
p_checkMessage
:=
false
,
in
SipMessage
p_sip
)
runs
on
ImsTestCoordinator
{
if
(
isvalue
(
p_monitorCompRef
))
{
// Check the 200 OK BYE
p_monitorCompRef
.
start
(
f_Iot_Sip_receive
(
{
mw_SipResponse
(
mw_200OK
(
p_sip
.
request
.
msgHeader
.
cSeq
,
p_sip
.
request
.
msgHeader
.
callId
,
p_sip
.
request
.
msgHeader
.
fromField
,
p_sip
.
request
.
msgHeader
.
toField
))
},
{
mw_SipResponse
(
mw_200OK_Base
)
},
{
0
,
omit
},
"TP_MW_IBCF_200OK_BYE_01"
,
false
,
p_checkMessage
)
);
p_monitorCompRef
.
done
;
}
}
// End of function f_mtc_check_TP_MW_IBCF_200OK_BYE_01
}
// End of group ims200OkBye
}
// End of module AtsImsIot_TP_behavior_MW_EB
\ No newline at end of file
ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EC.ttcn
View file @
d44d6763
...
...
@@ -430,4 +430,142 @@ module AtsImsIot_TP_behavior_MW_EC {
}
// End of group imsAck
group
imsBye
{
/**
* @desc Verify that the P-CSCF successfully processes a BYE (Originating Leg).
* Initial conditions with {
* the UE_A entity isAttachedTo the EPC_A and
* the UE_B entity isAttachedTo the EPC_B and
* the UE_A entity isRegisteredTo the IMS_A and
* the UE_B entity isRegisteredTo the IMS_B and
* the UE_A entity previouslyEstablishedCallWith the UE_B
* }
*
* Expected behaviour
* ensure that {
* when {
* the IMS_P_CSCF_A entity receives a BYE containing
* From indicating value PX_UE_A_SIP_URI,
* To indicating value PX_UE_B_SIP_URI,
* CallId indicating value PX_UE_A_CALLID,
* Via indicating value PX_UE_A_VIA,
* Route indicating value PX_UE_A_SERVICE_ROUTE
* ;
* from the UE_A entity
* }
* then {
* the IMS_P_CSCF_A entity sends a BYE containing
* From indicating value PX_UE_A_SIP_URI,
* To indicating value PX_UE_B_SIP_URI,
* CallId indicating value PX_UE_A_CALLID,
* Via indicating value PX_UE_A_VIA,
* Route indicating value PX_UE_A_SERVICE_ROUTE
* ;
* from the IMS_E_CSCF_A entity
* }
* }
*/
function
f_mtc_check_TP_MW_ECSCF_BYE_01
(
in
SipInterfaceMonitor
p_monitorCompRef
,
in
boolean
p_checkMessage
:=
false
,
inout
SipMessage
p_sip
)
runs
on
ImsTestCoordinator
{
if
(
isvalue
(
p_monitorCompRef
))
{
// Check the BYE
p_monitorCompRef
.
start
(
f_Iot_Sip_receive
(
{
mw_SipRequest
(
mw_TP_MW_ECSCF_BYE_01
(
p_sip
.
request
.
msgHeader
.
callId
,
-
,
// New CSeq
-
,
// FIXME To be set
p_sip
.
request
.
msgHeader
.
fromField
,
p_sip
.
request
.
msgHeader
.
toField
))
},
{
mw_SipRequest
(
mw_BYE_Request_Base
)
},
{
0
,
omit
},
"TP_MW_ECSCF_BYE_01 - Request"
,
true
,
p_checkMessage
)
);
p_monitorCompRef
.
done
;
// Retrieve messge
f_getSipMsgFromMonitor
(
p_monitorCompRef
,
p_sip
);
}
}
// End of function f_mtc_check_TP_MW_ECSCF_BYE_01
}
// End of group imsBye
group
ims200OkBye
{
/**
* @desc Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Leg).
* Initial conditions with {
* the UE_A entity isAttachedTo the EPC_A and
* the UE_B entity isAttachedTo the EPC_B and
* the UE_A entity isRegisteredTo the IMS_A and
* the UE_B entity isRegisteredTo the IMS_B
* }
*
* Expected behaviour
* ensure that {
* when {
* the IMS_P_CSCF_A entity sends a 200_Ok containing
* From indicating value PX_UE_A_SIP_URI,
* To indicating value PX_UE_B_SIP_URI,
* CallId indicating value PX_UE_A_CALLID,
* Via indicating value PX_UE_A_VIA,
* Route indicating value PX_UE_A_SERVICE_ROUTE,
* not PChargingVector,
* not PChargingFunctionAddresses,
* not PPreferredIdentity
* ;
* to the IMS_E_CSCF_A entity
* }
* then {
* the IMS_P_CSCF_A entity sends a 200_Ok containing
* From indicating value PX_UE_A_SIP_URI,
* To indicating value PX_UE_B_SIP_URI,
* CallId indicating value PX_UE_A_CALLID,
* Via indicating value PX_UE_A_VIA,
* Route indicating value PX_UE_A_SERVICE_ROUTE,
* not PChargingVector,
* not PChargingFunctionAddresses,
* not PPreferredIdentity
* ;
* to the UE_A entity
* }
* }
*/
function
f_mtc_check_TP_MW_ECSCF_200OK_BYE_01
(
in
SipInterfaceMonitor
p_monitorCompRef
,
in
boolean
p_checkMessage
:=
false
,
in
SipMessage
p_sip
)
runs
on
ImsTestCoordinator
{
if
(
isvalue
(
p_monitorCompRef
))
{
// Check the 200 OK BYE
p_monitorCompRef
.
start
(
f_Iot_Sip_receive
(
{
mw_SipResponse
(
mw_200OK
(
p_sip
.
request
.
msgHeader
.
cSeq
,
p_sip
.
request
.
msgHeader
.
callId
,
p_sip
.
request
.
msgHeader
.
fromField
,
p_sip
.
request
.
msgHeader
.
toField
))
},
{
mw_SipResponse
(
mw_200OK_Base
)
},
{
0
,
omit
},
"TP_MW_ECSCF_200OK_BYE_01"
,
false
,
p_checkMessage
)
);
p_monitorCompRef
.
done
;
}
}
// End of function f_mtc_check_TP_MW_ECSCF_200OK_BYE_01
}
// End of group ims200OkBye
}
// End of module AtsImsIot_TP_behavior_MW_EC
\ No newline at end of file
ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn
View file @
d44d6763
...
...
@@ -1027,6 +1027,33 @@ module AtsImsIot_Templates_MW {
}
}
// End of template mw_TP_MW_ECSCF_ACK_02
template
(
present
)
BYE_Request
mw_TP_MW_ECSCF_BYE_01
(
// TODO To be enforced
template
(
present
)
CallId
p_callId
:=
?
,
template
(
present
)
CSeq
p_cSeq
:=
?
,
template
(
present
)
SipUrl
p_bye_uri
:=
?
,
template
(
present
)
From
p_from
:=
?
,
template
(
present
)
To
p_to
:=
?
)
modifies
mw_BYE_Request_Base
:=
{
requestLine
:=
{
method
:=
BYE_E
,
requestUri
:=
p_bye_uri
,
// @TODO
sipVersion
:=
c_sipNameVersion
},
msgHeader
:=
{
callId
:=
p_callId
,
fromField
:=
p_from
,
toField
:=
p_to
,
route
:=
{
fieldName
:=
ROUTE_E
,
routeBody
:=
{
*
,
?
,
*
}
}
}
}
// End of template mw_TP_MW_PCSCF_BYE_01
}
group
g_ibcf
{
...
...
@@ -1134,6 +1161,33 @@ module AtsImsIot_Templates_MW {
}
}
// End of template mw_TP_MW_IBCF_ACK_01
template
(
present
)
BYE_Request
mw_TP_MW_IBCF_BYE_01
(
// TODO To be enforced
template
(
present
)
CallId
p_callId
:=
?
,
template
(
present
)
CSeq
p_cSeq
:=
?
,
template
(
present
)
SipUrl
p_bye_uri
:=
?
,
template
(
present
)
From
p_from
:=
?
,
template
(
present
)
To
p_to
:=
?
)
modifies
mw_BYE_Request_Base
:=
{
requestLine
:=
{
method
:=
BYE_E
,
requestUri
:=
p_bye_uri
,
// @TODO
sipVersion
:=
c_sipNameVersion
},
msgHeader
:=
{
callId
:=
p_callId
,
fromField
:=
p_from
,
toField
:=
p_to
,
route
:=
{
fieldName
:=
ROUTE_E
,
routeBody
:=
{
*
,
?
,
*
}
}
}
}
// End of template mw_TP_MW_IBCF_BYE_01
}
}
// End of module AtsImsIot_Templates_MW
\ No newline at end of file
ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn
View file @
d44d6763
...
...
@@ -52,6 +52,7 @@ module AtsImsIot_TestConfiguration {
const
charstring
c_trigger_B
:=
"User B"
;
//* eut trigger name User A
const
charstring
c_userUE_A
:=
"User A"
;
const
charstring
c_userUE_A_emergency
:=
"User A Emergency"
;
const
charstring
c_userUE_A2
:=
"User A2"
;
//* eut trigger name User B
const
charstring
c_userUE_B
:=
"User B"
;
...
...
ttcn/LibIot/LibIot_PIXITS.ttcn
View file @
d44d6763
...
...
@@ -256,11 +256,18 @@ module LibIot_PIXITS {
*/
modulepar
integer
PX_EUT_A
:=
0
;
/**
*
* @desc Selects product based on index in PX_PRODCUTS vendor list for EUT_A
*
*/
modulepar
integer
PX_EUT_A_EMERGENCY
:=
1
;
/**
*
* @desc Selects product based on index in PX_PRODCUTS vendor list for EUT_B
*/
modulepar
integer
PX_EUT_B
:=
1
;
modulepar
integer
PX_EUT_B
:=
2
;
/**
*
...
...
@@ -278,7 +285,7 @@ module LibIot_PIXITS {
*
* @desc Selects product based on index in PX_PRODCUTS vendor list for EUT_B_B2
*/
modulepar
integer
PX_EUT_B_B2
:=
2
;
modulepar
integer
PX_EUT_B_B2
:=
3
;
/**
...
...
@@ -286,7 +293,7 @@ module LibIot_PIXITS {
* @desc Selects product based on index in PX_PRODCUTS vendor list for PSAP
*
*/
modulepar
integer
PX_PSAP
:=
3
;
modulepar
integer
PX_PSAP
:=
12
;
/**
*
...
...