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 <kumar.am...@intel.com>
Acked-by: Cian Ferriter <cian.ferri...@intel.com>

---
 tests/automake.mk         |   1 -
 tests/mfex_fuzzy.py       |  66 +++++++++++++++++++++++++++-----------
 tests/pcap/mfex_test.pcap | Bin 416 -> 0 bytes
 tests/system-dpdk.at      |  27 ++++++++++++----
 4 files changed, 67 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..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..1b851cc89 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,18 @@ 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
+\@Unreasonably long .* poll interval@d
+\@context switches: .* voluntary, .* involuntary@d
+\@faults: .* minor, .* major@d
+\@upcall_cb failure: ukey installation fails@d
 ])")
 AT_CLEANUP
 dnl --------------------------------------------------------------------------
@@ -290,11 +301,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

Reply via email to