pespin has submitted this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40473?usp=email )
Change subject: stp: IPA: Introduce test TC_beat_timeout
......................................................................
stp: IPA: Introduce test TC_beat_timeout
Change-Id: I6f16915238d7762faf1c63fdeccca7e4a5f20893
Related: SYS#7501
Related: OS#4072
---
M stp/STP_Tests_IPA.ttcn
M stp/expected-results.xml
2 files changed, 91 insertions(+), 4 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, but someone else must approve
fixeria: Looks good to me, but someone else must approve
pespin: Looks good to me, approved
diff --git a/stp/STP_Tests_IPA.ttcn b/stp/STP_Tests_IPA.ttcn
index 07d1f2b..54a64d8 100644
--- a/stp/STP_Tests_IPA.ttcn
+++ b/stp/STP_Tests_IPA.ttcn
@@ -107,7 +107,24 @@
friend function f_vty_cs7_ipa_as_cmd(charstring as_name, charstring cmd) runs on IPA_CT
{
f_vty_config2(VTY, {"cs7 instance 0", "as " & as_name &
" ipa"}, cmd);
+}
+private function f_ipa_asp_cfg_str(in IpaConfig cfg)
+return charstring {
+ var charstring str;
+
+ str := "asp " & cfg.asp_name;
+ str := str & " " & int2str(cfg.local_port);
+ str := str & " " & int2str(cfg.remote_port);
+ str := str & " ipa";
+
+ return str;
+}
+
+private function f_vty_cs7_ipa_asp_cmd(IpaConfig cfg, charstring cmd) runs on IPA_CT
+{
+ var charstring asp_cfg_str := f_ipa_asp_cfg_str(cfg);
+ f_vty_config2(VTY, {"cs7 instance 0", asp_cfg_str}, cmd);
}
friend function f_IPA_send(integer idx, octetstring data) runs on IPA_CT {
@@ -115,14 +132,20 @@
IPA[idx].send(t_ASP_MTP3_TRANSFERreq(sio, 0, 0, 0, data));
}
-friend function f_IPA_exp(integer idx, template (present) octetstring data) runs on
IPA_CT {
+friend function f_IPA_exp(integer idx, template (present) octetstring data, float
timeout_val := 5.0) runs on IPA_CT {
+ timer T := timeout_val;
+ T.start;
alt {
[] IPA[idx].receive(t_ASP_MTP3_TRANSFERind(?, ?, ?, ?, data)) {
setverdict(pass);
}
[] IPA[idx].receive {
- setverdict(fail, "Received unexpected data on IPA port while waiting for ",
data);
- mtc.stop;
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
+ log2str("Received unexpected data on IPA port while waiting for ",
data));
+ }
+ [] T.timeout {
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
+ log2str("Timeout waiting for IPA[", idx, "] ", data));
}
}
}
@@ -525,6 +548,68 @@
f_IPA_ping(0);
}
+private function f_TC_beat_timeout(Misc_Helpers.ro_charstring asps) runs on IPA_CT
+{
+ var IpaConfigs ipa_configs := ipa_build_configs(asps);
+ var ASP_MTP3_TRANSFERind rx;
+ var float timeout_val := 3.0 + 1.0;
+ var IpaCcmMsgtype ipa_ping_msg := IPAC_MSGT_PING;
+ var IpaCcmMsgtype ipa_pong_msg := IPAC_MSGT_PONG;
+ var octetstring ipa_ping_data := int2oct(enum2int(ipa_ping_msg), 1);
+ var octetstring ipa_pong_data := int2oct(enum2int(ipa_pong_msg), 1);
+
+ f_init_common();
+ f_init_ipa(ipa_configs := ipa_configs);
+
+ f_vty_cs7_ipa_asp_cmd(ipa_configs[0], "timer xua beat 3");
+
+ if (ipa_configs[0].is_server) {
+ /* TODO */
+ } else {
+ f_connect_ipa(0);
+ }
+ f_sleep(3.0);
+ /* receive CCM IPA PING: */
+ f_ipa_cfg_chg_ccm_enabled(IPA_CFG[0], false);
+
+ IPA_CTRL[0].receive(t_ASP_IPA_UD(IPAC_PROTO_CCM, ipa_ping_data));
+ log("1st PING received");
+ IPA_CTRL[0].send(valueof(t_ASP_IPA_UD(IPAC_PROTO_CCM, ipa_pong_data)));
+
+ /* Make sure next HEARBEAT arrives around the time we configured.
+ * Do not answer this nor next heardbeat: */
+ IPA_CTRL[0].receive(t_ASP_IPA_UD(IPAC_PROTO_CCM, ipa_ping_data));
+ log("2nd PING received");
+ IPA_CTRL[0].receive(t_ASP_IPA_UD(IPAC_PROTO_CCM, ipa_ping_data));
+ log("3rd PING received");
+
+ /* After 2*T(beat), IUT should figure out peer is not responding and terminate the conn:
*/
+ timer T := timeout_val;
+ T.start;
+ alt {
+ [] IPA_CTRL[0].receive(tr_ASP_IPA_EV(ASP_IPA_EVENT_DOWN)) {
+ setverdict(pass);
+ }
+ [] IPA[0].receive(t_ASP_MTP3_TRANSFERind(?, ?, ?, ?, ?)) -> value rx {
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
+ log2str("Received unexpected IPA ", rx, " while waiting for
connClosed"));
+ }
+ [] T.timeout {
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
+ log2str("Timeout waiting for IPA connClosed"));
+ }
+ }
+
+ /* return to default value: */
+ f_vty_cs7_ipa_asp_cmd(g_ipa_configs[0], "timer xua beat 30");
+}
+
+/* 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);
+}
+
control {
execute( TC_unknown_client_nodynamic() );
execute( TC_unknown_as_client_nodynamic() );
@@ -538,6 +623,7 @@
execute( TC_unknown_client_dynamic_tmt_loadshare() );
execute( TC_beat() );
+ execute( TC_beat_timeout() );
}
diff --git a/stp/expected-results.xml b/stp/expected-results.xml
index 44e0ea2..db36ab4 100644
--- a/stp/expected-results.xml
+++ b/stp/expected-results.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<testsuite name='STP_Tests' tests='53' failures='0'
errors='0' skipped='0' inconc='0' time='MASKED'>
+<testsuite name='STP_Tests' tests='54' failures='0'
errors='0' skipped='0' inconc='0' time='MASKED'>
<testcase classname='STP_Tests_M3UA' name='TC_connect_asp_up'
time='MASKED'/>
<testcase classname='STP_Tests_M3UA' name='TC_beat'
time='MASKED'/>
<testcase classname='STP_Tests_M3UA' name='TC_beat_payload'
time='MASKED'/>
@@ -55,6 +55,7 @@
<testcase classname='STP_Tests_IPA' name='TC_tmt_loadshare_sls'
time='MASKED'/>
<testcase classname='STP_Tests_IPA'
name='TC_unknown_client_dynamic_tmt_loadshare' 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_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
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40473?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I6f16915238d7762faf1c63fdeccca7e4a5f20893
Gerrit-Change-Number: 40473
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>