Skip to content

Commit

Permalink
system-dpdk: Update test suite for non-phy testing
Browse files Browse the repository at this point in the history
This allows a system that doesn't have a dedicated DPDK nic to
execute some DPDK tests.  In this fashion, tests that operate on
virtual ports (such as dpdkvhostuserclient) can be executed in
a wider set of environments.

Signed-off-by: Aaron Conole <aconole@redhat.com>
Co-authored-by: Bala Sankaran <bsankara@redhat.com>
Signed-off-by: Bala Sankaran <bsankara@redhat.com>
Signed-off-by: Ian Stokes <ian.stokes@intel.com>
  • Loading branch information
2 people authored and istokes committed Oct 12, 2018
1 parent 6794be1 commit a01786b
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 14 deletions.
8 changes: 5 additions & 3 deletions Documentation/topics/testing.rst
Expand Up @@ -314,9 +314,11 @@ To see a list of all the available tests, run::

# make check-dpdk TESTSUITEFLAGS=--list

These tests require a `DPDK supported NIC`_ and proper DPDK variables
(``DPDK_DIR`` and ``DPDK_BUILD``). Moreover you need to have root privileges,
load the required modules and bind the NIC to the DPDK-compatible driver.
These tests support a `DPDK supported NIC`_. The tests operate on a wider set of
environments, for instance, when a virtual port is used.
They do require proper DPDK variables (``DPDK_DIR`` and ``DPDK_BUILD``).
Moreover you need to have root privileges to load the required modules and to bind
the NIC to the DPDK-compatible driver.

.. _DPDK supported NIC: http://dpdk.org/doc/nics

Expand Down
18 changes: 15 additions & 3 deletions tests/system-dpdk-macros.at
Expand Up @@ -2,7 +2,6 @@
#
# Check prerequisites for DPDK tests. Following settings are checked:
# - Hugepages
# - UIO driver
#
m4_define([OVS_DPDK_PRE_CHECK],
[dnl Check Hugepages
Expand All @@ -11,13 +10,26 @@ m4_define([OVS_DPDK_PRE_CHECK],
AT_CHECK([mount], [], [stdout])
AT_CHECK([grep 'hugetlbfs' stdout], [], [stdout], [])

])


# OVS_DPDK_PRE_PHY_SKIP()
#
# Skip any phy related tests if the PHY variable is not set.
# This is done by checking for a bound driver.
#
m4_define([OVS_DPDK_PRE_PHY_SKIP],
[dnl Perform the precheck
OVS_DPDK_PRE_CHECK()

dnl Check if VFIO or UIO driver is loaded
AT_CHECK([lsmod | grep -E "igb_uio|vfio"], [], [stdout])
AT_SKIP_IF([ ! (lsmod | grep -E "igb_uio|vfio") ], [], [stdout])

dnl Find PCI address candidate, skip if there is no DPDK-compatible NIC
AT_CHECK([$DPDK_DIR/usertools/dpdk-devbind.py -s | head -n +4 | tail -1], [], [stdout])
AT_CHECK([cat stdout | cut -d" " -s -f1 > PCI_ADDR])
AT_CHECK([test -s PCI_ADDR || exit 77])
AT_SKIP_IF([ ! test -s PCI_ADDR ])

])


Expand Down
16 changes: 8 additions & 8 deletions tests/system-dpdk.at
Expand Up @@ -4,14 +4,14 @@ dnl --------------------------------------------------------------------------
dnl Check if EAL init is successfull
AT_SETUP([OVS-DPDK datapath - EAL init])
AT_KEYWORDS([dpdk])
dnl OVS_DPDK_PRE_CHECK()
OVS_DPDK_PRE_CHECK()
OVS_DPDK_START()
AT_CHECK([grep "DPDK Enabled - initializing..." ovs-vswitchd.log], [], [stdout])
AT_CHECK([grep "EAL" ovs-vswitchd.log], [], [stdout])
AT_CHECK([grep "DPDK Enabled - initialized" ovs-vswitchd.log], [], [stdout])
OVS_VSWITCHD_STOP("/Global register is changed during/d
/EAL: No free hugepages reported in hugepages-1048576kB/d
")
OVS_VSWITCHD_STOP(["/Global register is changed during/d
/EAL: Invalid NUMA socket, default to 0/d
/EAL: No free hugepages reported in hugepages-1048576kB/d"])
AT_CLEANUP
dnl --------------------------------------------------------------------------

Expand All @@ -22,7 +22,7 @@ dnl Add standard DPDK PHY port
AT_SETUP([OVS-DPDK datapath - add standard DPDK port])
AT_KEYWORDS([dpdk])

OVS_DPDK_PRE_CHECK()
OVS_DPDK_PRE_PHY_SKIP()
OVS_DPDK_START()

dnl Add userspace bridge and attach it to OVS
Expand Down Expand Up @@ -63,11 +63,11 @@ AT_CHECK([grep "VHOST_CONFIG: /tmp/dpdkvhostclient0: reconnecting..." ovs-vswitc

dnl Clean up
AT_CHECK([ovs-vsctl del-port br10 dpdkvhostuserclient0], [], [stdout], [stderr])
OVS_VSWITCHD_STOP("/does not exist. The Open vSwitch kernel module is probably not loaded./d
OVS_VSWITCHD_STOP(["/does not exist. The Open vSwitch kernel module is probably not loaded./d
/Failed to enable flow control/d
/failed to connect to \/tmp\/dpdkvhostclient0: No such file or directory/d
/Global register is changed during/d
/EAL: No free hugepages reported in hugepages-1048576kB/d
")
/EAL: Invalid NUMA socket, default to 0/d
/EAL: No free hugepages reported in hugepages-1048576kB/d"])
AT_CLEANUP
dnl --------------------------------------------------------------------------

0 comments on commit a01786b

Please sign in to comment.