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
