pespin submitted this change.

View Change

Approvals: Jenkins Builder: Verified osmith: Looks good to me, approved
stp: STP_Tests_M3UA_TCP: Introduce tests TC_m3ua_tcp_{cli,srv}_adm_shutdown

Related tests already existed for STP_Tests_M3UA, but we want to
explicitly test against M3UA_TCP since these tests involve the transport
layer directly.

Related: OS#6752
Change-Id: Ia37a0e244895fbb447ef8e71a0980538cc9fd7f8
---
M stp/STP_Tests_M3UA.ttcn
M stp/STP_Tests_M3UA_TCP.ttcn
M stp/expected-results.xml
3 files changed, 87 insertions(+), 3 deletions(-)

diff --git a/stp/STP_Tests_M3UA.ttcn b/stp/STP_Tests_M3UA.ttcn
index 6fb772d..485ca76 100644
--- a/stp/STP_Tests_M3UA.ttcn
+++ b/stp/STP_Tests_M3UA.ttcn
@@ -129,7 +129,7 @@
return m3ua_configs;
}

-private template PortEvent tr_ConnOpened := {
+friend template PortEvent tr_ConnOpened := {
connOpened := ?
}

@@ -1547,7 +1547,7 @@
return str;
}

-private function f_vty_cs7_asp_cmd(in M3uaConfig cfg, charstring cmd) runs on RAW_M3UA_CT
+friend function f_vty_cs7_asp_cmd(in M3uaConfig cfg, charstring cmd) runs on RAW_M3UA_CT
{
var charstring asp_cfg_str := f_asp_cfg_str(cfg);
f_vty_config2(VTY, {"cs7 instance 0", asp_cfg_str}, cmd);
diff --git a/stp/STP_Tests_M3UA_TCP.ttcn b/stp/STP_Tests_M3UA_TCP.ttcn
index 1da65cc..8bed7e2 100644
--- a/stp/STP_Tests_M3UA_TCP.ttcn
+++ b/stp/STP_Tests_M3UA_TCP.ttcn
@@ -35,6 +35,13 @@
import from STP_Tests_Common all;
import from STP_Tests_M3UA all;

+private altstep as_M3UA_wait_tcp_conn_closed(integer idx) runs on RAW_M3UA_CT {
+ var PortEvent pev;
+ [] M3UA[idx].receive(PortEvent:{connClosed:=?}) -> value pev {
+ log("Peer closed conn: ", pev)
+ }
+}
+
private function f_TC_m3ua_tcp(integer idx_a, integer idx_b) runs on RAW_M3UA_CT {
var M3uaConfig cfg_a := g_m3ua_configs[idx_a];
var M3uaConfig cfg_b := g_m3ua_configs[idx_b];
@@ -116,6 +123,78 @@
f_TC_m3ua_tcp(0, 1);
}

+/* Test administrative state, VTY "[no] shutdown" */
+testcase TC_m3ua_tcp_srv_adm_shutdown() runs on RAW_M3UA_CT {
+ var Misc_Helpers.ro_charstring asps := { "asp-sender-tcp" };
+ var M3uaConfigs m3ua_configs := m3ua_build_configs(asps);
+ f_init_m3ua(m3ua_configs := m3ua_configs);
+
+ f_M3UA_asp_up_act(0, c_M3UA_TMT_override, omit);
+ f_sleep(1.0);
+ f_vty_cs7_asp_cmd(g_m3ua_configs[0], "shutdown");
+ log("ASP should now be DOWN")
+ as_M3UA_wait_tcp_conn_closed(0);
+
+ f_sleep(1.0);
+ /* Make sure SCTP conn will be closed when we connect to it. */
+ log("Connecting to ASP (expect closed):");
+ f_M3UA_connect_tcp(0);
+ timer T := 5.0;
+ T.start;
+ alt {
+ [] as_M3UA_wait_tcp_conn_closed(0);
+ [] T.timeout {
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Expected close from ASP SCTP server!");
+ }
+ }
+
+ /* Now let the ASP be active again, it should reconnect to us: */
+ f_vty_cs7_asp_cmd(g_m3ua_configs[0], "no shutdown");
+ log("Connecting to ASP (expect success):");
+ f_M3UA_connect_tcp(0);
+ f_M3UA_asp_up_act(0, c_M3UA_TMT_override, omit, ntfy_after_up := c_M3UA_ST_I_AS_PENDING);
+
+ f_clear_m3ua();
+}
+
+/* Test administrative state, VTY "[no] shutdown" */
+testcase TC_m3ua_tcp_cli_adm_shutdown() runs on RAW_M3UA_CT {
+ var PortEvent pev;
+ var Misc_Helpers.ro_charstring asps := { "asp-client0-tcp" };
+ var M3uaConfigs m3ua_configs := m3ua_build_configs(asps);
+
+ f_init_m3ua(m3ua_configs := m3ua_configs);
+ f_init_m3ua_srv();
+
+ var OCT4 rctx := int2oct(m3ua_configs[0].routing_ctx, 4);
+ f_M3UA_CLNT_asp_up_act(0, rctx := rctx);
+ f_sleep(1.0);
+ f_vty_cs7_asp_cmd(m3ua_configs[0], "shutdown");
+ log("ASP should now be DOWN")
+ as_M3UA_wait_tcp_conn_closed(0);
+
+ /* Wait for a while to make sure ASP doesn't reconnect to us: */
+ timer T := 10.0;
+ T.start;
+ alt {
+ [] M3UA[0].receive(tr_ConnOpened) {
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
+ "Unexpected reconnect from ASP client!");
+ }
+ [] T.timeout {}
+ }
+
+ /* Now let the ASP be active again, it should reconnect to us: */
+ f_vty_cs7_asp_cmd(m3ua_configs[0], "no shutdown");
+ log("Waiting for client ASP to reconnect to us");
+ M3UA[0].receive(tr_ConnOpened) -> value pev {
+ g_m3ua_conn_id[0] := pev.connOpened.connId;
+ }
+ f_M3UA_CLNT_asp_up_act(0, rctx := rctx);
+
+ f_clear_m3ua();
+}
+
/* Test the IUT sends heartbeat procedure when needed. */
testcase TC_m3ua_tcp_beat_timeout() runs on RAW_M3UA_CT {
var Misc_Helpers.ro_charstring asps := { "asp-sender-tcp" };
@@ -135,8 +214,11 @@
execute( TC_m3ua_tcp_srv() );
execute( TC_m3ua_tcp_srv_cli() );

+ execute( TC_m3ua_tcp_srv_adm_shutdown() );
+ execute( TC_m3ua_tcp_cli_adm_shutdown() );
+
execute( TC_m3ua_tcp_beat_timeout() );
execute( TC_m3ua_tcp_clnt_beat_timeout() );
}

