[ovs-dev] [PATCH] ovn.at: fix occasional failure - options:requested-chassis for logical port

Han Zhou zhouhan at gmail.com
Tue May 8 16:42:07 UTC 2018


There are two problems in this test case that lead to occasional
failures.

Firstly, hv1_uuid or hv2_uuid could be empty because they
may be assigned before SB is updated, so adding ovn-sbctl wait-until
fixes it.

Secondly, when port-binding chassis is queried from SB,
it could be in the transient state - updated by the releasing chassis
to empty, but not yet updated by the requested chassis to the new
uuid. Although it is retried by OVS_WAIT_UNTIL, an empty string leads
to syntax error of the "test ... = ..." command and errors out immediately
in that case. So adding prefix "x" to both side of the test command
fixes it.

Signed-off-by: Han Zhou <hzhou8 at ebay.com>
---
 tests/ovn.at | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/tests/ovn.at b/tests/ovn.at
index 4a53165..1a58da2 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -9199,6 +9199,8 @@ ovn-nbctl lsp-set-options lsp0 requested-chassis=hv1
 ovn-nbctl --wait=hv --timeout=3 sync
 
 # Retrieve hv1 and hv2 chassis UUIDs from southbound database
+ovn-sbctl wait-until chassis hv1
+ovn-sbctl wait-until chassis hv2
 hv1_uuid=$(ovn-sbctl --bare --columns _uuid find chassis name=hv1)
 hv2_uuid=$(ovn-sbctl --bare --columns _uuid find chassis name=hv2)
 
@@ -9220,7 +9222,7 @@ as hv1
 ovs-vsctl set interface hv1-vif0 external-ids:iface-id=lsp0
 
 OVS_WAIT_UNTIL([test 1 = $(grep -c "Claiming lport lsp0" hv1/ovn-controller.log)])
-AT_CHECK([test $(ovn-sbctl --bare --columns chassis find port_binding logical_port=lsp0) = "$hv1_uuid"], [0], [])
+AT_CHECK([test x$(ovn-sbctl --bare --columns chassis find port_binding logical_port=lsp0) = x"$hv1_uuid"], [0], [])
 
 # (4) Chassis hv1 should add flows in OFTABLE_PHY_TO_LOG and OFTABLE_LOG_TO_PHY tables.
 as hv1 ovs-ofctl dump-flows br-int
@@ -9233,7 +9235,7 @@ echo "verifying that lsp0 binding moves when requested-chassis is changed"
 
 ovn-nbctl lsp-set-options lsp0 requested-chassis=hv2
 OVS_WAIT_UNTIL([test 1 = $(grep -c "Releasing lport lsp0 from this chassis" hv1/ovn-controller.log)])
-OVS_WAIT_UNTIL([test $(ovn-sbctl --bare --columns chassis find port_binding logical_port=lsp0) = "$hv2_uuid"])
+OVS_WAIT_UNTIL([test x$(ovn-sbctl --bare --columns chassis find port_binding logical_port=lsp0) = x"$hv2_uuid"])
 
 # (6) Chassis hv2 should add flows and hv1 should not.
 AT_CHECK([as hv2 ovs-ofctl dump-flows br-int table=0 | grep in_port=1], [0], [ignore])
-- 
2.1.0



More information about the dev mailing list