>> +ovs-appctl time/warp 4000 >> AT_CHECK([ovs-ofctl mod-flows br0 in_port=1,actions=drop]) >> -sleep 2 >> +# At this point the table would looks like: >> +# in_port seconds to expire >> +# 1 13 >> +# 2 11 > This seems to be 12s to expire. And I realize that I made a mistake > about warp 4000. > It should be warp 5000 or even bigger. > I'm so sorry to bother you so many times. I probably need a rest. > Thanks for all your work.
apparently this math is too difficult for us. :-) YAMAMOTO Takashi commit 06f0a9e0e4da144e0bdc3a3b49d5f2572f67c626 Author: YAMAMOTO Takashi <yamam...@valinux.co.jp> Date: Mon Mar 31 14:04:35 2014 +0900 ofproto.at: Fix races in rule eviciton tests Bump timeout differences, because timeouts different by 1s might end up to have the same position in the heap as rule_eviction_priority() uses 1024ms as a unit. Also, use time/stop to avoid relying on how long an add-flow would take. These tests were introduced by commit 6d56c1f1. ("ofproto: Update rule's priority in eviction group.") Signed-off-by: YAMAMOTO Takashi <yamam...@valinux.co.jp> Cc: Kmindg G <kmi...@gmail.com> Acked-by: Ben Pfaff <b...@nicira.com> diff --git a/tests/ofproto.at b/tests/ofproto.at index e98b526..de2d004 100644 --- a/tests/ofproto.at +++ b/tests/ofproto.at @@ -1375,27 +1375,34 @@ AT_CHECK( | ${PERL} $srcdir/uuidfilt.pl], [0], [<0> ]) +ovs-appctl time/stop # Add 4 flows. for in_port in 4 3 2 1; do - ovs-ofctl add-flow br0 hard_timeout=1${in_port},in_port=$in_port,actions=drop + ovs-ofctl add-flow br0 hard_timeout=$((10 + in_port * 3)),in_port=$in_port,actions=drop done AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl - hard_timeout=11, in_port=1 actions=drop - hard_timeout=12, in_port=2 actions=drop - hard_timeout=13, in_port=3 actions=drop - hard_timeout=14, in_port=4 actions=drop + hard_timeout=13, in_port=1 actions=drop + hard_timeout=16, in_port=2 actions=drop + hard_timeout=19, in_port=3 actions=drop + hard_timeout=22, in_port=4 actions=drop NXST_FLOW reply: ]) # Sleep and modify the one that expires soonest -sleep 2 +ovs-appctl time/warp 5000 AT_CHECK([ovs-ofctl mod-flows br0 in_port=1,actions=drop]) -sleep 2 +# At this point the table would looks like: +# in_port seconds to expire +# 1 13 +# 2 11 +# 3 14 +# 4 17 +ovs-appctl time/warp 2000 # Adding another flow will cause the one that expires soonest to be evicted. AT_CHECK([ovs-ofctl add-flow br0 in_port=5,actions=drop]) AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl - hard_timeout=11, in_port=1 actions=drop - hard_timeout=13, in_port=3 actions=drop - hard_timeout=14, in_port=4 actions=drop + hard_timeout=13, in_port=1 actions=drop + hard_timeout=19, in_port=3 actions=drop + hard_timeout=22, in_port=4 actions=drop in_port=5 actions=drop NXST_FLOW reply: ]) @@ -1414,26 +1421,33 @@ AT_CHECK( ]) # Add 4 flows. for in_port in 4 3 2 1; do - ovs-ofctl add-flow br0 idle_timeout=1${in_port},in_port=$in_port,actions=drop + ovs-ofctl add-flow br0 idle_timeout=$((10 + in_port * 3)),in_port=$in_port,actions=drop done +ovs-appctl time/stop AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl - idle_timeout=11, in_port=1 actions=drop - idle_timeout=12, in_port=2 actions=drop - idle_timeout=13, in_port=3 actions=drop - idle_timeout=14, in_port=4 actions=drop + idle_timeout=13, in_port=1 actions=drop + idle_timeout=16, in_port=2 actions=drop + idle_timeout=19, in_port=3 actions=drop + idle_timeout=22, in_port=4 actions=drop NXST_FLOW reply: ]) # Sleep and receive on the flow that expires soonest -sleep 2 +ovs-appctl time/warp 5000 AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1)']) -sleep 2 +# At this point the table would looks like: +# in_port seconds to expire +# 1 13 +# 2 11 +# 3 14 +# 4 17 +ovs-appctl time/warp 2000 # Adding another flow will cause the one that expires soonest to be evicted. AT_CHECK([ovs-ofctl add-flow br0 in_port=5,actions=drop]) AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl - idle_timeout=13, in_port=3 actions=drop - idle_timeout=14, in_port=4 actions=drop + idle_timeout=19, in_port=3 actions=drop + idle_timeout=22, in_port=4 actions=drop in_port=5 actions=drop - n_packets=1, n_bytes=60, idle_timeout=11, in_port=1 actions=drop + n_packets=1, n_bytes=60, idle_timeout=13, in_port=1 actions=drop NXST_FLOW reply: ]) OVS_VSWITCHD_STOP _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev