pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43159?usp=email )
Change subject: stp: Validate timer xua beat 0 disables BEAT procedure ......................................................................
stp: Validate timer xua beat 0 disables BEAT procedure
Check in all sort of configurations that the BEAT procedure on xUA/IPA can be disabled just fine per ASP using the VTY.
Related: SYS#8156 Change-Id: Id47bf862638a099bb5f6721fcfba873001aed616 --- M stp/STP_Tests_Common.ttcn M stp/STP_Tests_IPA.ttcn M stp/STP_Tests_M3UA.ttcn M stp/STP_Tests_M3UA_TCP.ttcn M stp/expected-results.xml 5 files changed, 124 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/59/43159/1
diff --git a/stp/STP_Tests_Common.ttcn b/stp/STP_Tests_Common.ttcn index 16b6406..2178a98 100644 --- a/stp/STP_Tests_Common.ttcn +++ b/stp/STP_Tests_Common.ttcn @@ -47,7 +47,8 @@
type component Test_CT { port TELNETasp_PT VTY; - timer g_Tguard := 30.0; + timer g_Tguard; + var float g_Tguard_timeout := 30.0; var boolean g_test_initialized := false; }
@@ -69,7 +70,7 @@ f_vty_transceive(VTY, "enable");
activate(as_gTguard()); - g_Tguard.start; + g_Tguard.start(g_Tguard_timeout); }
diff --git a/stp/STP_Tests_IPA.ttcn b/stp/STP_Tests_IPA.ttcn index 7225949..b16cb0e 100644 --- a/stp/STP_Tests_IPA.ttcn +++ b/stp/STP_Tests_IPA.ttcn @@ -852,18 +852,76 @@ f_vty_cs7_ipa_asp_cmd(g_ipa_configs[0], "timer xua beat " & int2str(STP_Tests_Common.mp_t_beat_sec_default)); }
+/* Test ASP doesn't send a T(beat) when disabled over VTY ("timer xua beat 0") */ +friend function f_TC_beat_disabled(Misc_Helpers.ro_charstring asps) runs on IPA_CT +{ + var IpaConfigs ipa_configs := ipa_build_configs(asps); + var float timeout_val := int2float(STP_Tests_Common.mp_t_beat_sec_default) + 1.0; + var IpaCcmMsgtype ipa_ping_msg := IPAC_MSGT_PING; + var octetstring ipa_ping_data := int2oct(enum2int(ipa_ping_msg), 1); + + g_Tguard_timeout := 60.0; + f_init_common(); + f_init_ipa(ipa_configs := ipa_configs); + + f_vty_cs7_ipa_asp_cmd(ipa_configs[0], "timer xua beat 0"); + + if (ipa_configs[0].is_server) { + f_listen_ipa(0); + } else { + f_connect_ipa(0); + } + /* receive CCM IPA PING: */ + f_ipa_cfg_chg_ccm_enabled(IPA_CFG[0], false); + + timer T; + var ASP_IPA_Unitdata ipa_rx; + T.start(timeout_val); + alt { + [] IPA_CTRL[0].receive(t_ASP_IPA_UD(IPAC_PROTO_CCM, ipa_ping_data)) -> value ipa_rx { + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, + log2str("Received unexpected IPA ", ipa_rx)); + } + [] IPA_CTRL[0].receive { + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, + log2str("Received unexpected IPA before timeout expecting no ", + t_ASP_IPA_UD(IPAC_PROTO_CCM, ipa_ping_data))); + } + [] T.timeout { + setverdict(pass); + } + } + + log("No BEAT received, all good!"); + + /* return to default value: */ + f_vty_cs7_ipa_asp_cmd(ipa_configs[0], "timer xua beat " & int2str(STP_Tests_Common.mp_t_beat_sec_default)); +} + /* Test the IUT sends heartbeat procedure when needed. */ testcase TC_beat_timeout() runs on IPA_CT { var Misc_Helpers.ro_charstring asps := { "ipa-asp-override-sender" }; f_TC_beat_timeout(asps); }
+/* Test the IUT sends no heartbeat procedure when disabled over VTY */ +testcase TC_beat_disabled() runs on IPA_CT { + var Misc_Helpers.ro_charstring asps := { "ipa-asp-override-sender" }; + f_TC_beat_disabled(asps); +} + /* Test the IUT sends heartbeat procedure when needed. */ testcase TC_clnt_beat_timeout() runs on IPA_CT { var Misc_Helpers.ro_charstring asps := { "ipa-asp-client0" }; f_TC_beat_timeout(asps); }
+/* Test the IUT sends no heartbeat procedure when disabled over VTY */ +testcase TC_clnt_beat_disabled() runs on IPA_CT { + var Misc_Helpers.ro_charstring asps := { "ipa-asp-client0" }; + f_TC_beat_disabled(asps); +} + control { execute( TC_unknown_client_nodynamic() ); execute( TC_unknown_as_client_nodynamic() ); @@ -884,7 +942,9 @@
execute( TC_beat() ); execute( TC_beat_timeout() ); + execute( TC_beat_disabled() ); execute( TC_clnt_beat_timeout() ); + execute( TC_clnt_beat_disabled() ); }
diff --git a/stp/STP_Tests_M3UA.ttcn b/stp/STP_Tests_M3UA.ttcn index 7debed6..f1ce309 100644 --- a/stp/STP_Tests_M3UA.ttcn +++ b/stp/STP_Tests_M3UA.ttcn @@ -603,12 +603,46 @@ f_clear_m3ua(); }
+/* Test ASP doesn't send a T(beat) when disabled over VTY ("timer xua beat 0") */ +friend function f_TC_beat_disabled(Misc_Helpers.ro_charstring asps) runs on RAW_M3UA_CT +{ + var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); + var M3UA_RecvFrom rx; + var template (omit) M3UA_Heartbeat_Data hbd := omit; + var float timeout_val := int2float(STP_Tests_Common.mp_t_beat_sec_default) + 1.0; + + g_Tguard_timeout := 60.0; + f_init_m3ua(answer_beat := false, m3ua_configs := m3ua_configs); + f_vty_cs7_asp_cmd(g_m3ua_configs[0], "timer xua beat 0"); + + if (m3ua_configs[0].is_server) { + f_init_m3ua_srv(); + f_M3UA_CLNT_asp_up_act(0, rctx := int2oct(m3ua_configs[0].routing_ctx, 4)); + } else { + f_M3UA_asp_up(0, ntfy_after_up := c_M3UA_ST_I_AS_INACTIVE); + } + + f_M3UA_exp_no(0, tr_M3UA_BEAT(*), timeout_val := timeout_val, answer_beat := false); + log("No BEAT received, all good!"); + + /* return to default value: */ + f_vty_cs7_asp_cmd(g_m3ua_configs[0], "timer xua beat " & int2str(STP_Tests_Common.mp_t_beat_sec_default)); + + f_clear_m3ua(); +} + /* Test the IUT sends heartbeat procedure when needed. */ testcase TC_beat_timeout() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender" }; f_TC_beat_timeout(asps); }
+/* Test the IUT sends no heartbeat procedure when disabled over VTY */ +testcase TC_beat_disabled() runs on RAW_M3UA_CT { + var Misc_Helpers.ro_charstring asps := { "asp-sender" }; + f_TC_beat_disabled(asps); +} + /* Test the ASP-ACTIVATE procedure (without traffic-mode or routing ctx) */ testcase TC_asp_act() runs on RAW_M3UA_CT { f_init_m3ua(); @@ -1304,6 +1338,11 @@ var Misc_Helpers.ro_charstring asps := { "asp-client0" }; f_TC_beat_timeout(asps); } +/* Test the IUT sends no heartbeat procedure when disabled over VTY */ +testcase TC_clnt_beat_disabled() runs on RAW_M3UA_CT { + var Misc_Helpers.ro_charstring asps := { "asp-client0" }; + f_TC_beat_disabled(asps); +}
/* Expect inbound connection from ASP/SCTP-client, followed by ASP-UP + ASP-ACT */ testcase TC_clnt_asp_act() runs on RAW_M3UA_CT { @@ -1906,6 +1945,7 @@ execute( TC_beat() ); execute( TC_beat_payload() ); execute( TC_beat_timeout() ); + execute( TC_beat_disabled() ); execute( TC_asp_act() ); execute( TC_asp_act_override() ); execute( TC_asp_act_loadshare() ); @@ -1942,6 +1982,7 @@ /* Test STP as SCTP client + M3UA ASP role */ execute( TC_clnt_connect_asp_up() ); execute( TC_clnt_beat_timeout() ); + execute( TC_clnt_beat_disabled() ); execute( TC_clnt_asp_act() ); execute( TC_clnt_sg_to_asp() ); execute( TC_clnt_asp_to_sg() ); diff --git a/stp/STP_Tests_M3UA_TCP.ttcn b/stp/STP_Tests_M3UA_TCP.ttcn index 8bed7e2..4e0706b 100644 --- a/stp/STP_Tests_M3UA_TCP.ttcn +++ b/stp/STP_Tests_M3UA_TCP.ttcn @@ -201,12 +201,24 @@ f_TC_beat_timeout(asps); }
+/* Test the IUT sends no heartbeat procedure when disabled over VTY */ +testcase TC_m3ua_tcp_beat_disabled() runs on RAW_M3UA_CT { + var Misc_Helpers.ro_charstring asps := { "asp-sender-tcp" }; + f_TC_beat_disabled(asps); +} + /* Test the IUT sends heartbeat procedure when needed. */ testcase TC_m3ua_tcp_clnt_beat_timeout() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-client0-tcp" }; f_TC_beat_timeout(asps); }
+/* Test the IUT sends no heartbeat procedure when disabled over VTY */ +testcase TC_m3ua_tcp_clnt_beat_disabled() runs on RAW_M3UA_CT { + var Misc_Helpers.ro_charstring asps := { "asp-client0-tcp" }; + f_TC_beat_disabled(asps); +} + control { /* M3UA TCP Tests */ execute( TC_m3ua_tcp_cli() ); @@ -218,7 +230,9 @@ execute( TC_m3ua_tcp_cli_adm_shutdown() );
execute( TC_m3ua_tcp_beat_timeout() ); + execute( TC_m3ua_tcp_beat_disabled() ); execute( TC_m3ua_tcp_clnt_beat_timeout() ); + execute( TC_m3ua_tcp_clnt_beat_disabled() ); }
} diff --git a/stp/expected-results.xml b/stp/expected-results.xml index 92f0a92..2243959 100644 --- a/stp/expected-results.xml +++ b/stp/expected-results.xml @@ -4,6 +4,7 @@ <testcase classname='STP_Tests_M3UA' name='TC_beat' time='MASKED'/> <testcase classname='STP_Tests_M3UA' name='TC_beat_payload' time='MASKED'/> <testcase classname='STP_Tests_M3UA' name='TC_beat_timeout' time='MASKED'/> + <testcase classname='STP_Tests_M3UA' name='TC_beat_disabled' time='MASKED'/> <testcase classname='STP_Tests_M3UA' name='TC_asp_act' time='MASKED'/> <testcase classname='STP_Tests_M3UA' name='TC_asp_act_override' time='MASKED'/> <testcase classname='STP_Tests_M3UA' name='TC_asp_act_loadshare' time='MASKED'/> @@ -28,6 +29,7 @@ <testcase classname='STP_Tests_M3UA' name='TC_dyn_2asp_as_rkm_permitted' time='MASKED'/> <testcase classname='STP_Tests_M3UA' name='TC_clnt_connect_asp_up' time='MASKED'/> <testcase classname='STP_Tests_M3UA' name='TC_clnt_beat_timeout' time='MASKED'/> + <testcase classname='STP_Tests_M3UA' name='TC_clnt_beat_disabled' time='MASKED'/> <testcase classname='STP_Tests_M3UA' name='TC_clnt_asp_act' time='MASKED'/> <testcase classname='STP_Tests_M3UA' name='TC_clnt_sg_to_asp' time='MASKED'/> <testcase classname='STP_Tests_M3UA' name='TC_clnt_asp_to_sg' time='MASKED'/> @@ -54,7 +56,9 @@ <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_beat_disabled' time='MASKED'/> <testcase classname='STP_Tests_M3UA_TCP' name='TC_m3ua_tcp_clnt_beat_timeout' time='MASKED'/> + <testcase classname='STP_Tests_M3UA_TCP' name='TC_m3ua_tcp_clnt_beat_disabled' time='MASKED'/> <testcase classname='STP_Tests_IPA' name='TC_unknown_client_nodynamic' time='MASKED'/> <testcase classname='STP_Tests_IPA' name='TC_unknown_as_client_nodynamic' time='MASKED'/> <testcase classname='STP_Tests_IPA' name='TC_known_client_nodynamic' time='MASKED'/> @@ -72,7 +76,9 @@ <testcase classname='STP_Tests_IPA' name='TC_ipa_tcp_cli_adm_shutdown' time='MASKED'/> <testcase classname='STP_Tests_IPA' name='TC_beat' time='MASKED'/> <testcase classname='STP_Tests_IPA' name='TC_beat_timeout' time='MASKED'/> + <testcase classname='STP_Tests_IPA' name='TC_beat_disabled' time='MASKED'/> <testcase classname='STP_Tests_IPA' name='TC_clnt_beat_timeout' time='MASKED'/> + <testcase classname='STP_Tests_IPA' name='TC_clnt_beat_disabled' time='MASKED'/> <testcase classname='STP_Tests_IPA_M3UA' name='TC_m3ua_to_ipa' time='MASKED'/> <testcase classname='STP_Tests_IPA_M3UA' name='TC_ipa_to_m3ua' time='MASKED'/> <testcase classname='STP_Tests_IPA_M3UA' name='TC_ipa_to_m3ua_ni' time='MASKED'/>