pespin has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/36093?usp=email )
Change subject: epdg: Add tests to validate concurrent connections
......................................................................
epdg: Add tests to validate concurrent connections
Change-Id: I842dacda56abe47afb19e951eaae746b5e8d9fe7
---
M epdg/EPDG_Tests.ttcn
1 file changed, 90 insertions(+), 8 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/93/36093/1
diff --git a/epdg/EPDG_Tests.ttcn b/epdg/EPDG_Tests.ttcn
index 44dc80f..1ff4629 100644
--- a/epdg/EPDG_Tests.ttcn
+++ b/epdg/EPDG_Tests.ttcn
@@ -55,6 +55,14 @@
integer mp_diam_watchdog_initial_wait_sec := 6*3;
}
+type port Coord_PT message
+{
+ inout charstring;
+} with { extension "internal" };
+private const charstring COORD_CMD_READY := "COORD_CMD_READY";
+private const charstring COORD_CMD_START := "COORD_CMD_START";
+private const charstring COORD_CMD_ATTACHED := "COORD_CMD_ATTACHED";
+private const charstring COORD_CMD_STOP := "COORD_CMD_STOP";
type component MTC_CT {
var DIAMETER_Emulation_CT vc_SWx;
@@ -72,6 +80,8 @@
var GTPv2_Emulation_CT vc_GTP2;
port GTP2EM_PT TEID0;
+ port Coord_PT COORD;
+
timer g_Tguard;
};
@@ -93,7 +103,6 @@
f_diameter_expect_imsi(imsi);
-
while (true) {
alt {
[] DIAMETER_CLIENT.receive(PDU_DIAMETER:?) -> value msg {
@@ -119,8 +128,9 @@
port DIAMETEREM_PROC_PT SWx_PROC;
port DIAMETER_Conn_PT S6b;
port DIAMETEREM_PROC_PT S6b_PROC;
+ port Coord_PT COORD;
};
-
+type record of EPDG_ConnHdlr EPDG_ConnHdlrList;
type record BearerConfig {
/* EPS Bearer ID */
@@ -157,12 +167,22 @@
}
}
-private function f_init_pars(integer imsi_suffix := 1)
+private function f_gen_addr_in_pool(integer idx := 0) return charstring
+{
+ /* Skip first 2 addresses reserved for TUN */
+ var integer internal_idx := idx + 2;
+ var integer suffix := internal_idx rem (256*256);
+ var integer C := suffix / 256;
+ var integer D := suffix rem 256;
+ return "192.168." & int2str(C) & "." & int2str(D);
+}
+
+private function f_init_pars(integer idx := 0)
runs on MTC_CT return EPDG_ConnHdlrPars {
var EPDG_ConnHdlrPars pars := {
- imsi := f_gen_imsi(imsi_suffix),
+ imsi := f_rnd_imsi('26242'H),
apn := "internet",
- ue_ip := "192.168.123.50",
+ ue_ip := f_gen_addr_in_pool(idx),
teic_local := '00000000'O,
teic_remote := omit,
bearer := {
@@ -335,6 +355,9 @@
connect(vc_conn:S6b_PROC, vc_conn_s6b:DIAMETER_PROC_CLIENT);
vc_conn_s6b.start(f_diam_connhldr_ct_main(pars.imsi));
+ /* COORD */
+ connect(vc_conn:COORD, self:COORD);
+
vc_conn.start(f_init_handler(fn, id, pars));
return vc_conn;
}
@@ -711,7 +734,6 @@
f_initial_attach();
f_GSUP_PurgeMS_success();
}
-
testcase TC_authinfo_normal() runs on MTC_CT {
var EPDG_ConnHdlrPars pars := f_init_pars();
var EPDG_ConnHdlr vc_conn;
@@ -728,7 +750,6 @@
f_GTP2C_CreateBearer_success();
f_GSUP_PurgeMS_success();
}
-
testcase TC_ho_lte_to_wifi() runs on MTC_CT {
var EPDG_ConnHdlrPars pars := f_init_pars();
var EPDG_ConnHdlr vc_conn;
@@ -744,7 +765,6 @@
* cause="Access changed from non-3gpp to 3gpp" */
f_GTP2C_DeleteBearer_success();
}
-
testcase TC_ho_wifi_to_lte() runs on MTC_CT {
var EPDG_ConnHdlrPars pars := f_init_pars();
var EPDG_ConnHdlr vc_conn;
@@ -754,10 +774,63 @@
setverdict(pass);
}
+private function f_TC_concurrent_ues(charstring id) runs on EPDG_ConnHdlr {
+ COORD.send(COORD_CMD_READY);
+ COORD.receive(COORD_CMD_START);
+ f_initial_attach();
+ COORD.send(COORD_CMD_ATTACHED);
+ COORD.receive(COORD_CMD_STOP);
+ f_GSUP_PurgeMS_success();
+}
+private function f_TC_concurrent_ues_MTC(integer num_ues) runs on MTC_CT {
+ var EPDG_ConnHdlrList vc_conn_list := {};
+ var EPDG_ConnHdlr vc_conn;
+ f_init(t_guard := 100.0);
+
+ for (var integer i := 0; i < num_ues; i := i + 1) {
+ var EPDG_ConnHdlrPars pars := f_init_pars(i);
+ vc_conn := f_start_handler(refers(f_TC_concurrent_ues), pars);
+ vc_conn_list := vc_conn_list & { vc_conn };
+ }
+
+ for (var integer i := 0; i < num_ues; i := i + 1) {
+ COORD.receive(COORD_CMD_READY) -> sender vc_conn;
+ }
+
+ for (var integer i := 0; i < num_ues; i := i + 1) {
+ COORD.send(COORD_CMD_START) to vc_conn_list[i];
+ }
+
+ for (var integer i := 0; i < num_ues; i := i + 1) {
+ COORD.receive(COORD_CMD_ATTACHED) -> sender vc_conn;
+ }
+
+ log("All attached!");
+ f_sleep(1.0);
+
+ for (var integer i := 0; i < num_ues; i := i + 1) {
+ COORD.send(COORD_CMD_STOP) to vc_conn_list[i];
+ }
+
+ for (var integer i := 0; i < num_ues; i := i + 1) {
+ vc_conn_list[i].done;
+ }
+
+ setverdict(pass);
+}
+testcase TC_concurrent_ues2() runs on MTC_CT {
+ f_TC_concurrent_ues_MTC(2)
+}
+testcase TC_concurrent_ues100() runs on MTC_CT {
+ f_TC_concurrent_ues_MTC(100)
+}
+
control {
execute ( TC_authinfo_normal() );
execute ( TC_ho_lte_to_wifi() );
execute ( TC_ho_wifi_to_lte() );
+ execute ( TC_concurrent_ues2() );
+ execute ( TC_concurrent_ues100() );
}
}
--
To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/36093?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I842dacda56abe47afb19e951eaae746b5e8d9fe7
Gerrit-Change-Number: 36093
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: newchange