diff mbox series

[ovs-dev] learn: improve test case

Message ID 1517452349-120242-1-git-send-email-u9012063@gmail.com
State Accepted
Headers show
Series [ovs-dev] learn: improve test case | expand

Commit Message

William Tu Feb. 1, 2018, 2:32 a.m. UTC
Current learn test cases use only ovs-ofctl add/del flows.
The patch add a new test case for learn with delete_learned and
limit option enabled.

Signed-off-by: William Tu <u9012063@gmail.com>
---
 tests/learn.at | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

Comments

Darrell Ball Feb. 1, 2018, 3:35 a.m. UTC | #1
On Wed, Jan 31, 2018 at 6:32 PM, William Tu <u9012063@gmail.com> wrote:

> Current learn test cases use only ovs-ofctl add/del flows.
> The patch add a new test case for learn with delete_learned and
> limit option enabled.
>
> Signed-off-by: William Tu <u9012063@gmail.com>
> ---
>  tests/learn.at | 38 ++++++++++++++++++++++++++++++++++++++
>  1 file changed, 38 insertions(+)
>
> diff --git a/tests/learn.at b/tests/learn.at
> index 07ad043212ed..406a827aae36 100644
> --- a/tests/learn.at
> +++ b/tests/learn.at
> @@ -625,6 +625,44 @@ AT_CHECK([ovs-ofctl dump-flows br0 --no-stats | sort])
>  OVS_VSWITCHD_STOP
>  AT_CLEANUP
>
> +AT_SETUP([learning action - delete_learned/limit with packet])
>


Thanks William.
I have question - is this test case trying to delineate some related bug or
observed special behavior ?
I am asking because I don't immediately see the intersection b/w the
delete_learned and limit options ?

BTW, what is "limit with packet" as opposed to just "limit"



> +OVS_VSWITCHD_START(
> +    [add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1 --\
> +     add-port br0 p2 -- set Interface p2 type=dummy ofport_request=2])
> +
> +# Add some initial flows and check that it was successful.
> +AT_DATA([flows.txt], [dnl
> +table=0 actions=set_field:0x2->reg7,set_field:0xabcdef01->metadata,
> resubmit(,1)
> +table=1 actions=learn(table=10,delete_learned,cookie=0x123,limit=3,
> result_dst=NXM_NX_REG6[[0]],NXM_OF_ETH_DST[[]]=NXM_OF_ETH_
> SRC[[]],OXM_OF_METADATA[[]],output:NXM_NX_REG7)
> +])
> +
> +AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
> +AT_CHECK([ovs-ofctl dump-flows br0 --no-stats | sort], [0], [dnl
> + actions=load:0x2->NXM_NX_REG7[[]],load:0xabcdef01->OXM_OF_
> METADATA[[]],resubmit(,1)
> + table=1, actions=learn(table=10,delete_learned,cookie=0x123,limit=3,
> result_dst=NXM_NX_REG6[[0]],NXM_OF_ETH_DST[[]]=NXM_OF_ETH_
> SRC[[]],OXM_OF_METADATA[[]],output:NXM_NX_REG7[[]])
> +])
> +
> +dnl Each packet will generate its own flow at table=10, except last one
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:
> 00:00:01,dst=50:54:00:00:00:ff),eth_type(0x1234)'])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:
> 00:00:02,dst=50:54:00:00:00:ff),eth_type(0x1234)'])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:
> 00:00:03,dst=50:54:00:00:00:ff),eth_type(0x1234)'])
> +AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:
> 00:00:04,dst=50:54:00:00:00:ff),eth_type(0x1234)'])
> +
> +AT_CHECK([ovs-ofctl dump-flows br0 table=10 --no-stats | sort], [0], [dnl
> + cookie=0x123, table=10, metadata=0xabcdef01,dl_dst=50:54:00:00:00:01
> actions=output:2
> + cookie=0x123, table=10, metadata=0xabcdef01,dl_dst=50:54:00:00:00:02
> actions=output:2
> + cookie=0x123, table=10, metadata=0xabcdef01,dl_dst=50:54:00:00:00:03
> actions=output:2
> +])
> +
> +ovs-appctl revalidator/wait
> +
> +AT_CHECK([ovs-ofctl del-flows br0 'table=1'])
> +AT_CHECK([ovs-ofctl dump-flows br0 table=10 --no-stats | sort], [0], [dnl
>

It looks odd to sort an expected empty list.



> +])
> +
> +OVS_VSWITCHD_STOP
> +AT_CLEANUP
> +
>  AT_SETUP([learning action - limit])
>  OVS_VSWITCHD_START
>  AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
> --
> 2.7.4
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
William Tu Feb. 1, 2018, 7:23 p.m. UTC | #2
> Thanks William.
> I have question - is this test case trying to delineate some related bug or
> observed special behavior ?

