summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKumar Amber <kumar.amber@intel.com>2022-05-26 17:25:26 +0530
committerIan Stokes <ian.stokes@intel.com>2022-06-30 17:56:57 +0100
commite72b05686de13d5b0a13500a486e5373f4846a66 (patch)
tree8b2c558296bfc9acbcc487358f552e77e96e92c8 /tests
parent6f24c2bc769afde0a390ce344de1a7d9c592e5a6 (diff)
downloadopenvswitch-e72b05686de13d5b0a13500a486e5373f4846a66.tar.gz
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 <kumar.amber@intel.com> Acked-by: Cian Ferriter <cian.ferriter@intel.com> Acked-by: Eelco Chaudron <echaudro@redhat.com> Signed-off-by: Ian Stokes <ian.stokes@intel.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/automake.mk1
-rwxr-xr-xtests/mfex_fuzzy.py92
-rw-r--r--tests/pcap/mfex_test.pcapbin416 -> 0 bytes
-rw-r--r--tests/system-dpdk.at52
4 files changed, 97 insertions, 48 deletions
diff --git a/tests/automake.mk b/tests/automake.mk
index 261fbb942..b29cb783e 100644
--- a/tests/automake.mk
+++ b/tests/automake.mk
@@ -146,7 +146,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..ee2183f8e 100755
--- a/tests/mfex_fuzzy.py
+++ b/tests/mfex_fuzzy.py
@@ -3,30 +3,74 @@
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 for the pcap file location.
+path = str(sys.argv[1])
+# 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.
+if len(sys.argv) > 3:
+ traffic_opt = str(sys.argv[3])
+else:
+ traffic_opt = ""
-path = str(sys.argv[1]) + "/pcap/fuzzy.pcap"
pktdump = PcapWriter(path, append=False, sync=True)
-for i in range(0, 2000):
-
- # 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))
+pkt = []
+
+for i in range(0, size):
+ if traffic_opt == "fuzzy":
+
+ eth = Ether(src=RandMAC(), dst=RandMAC())
+ vlan = Dot1Q()
+ udp = UDP(dport=RandShort(), sport=RandShort())
+ 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, 15))
+
+ # 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:
+ mac_addr_src = "52:54:00:FF:FF:{:02X}".format(i % 0xff)
+ mac_addr_dst = "80:FF:FF:FF:FF:{:02X}".format(i % 0xff)
+ src_port = 200 + (i % 20)
+ dst_port = 1000 + (i % 20)
+ eth = Ether(src=mac_addr_src, dst=mac_addr_dst)
+ vlan = Dot1Q(vlan=(i % 10))
+ udp = UDP(dport=src_port, sport=dst_port)
+ # IPv4 address range limits to 255 and IPv6 limit to 65535
+ ipv4_addr_src = "192.168.150." + str((i % 255))
+ ipv4_addr_dst = "200.100.198." + str((i % 255))
+ ipv6_addr_src = "2001:0db8:85a3:0000:0000:8a2e:0370:{:04x}" \
+ .format(i % 0xffff)
+ ipv6_addr_dst = "3021:ffff:85a3:ffff:0000:8a2e:0480:{:04x}" \
+ .format(i % 0xffff)
+ ipv4 = IP(src=ipv4_addr_src, dst=ipv4_addr_dst)
+ ipv6 = IPv6(src=ipv6_addr_src, dst=ipv6_addr_dst)
+ tcp = TCP(dport=src_port, sport=dst_port, 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 1aac67b8d..000000000
--- a/tests/pcap/mfex_test.pcap
+++ /dev/null
Binary files differ
diff --git a/tests/system-dpdk.at b/tests/system-dpdk.at
index b036580de..ea2f3509b 100644
--- a/tests/system-dpdk.at
+++ b/tests/system-dpdk.at
@@ -388,17 +388,19 @@ dnl --------------------------------------------------------------------------
dnl Add standard DPDK PHY port
AT_SETUP([OVS-DPDK - MFEX Autovalidator])
AT_KEYWORDS([dpdk])
-
+OVS_DPDK_PRE_CHECK()
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 show], [], [stdout])
-
AT_SKIP_IF([! ovs-appctl dpif-netdev/miniflow-parser-get | sed 1,4d | grep "True"], [], [dnl
])
+AT_SKIP_IF([! $PYTHON3 -c "import scapy"], [], [])
+AT_CHECK([$PYTHON3 $srcdir/mfex_fuzzy.py test_traffic.pcap 2000], [], [stdout])
+
+dnl Add userspace bridge and attach it to OVS
+AT_CHECK([ovs-vsctl add-port br0 p1 -- set Interface p1 type=dpdk options:dpdk-devargs=net_pcap1,rx_pcap=test_traffic.pcap,infinite_rx=1], [], [stdout], [stderr])
+AT_CHECK([ovs-vsctl show], [], [stdout])
+
AT_CHECK([ovs-appctl dpif-netdev/dpif-impl-set dpif_avx512], [0], [dnl
DPIF implementation set to dpif_avx512.
])
@@ -407,7 +409,7 @@ 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])
@@ -419,18 +421,19 @@ dnl --------------------------------------------------------------------------
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])
+OVS_DPDK_PRE_CHECK()
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/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
])
+AT_SKIP_IF([! $PYTHON3 -c "import scapy"], [], [])
+AT_CHECK([$PYTHON3 $srcdir/mfex_fuzzy.py fuzzy.pcap 2000 fuzzy], [], [stdout])
+
+dnl Add userspace bridge and attach it to OVS
+AT_CHECK([ovs-vsctl add-port br0 p1 -- set Interface p1 type=dpdk options:dpdk-devargs=net_pcap1,rx_pcap=fuzzy.pcap,infinite_rx=1], [], [stdout], [stderr])
+AT_CHECK([ovs-vsctl show], [], [stdout])
+
AT_CHECK([ovs-appctl dpif-netdev/dpif-impl-set dpif_avx512], [0], [dnl
DPIF implementation set to dpif_avx512.
])
@@ -439,7 +442,7 @@ 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])
@@ -452,11 +455,14 @@ dnl --------------------------------------------------------------------------
dnl --------------------------------------------------------------------------
AT_SETUP([OVS-DPDK - MFEX Configuration])
AT_KEYWORDS([dpdk])
+OVS_DPDK_PRE_CHECK()
+AT_SKIP_IF([! $PYTHON3 -c "import scapy"], [], [])
+AT_CHECK([$PYTHON3 $srcdir/mfex_fuzzy.py test_traffic.pcap 1], [], [stdout])
OVS_DPDK_START()
-AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . other_config:pmd-cpu-mask=0xC])
+AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . other_config:pmd-cpu-mask=0x1])
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=test_traffic.pcap,infinite_rx=1], [], [stdout], [stderr])
AT_CHECK([ovs-vsctl show], [], [stdout])
AT_CHECK([ovs-appctl dpif-netdev/miniflow-parser-set scalar 1], [2],
@@ -501,12 +507,12 @@ Error: invalid study_pkt_cnt value: abcd.
ovs-appctl: ovs-vswitchd: server returned an error
])
-AT_CHECK([ovs-appctl dpif-netdev/miniflow-parser-set -pmd 3 study], [0], [dnl
-Miniflow extract implementation set to study, on pmd thread 3, studying 128 packets.
+AT_CHECK([ovs-appctl dpif-netdev/miniflow-parser-set -pmd 0 study], [0], [dnl
+Miniflow extract implementation set to study, on pmd thread 0, studying 128 packets.
])
-AT_CHECK([ovs-appctl dpif-netdev/miniflow-parser-set -pmd 3 study 512], [0], [dnl
-Miniflow extract implementation set to study, on pmd thread 3, studying 512 packets.
+AT_CHECK([ovs-appctl dpif-netdev/miniflow-parser-set -pmd 0 study 512], [0], [dnl
+Miniflow extract implementation set to study, on pmd thread 0, studying 512 packets.
])
AT_CHECK([ovs-appctl dpif-netdev/miniflow-parser-set study 512], [0], [dnl
@@ -517,8 +523,8 @@ AT_CHECK([ovs-appctl dpif-netdev/miniflow-parser-set study], [0], [dnl
Miniflow extract implementation set to study, studying 128 packets.
])
-AT_CHECK([ovs-appctl dpif-netdev/miniflow-parser-set -pmd 3 autovalidator], [0], [dnl
-Miniflow extract implementation set to autovalidator, on pmd thread 3.
+AT_CHECK([ovs-appctl dpif-netdev/miniflow-parser-set -pmd 0 autovalidator], [0], [dnl
+Miniflow extract implementation set to autovalidator, on pmd thread 0.
])
AT_CHECK([ovs-appctl dpif-netdev/miniflow-parser-set -pmd zero study], [2],