pespin has uploaded this change for review.
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'/>
To view, visit change 43159. To unsubscribe, or for help writing mail filters, visit settings.