hnbgw: add f_bssap_expect()
End the guessing when seeing "timeout of T_guard": set a precise failure
verdict when an expected RANAP/SCCP ("BSSAP") message did not arrive as
expected.
Change-Id: I51c60ed8fcef83c98e6c62c9f62a8c3c665de860
diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn
index 71761b5..1c0b121 100644
--- a/hnbgw/HNBGW_Tests.ttcn
+++ b/hnbgw/HNBGW_Tests.ttcn
@@ -474,6 +474,28 @@
}
}
+private function f_bssap_expect(template (present) RANAP_PDU exp_rx) runs on ConnHdlr return RANAP_PDU
+{
+ var RANAP_PDU rx;
+ timer T := 5.0;
+ T.start;
+ alt {
+ [] BSSAP.receive(exp_rx) -> value rx {
+ setverdict(pass);
+ }
+ [] BSSAP.receive(RANAP_PDU:?) {
+ setverdict(fail, "Got an unexpected RANAP message on BSSAP port, was waiting for ", exp_rx);
+ mtc.stop;
+ }
+ [] T.timeout {
+ setverdict(fail, "Timeout waiting for RANAP on BSSAP port: ", exp_rx);
+ mtc.stop;
+ }
+ }
+ T.stop;
+ return rx;
+}
+
/* send RANAP on Iuh and expect it to show up on Iu */
function f_iuh2iu(template (present) RANAP_PDU tx, template RANAP_PDU exp_rx := omit)
runs on ConnHdlr return RANAP_PDU {
@@ -485,17 +507,8 @@
}
RUA.send(tx);
- T.start;
- alt {
- [] BSSAP.receive(exp_rx) -> value rx {
- setverdict(pass);
- }
- [] T.timeout {
- setverdict(fail, "Timeout waiting for Iu ", exp_rx);
- }
- }
- return rx;
+ return f_bssap_expect(exp_rx);
}
/* send RANAP on Iu and expect it to show up on Iuh */
@@ -560,16 +573,7 @@
}
/* expect to receive it on the Iu side */
- T.start;
- alt {
- [] BSSAP.receive(exp_rx) -> value rx {
- setverdict(pass);
- }
- [] T.timeout {
- setverdict(fail, "Timeout waiting for Iu ", exp_rx);
- }
- }
- return rx;
+ return f_bssap_expect(exp_rx);
}
/* 3GPP TS 48.006 9.2 Connection release:
@@ -600,17 +604,10 @@
RUA.send(RUA_Disc_Req:{tx, cause});
/* expect to receive it on the Iu side */
- T.start;
- alt {
- [] BSSAP.receive(exp_rx) -> value rx {
- }
- [] T.timeout {
- setverdict(fail, "Timeout waiting for Iu ", exp_rx);
- return rx;
- }
- }
+ rx := f_bssap_expect(exp_rx);
/* expect disconnect on the Iu side */
+ T.start;
alt {
[] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {
setverdict(pass);
@@ -969,13 +966,11 @@
var MgcpCommand mgcp_cmd;
var RANAP_PDU tx;
var template RAB_SetupOrModifiedList rab_smdl;
- timer T := 5.0;
/* Send back RAB Assignment Response via Iuh */
rab_smdl := ts_RAB_SMdL(t_RAB_id(23), f_ts_RAB_TLA(pars.hnb_rtp_ip), t_RAB_binding_port(pars.hnb_rtp_port));
tx := valueof(ts_RANAP_RabAssResp(rab_smdl));
RUA.send(tx);
- T.start;
interleave {
/* Expect MDCX with IP/port from RAB Assignment Response */
@@ -1000,14 +995,7 @@
rab_smdl := ts_RAB_SMdL(t_RAB_id(23), f_ts_RAB_TLA(pars.mgw_conn_2.mgw_rtp_ip), t_RAB_binding_port(pars.mgw_conn_2.mgw_rtp_port));
tx := valueof(ts_RANAP_RabAssResp(rab_smdl));
- alt {
- [] BSSAP.receive(tx) {
- setverdict(pass);
- }
- [] T.timeout {
- setverdict(fail, "Timeout waiting for Iuh ", tx);
- }
- }
+ f_bssap_expect(tx);
}
private altstep as_mgcp_dlcx(inout TestHdlrParams pars) runs on ConnHdlr {
@@ -1398,7 +1386,7 @@
PFCP.send(r);
rab_smdl := ts_RAB_SMdL_ps(t_RAB_id(23), f_ts_RAB_TLA(gtp_pars.core.local.addr), gtp_pars.core.local.teid);
- BSSAP.receive(tr_RANAP_RabAssResp(rab_smdl));
+ f_bssap_expect(tr_RANAP_RabAssResp(rab_smdl));
f_sleep(2.0);
tx := valueof(ts_RANAP_IuReleaseCommand(ts_RanapCause_om_intervention));
@@ -1464,7 +1452,7 @@
RUA.send(tx);
/* Expect on IuPS: unmodified RAB Assignment Response */
- BSSAP.receive(tr_RANAP_RabAssResp(rab_smdl));
+ f_bssap_expect(tr_RANAP_RabAssResp(rab_smdl));
f_sleep(2.0);
tx := valueof(ts_RANAP_IuReleaseCommand(ts_RanapCause_om_intervention));