From 65d601cd755051fcf38b707b1283e29152aa0dcb Mon Sep 17 00:00:00 2001
From: Numan Siddique <numans@ovn.org>
Date: Mon, 11 Nov 2019 12:26:40 +0530
Subject: [PATCH] Fix testsuite 85 - "ensure one gw controller restart in HA
doesn't bounce the master ok".
This testsuite is failing frequently in travis CI and locally when tests are run with "-j5".
The test case deletes the chassis row for chassis 'gw2' and expects that this
doesn't cause the chassisresident port on the master ('gw1') to not bounce as 'gw1'
has higher priority than gw2. But since the ha chassis group has only 2 chassis,
'gw2' can claim the port momentarily when 'gw2' chassis row is recreated until
BFD session with 'gw1' is not established.
This patch changes the test assertion approach and makes sure that 'gw1' is the
owner of the chassisresident port eventually.
Acked-by: Dumitru Ceara <dceara@redhat.com>
Tested-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Numan Siddique <numans@ovn.org>
---
tests/ovn.at | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/tests/ovn.at b/tests/ovn.at
index 3e429e347..5fc2de2d3 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -11033,12 +11033,26 @@ ovn-nbctl --wait=hv --timeout=3 sync
# doesn't have the same effect because "name" is conserved, and the
# Chassis entry is not replaced.
-> gw1/ovn-controller.log
-
gw2_chassis=$(ovn-sbctl --bare --columns=_uuid find Chassis name=gw2)
ovn-sbctl destroy Chassis $gw2_chassis
-OVS_WAIT_UNTIL([test 0 = `grep -c "Releasing lport" gw1/ovn-controller.log`])
+# Wait for the gw2_chassis row is recreated.
+OVS_WAIT_UNTIL([test 1 = `ovn-sbctl --bare --columns=_uuid find Chassis name=gw2 | wc -l`])
+
+gw1_chassis=$(ovn-sbctl --bare --columns=_uuid find Chassis name=gw1)
+gw2_chassis=$(ovn-sbctl --bare --columns=_uuid find Chassis name=gw2)
+
+# When gw2 chassis row is destroyed, it gets recreated. There
+# is a small window in which gw2 may claim the cr-outside port if
+# it has not established bfd tunnel with gw1.
+# So make sure that, cr-outside is claimed by gw1 finally.
+OVS_WAIT_WHILE(
+ [cr_outside_ch=`ovn-sbctl --bare --columns=chassis find Port_binding logical_port=cr-outside`
+ test $cr_outside_ch = $gw2_chassis])
+
+OVS_WAIT_UNTIL(
+ [cr_outside_ch=`ovn-sbctl --bare --columns=chassis find Port_binding logical_port=cr-outside`
+ test $cr_outside_ch = $gw1_chassis])
OVN_CLEANUP([gw1],[gw2],[hv1])
--
2.23.0