[ovs-dev] [PATCH v2] Fix possible timing issues in OVN test cases
nusiddiq at redhat.com
nusiddiq at redhat.com
Mon Mar 12 06:50:57 UTC 2018
From: Numan Siddique <nusiddiq at redhat.com>
This patch fixes timing related failures in some test cases when run with
-j option. It uses OVS_WAIT_* whereever appropriate. It also fixes the
test case "ovn -- IPv6 periodic RA" wherein the logical port - sw-p1 is
bound on 2 chassis and this causes both the chassis to fight for the port.
Signed-off-by: Numan Siddique <nusiddiq at redhat.com>
---
tests/ovn.at | 38 +++++++++++++++++++++++++++-----------
1 file changed, 27 insertions(+), 11 deletions(-)
diff --git a/tests/ovn.at b/tests/ovn.at
index 5f985f345..eeead056d 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -7297,6 +7297,11 @@ test_ip_packet()
as ext1 ovs-appctl netdev-dummy/receive ext1-vif1 $arp_reply
+ OVS_WAIT_UNTIL([
+ test `as $active_gw ovs-ofctl dump-flows br-int | grep table=66 | \
+grep actions=mod_dl_dst:f0:00:00:01:02:04 | wc -l` -eq 1
+ ])
+
# Packet to Expect at ext1 chassis, outside1 port
src_mac="000002010203"
dst_mac="f00000010204"
@@ -7498,6 +7503,11 @@ test_ip_packet()
as ext1 ovs-appctl netdev-dummy/receive ext1-vif1 $arp_reply
+ OVS_WAIT_UNTIL([
+ test `as $active_gw ovs-ofctl dump-flows br-int | grep table=66 | \
+grep actions=mod_dl_dst:f0:00:00:01:02:04 | wc -l` -eq 1
+ ])
+
# Packet to Expect at ext1 chassis, outside1 port
src_mac="000002010203"
dst_mac="f00000010204"
@@ -9042,9 +9052,12 @@ ovs-vsctl -- add-port br-int hv1-vif1 -- \
ofport-request=1
ovs-vsctl set open . external-ids:ovn-bridge-mappings=phys:br-phys
-# Allow some time for ovn-northd and ovn-controller to catch up.
-# XXX This should be more systematic.
-sleep 1
+OVS_WAIT_UNTIL([test x`ovn-nbctl lsp-get-up sw0_ip6-port1` = xup])
+cr_uuid=`ovn-sbctl find port_binding logical_port=cr-ip6_public | grep _uuid | cut -f2 -d ":"`
+
+# There is only one chassis.
+chassis_uuid=`ovn-sbctl list chassis | grep _uuid | cut -f2 -d ":"`
+OVS_WAIT_UNTIL([test $chassis_uuid = `ovn-sbctl get port_binding $cr_uuid chassis`])
trim_zeros() {
sed 's/\(00\)\{1,\}$//'
@@ -9081,6 +9094,9 @@ src_ip=aef0000000000000526400fffe000002
# should be received by the ports attached to br-phys.
test_ipv6 1 $src_mac $dst_mac $src_ip 2
+OVS_WAIT_WHILE([test 24 = $(wc -c hv1/br-phys_n1-tx.pcap | cut -d " " -f1)])
+OVS_WAIT_WHILE([test 24 = $(wc -c hv1/br-phys-tx.pcap | cut -d " " -f1)])
+
$PYTHON "$top_srcdir/utilities/ovs-pcap.in" hv1/br-phys_n1-tx.pcap | \
trim_zeros > 1.packets
$PYTHON "$top_srcdir/utilities/ovs-pcap.in" hv1/br-phys-tx.pcap | \
@@ -9237,17 +9253,17 @@ ovn-nbctl set Logical_Router_Port ro-sw ipv6_ra_configs:address_mode=slaac
ovn-nbctl set Logical_Router_Port ro-sw ipv6_ra_configs:max_interval=4
ovn-nbctl set Logical_Router_Port ro-sw ipv6_ra_configs:min_interval=3
-for i in hv1 hv2 ; do
- as $i
- ovs-vsctl -- add-port br-int $i-vif1 -- \
- set interface $i-vif1 external-ids:iface-id=sw-p1 \
- options:tx_pcap=$i/vif1-tx.pcap \
- options:rxq_pcap=$i/vif1-rx.pcap \
+for i in 1 2 ; do
+ as hv$i
+ ovs-vsctl -- add-port br-int hv$i-vif1 -- \
+ set interface hv$i-vif1 external-ids:iface-id=sw-p$i \
+ options:tx_pcap=hv$i/vif1-tx.pcap \
+ options:rxq_pcap=hv$i/vif1-rx.pcap \
ofport-request=1
done
-# Allow time for ovn-northd and ovn-controller to catch up
-sleep 1
+OVS_WAIT_UNTIL([test x`ovn-nbctl lsp-get-up sw-p1` = xup])
+OVS_WAIT_UNTIL([test x`ovn-nbctl lsp-get-up sw-p2` = xup])
reset_pcap_file() {
local iface=$1
--
2.14.3
More information about the dev
mailing list