-}
\ No newline at end of file
+}
diff --git a/stp/expected-results.xml b/stp/expected-results.xml
index 7d9d684..44f5ced 100644
--- a/stp/expected-results.xml
+++ b/stp/expected-results.xml
@@ -49,6 +49,8 @@
<testcase classname='STP_Tests_M3UA_TCP' name='TC_m3ua_tcp_cli_srv' time='MASKED'/>
<testcase classname='STP_Tests_M3UA_TCP' name='TC_m3ua_tcp_srv' time='MASKED'/>
<testcase classname='STP_Tests_M3UA_TCP' name='TC_m3ua_tcp_srv_cli' time='MASKED'/>
+ <testcase classname='STP_Tests_M3UA_TCP' name='TC_m3ua_tcp_srv_adm_shutdown' time='MASKED'/>
+ <testcase classname='STP_Tests_M3UA_TCP' name='TC_m3ua_tcp_cli_adm_shutdown' time='MASKED'/>
<testcase classname='STP_Tests_M3UA_TCP' name='TC_m3ua_tcp_beat_timeout' time='MASKED'/>
<testcase classname='STP_Tests_M3UA_TCP' name='TC_m3ua_tcp_clnt_beat_timeout' time='MASKED'/>
<testcase classname='STP_Tests_IPA' name='TC_unknown_client_nodynamic' time='MASKED'/>

To view, visit change 42519. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ia37a0e244895fbb447ef8e71a0980538cc9fd7f8
Gerrit-Change-Number: 42519
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann@sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: osmith <osmith@sysmocom.de>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>