diff options
author | kmindg <kmindg@gmail.com> | 2014-03-09 17:48:04 +0800 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2014-03-11 22:32:20 -0700 |
commit | 6d56c1f19fe9facea0eabc4a39ad01cfc8d7971d (patch) | |
tree | 8db534fd6294c0d353afc7e03f65f4ec38edea95 /tests/ofproto.at | |
parent | c76f25b5bc5b9856a2fa243bc48e4e5763029f4f (diff) | |
download | openvswitch-6d56c1f19fe9facea0eabc4a39ad01cfc8d7971d.tar.gz |
ofproto: Update rule's priority in eviction group.
We do call heap_rebuild in ofproto_run, but we do not update rule's
priority with latest hard_timeout and idle_timeout before heap_rebuild.
This patch ensures that rule's priority has been updated before
heap_rebuild, and adds two test cases to check eviction with modified
hard_timeout and idle_timwout.
Signed-off-by: kmindg <kmindg@gmail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'tests/ofproto.at')
-rw-r--r-- | tests/ofproto.at | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/tests/ofproto.at b/tests/ofproto.at index f6a62cdb2..eb1680ce7 100644 --- a/tests/ofproto.at +++ b/tests/ofproto.at @@ -1365,6 +1365,80 @@ OFPST_FLOW reply (OF1.2): OVS_VSWITCHD_STOP AT_CLEANUP +AT_SETUP([ofproto - eviction upon table overflow, with modified hard timeout]) +OVS_VSWITCHD_START +# Configure a maximum of 4 flows. +AT_CHECK( + [ovs-vsctl \ + -- --id=@t0 create Flow_Table flow-limit=4 overflow-policy=evict \ + -- set bridge br0 flow_tables:0=@t0 \ + | ${PERL} $srcdir/uuidfilt.pl], + [0], [<0> +]) +# 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 +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 +NXST_FLOW reply: +]) +# Sleep and modify the one that expires soonest +sleep 2 +AT_CHECK([ovs-ofctl mod-flows br0 in_port=1,actions=drop]) +sleep 2 +# 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 + in_port=5 actions=drop +NXST_FLOW reply: +]) +OVS_VSWITCHD_STOP +AT_CLEANUP + +AT_SETUP([ofproto - eviction upon table overflow, with modified idle timeout]) +OVS_VSWITCHD_START([add-port br0 p1 -- set interface p1 type=dummy ofport_request=1]) +# Configure a maximum of 4 flows. +AT_CHECK( + [ovs-vsctl \ + -- --id=@t0 create Flow_Table flow-limit=4 overflow-policy=evict \ + -- set bridge br0 flow_tables:0=@t0 \ + | ${PERL} $srcdir/uuidfilt.pl], + [0], [<0> +]) +# 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 +done +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 +NXST_FLOW reply: +]) +# Sleep and receive on the flow that expires soonest +sleep 2 +AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1)']) +sleep 2 +# 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 + in_port=5 actions=drop + n_packets=1, n_bytes=60, idle_timeout=11, in_port=1 actions=drop +NXST_FLOW reply: +]) +OVS_VSWITCHD_STOP +AT_CLEANUP + AT_SETUP([ofproto - asynchronous message control (OpenFlow 1.0)]) OVS_VSWITCHD_START AT_CHECK([ovs-ofctl -P openflow10 monitor br0 --detach --no-chdir --pidfile]) |