HI Michael Ian,

> -----Original Message-----
> From: Phelan, Michael <[email protected]>
> Sent: Tuesday, April 5, 2022 7:47 PM
> To: Stokes, Ian <[email protected]>; Amber, Kumar
> <[email protected]>; [email protected]
> Cc: [email protected]; Ferriter, Cian <[email protected]>;
> [email protected]; Van Haaren, Harry <[email protected]>
> Subject: RE: [PATCH v8 4/4] tests/mfex: Improve pcap script for mfex tests.
> 
> 
> > -----Original Message-----
> > From: Stokes, Ian <[email protected]>
> > Sent: Tuesday 5 April 2022 14:52
> > To: Amber, Kumar <[email protected]>; [email protected];
> > Phelan, Michael <[email protected]>
> > Cc: [email protected]; Ferriter, Cian <[email protected]>;
> > [email protected]; Van Haaren, Harry <[email protected]>
> > Subject: RE: [PATCH v8 4/4] tests/mfex: Improve pcap script for mfex tests.
> >
> > > The mfex pcap generation script is improved for varied length
> > > traffic and also removes the hard coded mfex_pcap and instead uses
> > > the script itself to generate complex traffic patterns for testing.
> > >
> > > Signed-off-by: Kumar Amber <[email protected]>
> > >
> >
> > So in general I think this approach is a bit more improved.
> >
> > @Phelan, Michael do you know if we currently run this testing in our
> > CI? Also @Amber, Kumar et al, should the CI be expanded now to do both
> > fuzzy and non-fuzzy testing as both seem to be an option now?
> 
> Currently our CI runs only the MFEX Autovalidator and the MFEX
> Configuration unit tests, the fuzzy test is disabled as it was giving 
> inconsistent
> results. I believe Amber had a separate patch which fixed this issue but I'm
> not certain whether it has been merged into OVS master yet, if it has then
> the MFEX fuzzy test should be okay to be re-enabled on the CI and run for
> any new patches coming in.
> 

The patch to ignore the warning for context swithing is here :
http://patchwork.ozlabs.org/project/openvswitch/patch/[email protected]/

Regards
Amber

