osmo-ttcn3-hacks[master]: WIP: Prepare MSC_Tests for ability to emulate two BSCs

2018-02-13 Thread Harald Welte

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

2018-02-13 Thread Harald Welte
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

2018-02-12 Thread Harald Welte

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;