The mfex pcap generation script is improved for varied length traffic and also removes the hard coded mfex_pcap instead uses the script to generate complex traffic for testing.
Signed-off-by: Kumar Amber <kumar.am...@intel.com> --- tests/automake.mk | 1 - tests/mfex_fuzzy.py | 57 +++++++++++++++++++++++++------------- tests/pcap/mfex_test.pcap | Bin 416 -> 0 bytes tests/system-dpdk.at | 23 ++++++++++----- 4 files changed, 54 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..d2314d003 100755 --- a/tests/mfex_fuzzy.py +++ b/tests/mfex_fuzzy.py @@ -3,30 +3,49 @@ 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 path = str(sys.argv[1]) + "/pcap/fuzzy.pcap" +size = int(sys.argv[2]) +traffic_opt = str(sys.argv[3]) + pktdump = PcapWriter(path, append=False, sync=True) -for i in range(0, 2000): +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)) + tcp = TCP(dport=RandShort(), sport=RandShort(), flags='S', dataofs=(0, 20)) + + if traffic_opt == "fuzzy": + + ipv4 = IP(src=RandIP(), dst=RandIP()) + ipv6 = IPv6(src=RandIP6(), dst=RandIP6()) + # 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)) + + else: + + ipv4 = IP(src=RandIP(), dst=RandIP(), len=random.randint(0, 100)) + ipv6 = IPv6(src=RandIP6(), dst=RandIP6(), plen=random.randint(0, 100)) + # IPv4 packets + pktdump.write(eth / ipv4 / udp) + pktdump.write(eth / ipv4 / tcp) + pktdump.write(eth / vlan / ipv4 / udp) + pktdump.write(eth / vlan / ipv4 / tcp) + + # IPv6 packets + pktdump.write(eth / ipv6 / udp) + pktdump.write(eth / ipv6 / tcp) + pktdump.write(eth / vlan / ipv6 / udp) + pktdump.write(eth / vlan / ipv6 / tcp) diff --git a/tests/pcap/mfex_test.pcap b/tests/pcap/mfex_test.pcap deleted file mode 100644 index 1aac67b8d643ecb016c758cba4cc32212a80f52a..0000000000000000000000000000000000000000 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*<ZrSM6Ufz 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 d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev