We have previously used a combination of time/warp and revalidator/wait to try to synchronize the datapath flow statistics and status up to the ofproto layer, so that tests may confirm their expected behaviours using OpenFlow or other protocols operating at that layer of vswitchd (eg LACP).
This patch switches these tests over to using revalidator/purge, which tells the ofproto-dpif to flush the datapath, causing these statistics to be updated. In local testing this appears to improve the success rate of these tests considerably. Signed-off-by: Joe Stringer <joestrin...@nicira.com> --- tests/ofproto-dpif.at | 77 +++++++++++++++---------------------------------- 1 file changed, 24 insertions(+), 53 deletions(-) diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at index fbf35c6..9d3da4a 100644 --- a/tests/ofproto-dpif.at +++ b/tests/ofproto-dpif.at @@ -347,8 +347,7 @@ for i in `seq 0 2`; AT_CHECK([ovs-appctl netdev-dummy/receive p1 $pkt]) done ) -ovs-appctl time/warp 100 -ovs-appctl revalidator/wait +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl -O OpenFlow12 -vwarn dump-group-stats br0], [0], [stdout]) AT_CHECK([STRIP_XIDS stdout | sort], [0], [dnl group_id=1234,ref_count=0,packet_count=3,byte_count=180,bucket0:packet_count=3,byte_count=180,bucket1:packet_count=0,byte_count=0 @@ -369,8 +368,7 @@ for i in `seq 0 2`; AT_CHECK([ovs-appctl netdev-dummy/receive p1 $pkt]) done ) -ovs-appctl time/warp 100 -ovs-appctl revalidator/wait +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl -O OpenFlow12 -vwarn dump-group-stats br0], [0], [stdout]) AT_CHECK([STRIP_XIDS stdout | sort], [0], [dnl group_id=1234,ref_count=0,packet_count=3,byte_count=180,bucket0:packet_count=3,byte_count=180,bucket1:packet_count=3,byte_count=180 @@ -850,8 +848,7 @@ OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via no_match) data_len=60 (unb tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=rst|urg tcp_csum:0 ]) -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -ovs-appctl revalidator/wait +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl n_packets=3, n_bytes=180, actions=goto_table:1 OFPST_FLOW reply (OF1.2): @@ -879,8 +876,7 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl ]) -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -ovs-appctl revalidator/wait +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl n_packets=3, n_bytes=180, actions=resubmit(1,1) OFPST_FLOW reply (OF1.2): @@ -939,8 +935,7 @@ NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_ tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0 ]) -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -ovs-appctl revalidator/wait +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl table=1, n_packets=3, n_bytes=180, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535 OFPST_FLOW reply (OF1.2): @@ -1003,8 +998,7 @@ NXT_PACKET_IN (xid=0x0): table_id=253 cookie=0x0 total_len=60 in_port=1 (via no_ tcp,in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:05,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=9,tcp_flags=ack tcp_csum:0 ]) -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -ovs-appctl revalidator/wait +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl n_packets=6, n_bytes=360, actions=goto_table:1 table=2, n_packets=3, n_bytes=180, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535 @@ -1050,8 +1044,7 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl ]) -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -ovs-appctl revalidator/wait +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl n_packets=6, n_bytes=360, actions=resubmit(1,1) table=2, dl_src=10:11:11:11:11:11 actions=CONTROLLER:65535 @@ -1111,8 +1104,7 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl ]) -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -ovs-appctl revalidator/wait +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl n_packets=3, n_bytes=180, actions=goto_table:1 OFPST_FLOW reply (OF1.2): @@ -1143,8 +1135,7 @@ OVS_WAIT_UNTIL([ovs-appctl -t ovs-ofctl exit]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl ]) -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -ovs-appctl revalidator/wait +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl -OOpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl n_packets=3, n_bytes=180, actions=resubmit(1,1) OFPST_FLOW reply (OF1.2): @@ -2421,9 +2412,7 @@ NXT_PACKET_IN (xid=0x0): cookie=0xd total_len=62 in_port=1 (via action) data_len mpls,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:05:10,dl_dst=50:54:00:00:00:07,mpls_label=20,mpls_tc=0,mpls_ttl=31,mpls_bos=1 ]) -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -AT_CHECK([ovs-appctl revalidator/wait], [0], [ignore]) - +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:44:42 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],load:0x3->OXM_OF_MPLS_TC[[]],CONTROLLER:65535 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:44:43 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],load:0x3->OXM_OF_MPLS_TC[[]],CONTROLLER:65535 @@ -2508,8 +2497,7 @@ OFPT_PACKET_IN (OF1.2) (xid=0x0): table_id=1 total_len=58 in_port=1 (via action) tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=50:54:00:00:00:01,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=32,nw_ecn=0,nw_ttl=255,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744 ]) -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) - +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl -O OpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl n_packets=3, n_bytes=186, mplsm actions=pop_mpls:0x0800,goto_table:1 table=1, n_packets=3, n_bytes=174, ip,nw_tos=32 actions=CONTROLLER:65535 @@ -2558,8 +2546,7 @@ OFPT_PACKET_IN (OF1.2) (xid=0x0): table_id=254 total_len=58 in_port=1 (via actio tcp,in_port=0,vlan_tci=0x0000,dl_src=60:66:66:66:00:08,dl_dst=50:54:00:00:00:01,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=32,nw_ecn=0,nw_ttl=254,tp_src=80,tp_dst=0,tcp_flags=0 tcp_csum:7744 ]) -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) - +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl -O OpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl n_packets=3, n_bytes=186, mplsm actions=pop_mpls:0x0800,write_actions(dec_ttl,CONTROLLER:65535) OFPST_FLOW reply (OF1.2): @@ -2598,9 +2585,7 @@ OFPT_PACKET_IN (xid=0x0): total_len=60 in_port=1 (via action) data_len=60 (unbuf tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0 ]) -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -AT_CHECK([ovs-appctl revalidator/wait], [0], [ignore]) - +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl --protocols=OpenFlow10 dump-flows br0 | ofctl_strip | sort], [0], [dnl n_packets=3, n_bytes=180, priority=0 actions=CONTROLLER:65535 NXST_FLOW reply: @@ -2642,8 +2627,7 @@ OFPT_PACKET_IN (OF1.3) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_matc tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0 ]) -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) - +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl --protocols=OpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl n_packets=3, n_bytes=180, priority=0 actions=CONTROLLER:65535 OFPST_FLOW reply (OF1.3): @@ -2677,8 +2661,7 @@ done OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6]) ovs-appctl -t ovs-ofctl exit -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) - +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl send: OFPT_ROLE_REQUEST (OF1.3) (xid=0x2): role=slave generation_id=1 OFPT_ROLE_REPLY (OF1.3) (xid=0x2): role=slave generation_id=1 @@ -2734,8 +2717,7 @@ done OVS_WAIT_UNTIL([test `wc -l < ofctl_monitor.log` -ge 6]) ovs-appctl -t ovs-ofctl exit -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) - +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([cat ofctl_monitor.log], [0], [dnl OFPT_PACKET_IN (OF1.4) (xid=0x0): cookie=0x0 total_len=60 in_port=1 (via no_match) data_len=60 (unbuffered) tcp,in_port=0,vlan_tci=0x0000,dl_src=10:11:11:11:11:11,dl_dst=50:54:00:00:00:07,nw_src=192.168.0.1,nw_dst=192.168.0.2,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=8,tp_dst=10,tcp_flags=syn tcp_csum:0 @@ -3411,8 +3393,7 @@ mpls,in_port=0,dl_vlan=99,dl_vlan_pcp=1,dl_src=40:44:44:44:54:59,dl_dst=50:54:00 00000030 00 00 00 00 00 00 50 00-00 00 00 00 00 00 00 00 ]) -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -AT_CHECK([ovs-appctl revalidator/wait], [0], [ignore]) +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl --protocols=OpenFlow12 dump-flows br0 | ofctl_strip | sort], [0], [dnl cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:50 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,set_field:4195->vlan_vid,set_field:1->vlan_pcp,CONTROLLER:65535 cookie=0xa, n_packets=3, n_bytes=180, dl_src=40:44:44:44:54:51 actions=push_mpls:0x8847,load:0xa->OXM_OF_MPLS_LABEL[[]],push_vlan:0x8100,set_field:4195->vlan_vid,set_field:1->vlan_pcp,CONTROLLER:65535 @@ -3516,7 +3497,6 @@ recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:0, b mode=drop -ovs-appctl revalidator/wait AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl set-frags br0 $mode]) for type in no first later; do @@ -3534,7 +3514,6 @@ recirc_id(0),in_port(90),eth_type(0x0800),ipv4(frag=later), packets:0, bytes:0, mode=nx-match -ovs-appctl revalidator/wait AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl set-frags br0 $mode]) for type in no first later; do @@ -3621,7 +3600,6 @@ recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=first),tcp(src=33419 recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:1, bytes:74, used:0.001s, actions:1 ]) -ovs-appctl revalidator/wait AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl set-frags br0 $mode]) for frag in 4000 6000 6008 4010; do @@ -3636,7 +3614,6 @@ recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=first),tcp(src=0), p recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), packets:1, bytes:60, used:0.001s, actions:1 ]) -ovs-appctl revalidator/wait AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl set-frags br0 $mode]) for frag in 4000 6000 6001 4002; do @@ -4688,9 +4665,8 @@ ovs-vsctl \ header=128 sampling=1 polling=1 dnl sleep long enough to get the sFlow datagram flushed out (may be delayed for up to 1 second) -for i in `seq 1 30`; do - ovs-appctl time/warp 100 -done +AT_CHECK([ovs-appctl time/warp 2000 100], [0], [ignore]) +AT_CHECK([ovs-appctl revalidator/purge], [0]) OVS_VSWITCHD_STOP ovs-appctl -t test-sflow exit AT_CHECK([[sort sflow.log | $EGREP 'LACPCOUNTERS|ERROR' | head -n 1 | sed 's/ /\ @@ -4861,9 +4837,8 @@ for i in `seq 1 10`; do ovs-appctl netdev-dummy/receive br0 'in_port(0),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:05),eth_type(0x0800),ipv4(src=192.168.0.2,dst=192.168.0.1,proto=6,tos=0,ttl=64,frag=no)' done -ovs-appctl time/warp 1000 -ovs-appctl revalidator/wait - +AT_CHECK([ovs-appctl time/warp 1000], [0], [ignore]) +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl dump-flows br0], [0], [stdout]) AT_CHECK([STRIP_XIDS stdout | sed -n 's/duration=[[0-9]]*\.[[0-9]]*s/duration=0.0s/p' | sort], [0], [dnl cookie=0x0, duration=0.0s, table=0, n_packets=0, n_bytes=0, idle_age=1, icmp actions=NORMAL @@ -5002,7 +4977,7 @@ AT_CHECK([ovs-appctl netdev-dummy/receive br0 0021853763af0026b98cb0f90800450000 AT_CHECK([ovs-appctl time/warp 1000 && ovs-appctl time/warp 1000], [0], [warped warped ]) -ovs-appctl revalidator/wait +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip], [0], [NXST_FLOW reply: n_packets=1, n_bytes=74, idle_timeout=60, actions=fin_timeout(idle_timeout=5) @@ -6120,9 +6095,7 @@ NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via actio in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234 ]) -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -AT_CHECK([ovs-appctl revalidator/wait], [0], [ignore]) - +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl -O OpenFlow13 dump-flows br0 | ofctl_strip | sort], [0], [dnl n_packets=3, n_bytes=180, dl_dst=50:54:00:00:00:0a actions=goto_table:1 table=1, n_packets=3, n_bytes=180, dl_dst=50:54:00:00:00:0a actions=CONTROLLER:65535 @@ -6175,9 +6148,7 @@ NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=60 in_port=1 (via actio in_port=0,vlan_tci=0x0000,dl_src=50:54:00:00:00:09,dl_dst=50:54:00:00:00:0a,dl_type=0x1234 ]) -AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) -AT_CHECK([ovs-appctl revalidator/wait], [0], [ignore]) - +AT_CHECK([ovs-appctl revalidator/purge], [0]) AT_CHECK([ovs-ofctl -O OpenFlow11 dump-flows br0 | ofctl_strip | sort], [0], [dnl table=1, n_packets=3, n_bytes=180, dl_dst=50:54:00:00:00:0a actions=CONTROLLER:65535 OFPST_FLOW reply (OF1.1): -- 1.7.10.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev