pespin submitted this change.

View Change


Approvals: Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved osmith: Looks good to me, but someone else must approve
epdg: Add tests to validate concurrent connections

Change-Id: I842dacda56abe47afb19e951eaae746b5e8d9fe7
---
M epdg/EPDG_Tests.ttcn
1 file changed, 91 insertions(+), 4 deletions(-)

diff --git a/epdg/EPDG_Tests.ttcn b/epdg/EPDG_Tests.ttcn
index 6358d96..8f97634 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;
};

@@ -118,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 */
@@ -156,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 := {
@@ -334,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;
}
@@ -750,10 +774,64 @@
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) from vc_conn_list[i];
+ }
+
+ for (var integer i := 0; i < num_ues; i := i + 1) {
+ COORD.send(COORD_CMD_START) to vc_conn_list[i];
+ f_sleep(0.1);
+ }
+
+ for (var integer i := 0; i < num_ues; i := i + 1) {
+ COORD.receive(COORD_CMD_ATTACHED) from vc_conn_list[i];
+ }
+
+ 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 change 36093. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I842dacda56abe47afb19e951eaae746b5e8d9fe7
Gerrit-Change-Number: 36093
Gerrit-PatchSet: 6
Gerrit-Owner: pespin <pespin@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: lynxis lazus <lynxis@fe80.eu>
Gerrit-Reviewer: osmith <osmith@sysmocom.de>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>
Gerrit-MessageType: merged