pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/42519?usp=email )
Change subject: stp: STP_Tests_M3UA_TCP: Introduce tests TC_m3ua_tcp_{cli,srv}_adm_shutdown ......................................................................
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(-)
Approvals: Jenkins Builder: Verified osmith: Looks good to me, approved
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'/>