osmo-ttcn3-hacks[master]: WIP: Prepare MSC_Tests for ability to emulate two BSCs
Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/6393 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ibe3ae6ed4181c6ba7501f5443b4f22e3c8abeb3e Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte Gerrit-Reviewer: Harald Welte Gerrit-Reviewer: Jenkins Builder Gerrit-HasComments: No
[MERGED] osmo-ttcn3-hacks[master]: WIP: Prepare MSC_Tests for ability to emulate two BSCs
Harald Welte has submitted this change and it was merged. Change subject: WIP: Prepare MSC_Tests for ability to emulate two BSCs .. WIP: Prepare MSC_Tests for ability to emulate two BSCs Change-Id: Ibe3ae6ed4181c6ba7501f5443b4f22e3c8abeb3e --- M bsc/BSC_Tests.cfg M bsc/BSC_Tests.ttcn M library/BSSAP_Adapter.ttcn M library/BSSMAP_Emulation.ttcn M library/RTP_Emulation.ttcn M msc/BSC_ConnectionHandler.ttcn M msc/MSC_Tests.cfg M msc/MSC_Tests.ttcn 8 files changed, 231 insertions(+), 159 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/bsc/BSC_Tests.cfg b/bsc/BSC_Tests.cfg index 497489f..c31c9eb 100644 --- a/bsc/BSC_Tests.cfg +++ b/bsc/BSC_Tests.cfg @@ -19,11 +19,15 @@ #mp_bsc_ip := "127.0.0.1"; #mp_test_ip := "127.0.0.1"; -#mp_sctp_addr := { 23905, "127.0.0.1", 2905, "127.0.0.1" }; -#mp_own_pc := 185; -#mp_own_ssn := 254; -#mp_peer_pc := 187; -#mp_peer_ssn := 254; +#BSC_Tests.mp_bssap_cfg := { +# sccp_service_type := "mtp3_itu", +# sctp_addr := { 23905, "127.0.0.1", 2905, "127.0.0.1" }, +# own_pc := 185, +# own_ssn := 254, +# peer_pc := 187, +# peer_ssn := 254, +# sio := '83'O +#}; #mp_ipa_mgcp_uses_osmo_ext := true; diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 086830a..cb2b41e 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -56,13 +56,17 @@ IPA_Client rsl } -type component test_CT extends BSSAP_Adapter_CT, CTRL_Adapter_CT { +type component test_CT extends CTRL_Adapter_CT { /* Array of per-BTS state */ var BTS_State bts[NUM_BTS]; /* array of per-BTS RSL test ports */ port IPA_RSL_PT IPA_RSL[NUM_BTS]; var MGCP_Emulation_CT vc_MGCP; + + var BSSAP_Adapter g_bssap; + /* for old legacy-tests only */ + port BSSAP_CODEC_PT BSSAP; /* are we initialized yet */ var boolean g_initialized := false; @@ -81,6 +85,36 @@ integer mp_bsc_ctrl_port := 4249; /* IP address at which the test binds */ charstring mp_test_ip := "127.0.0.1"; + + BSSAP_Configuration mp_bssap_cfg := { + sccp_service_type := "mtp3_itu", + sctp_addr := { 23905, "127.0.0.1", 2905, "127.0.0.1" }, + own_pc := 185, + own_ssn := 254, + peer_pc := 187, + peer_ssn := 254, + sio := '83'O + }; +} + +private function f_legacy_bssap_reset() runs on test_CT { + var BSSAP_N_UNITDATA_ind ud_ind; + timer T := 5.0; + BSSAP.send(ts_BSSAP_UNITDATA_req(g_bssap.sccp_addr_peer, g_bssap.sccp_addr_own, ts_BSSMAP_Reset(0))); + T.start; + alt { + [] BSSAP.receive(tr_BSSAP_UNITDATA_ind(g_bssap.sccp_addr_own, g_bssap.sccp_addr_peer, tr_BSSMAP_ResetAck)) { + log("Received RESET-ACK in response to RESET, we're ready to go!"); + } + [] BSSAP.receive(tr_BSSAP_UNITDATA_ind(?, ?, tr_BSSMAP_Reset)) -> value ud_ind { + log("Respoding to inbound RESET with RESET-ACK"); + BSSAP.send(ts_BSSAP_UNITDATA_req(ud_ind.callingAddress, ud_ind.calledAddress, + ts_BSSMAP_ResetAck)); + repeat; + } + [] BSSAP.receive { repeat; } + [] T.timeout { setverdict(fail, "Waiting for RESET-ACK after sending RESET"); } + } } type record IPA_Client { @@ -215,9 +249,11 @@ /* Call a function of our 'parent component' BSSAP_Adapter_CT to start the * MSC-side BSSAP emulation */ if (handler_mode) { - f_bssap_init("VirtMSC", MSC_BssmapOps); + f_bssap_init(g_bssap, mp_bssap_cfg, "VirtMSC", MSC_BssmapOps); } else { - f_bssap_init("VirtMSC", omit); + f_bssap_init(g_bssap, mp_bssap_cfg, "VirtMSC", omit); + connect(self:BSSAP, g_bssap.vc_SCCP:SCCP_SP_PORT); + f_legacy_bssap_reset(); } f_ipa_ctrl_start(mp_bsc_ip, mp_bsc_ctrl_port); @@ -268,7 +304,6 @@ var BSSAP_N_UNITDATA_ind ud_ind; f_init(1); - f_bssap_reset(); IPA_RSL[0].send(ts_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0,ts_RSL_CHAN_RQD('23'O, 23))); f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV)); @@ -281,7 +316,6 @@ var integer chreq_total; f_init(1); - f_bssap_reset(); chreq_total := f_ctrl_get_ratectr_abs(IPA_CTRL, "bts", 0, "chreq:total"); IPA_RSL[0].send(ts_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0,ts_RSL_CHAN_RQD('23'O, 23))); @@ -296,7 +330,6 @@ var RSL_Message rx_rsl; f_init(1); - f_bssap_reset(); /* Send CHAN RQD and wait for allocation; acknowledge it */ var RslChannelNr chan_nr := f_chreq_act_ack(); @@ -315,7 +348,6 @@ var ASP_RSL_Unitdata rx_rsl_ud; f_init(1); - f_bssap_reset(); /* Send
[PATCH] osmo-ttcn3-hacks[master]: WIP: Prepare MSC_Tests for ability to emulate two BSCs
Review at https://gerrit.osmocom.org/6393 WIP: Prepare MSC_Tests for ability to emulate two BSCs Change-Id: Ibe3ae6ed4181c6ba7501f5443b4f22e3c8abeb3e --- M bsc/BSC_Tests.cfg M bsc/BSC_Tests.ttcn M library/BSSAP_Adapter.ttcn M library/BSSMAP_Emulation.ttcn M library/RTP_Emulation.ttcn M msc/BSC_ConnectionHandler.ttcn M msc/MSC_Tests.cfg M msc/MSC_Tests.ttcn 8 files changed, 231 insertions(+), 159 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/93/6393/1 diff --git a/bsc/BSC_Tests.cfg b/bsc/BSC_Tests.cfg index 497489f..c31c9eb 100644 --- a/bsc/BSC_Tests.cfg +++ b/bsc/BSC_Tests.cfg @@ -19,11 +19,15 @@ #mp_bsc_ip := "127.0.0.1"; #mp_test_ip := "127.0.0.1"; -#mp_sctp_addr := { 23905, "127.0.0.1", 2905, "127.0.0.1" }; -#mp_own_pc := 185; -#mp_own_ssn := 254; -#mp_peer_pc := 187; -#mp_peer_ssn := 254; +#BSC_Tests.mp_bssap_cfg := { +# sccp_service_type := "mtp3_itu", +# sctp_addr := { 23905, "127.0.0.1", 2905, "127.0.0.1" }, +# own_pc := 185, +# own_ssn := 254, +# peer_pc := 187, +# peer_ssn := 254, +# sio := '83'O +#}; #mp_ipa_mgcp_uses_osmo_ext := true; diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 086830a..cb2b41e 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -56,13 +56,17 @@ IPA_Client rsl } -type component test_CT extends BSSAP_Adapter_CT, CTRL_Adapter_CT { +type component test_CT extends CTRL_Adapter_CT { /* Array of per-BTS state */ var BTS_State bts[NUM_BTS]; /* array of per-BTS RSL test ports */ port IPA_RSL_PT IPA_RSL[NUM_BTS]; var MGCP_Emulation_CT vc_MGCP; + + var BSSAP_Adapter g_bssap; + /* for old legacy-tests only */ + port BSSAP_CODEC_PT BSSAP; /* are we initialized yet */ var boolean g_initialized := false; @@ -81,6 +85,36 @@ integer mp_bsc_ctrl_port := 4249; /* IP address at which the test binds */ charstring mp_test_ip := "127.0.0.1"; + + BSSAP_Configuration mp_bssap_cfg := { + sccp_service_type := "mtp3_itu", + sctp_addr := { 23905, "127.0.0.1", 2905, "127.0.0.1" }, + own_pc := 185, + own_ssn := 254, + peer_pc := 187, + peer_ssn := 254, + sio := '83'O + }; +} + +private function f_legacy_bssap_reset() runs on test_CT { + var BSSAP_N_UNITDATA_ind ud_ind; + timer T := 5.0; + BSSAP.send(ts_BSSAP_UNITDATA_req(g_bssap.sccp_addr_peer, g_bssap.sccp_addr_own, ts_BSSMAP_Reset(0))); + T.start; + alt { + [] BSSAP.receive(tr_BSSAP_UNITDATA_ind(g_bssap.sccp_addr_own, g_bssap.sccp_addr_peer, tr_BSSMAP_ResetAck)) { + log("Received RESET-ACK in response to RESET, we're ready to go!"); + } + [] BSSAP.receive(tr_BSSAP_UNITDATA_ind(?, ?, tr_BSSMAP_Reset)) -> value ud_ind { + log("Respoding to inbound RESET with RESET-ACK"); + BSSAP.send(ts_BSSAP_UNITDATA_req(ud_ind.callingAddress, ud_ind.calledAddress, + ts_BSSMAP_ResetAck)); + repeat; + } + [] BSSAP.receive { repeat; } + [] T.timeout { setverdict(fail, "Waiting for RESET-ACK after sending RESET"); } + } } type record IPA_Client { @@ -215,9 +249,11 @@ /* Call a function of our 'parent component' BSSAP_Adapter_CT to start the * MSC-side BSSAP emulation */ if (handler_mode) { - f_bssap_init("VirtMSC", MSC_BssmapOps); + f_bssap_init(g_bssap, mp_bssap_cfg, "VirtMSC", MSC_BssmapOps); } else { - f_bssap_init("VirtMSC", omit); + f_bssap_init(g_bssap, mp_bssap_cfg, "VirtMSC", omit); + connect(self:BSSAP, g_bssap.vc_SCCP:SCCP_SP_PORT); + f_legacy_bssap_reset(); } f_ipa_ctrl_start(mp_bsc_ip, mp_bsc_ctrl_port); @@ -268,7 +304,6 @@ var BSSAP_N_UNITDATA_ind ud_ind; f_init(1); - f_bssap_reset(); IPA_RSL[0].send(ts_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0,ts_RSL_CHAN_RQD('23'O, 23))); f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV)); @@ -281,7 +316,6 @@ var integer chreq_total; f_init(1); - f_bssap_reset(); chreq_total := f_ctrl_get_ratectr_abs(IPA_CTRL, "bts", 0, "chreq:total"); IPA_RSL[0].send(ts_ASP_RSL_UD(IPAC_PROTO_RSL_TRX0,ts_RSL_CHAN_RQD('23'O, 23))); @@ -296,7 +330,6 @@ var RSL_Message rx_rsl; f_init(1); - f_bssap_reset(); /* Send CHAN RQD and wait for allocation; acknowledge it */ var RslChannelNr chan_nr := f_chreq_act_ack(); @@ -315,7 +348,6 @@ var ASP_RSL_Unitdata rx_rsl_ud; f_init(1); - f_bssap_reset(); /* Send CHAN RQD and wait for allocation; acknowledge it */ var RslChannelNr chan_nr := f_chreq_act_ack(); @@ -345,7 +377,6 @@ var RSL_Message rx_rsl;