On Tue, Apr 1, 2014 at 6:20 PM, YAMAMOTO Takashi <yamam...@valinux.co.jp> wrote: >>> # Sleep and modify the one that expires soonest >>> -sleep 2 >>> +ovs-appctl time/warp 3000 >>> AT_CHECK([ovs-ofctl mod-flows br0 in_port=1,actions=drop]) >> >> at this point, flow table would be: >> hard_timeout=12, in_port=1 actions=drop >> hard_timeout=11, in_port=2 actions=drop >> hard_timeout=13, in_port=3 actions=drop >> hard_timeout=15, in_port=4 actions=drop >> And according to your comment, 1s interval may not be suitable. >> >> I would like to change (10 + in_port * 2) to (10 + in_port * 3), and warp >> 4000. >> What do you think? > > good point. i tweaked timeouts and comments. > > YAMAMOTO Takashi > > > commit b048a2bc1e8af76dcc4b2870a76a0b2f02876188 > 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..23629c0 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 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.
> +# 3 15 > +# 4 18 > +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 4000 > 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 15 > +# 4 18 > +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