daniel has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27115 )
Change subject: hnbgw: Check for DLCX on Iu Release as well ......................................................................
hnbgw: Check for DLCX on Iu Release as well
Change-Id: Id53e99e51dbc6b9af67503ba6ecbc8990a7de4c9 --- M hnbgw/HNBGW_Tests.ttcn 1 file changed, 37 insertions(+), 12 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/15/27115/1
diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn index 3973a0e..8a3c885 100644 --- a/hnbgw/HNBGW_Tests.ttcn +++ b/hnbgw/HNBGW_Tests.ttcn @@ -758,24 +758,16 @@ tx := f_build_initial_ue(g_pars); f_iuh2iu_connect(tx);
- /** BSSAP send: RAB Assignment Request - * MGCP receive: CRCXf_handle_crcx - * MGCP send: ACK - * RUA receive: RAB Assignment Request (*) - * RUA send: RAB Assignment Response - * MGCP receive: MDCX - * MGCP send: ACK - * BSSAP receive: RAB Assignment Response (*) - */ - - + /* Send RAB Assignment Request */ rab_sml := ts_RAB_SML(t_RAB_id(23), f_ts_RAB_TLA("192.168.0.1"), t_RAB_binding_port(1234)); tx := valueof(ts_RANAP_RabAssReq(rab_sml)); BSSAP.send(tx); T.start;
+ /* Handle MGCP CRCX */ alt { [] MGCP.receive(tr_CRCX) -> value mgcp_cmd { + log("CRCX1", mgcp_cmd); var template MgcpResponse mgcp_rsp := f_handle_crcx(pars.mgcp_pars, mgcp_cmd); MGCP.send(valueof(mgcp_rsp)); } @@ -784,6 +776,7 @@ } }
+ /* Expect RAB Assignment Request with IP/port from CRCX ACK via Iuh */ rab_sml := ts_RAB_SML(t_RAB_id(23), f_ts_RAB_TLA(pars.mgcp_pars.mgw_conn_1.mgw_rtp_ip), t_RAB_binding_port(pars.mgcp_pars.mgw_conn_1.mgw_rtp_port)); tx := valueof(ts_RANAP_RabAssReq(rab_sml));
@@ -796,27 +789,32 @@ } }
+ /* Send back RAB Assignment Response via Iuh */ rab_smdl := ts_RAB_SMdL(t_RAB_id(23), f_ts_RAB_TLA("192.168.0.2"), t_RAB_binding_port(1235)); tx := valueof(ts_RANAP_RabAssResp(rab_smdl)); RUA.send(tx); T.start;
interleave { + /* Expect MDCX with IP/port from RAB Assignment Response */ [] MGCP.receive(tr_MDCX) -> value mgcp_cmd { log("MDCX1", mgcp_cmd); + /* Verify SDP of MDCX */ var SDP_Message sdp := valueof(ts_SDP(pars.mgcp_pars.mgw_conn_1.mgw_rtp_ip, pars.mgcp_pars.mgw_conn_1.mgw_rtp_ip, hex2str(pars.mgcp_pars.mgcp_call_id), "42", pars.mgcp_pars.mgw_conn_1.mgw_rtp_port, { int2str(pars.mgcp_pars.rtp_payload_type) }, { valueof(ts_SDP_rtpmap(pars.mgcp_pars.rtp_payload_type, pars.mgcp_pars.rtp_sdp_format)), valueof(ts_SDP_ptime(20)) } )); var template MgcpResponse mgcp_rsp := ts_MDCX_ACK(mgcp_cmd.line.trans_id, pars.mgcp_pars.mgw_conn_1.mgcp_connection_id, sdp); MGCP.send(valueof(mgcp_rsp)); } - /* Second CRCX */ + /* Handle CRCX for second leg of endpoint, answer with IP/port */ [] MGCP.receive(tr_CRCX(pars.mgcp_pars.mgcp_ep)) -> value mgcp_cmd { log("CRCX2", mgcp_cmd); + /* Verify SDP of CRCX */ var template MgcpResponse mgcp_rsp := f_handle_crcx(pars.mgcp_pars, mgcp_cmd); MGCP.send(valueof(mgcp_rsp)); } }
+ /* Expect RAB Assignment Response with IP/port from second CRCX ACK */ rab_smdl := ts_RAB_SMdL(t_RAB_id(23), f_ts_RAB_TLA(pars.mgcp_pars.mgw_conn_2.mgw_rtp_ip), t_RAB_binding_port(pars.mgcp_pars.mgw_conn_2.mgw_rtp_port)); tx := valueof(ts_RANAP_RabAssResp(rab_smdl));
@@ -830,6 +828,33 @@ setverdict(fail, "Timeout waiting for Iuh ", tx); } } + + /* Send Iu Release */ + tx := valueof(ts_RANAP_IuReleaseCommand(ts_RanapCause_om_intervention)); + f_iu2iuh(tx); + + T.start; + var integer count := 0; + + alt { + [count == 0] MGCP.receive(tr_DLCX(pars.mgcp_pars.mgcp_ep)) -> value mgcp_cmd { + log("DLCX1", mgcp_cmd); + MGCP.send(ts_DLCX_ACK2(mgcp_cmd.line.trans_id)); + count := 1; + repeat; + } + [count == 1] MGCP.receive(tr_DLCX(pars.mgcp_pars.mgcp_ep)) -> value mgcp_cmd { + log("DLCX2", mgcp_cmd); + MGCP.send(ts_DLCX_ACK2(mgcp_cmd.line.trans_id)); + setverdict(pass); + } + [] T.timeout { + setverdict(fail, "Timeout waiting for DLCX"); + } + } + + tx := valueof(ts_RANAP_IuReleaseComplete()); + f_iuh2iu(tx); }
testcase TC_rab_assignment() runs on test_CT {