We suspect that there might be a memory leak in learn action. So I
created this test.

> I am asking because I don't immediately see the intersection b/w the
> delete_learned and limit options ?

I observe some cases that the learn action creates more than 1,000 rules,
so testing delete_learned and limit to make sure the created rules operate ok.

>
> BTW, what is "limit with packet" as opposed to just "limit"

I mean using packets to trigger the learn action.
Because the previous similar tests do not use packets.

>
>
>>
>> +OVS_VSWITCHD_START(
>> +    [add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1 --\
>> +     add-port br0 p2 -- set Interface p2 type=dummy ofport_request=2])
>> +
>> +# Add some initial flows and check that it was successful.
>> +AT_DATA([flows.txt], [dnl
>> +table=0 actions=set_field:0x2->reg7,set_field:0xabcdef01->metadata,
>> resubmit(,1)
>> +table=1
>> actions=learn(table=10,delete_learned,cookie=0x123,limit=3,result_dst=NXM_NX_REG6[[0]],NXM_OF_ETH_DST[[]]=NXM_OF_ETH_SRC[[]],OXM_OF_METADATA[[]],output:NXM_NX_REG7)
>> +])
>> +
>> +AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
>> +AT_CHECK([ovs-ofctl dump-flows br0 --no-stats | sort], [0], [dnl
>> +
>> actions=load:0x2->NXM_NX_REG7[[]],load:0xabcdef01->OXM_OF_METADATA[[]],resubmit(,1)
>> + table=1,
>> actions=learn(table=10,delete_learned,cookie=0x123,limit=3,result_dst=NXM_NX_REG6[[0]],NXM_OF_ETH_DST[[]]=NXM_OF_ETH_SRC[[]],OXM_OF_METADATA[[]],output:NXM_NX_REG7[[]])
>> +])
>> +
>> +dnl Each packet will generate its own flow at table=10, except last one
>> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
>> 'in_port(1),eth(src=50:54:00:00:00:01,dst=50:54:00:00:00:ff),eth_type(0x1234)'])
>> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
>> 'in_port(1),eth(src=50:54:00:00:00:02,dst=50:54:00:00:00:ff),eth_type(0x1234)'])
>> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
>> 'in_port(1),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:ff),eth_type(0x1234)'])
>> +AT_CHECK([ovs-appctl netdev-dummy/receive p1
>> 'in_port(1),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:ff),eth_type(0x1234)'])
>> +
>> +AT_CHECK([ovs-ofctl dump-flows br0 table=10 --no-stats | sort], [0], [dnl
>> + cookie=0x123, table=10, metadata=0xabcdef01,dl_dst=50:54:00:00:00:01
>> actions=output:2
>> + cookie=0x123, table=10, metadata=0xabcdef01,dl_dst=50:54:00:00:00:02
>> actions=output:2
>> + cookie=0x123, table=10, metadata=0xabcdef01,dl_dst=50:54:00:00:00:03
>> actions=output:2
>> +])
>> +
>> +ovs-appctl revalidator/wait
>> +
>> +AT_CHECK([ovs-ofctl del-flows br0 'table=1'])
>> +AT_CHECK([ovs-ofctl dump-flows br0 table=10 --no-stats | sort], [0], [dnl
>
>
> It looks odd to sort an expected empty list.
>

Right, I should remove it.

Thanks
William
>
>>
>> +])
>> +
>> +OVS_VSWITCHD_STOP
>> +AT_CLEANUP
>> +
>>  AT_SETUP([learning action - limit])
>>  OVS_VSWITCHD_START
>>  AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])
>> --
>> 2.7.4
>>
>> _______________________________________________
>> dev mailing list
>> dev@openvswitch.org
>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
>
Ben Pfaff Feb. 1, 2018, 9:01 p.m. UTC | #3
On Wed, Jan 31, 2018 at 06:32:29PM -0800, William Tu wrote:
> Current learn test cases use only ovs-ofctl add/del flows.
> The patch add a new test case for learn with delete_learned and
> limit option enabled.
> 
> Signed-off-by: William Tu <u9012063@gmail.com>

