From: Numan Siddique <[email protected]> This patch fixes timing related failures in some test cases when run with -j option. It adds --wait=hv when calling ovn-nbctl and 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 <[email protected]> --- tests/ovn.at | 207 +++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 115 insertions(+), 92 deletions(-) diff --git a/tests/ovn.at b/tests/ovn.at index 8ee3bf0b5..8e558b179 100644 --- a/tests/ovn.at +++ b/tests/ovn.at @@ -7000,7 +7000,7 @@ rm -f 2.expected # Test IPv6 (AAAA records) using IPv4 packet. # Add back the DNS options for ls1-lp1. -ovn-nbctl set DNS $DNS1 records:vm1.ovn.org="10.0.0.4 aef0::4" +ovn-nbctl --wait=hv set DNS $DNS1 records:vm1.ovn.org="10.0.0.4 aef0::4" set_dns_params vm1_ipv6_only src_ip=`ip_to_hex 10 0 0 6` @@ -7184,22 +7184,22 @@ ovs-vsctl -- add-port br-int ext1-vif1 -- \ # for ARP resolution). OVN_POPULATE_ARP -ovn-nbctl create Logical_Router name=R1 +ovn-nbctl --wait=hv create Logical_Router name=R1 -ovn-nbctl ls-add foo -ovn-nbctl ls-add alice -ovn-nbctl ls-add outside +ovn-nbctl --wait=hv ls-add foo +ovn-nbctl --wait=hv ls-add alice +ovn-nbctl --wait=hv ls-add outside # Connect foo to R1 -ovn-nbctl lrp-add R1 foo 00:00:01:01:02:03 192.168.1.1/24 -ovn-nbctl lsp-add foo rp-foo -- set Logical_Switch_Port rp-foo \ +ovn-nbctl --wait=hv lrp-add R1 foo 00:00:01:01:02:03 192.168.1.1/24 +ovn-nbctl --wait=hv lsp-add foo rp-foo -- set Logical_Switch_Port rp-foo \ type=router options:router-port=foo \ -- lsp-set-addresses rp-foo router # Connect alice to R1 as distributed router gateway port on gw1 -ovn-nbctl lrp-add R1 alice 00:00:02:01:02:03 172.16.1.1/24 +ovn-nbctl --wait=hv lrp-add R1 alice 00:00:02:01:02:03 172.16.1.1/24 -ovn-nbctl \ +ovn-nbctl --wait=hv \ --id=@gc0 create Gateway_Chassis name=alice_gw1 \ chassis_name=gw1 \ priority=20 -- \ @@ -7208,29 +7208,29 @@ ovn-nbctl \ priority=10 -- \ set Logical_Router_Port alice 'gateway_chassis=[@gc0,@gc1]' -ovn-nbctl lsp-add alice rp-alice -- set Logical_Switch_Port rp-alice \ +ovn-nbctl --wait=hv lsp-add alice rp-alice -- set Logical_Switch_Port rp-alice \ type=router options:router-port=alice \ -- lsp-set-addresses rp-alice router # Create logical port foo1 in foo -ovn-nbctl lsp-add foo foo1 \ +ovn-nbctl --wait=hv lsp-add foo foo1 \ -- lsp-set-addresses foo1 "f0:00:00:01:02:03 192.168.1.2" # Create logical port outside1 in outside -ovn-nbctl lsp-add outside outside1 \ +ovn-nbctl --wait=hv lsp-add outside outside1 \ -- lsp-set-addresses outside1 "f0:00:00:01:02:04 172.16.1.3" # Create localnet port in alice -ovn-nbctl lsp-add alice ln-alice -ovn-nbctl lsp-set-addresses ln-alice unknown -ovn-nbctl lsp-set-type ln-alice localnet -ovn-nbctl lsp-set-options ln-alice network_name=phys +ovn-nbctl --wait=hv lsp-add alice ln-alice +ovn-nbctl --wait=hv lsp-set-addresses ln-alice unknown +ovn-nbctl --wait=hv lsp-set-type ln-alice localnet +ovn-nbctl --wait=hv lsp-set-options ln-alice network_name=phys # Create localnet port in outside -ovn-nbctl lsp-add outside ln-outside -ovn-nbctl lsp-set-addresses ln-outside unknown -ovn-nbctl lsp-set-type ln-outside localnet -ovn-nbctl lsp-set-options ln-outside network_name=phys +ovn-nbctl --wait=hv lsp-add outside ln-outside +ovn-nbctl --wait=hv lsp-set-addresses ln-outside unknown +ovn-nbctl --wait=hv lsp-set-type ln-outside localnet +ovn-nbctl --wait=hv lsp-set-options ln-outside network_name=phys # Create bridge-mappings on gw1, gw2 and ext1, hv1 doesn't need # mapping to the external network, is the one generating packets @@ -7286,6 +7286,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" @@ -7367,40 +7372,40 @@ ovs-vsctl -- add-port br-int ext1-vif1 -- \ # for ARP resolution). OVN_POPULATE_ARP -ovn-nbctl create Logical_Router name=R0 -ovn-nbctl create Logical_Router name=R1 +ovn-nbctl --wait=hv create Logical_Router name=R0 +ovn-nbctl --wait=hv create Logical_Router name=R1 -ovn-nbctl ls-add foo -ovn-nbctl ls-add join -ovn-nbctl ls-add alice -ovn-nbctl ls-add outside +ovn-nbctl --wait=hv ls-add foo +ovn-nbctl --wait=hv ls-add join +ovn-nbctl --wait=hv ls-add alice +ovn-nbctl --wait=hv ls-add outside #Connect foo to R0 -ovn-nbctl lrp-add R0 R0-foo 00:00:01:01:02:03 192.168.1.1/24 -ovn-nbctl lsp-add foo foo-R0 -- set Logical_Switch_Port foo-R0 \ +ovn-nbctl --wait=hv lrp-add R0 R0-foo 00:00:01:01:02:03 192.168.1.1/24 +ovn-nbctl --wait=hv lsp-add foo foo-R0 -- set Logical_Switch_Port foo-R0 \ type=router options:router-port=R0-foo \ -- lsp-set-addresses foo-R0 router #Connect R0 to join -ovn-nbctl lrp-add R0 R0-join 00:00:0d:01:02:03 100.60.1.1/24 -ovn-nbctl lsp-add join join-R0 -- set Logical_Switch_Port join-R0 \ +ovn-nbctl --wait=hv lrp-add R0 R0-join 00:00:0d:01:02:03 100.60.1.1/24 +ovn-nbctl --wait=hv lsp-add join join-R0 -- set Logical_Switch_Port join-R0 \ type=router options:router-port=R0-join \ -- lsp-set-addresses join-R0 router #Connect join to R1 -ovn-nbctl lrp-add R1 R1-join 00:00:0e:01:02:03 100.60.1.2/24 -ovn-nbctl lsp-add join join-R1 -- set Logical_Switch_Port join-R1 \ +ovn-nbctl --wait=hv lrp-add R1 R1-join 00:00:0e:01:02:03 100.60.1.2/24 +ovn-nbctl --wait=hv lsp-add join join-R1 -- set Logical_Switch_Port join-R1 \ type=router options:router-port=R1-join \ -- lsp-set-addresses join-R1 router #add route rules -ovn-nbctl lr-route-add R0 0.0.0.0/0 100.60.1.2 -ovn-nbctl lr-route-add R1 192.168.0.0/16 100.60.1.1 +ovn-nbctl --wait=hv lr-route-add R0 0.0.0.0/0 100.60.1.2 +ovn-nbctl --wait=hv lr-route-add R1 192.168.0.0/16 100.60.1.1 # Connect alice to R1 as distributed router gateway port on gw1 -ovn-nbctl lrp-add R1 alice 00:00:02:01:02:03 172.16.1.1/24 +ovn-nbctl --wait=hv lrp-add R1 alice 00:00:02:01:02:03 172.16.1.1/24 -ovn-nbctl \ +ovn-nbctl --wait=hv \ --id=@gc0 create Gateway_Chassis name=alice_gw1 \ chassis_name=gw1 \ priority=20 -- \ @@ -7409,29 +7414,29 @@ ovn-nbctl \ priority=10 -- \ set Logical_Router_Port alice 'gateway_chassis=[@gc0,@gc1]' -ovn-nbctl lsp-add alice rp-alice -- set Logical_Switch_Port rp-alice \ +ovn-nbctl --wait=hv lsp-add alice rp-alice -- set Logical_Switch_Port rp-alice \ type=router options:router-port=alice \ -- lsp-set-addresses rp-alice router # Create logical port foo1 in foo -ovn-nbctl lsp-add foo foo1 \ +ovn-nbctl --wait=hv lsp-add foo foo1 \ -- lsp-set-addresses foo1 "f0:00:00:01:02:03 192.168.1.2" # Create logical port outside1 in outside -ovn-nbctl lsp-add outside outside1 \ +ovn-nbctl --wait=hv lsp-add outside outside1 \ -- lsp-set-addresses outside1 "f0:00:00:01:02:04 172.16.1.3" # Create localnet port in alice -ovn-nbctl lsp-add alice ln-alice -ovn-nbctl lsp-set-addresses ln-alice unknown -ovn-nbctl lsp-set-type ln-alice localnet -ovn-nbctl lsp-set-options ln-alice network_name=phys +ovn-nbctl --wait=hv lsp-add alice ln-alice +ovn-nbctl --wait=hv lsp-set-addresses ln-alice unknown +ovn-nbctl --wait=hv lsp-set-type ln-alice localnet +ovn-nbctl --wait=hv lsp-set-options ln-alice network_name=phys # Create localnet port in outside -ovn-nbctl lsp-add outside ln-outside -ovn-nbctl lsp-set-addresses ln-outside unknown -ovn-nbctl lsp-set-type ln-outside localnet -ovn-nbctl lsp-set-options ln-outside network_name=phys +ovn-nbctl --wait=hv lsp-add outside ln-outside +ovn-nbctl --wait=hv lsp-set-addresses ln-outside unknown +ovn-nbctl --wait=hv lsp-set-type ln-outside localnet +ovn-nbctl --wait=hv lsp-set-options ln-outside network_name=phys # Create bridge-mappings on gw1, gw2 and ext1, hv1 doesn't need # mapping to the external network, is the one generating packets @@ -7487,6 +7492,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" @@ -7587,44 +7597,44 @@ ovs-vsctl -- add-port br-int hv3-vif1 -- \ # for ARP resolution). OVN_POPULATE_ARP -ovn-nbctl create Logical_Router name=R1 +ovn-nbctl --wait=hv create Logical_Router name=R1 -ovn-nbctl ls-add foo -ovn-nbctl ls-add alice -ovn-nbctl ls-add outside +ovn-nbctl --wait=hv ls-add foo +ovn-nbctl --wait=hv ls-add alice +ovn-nbctl --wait=hv ls-add outside # Connect foo to R1 -ovn-nbctl lrp-add R1 foo 00:00:01:01:02:03 192.168.1.1/24 -ovn-nbctl lsp-add foo rp-foo -- set Logical_Switch_Port rp-foo \ +ovn-nbctl --wait=hv lrp-add R1 foo 00:00:01:01:02:03 192.168.1.1/24 +ovn-nbctl --wait=hv lsp-add foo rp-foo -- set Logical_Switch_Port rp-foo \ type=router options:router-port=foo \ -- lsp-set-addresses rp-foo router # Connect alice to R1 as distributed router gateway port on hv2 -ovn-nbctl lrp-add R1 alice 00:00:02:01:02:03 172.16.1.1/24 \ +ovn-nbctl --wait=hv lrp-add R1 alice 00:00:02:01:02:03 172.16.1.1/24 \ -- set Logical_Router_Port alice options:redirect-chassis="hv2" -ovn-nbctl lsp-add alice rp-alice -- set Logical_Switch_Port rp-alice \ +ovn-nbctl --wait=hv lsp-add alice rp-alice -- set Logical_Switch_Port rp-alice \ type=router options:router-port=alice \ -- lsp-set-addresses rp-alice router # Create logical port foo1 in foo -ovn-nbctl lsp-add foo foo1 \ +ovn-nbctl --wait=hv lsp-add foo foo1 \ -- lsp-set-addresses foo1 "f0:00:00:01:02:03 192.168.1.2" # Create logical port outside1 in outside -ovn-nbctl lsp-add outside outside1 \ +ovn-nbctl --wait=hv lsp-add outside outside1 \ -- lsp-set-addresses outside1 "f0:00:00:01:02:04 172.16.1.3" # Create localnet port in alice -ovn-nbctl lsp-add alice ln-alice -ovn-nbctl lsp-set-addresses ln-alice unknown -ovn-nbctl lsp-set-type ln-alice localnet -ovn-nbctl lsp-set-options ln-alice network_name=phys +ovn-nbctl --wait=hv lsp-add alice ln-alice +ovn-nbctl --wait=hv lsp-set-addresses ln-alice unknown +ovn-nbctl --wait=hv lsp-set-type ln-alice localnet +ovn-nbctl --wait=hv lsp-set-options ln-alice network_name=phys # Create localnet port in outside -ovn-nbctl lsp-add outside ln-outside -ovn-nbctl lsp-set-addresses ln-outside unknown -ovn-nbctl lsp-set-type ln-outside localnet -ovn-nbctl lsp-set-options ln-outside network_name=phys +ovn-nbctl --wait=hv lsp-add outside ln-outside +ovn-nbctl --wait=hv lsp-set-addresses ln-outside unknown +ovn-nbctl --wait=hv lsp-set-type ln-outside localnet +ovn-nbctl --wait=hv lsp-set-options ln-outside network_name=phys # Create bridge-mappings on hv1 and hv3, leaving hv2 for later as hv1 ovs-vsctl set open . external-ids:ovn-bridge-mappings=phys:br-phys @@ -8987,34 +8997,34 @@ AT_KEYWORDS([ovn-nd_ns for unknown mac]) AT_SKIP_IF([test $HAVE_PYTHON = no]) ovn_start -ovn-nbctl ls-add sw0_ip6 -ovn-nbctl lsp-add sw0_ip6 sw0_ip6-port1 -ovn-nbctl lsp-set-addresses sw0_ip6-port1 \ +ovn-nbctl --wait=hv ls-add sw0_ip6 +ovn-nbctl --wait=hv lsp-add sw0_ip6 sw0_ip6-port1 +ovn-nbctl --wait=hv lsp-set-addresses sw0_ip6-port1 \ "50:64:00:00:00:02 aef0::5264:00ff:fe00:0002" -ovn-nbctl lsp-set-port-security sw0_ip6-port1 \ +ovn-nbctl --wait=hv lsp-set-port-security sw0_ip6-port1 \ "50:64:00:00:00:02 aef0::5264:00ff:fe00:0002" -ovn-nbctl lr-add lr0_ip6 -ovn-nbctl lrp-add lr0_ip6 lrp0_ip6 00:00:00:00:af:01 aef0:0:0:0:0:0:0:0/64 -ovn-nbctl lsp-add sw0_ip6 lrp0_ip6-attachment -ovn-nbctl lsp-set-type lrp0_ip6-attachment router -ovn-nbctl lsp-set-addresses lrp0_ip6-attachment 00:00:00:00:af:01 -ovn-nbctl lsp-set-options lrp0_ip6-attachment router-port=lrp0_ip6 -ovn-nbctl set logical_router_port lrp0_ip6 ipv6_ra_configs:address_mode=slaac - -ovn-nbctl ls-add public -ovn-nbctl lsp-add public ln-public -ovn-nbctl lsp-set-addresses ln-public unknown -ovn-nbctl lsp-set-type ln-public localnet -ovn-nbctl lsp-set-options ln-public network_name=phys - -ovn-nbctl lrp-add lr0_ip6 ip6_public 00:00:02:01:02:04 \ +ovn-nbctl --wait=hv lr-add lr0_ip6 +ovn-nbctl --wait=hv lrp-add lr0_ip6 lrp0_ip6 00:00:00:00:af:01 aef0:0:0:0:0:0:0:0/64 +ovn-nbctl --wait=hv lsp-add sw0_ip6 lrp0_ip6-attachment +ovn-nbctl --wait=hv lsp-set-type lrp0_ip6-attachment router +ovn-nbctl --wait=hv lsp-set-addresses lrp0_ip6-attachment 00:00:00:00:af:01 +ovn-nbctl --wait=hv lsp-set-options lrp0_ip6-attachment router-port=lrp0_ip6 +ovn-nbctl --wait=hv set logical_router_port lrp0_ip6 ipv6_ra_configs:address_mode=slaac + +ovn-nbctl --wait=hv ls-add public +ovn-nbctl --wait=hv lsp-add public ln-public +ovn-nbctl --wait=hv lsp-set-addresses ln-public unknown +ovn-nbctl --wait=hv lsp-set-type ln-public localnet +ovn-nbctl --wait=hv lsp-set-options ln-public network_name=phys + +ovn-nbctl --wait=hv lrp-add lr0_ip6 ip6_public 00:00:02:01:02:04 \ 2001:db8:1:0:200:02ff:fe01:0204/64 \ -- set Logical_Router_port ip6_public options:redirect-chassis="hv1" -ovn-nbctl lsp-add public rp-ip6_public -- set Logical_Switch_Port \ +ovn-nbctl --wait=hv lsp-add public rp-ip6_public -- set Logical_Switch_Port \ rp-ip6_public type=router options:router-port=ip6_public \ -- lsp-set-addresses rp-ip6_public router @@ -9033,7 +9043,12 @@ 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,\}$//' @@ -9066,10 +9081,14 @@ test_ipv6() { src_mac=506400000002 dst_mac=00000000af01 src_ip=aef0000000000000526400fffe000002 + # Send an IPv6 packet. Generated IPv6 Neighbor solicitation packet # 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 | \ @@ -9226,15 +9245,19 @@ 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 + +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]) + # Allow time for ovn-northd and ovn-controller to catch up sleep 1 -- 2.14.3 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
