summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <axilirator@gmail.com>2018-11-29 00:18:05 +0700
committerVadim Yanitskiy <axilirator@gmail.com>2018-11-29 21:42:17 +0700
commit21c423353cd99c63e9abf3d77df811bd745349cd (patch)
treefc94514edefc500a58b0f7cde6b6718600011857
parenteffab7cfd113db5684413ff9982504f64997af66 (diff)
library/GSUP_Types.ttcn: fix missing session state IE in PROC_SS_ERR
Both session state and session ID IEs are always being encoded together by libosmocore's GSUP implementation. So, if a message contains a session ID IE, session state IE shall also be there. For some reason, the session state IE was missing in both ts_GSUP_PROC_SS_ERR and tr_GSUP_PROC_SS_ERR templates. This could led to incorrect matching in our test cases. This change fixes both templates by adding the missing IE. Since tr_GSUP_PROC_SS_ERR templete is used in HLR_Tests.ttcn, all the affected matching statements were also corrected. This correction doesn't affect successful test case executions, because we don't test possible problematic situations yet. But if something went wrong on the HLR side (i.e. SUT), the matching statements wouldn't match the PROC_SS_ERR message correctly and continue to wait until the guard timer is expired. Change-Id: I44070396ce7119eab4608d9f9fb090bb223dfaa2
-rw-r--r--hlr/HLR_Tests.ttcn8
-rw-r--r--library/GSUP_Types.ttcn4
2 files changed, 8 insertions, 4 deletions
diff --git a/hlr/HLR_Tests.ttcn b/hlr/HLR_Tests.ttcn
index f7902be..e32fa68 100644
--- a/hlr/HLR_Tests.ttcn
+++ b/hlr/HLR_Tests.ttcn
@@ -476,16 +476,16 @@ runs on HLR_ConnHdlr return GSUP_PDU {
GSUP.send(valueof(ts_GSUP_PROC_SS_REQ(imsi, sid, state, ss)));
T.start;
alt {
- [exp_fail] GSUP.receive(tr_GSUP_PROC_SS_ERR(imsi, sid, exp_err_cause)) -> value ret {
+ [exp_fail] GSUP.receive(tr_GSUP_PROC_SS_ERR(imsi, sid, ?, exp_err_cause)) -> value ret {
setverdict(pass);
}
- [exp_fail] GSUP.receive(tr_GSUP_PROC_SS_ERR(imsi, sid, ?)) -> value ret {
+ [exp_fail] GSUP.receive(tr_GSUP_PROC_SS_ERR(imsi, sid, ?, ?)) -> value ret {
setverdict(fail, "Unexpected PROC_SS ERROR Cause");
}
[exp_fail] GSUP.receive(tr_GSUP_PROC_SS_RES(imsi, sid, ?, ?)) -> value ret {
setverdict(fail, "Unexpected PROC_SS.res for unknown IMSI");
}
- [not exp_fail] GSUP.receive(tr_GSUP_PROC_SS_ERR(imsi, sid, ?)) -> value ret {
+ [not exp_fail] GSUP.receive(tr_GSUP_PROC_SS_ERR(imsi, sid, ?, ?)) -> value ret {
setverdict(fail, "Unexpected PROC_SS ERROR");
}
[not exp_fail] GSUP.receive(tr_GSUP_PROC_SS_RES(imsi, sid, ?, ?)) -> value ret {
@@ -511,7 +511,7 @@ runs on HLR_ConnHdlr return GSUP_PDU {
}
T.start;
alt {
- [] GSUP.receive(tr_GSUP_PROC_SS_ERR(imsi, sid, ?)) -> value ret {
+ [] GSUP.receive(tr_GSUP_PROC_SS_ERR(imsi, sid, ?, ?)) -> value ret {
setverdict(fail, "Unexpected PROC_SS ERROR Cause");
}
[not exp_ss] GSUP.receive(tr_GSUP_PROC_SS_RES(imsi, sid, state, omit)) -> value ret {
diff --git a/library/GSUP_Types.ttcn b/library/GSUP_Types.ttcn
index 7680815..cadc6d8 100644
--- a/library/GSUP_Types.ttcn
+++ b/library/GSUP_Types.ttcn
@@ -692,24 +692,28 @@ template GSUP_PDU tr_GSUP_PROC_SS_RES(
template (value) GSUP_PDU ts_GSUP_PROC_SS_ERR(
hexstring imsi,
OCT4 sid,
+ GSUP_SessionState state,
integer cause
) := ts_GSUP(
OSMO_GSUP_MSGT_PROC_SS_ERROR,
{
valueof(ts_GSUP_IE_IMSI(imsi)),
valueof(ts_GSUP_IE_SessionId(sid)),
+ valueof(ts_GSUP_IE_SessionState(state)),
valueof(ts_GSUP_IE_Cause(cause))
}
);
template GSUP_PDU tr_GSUP_PROC_SS_ERR(
template hexstring imsi,
template OCT4 sid := ?,
+ template GSUP_SessionState state := ?,
template integer cause := ?
) := tr_GSUP(
OSMO_GSUP_MSGT_PROC_SS_ERROR,
{
tr_GSUP_IE_IMSI(imsi),
tr_GSUP_IE_SessionId(sid),
+ tr_GSUP_IE_SessionState(state),
tr_GSUP_IE_Cause(cause)
}
);