Thanks, applied to master.
diff mbox series

Patch

diff --git a/tests/learn.at b/tests/learn.at
index 07ad043212ed..406a827aae36 100644
--- a/tests/learn.at
+++ b/tests/learn.at
@@ -625,6 +625,44 @@  AT_CHECK([ovs-ofctl dump-flows br0 --no-stats | sort])
 OVS_VSWITCHD_STOP
 AT_CLEANUP
 
+AT_SETUP([learning action - delete_learned/limit with packet])
+OVS_VSWITCHD_START(
+    [add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1 --\
+     add-port br0 p2 -- set Interface p2 type=dummy ofport_request=2])
+
+# Add some initial flows and check that it was successful.
+AT_DATA([flows.txt], [dnl
+table=0 actions=set_field:0x2->reg7,set_field:0xabcdef01->metadata, resubmit(,1)
+table=1 actions=learn(table=10,delete_learned,cookie=0x123,limit=3,result_dst=NXM_NX_REG6[[0]],NXM_OF_ETH_DST[[]]=NXM_OF_ETH_SRC[[]],OXM_OF_METADATA[[]],output:NXM_NX_REG7)
+])
+
+AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
+AT_CHECK([ovs-ofctl dump-flows br0 --no-stats | sort], [0], [dnl
+ actions=load:0x2->NXM_NX_REG7[[]],load:0xabcdef01->OXM_OF_METADATA[[]],resubmit(,1)
+ table=1, actions=learn(table=10,delete_learned,cookie=0x123,limit=3,result_dst=NXM_NX_REG6[[0]],NXM_OF_ETH_DST[[]]=NXM_OF_ETH_SRC[[]],OXM_OF_METADATA[[]],output:NXM_NX_REG7[[]])
+])
+
+dnl Each packet will generate its own flow at table=10, except last one
+AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:01,dst=50:54:00:00:00:ff),eth_type(0x1234)'])
+AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:02,dst=50:54:00:00:00:ff),eth_type(0x1234)'])
+AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:03,dst=50:54:00:00:00:ff),eth_type(0x1234)'])
+AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:04,dst=50:54:00:00:00:ff),eth_type(0x1234)'])
+
+AT_CHECK([ovs-ofctl dump-flows br0 table=10 --no-stats | sort], [0], [dnl
+ cookie=0x123, table=10, metadata=0xabcdef01,dl_dst=50:54:00:00:00:01 actions=output:2
+ cookie=0x123, table=10, metadata=0xabcdef01,dl_dst=50:54:00:00:00:02 actions=output:2
+ cookie=0x123, table=10, metadata=0xabcdef01,dl_dst=50:54:00:00:00:03 actions=output:2
+])
+
+ovs-appctl revalidator/wait
+
+AT_CHECK([ovs-ofctl del-flows br0 'table=1'])
+AT_CHECK([ovs-ofctl dump-flows br0 table=10 --no-stats | sort], [0], [dnl
+])
+
+OVS_VSWITCHD_STOP
+AT_CLEANUP
+
 AT_SETUP([learning action - limit])
 OVS_VSWITCHD_START
 AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg])