The `tunnel_push_pop - action` test case may fail due to a race condition between the revalidator modifying flows and dummy `receive` action.
To fix the race for this test case and other test cases in the same file, this patch will call revalidator/wait every time a flow is modified. Signed-off-by: Ihar Hrachyshka <[email protected]> --- tests/tunnel-push-pop.at | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/tunnel-push-pop.at b/tests/tunnel-push-pop.at index 64c41460b..b6fac1426 100644 --- a/tests/tunnel-push-pop.at +++ b/tests/tunnel-push-pop.at @@ -42,6 +42,7 @@ Cached: 2001:ca00::/24 dev br0 SRC 2001:cafe::88 local ]) AT_CHECK([ovs-ofctl add-flow br0 action=normal]) +AT_CHECK([ovs-appctl revalidator/wait]) dnl Check ARP request AT_CHECK([ovs-vsctl -- set Interface p0 options:pcap=p0.pcap]) @@ -81,6 +82,7 @@ erspan_sys (3) ref_cnt=4 dnl Check ERSPAN v1 tunnel push AT_CHECK([ovs-vsctl -- set Interface br0 options:pcap=br0.pcap]) AT_CHECK([ovs-ofctl add-flow int-br action=2]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=f8:bc:12:44:34:b6,dst=aa:55:aa:55:00:00),eth_type(0x0800),ipv4(src=1.1.3.88,dst=1.1.3.112,proto=47,tos=0,ttl=64,frag=no)'], [0], [stdout]) AT_CHECK([tail -1 stdout], [0], [Datapath actions: tnl_push(tnl_port(3),header(size=50,type=107,eth(dst=f8:bc:12:44:34:b6,src=aa:55:aa:55:00:00,dl_type=0x0800),ipv4(src=1.1.2.88,dst=1.1.2.92,proto=47,tos=0,ttl=64,frag=0x4000),erspan(ver=1,sid=0x7b,idx=0x3)),out_port(100)),1 @@ -151,6 +153,7 @@ AT_CHECK([tail -1 stdout], [0], ]) AT_CHECK([ovs-ofctl del-flows int-br]) +AT_CHECK([ovs-appctl revalidator/wait]) dnl Check decapsulation of ERSPAN v1 dnl Hex dump: GRE:(100088be) @@ -252,6 +255,7 @@ User: 1.1.2.0/24 MARK 1234 dev br0 SRC 1.1.2.88 ]) AT_CHECK([ovs-ofctl add-flow br0 action=normal]) +AT_CHECK([ovs-appctl revalidator/wait]) dnl Check ARP request AT_CHECK([ovs-vsctl -- set Interface p0 options:pcap=p0.pcap]) @@ -450,6 +454,7 @@ AT_CHECK([tail -1 stdout], [0], dnl Check VXLAN tunnel push AT_CHECK([ovs-ofctl add-flow int-br action=2]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=f8:bc:12:44:34:b6,dst=aa:55:aa:55:00:00),eth_type(0x0800),ipv4(src=1.1.3.88,dst=1.1.3.112,proto=47,tos=0,ttl=64,frag=no)'], [0], [stdout]) AT_CHECK([tail -1 stdout], [0], [Datapath actions: tnl_push(tnl_port(4789),header(size=50,type=4,eth(dst=f8:bc:12:44:34:b6,src=aa:55:aa:55:00:00,dl_type=0x0800),ipv4(src=1.1.2.88,dst=1.1.2.92,proto=17,tos=0,ttl=64,frag=0x4000),udp(src=0,dst=4789,csum=0x0),vxlan(flags=0x8000000,vni=0x7b)),out_port(100)),1 @@ -457,6 +462,7 @@ AT_CHECK([tail -1 stdout], [0], dnl Check VXLAN GPE tunnel push AT_CHECK([ovs-ofctl add-flow int-br action=8]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=f8:bc:12:44:34:b6,dst=aa:55:aa:55:00:01),eth_type(0x0800),ipv4(src=1.1.3.88,dst=1.1.3.112,proto=47,tos=0,ttl=64,frag=no)'], [0], [stdout]) AT_CHECK([tail -1 stdout], [0], [Datapath actions: tnl_push(tnl_port(4789),header(size=50,type=4,eth(dst=f8:bc:12:44:34:b6,src=aa:55:aa:55:00:00,dl_type=0x0800),ipv4(src=1.1.2.88,dst=1.1.2.92,proto=17,tos=0,ttl=64,frag=0x4000),udp(src=0,dst=4789,csum=0x0),vxlan(flags=0xc000003,vni=0x159)),out_port(100)),1 @@ -464,6 +470,7 @@ AT_CHECK([tail -1 stdout], [0], dnl Check VXLAN tunnel push set tunnel id by flow and checksum AT_CHECK([ovs-ofctl add-flow int-br "actions=set_tunnel:124,4"]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=f8:bc:12:44:34:b6,dst=aa:55:aa:55:00:00),eth_type(0x0800),ipv4(src=1.1.3.88,dst=1.1.3.112,proto=47,tos=0,ttl=64,frag=no)'], [0], [stdout]) AT_CHECK([tail -1 stdout], [0], [Datapath actions: tnl_push(tnl_port(4789),header(size=50,type=4,eth(dst=f8:bc:12:44:34:b7,src=aa:55:aa:55:00:00,dl_type=0x0800),ipv4(src=1.1.2.88,dst=1.1.2.93,proto=17,tos=0,ttl=64,frag=0x4000),udp(src=0,dst=4789,csum=0xffff),vxlan(flags=0x8000000,vni=0x7c)),out_port(100)),1 @@ -471,6 +478,7 @@ AT_CHECK([tail -1 stdout], [0], dnl Check GRE tunnel push AT_CHECK([ovs-ofctl add-flow int-br action=3]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=f8:bc:12:44:34:b6,dst=aa:55:aa:55:00:00),eth_type(0x0800),ipv4(src=1.1.3.88,dst=1.1.3.112,proto=47,tos=0,ttl=64,frag=no)'], [0], [stdout]) AT_CHECK([tail -1 stdout], [0], [Datapath actions: tnl_push(tnl_port(3),header(size=42,type=3,eth(dst=f8:bc:12:44:34:b6,src=aa:55:aa:55:00:00,dl_type=0x0800),ipv4(src=1.1.2.88,dst=1.1.2.92,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x2000,proto=0x6558),key=0x1c8)),out_port(100)),1 @@ -478,6 +486,7 @@ AT_CHECK([tail -1 stdout], [0], dnl Check L3GRE tunnel push AT_CHECK([ovs-ofctl add-flow int-br action=7]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=f8:bc:12:44:34:b6,dst=aa:55:aa:55:00:01),eth_type(0x0800),ipv4(src=1.1.3.88,dst=1.1.3.112,proto=47,tos=0,ttl=64,frag=no)'], [0], [stdout]) AT_CHECK([tail -1 stdout], [0], [Datapath actions: pop_eth,tnl_push(tnl_port(3),header(size=42,type=3,eth(dst=f8:bc:12:44:34:b6,src=aa:55:aa:55:00:00,dl_type=0x0800),ipv4(src=1.1.2.88,dst=1.1.2.92,proto=47,tos=0,ttl=64,frag=0x4000),gre((flags=0x2000,proto=0x800),key=0x1c8)),out_port(100)),1 @@ -485,6 +494,7 @@ AT_CHECK([tail -1 stdout], [0], dnl Check Geneve tunnel push AT_CHECK([ovs-ofctl add-flow int-br "actions=set_field:1.1.2.92->tun_dst,5"]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=f8:bc:12:44:34:b6,dst=aa:55:aa:55:00:00),eth_type(0x0800),ipv4(src=1.1.3.88,dst=1.1.3.112,proto=47,tos=0,ttl=64,frag=no)'], [0], [stdout]) AT_CHECK([tail -1 stdout], [0], [Datapath actions: tnl_push(tnl_port(6081),header(size=50,type=5,eth(dst=f8:bc:12:44:34:b6,src=aa:55:aa:55:00:00,dl_type=0x0800),ipv4(src=1.1.2.88,dst=1.1.2.92,proto=17,tos=0,ttl=64,frag=0x4000),udp(src=0,dst=6081,csum=0x0),geneve(vni=0x7b)),out_port(100)),1 @@ -492,6 +502,7 @@ AT_CHECK([tail -1 stdout], [0], dnl Check Geneve tunnel push with pkt-mark AT_CHECK([ovs-ofctl add-flow int-br "actions=set_tunnel:234,6"]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=f8:bc:12:44:34:b6,dst=aa:55:aa:55:00:00),eth_type(0x0800),ipv4(src=1.1.3.88,dst=1.1.3.112,proto=47,tos=0,ttl=64,frag=no)'], [0], [stdout]) AT_CHECK([tail -1 stdout], [0], [Datapath actions: set(skb_mark(0x4d2)),tnl_push(tnl_port(6081),header(size=50,type=5,eth(dst=f8:bc:12:44:34:b7,src=aa:55:aa:55:00:00,dl_type=0x0800),ipv4(src=1.1.2.88,dst=1.1.2.93,proto=17,tos=0,ttl=64,frag=0x4000),udp(src=0,dst=6081,csum=0x0),geneve(vni=0xea)),out_port(100)),1 @@ -500,6 +511,7 @@ AT_CHECK([tail -1 stdout], [0], dnl Check Geneve tunnel push with options AT_CHECK([ovs-ofctl add-tlv-map int-br "{class=0xffff,type=0x80,len=4}->tun_metadata0"]) AT_CHECK([ovs-ofctl add-flow int-br "actions=set_field:1.1.2.92->tun_dst,set_field:0xa->tun_metadata0,5"]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=f8:bc:12:44:34:b6,dst=aa:55:aa:55:00:00),eth_type(0x0800),ipv4(src=1.1.3.88,dst=1.1.3.112,proto=47,tos=0,ttl=64,frag=no)'], [0], [stdout]) AT_CHECK([tail -1 stdout], [0], [Datapath actions: tnl_push(tnl_port(6081),header(size=58,type=5,eth(dst=f8:bc:12:44:34:b6,src=aa:55:aa:55:00:00,dl_type=0x0800),ipv4(src=1.1.2.88,dst=1.1.2.92,proto=17,tos=0,ttl=64,frag=0x4000),udp(src=0,dst=6081,csum=0x0),geneve(crit,vni=0x7b,options({class=0xffff,type=0x80,len=4,0xa}))),out_port(100)),1 @@ -507,12 +519,14 @@ AT_CHECK([tail -1 stdout], [0], dnl Check GTP-U tunnel push AT_CHECK([ovs-ofctl add-flow int-br "actions=9"]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=f8:bc:12:44:34:b6,dst=aa:55:aa:55:00:00),eth_type(0x0800),ipv4(src=1.1.3.88,dst=1.1.3.112,proto=47,tos=0,ttl=64,frag=no)'], [0], [stdout]) AT_CHECK([tail -1 stdout], [0], [Datapath actions: pop_eth,tnl_push(tnl_port(2152),header(size=50,type=110,eth(dst=f8:bc:12:44:34:b6,src=aa:55:aa:55:00:00,dl_type=0x0800),ipv4(src=1.1.2.88,dst=1.1.2.92,proto=17,tos=0,ttl=64,frag=0x4000),udp(src=0,dst=2152,csum=0x0),gtpu(flags=0x30,msgtype=255,teid=0x7b)),out_port(100)),1 ]) AT_CHECK([ovs-ofctl del-flows int-br]) +AT_CHECK([ovs-appctl revalidator/wait]) dnl Check decapsulation of VXLAN packet AT_CHECK([ovs-appctl netdev-dummy/receive p0 'aa55aa550000001b213cab6408004500004e00010000401173e90101025c0101025812b512b5003a00000800000000007b00fe71d883724fbeb6f4e1494a08004500001c0001000040013ede1e0000011e0000020000ffff00000000']) @@ -646,6 +660,7 @@ AT_CHECK([ovs-ofctl dump-ports int-br | grep 'port [[37]]' | sort], [0], [dnl dnl Send out packets received from L3GRE tunnel back to L3GRE tunnel AT_CHECK([ovs-ofctl del-flows int-br]) AT_CHECK([ovs-ofctl add-flow int-br "in_port=7,actions=set_field:3->in_port,7"]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-vsctl -- set Interface br0 options:pcap=br0.pcap]) AT_CHECK([ovs-appctl netdev-dummy/receive p0 'aa55aa550000001b213cab6408004500007079464000402fba630101025c0101025820000800000001c845000054ba200000400184861e0000011e00000200004227e75400030af3195500000000f265010000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637']) @@ -671,6 +686,7 @@ AT_CHECK([ovs-ofctl monitor int-br 65534 --detach --no-chdir --pidfile 2> ofctl_ AT_CHECK([ovs-ofctl del-flows int-br]) AT_CHECK([ovs-ofctl add-flow int-br "tun_metadata0=0xa/0xf,actions=5,controller"]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl netdev-dummy/receive p0 'aa55aa550000001b213cab64080045000096794640004011ba5b0101025c01010258308817c1008200000400655800007b00ffff80010000000affff00010000000bfe71d883724fbeb6f4e1494a080045000054ba200000400184861e0000011e00000200004227e75400030af3195500000000f265010000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637']) OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 2]) @@ -696,6 +712,7 @@ ovs-appctl time/warp 1000 dnl Check VXLAN tunnel push AT_CHECK([ovs-ofctl add-flow int-br action=2]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=36:b1:ee:7c:01:01,dst=36:b1:ee:7c:01:02),eth_type(0x0800),ipv4(src=1.1.3.88,dst=1.1.3.112,proto=47,tos=0,ttl=64,frag=no)'], [0], [stdout]) AT_CHECK([tail -1 stdout], [0], [Datapath actions: tnl_push(tnl_port(4789),header(size=50,type=4,eth(dst=f8:bc:12:44:ca:fe,src=aa:55:aa:55:00:00,dl_type=0x0800),ipv4(src=1.1.2.88,dst=1.1.2.92,proto=17,tos=0,ttl=64,frag=0x4000),udp(src=0,dst=4789,csum=0x0),vxlan(flags=0x8000000,vni=0x7b)),out_port(100)),1 @@ -783,6 +800,7 @@ Cached: 1.1.2.0/24 dev br0 SRC 1.1.2.88 local ]) AT_CHECK([ovs-ofctl add-flow br0 action=normal]) +AT_CHECK([ovs-appctl revalidator/wait]) dnl This ARP reply from p0 has two effects: dnl 1. The ARP cache will learn that 1.1.2.92 is at f8:bc:12:44:34:b6. @@ -793,6 +811,7 @@ AT_CHECK([ovs-vsctl -- set Interface p0 options:tx_pcap=p0.pcap]) dnl Output to tunnel from a int-br internal port AT_CHECK([ovs-ofctl add-flow int-br "in_port=LOCAL,actions=output:2"]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl netdev-dummy/receive int-br '50540000000a5054000000091234']) OVS_WAIT_UNTIL([test `ovs-pcap p0.pcap | grep 50540000000a5054000000091234 | wc -l` -ge 1]) @@ -823,6 +842,7 @@ AT_CHECK([ovs-appctl ovs/route/show | grep Cached], [0], [dnl Cached: 1.1.2.0/24 dev br0 SRC 1.1.2.88 local ]) AT_CHECK([ovs-ofctl add-flow br0 action=normal]) +AT_CHECK([ovs-appctl revalidator/wait]) dnl This ARP reply from p0 has two effects: dnl 1. The ARP cache will learn that 1.1.2.92 is at f8:bc:12:44:34:b6. @@ -844,6 +864,7 @@ encap=f8bc124434b6aa55aa5500000800450000320000400040113406010102580101025c....17 dnl Output to tunnel from a int-br internal port. dnl Checking that the packet arrived and it was correctly encapsulated. AT_CHECK([ovs-ofctl add-flow int-br "in_port=LOCAL,actions=debug_slow,output:2"]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl netdev-dummy/receive int-br "${packet}4"]) OVS_WAIT_UNTIL([test `ovs-pcap p0.pcap | grep -E "${encap}${packet}4" | wc -l` -ge 1]) dnl Sending again to exercise the non-miss upcall path. @@ -898,6 +919,7 @@ Cached: 2.2.2.0/24 dev br0 SRC 2.2.2.88 local ]) AT_CHECK([ovs-ofctl add-flow br0 action=normal]) AT_CHECK([ovs-ofctl add-flow int-br action=normal]) +AT_CHECK([ovs-appctl revalidator/wait]) dnl This ARP reply from p0 has two effects: dnl 1. The ARP cache will learn that 1.1.2.92 is at f8:bc:12:44:34:b6. @@ -979,6 +1001,7 @@ Cached: 1.1.2.0/24 dev br0 SRC 1.1.2.88 local ]) AT_CHECK([ovs-ofctl add-flow br0 'arp,priority=1,action=normal']) +AT_CHECK([ovs-appctl revalidator/wait]) dnl Use arp reply to achieve tunnel next hop mac binding AT_CHECK([ovs-appctl netdev-dummy/receive p0 'recirc_id(0),in_port(1),eth(src=f8:bc:12:44:34:b6,dst=aa:55:aa:55:00:00),eth_type(0x0806),arp(sip=1.1.2.92,tip=1.1.2.88,op=2,sha=f8:bc:12:44:34:b6,tha=00:00:00:00:00:00)']) @@ -991,6 +1014,7 @@ AT_CHECK([ovs-ofctl add-flow br0 'ip,ip_proto=47,nw_tos=0,eth_src=aa:55:aa:55:00 dnl Direct traffic from the integration bridge to the GRE tunnel AT_CHECK([ovs-ofctl add-flow int-br action=3]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl ofproto/trace ovs-dummy 'in_port(2),eth(src=f8:bc:12:44:34:b6,dst=aa:55:aa:55:00:00),eth_type(0x0800),ipv4(src=1.1.3.88,dst=1.1.3.112,proto=17,tos=0,ttl=64,frag=no),udp(src=51283,dst=4789)'], [0], [stdout]) AT_CHECK([tail -1 stdout], [0], @@ -1028,6 +1052,7 @@ AT_CHECK([ovs-appctl ovs/route/show | grep Cached], [0], [dnl Cached: 1.1.2.0/24 dev br0 SRC 1.1.2.88 local ]) AT_CHECK([ovs-ofctl add-flow br0 action=normal]) +AT_CHECK([ovs-appctl revalidator/wait]) dnl This ARP reply from p0 has two effects: dnl 1. The ARP cache will learn that 1.1.2.92 is at f8:bc:12:44:34:b6. @@ -1047,6 +1072,7 @@ add_of_ports br-non-tunnel 7 8 AT_CHECK([ovs-ofctl del-flows br-non-tunnel]) AT_CHECK([ovs-ofctl add-flow br-non-tunnel in_port=p7,action=p8]) AT_CHECK([ovs-ofctl add-flow br-non-tunnel in_port=p8,action=p7]) +AT_CHECK([ovs-appctl revalidator/wait]) dnl Checking that tunnel configuration doesn't impact flow translation dnl on this bridge (Megaflow should contain a bare minimum of fields @@ -1100,6 +1126,7 @@ Cached: 10.0.0.0/24 dev br0 SRC 10.0.0.2 local dnl Send an ARP reply to port b8 on br0, so that packets will be forwarded dnl to learned port. AT_CHECK([ovs-ofctl add-flow br0 action=normal]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl netdev-dummy/receive p8 'in_port(8),dnl eth(src=aa:55:aa:66:00:00,dst=ff:ff:ff:ff:ff:ff),eth_type(0x0806),dnl @@ -1149,6 +1176,7 @@ dnl to learned port. AT_CHECK([ovs-ofctl add-flow br0 action=normal]) AT_CHECK([ovs-ofctl del-flows ovs-tun0]) AT_CHECK([ovs-ofctl add-flow ovs-tun0 "in_port=p7,actions=tun0"]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl netdev-dummy/receive p8 'in_port(8),dnl eth(src=aa:55:aa:66:00:00,dst=ff:ff:ff:ff:ff:ff),eth_type(0x0806),dnl arp(sip=10.0.0.11,tip=10.0.0.2,op=2,sha=aa:55:aa:66:00:00,tha=00:00:00:00:00:00)']) @@ -1164,6 +1192,7 @@ udp(src=0,dst=4789,csum=0x0),vxlan(flags=0x8000000,vni=0x0)),out_port(100)),8 dnl Perform a negative check to make sure clone is still present. AT_CHECK([ovs-ofctl del-flows ovs-tun0]) AT_CHECK([ovs-ofctl add-flow ovs-tun0 "in_port=p7,actions=tun0,in_port"]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl netdev-dummy/receive p8 'in_port(8),dnl eth(src=aa:55:aa:66:00:00,dst=ff:ff:ff:ff:ff:ff),eth_type(0x0806),dnl arp(sip=10.0.0.11,tip=10.0.0.2,op=2,sha=aa:55:aa:66:00:00,tha=00:00:00:00:00:00)']) @@ -1218,6 +1247,7 @@ Cached: 1.1.2.0/24 dev vtep0 SRC 1.1.2.88 local AT_CHECK([ovs-ofctl add-flow br0 action=normal]) AT_CHECK([ovs-ofctl add-flow int-br action=normal]) +AT_CHECK([ovs-appctl revalidator/wait]) dnl Use arp request and reply to achieve tunnel next hop mac binding. dnl By default, vtep0's MAC address is aa:55:aa:55:00:03. @@ -1287,6 +1317,7 @@ AT_CHECK([ovs-ofctl add-flow br0 in_port=br0,action=group:1234]) AT_CHECK([ovs-ofctl add-flow br0 in_port=p0,action=normal]) AT_CHECK([ovs-ofctl add-flow int-br action=normal]) +AT_CHECK([ovs-appctl revalidator/wait]) dnl This ARP reply from p0 has two effects: dnl 1. The ARP cache will learn that 1.1.2.92 is at f8:bc:12:44:34:b6. @@ -1372,6 +1403,7 @@ AT_CHECK([dnl AT_CHECK([ovs-ofctl add-flow br-ext actions=normal]) AT_CHECK([ovs-ofctl add-flow br0 actions=normal]) +AT_CHECK([ovs-appctl revalidator/wait]) dnl Make sure ephemeral ports stay static across tests. AT_CHECK([ovs-appctl tnl/egress_port_range 35190 35190], [0], [OK @@ -1432,6 +1464,7 @@ OVS_VSWITCHD_START([dnl add_of_ports br0 1 2 AT_CHECK([ovs-ofctl add-flow br0 in_port=p1,action=t1,p2]) +AT_CHECK([ovs-appctl revalidator/wait]) AT_CHECK([ovs-appctl ofproto/trace --names br0 in_port=p1], [0], [stdout]) AT_CHECK([tail -1 stdout], [0], -- 2.50.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