> >
> > Regards
> > Ian
> >
> > > ---
> > > v8:
> > > - Reduce IO writes.
> > > --
> > > ---
> > >  tests/automake.mk         |   1 -
> > >  tests/mfex_fuzzy.py       |  66 +++++++++++++++++++++++++++-----------
> > >  tests/pcap/mfex_test.pcap | Bin 416 -> 0 bytes
> > >  tests/system-dpdk.at      |  23 +++++++++----
> > >  4 files changed, 63 insertions(+), 27 deletions(-)  delete mode
> > > 100644 tests/pcap/mfex_test.pcap
> > >
> > > diff --git a/tests/automake.mk b/tests/automake.mk index
> > > 8a9151f81..507da2ee8 100644
> > > --- a/tests/automake.mk
> > > +++ b/tests/automake.mk
> > > @@ -145,7 +145,6 @@ $(srcdir)/tests/fuzz-regression-list.at:
> > > tests/automake.mk
> > >
> > >  EXTRA_DIST += $(MFEX_AUTOVALIDATOR_TESTS)
> > MFEX_AUTOVALIDATOR_TESTS =
> > > \ -tests/pcap/mfex_test.pcap \  tests/mfex_fuzzy.py
> > >
> > >  OVSDB_CLUSTER_TESTSUITE_AT = \
> > > diff --git a/tests/mfex_fuzzy.py b/tests/mfex_fuzzy.py index
> > > 3efe1152d..dbde5fe1b 100755
> > > --- a/tests/mfex_fuzzy.py
> > > +++ b/tests/mfex_fuzzy.py
> > > @@ -3,30 +3,58 @@
> > >  import sys
> > >
> > >  from scapy.all import RandMAC, RandIP, PcapWriter, RandIP6,
> > > RandShort, fuzz -from scapy.all import IPv6, Dot1Q, IP, Ether, UDP,
> > > TCP
> > > +from scapy.all import IPv6, Dot1Q, IP, Ether, UDP, TCP, random
> > >
> > > +# Relative path for the pcap file location.
> > >  path = str(sys.argv[1]) + "/pcap/fuzzy.pcap"
> > > +# The number of packets generated will be size * 8.
> > > +size = int(sys.argv[2])
> > > +# Traffic option is used to choose between fuzzy or simple packet type.
> > > +traffic_opt = str(sys.argv[3])
> > > +
> > >  pktdump = PcapWriter(path, append=False, sync=True)
> > >
> > > -for i in range(0, 2000):
> > > +pkt = []
> > > +
> > > +for i in range(0, size):
> > >
> > > -    # Generate random protocol bases, use a fuzz() over the combined
> > packet
> > > -    # for full fuzzing.
> > >      eth = Ether(src=RandMAC(), dst=RandMAC())
> > >      vlan = Dot1Q()
> > > -    ipv4 = IP(src=RandIP(), dst=RandIP())
> > > -    ipv6 = IPv6(src=RandIP6(), dst=RandIP6())
> > >      udp = UDP(dport=RandShort(), sport=RandShort())
> > > -    tcp = TCP(dport=RandShort(), sport=RandShort())
> > > -
> > > -    # IPv4 packets with fuzzing
> > > -    pktdump.write(fuzz(eth / ipv4 / udp))
> > > -    pktdump.write(fuzz(eth / ipv4 / tcp))
> > > -    pktdump.write(fuzz(eth / vlan / ipv4 / udp))
> > > -    pktdump.write(fuzz(eth / vlan / ipv4 / tcp))
> > > -
> > > -    # IPv6 packets with fuzzing
> > > -    pktdump.write(fuzz(eth / ipv6 / udp))
> > > -    pktdump.write(fuzz(eth / ipv6 / tcp))
> > > -    pktdump.write(fuzz(eth / vlan / ipv6 / udp))
> > > -    pktdump.write(fuzz(eth / vlan / ipv6 / tcp))
> > > +
> > > +    if traffic_opt == "fuzzy":
> > > +
> > > +        ipv4 = IP(src=RandIP(), dst=RandIP(), len=random.randint(0, 100))
> > > +        ipv6 = IPv6(src=RandIP6(), dst=RandIP6(),
> > > + plen=random.randint(0,
> > 100))
> > > +        tcp = TCP(dport=RandShort(), sport=RandShort(), flags='S',
> > > +                  dataofs=random.randint(0, 20))
> > > +        # IPv4 packets with fuzzing
> > > +        pkt.append(fuzz(eth / ipv4 / udp))
> > > +        pkt.append(fuzz(eth / ipv4 / tcp))
> > > +        pkt.append(fuzz(eth / vlan / ipv4 / udp))
> > > +        pkt.append(fuzz(eth / vlan / ipv4 / tcp))
> > > +
> > > +        # IPv6 packets with fuzzing
> > > +        pkt.append(fuzz(eth / ipv6 / udp))
> > > +        pkt.append(fuzz(eth / ipv6 / tcp))
> > > +        pkt.append(fuzz(eth / vlan / ipv6 / udp))
> > > +        pkt.append(fuzz(eth / vlan / ipv6 / tcp))
> > > +
> > > +    else:
> > > +
> > > +        ipv4 = IP(src=RandIP(), dst=RandIP())
> > > +        ipv6 = IPv6(src=RandIP6(), dst=RandIP6())
> > > +        tcp = TCP(dport=RandShort(), sport=RandShort(), flags='S')
> > > +        # IPv4 packets
> > > +        pkt.append(eth / ipv4 / udp)
> > > +        pkt.append(eth / ipv4 / tcp)
> > > +        pkt.append(eth / vlan / ipv4 / udp)
> > > +        pkt.append(eth / vlan / ipv4 / tcp)
> > > +
> > > +        # IPv6 packets
> > > +        pkt.append(eth / ipv6 / udp)
> > > +        pkt.append(eth / ipv6 / tcp)
> > > +        pkt.append(eth / vlan / ipv6 / udp)
> > > +        pkt.append(eth / vlan / ipv6 / tcp)
> > > +
> > > +pktdump.write(pkt)
> > > diff --git a/tests/pcap/mfex_test.pcap b/tests/pcap/mfex_test.pcap
> > > deleted file mode 100644 index
> > >
> >
> 1aac67b8d643ecb016c758cba4cc32212a80f52a..000000000000000000000000
> 0
> > > 000000000000000
> > > GIT binary patch
> > > literal 0
> > > HcmV?d00001
> > >
> > > literal 416
> > >
> > zcmca|c+)~A1{MYw`2U}Qff2}Q<eHVR>K`M68ITRa|G@yFii5$Gfk6YL%z>@uY
> > &}o
> > > |
> > >
> > z2s4N<1VH2&7y^V87$)XGOtD~MV$cFgfG~zBGGJ2#YtF$<F=a4i;9x8Q*<ZrSM
> > 6Uf
> > > z
> > > xK>KST_NTIwYriok6N4Vm)gX-
> > > Q@<yO<!C`>c^{cp<7_5LgK^UuU{2>VS0RZ!RQ+EIW
> > >
> > > diff --git a/tests/system-dpdk.at b/tests/system-dpdk.at index
> > > 7d2715c4a..1476e470c 100644
> > > --- a/tests/system-dpdk.at
> > > +++ b/tests/system-dpdk.at
> > > @@ -226,12 +226,13 @@ dnl
> > > -------------------------------------------------------------
> > > -------------
> > >  dnl Add standard DPDK PHY port
> > >  AT_SETUP([OVS-DPDK - MFEX Autovalidator])
> > >  AT_KEYWORDS([dpdk])
> > > -
> > > +AT_SKIP_IF([! $PYTHON3 -c "import scapy"], [], [])
> > > +AT_CHECK([$PYTHON3 $srcdir/mfex_fuzzy.py $srcdir 2000 0], [],
> > > +[stdout])
> > >  OVS_DPDK_START()
> > >
> > >  dnl Add userspace bridge and attach it to OVS  AT_CHECK([ovs-vsctl
> > > add-br br0 -- set bridge br0 datapath_type=netdev])
> > > -AT_CHECK([ovs-vsctl add-port br0 p1 -- set Interface p1 type=dpdk
> > > options:dpdk-
> > > devargs=net_pcap1,rx_pcap=$srcdir/pcap/mfex_test.pcap,infinite_rx=1]
> > > ,
> > > [], [stdout], [stderr])
> > > +AT_CHECK([ovs-vsctl add-port br0 p1 -- set Interface p1 type=dpdk
> > > options:dpdk-
> > > devargs=net_pcap1,rx_pcap=$srcdir/pcap/fuzzy.pcap,infinite_rx=1],
> > > [], [stdout],
> > > [stderr])
> > >  AT_CHECK([ovs-vsctl show], [], [stdout])
> > >
> > >  AT_SKIP_IF([! ovs-appctl dpif-netdev/miniflow-parser-get | sed 1,4d
> > > | grep "True"], [], [dnl @@ -245,11 +246,15 @@ AT_CHECK([ovs-appctl
> > > dpif-netdev/miniflow-parser- set autovalidator], [0], [dnl  Miniflow
> > > extract implementation set to autovalidator.
> > >  ])
> > >
> > > -OVS_WAIT_UNTIL([test `ovs-vsctl get interface p1 statistics | grep
> > > -oP 'rx_packets=\s*\K\d+'` -ge 1000])
> > > +OVS_WAIT_UNTIL([test `ovs-vsctl get interface p1 statistics | grep
> > > +-oP
> > > 'rx_packets=\s*\K\d+'` -ge 16000])
> > >
> > >  dnl Clean up
> > >  AT_CHECK([ovs-vsctl del-port br0 p1], [], [stdout], [stderr])
> > > -OVS_VSWITCHD_STOP("[SYSTEM_DPDK_ALLOWED_LOGS]")
> > > +OVS_VSWITCHD_STOP("m4_join([], [SYSTEM_DPDK_ALLOWED_LOGS], [
> > > +\@upcall: datapath reached the dynamic limit of .* flows.@d
> > > +\@received packet on unknown port .* on bridge br0 while
> > > +processing@d \@upcall_cb failure: ukey installation fails@d
> > > +])")
> > >  AT_CLEANUP
> > >  dnl
> > > --------------------------------------------------------------------
> > > --
> > > ----
> > >
> > > @@ -258,7 +263,7 @@ dnl Add standard DPDK PHY port
> AT_SETUP([OVS-
> > DPDK
> > > - MFEX Autovalidator Fuzzy])
> > >  AT_KEYWORDS([dpdk])
> > >  AT_SKIP_IF([! $PYTHON3 -c "import scapy"], [], [])
> > > -AT_CHECK([$PYTHON3 $srcdir/mfex_fuzzy.py $srcdir], [], [stdout])
> > > +AT_CHECK([$PYTHON3 $srcdir/mfex_fuzzy.py $srcdir 2000 fuzzy], [],
> > > +[stdout])
> > >  OVS_DPDK_START()
> > >
> > >  dnl Add userspace bridge and attach it to OVS @@ -277,12 +282,14 @@
> > > AT_CHECK([ovs-appctl dpif-netdev/miniflow-parser- set
> > > autovalidator], [0], [dnl  Miniflow extract implementation set to
> autovalidator.
> > >  ])
> > >
> > > -OVS_WAIT_UNTIL([test `ovs-vsctl get interface p1 statistics | grep
> > > -oP 'rx_packets=\s*\K\d+'` -ge 100000])
> > > +OVS_WAIT_UNTIL([test `ovs-vsctl get interface p1 statistics | grep
> > > +-oP
> > > 'rx_packets=\s*\K\d+'` -ge 16000])
> > >
> > >  dnl Clean up
> > >  AT_CHECK([ovs-vsctl del-port br0 p1], [], [stdout], [stderr])
> > > OVS_VSWITCHD_STOP("m4_join([], [SYSTEM_DPDK_ALLOWED_LOGS], [
> > >  \@upcall: datapath reached the dynamic limit of .* flows.@d
> > > +\@received packet on unknown port .* on bridge br0 while
> > > +processing@d \@upcall_cb failure: ukey installation fails@d
> > >  ])")
> > >  AT_CLEANUP
> > >  dnl
> > > --------------------------------------------------------------------
> > > --
> > > ---- @@ -290,11 +297,13 @@ dnl
> > > -------------------------------------------------------------
> > > -------------
> > >  dnl
> > > --------------------------------------------------------------------
> > > --
> > > ----  AT_SETUP([OVS-DPDK - MFEX Configuration])
> > >  AT_KEYWORDS([dpdk])
> > > +AT_SKIP_IF([! $PYTHON3 -c "import scapy"], [], [])
> > > +AT_CHECK([$PYTHON3 $srcdir/mfex_fuzzy.py $srcdir 1 fuzzy], [],
> > > +[stdout])
> > >  OVS_DPDK_START()
> > >  AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch .
> > > other_config:pmd-cpu-
> > > mask=0xC])
> > >  dnl Add userspace bridge and attach it to OVS  AT_CHECK([ovs-vsctl
> > > add-br br0 -- set bridge br0 datapath_type=netdev])
> > > -AT_CHECK([ovs-vsctl add-port br0 p1 -- set Interface p1 type=dpdk
> > > options:dpdk-
> > > devargs=net_pcap1,rx_pcap=$srcdir/pcap/mfex_test.pcap,infinite_rx=1]
> > > ,
> > > [], [stdout], [stderr])
> > > +AT_CHECK([ovs-vsctl add-port br0 p1 -- set Interface p1 type=dpdk
> > > options:dpdk-
> > > devargs=net_pcap1,rx_pcap=$srcdir/pcap/fuzzy.pcap,infinite_rx=1],
> > > [], [stdout],
> > > [stderr])
> > >  AT_CHECK([ovs-vsctl show], [], [stdout])
> > >
> > >  AT_CHECK([ovs-appctl dpif-netdev/miniflow-parser-set scalar 1],
> > > [2],
> > > --
> > > 2.25.1
> >

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to