# OVS_DPDK_PRE_CHECK() # # Check prerequisites for DPDK tests. Following settings are checked: # - Hugepages # m4_define([OVS_DPDK_PRE_CHECK], [dnl Check Hugepages AT_CHECK([cat /proc/meminfo], [], [stdout]) AT_SKIP_IF([grep -E 'HugePages_Free: *0' stdout], [], [stdout]) 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_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_SKIP_IF([ ! test -s PCI_ADDR ]) ]) # OVS_DPDK_START() # # Start ovsdb-server. Set dpdk-init to initialize DPDK. Start ovs-vswitchd. # m4_define([OVS_DPDK_START], [dnl start ovs dpdk OVS_DPDK_START_OVSDB() dnl Enable DPDK functionality AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true]) OVS_DPDK_START_VSWITCHD() ]) # OVS_DPDK_START_OVSDB() # # Create an empty database and start ovsdb-server. # m4_define([OVS_DPDK_START_OVSDB], [dnl Create database. AT_CHECK([touch .conf.db.~lock~]) AT_CHECK([ovsdb-tool create conf.db $abs_top_srcdir/vswitchd/vswitch.ovsschema]) dnl Start ovsdb-server. AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --log-file --remote=punix:$OVS_RUNDIR/db.sock], [0], [stdout], [stderr]) on_exit "kill `cat ovsdb-server.pid`" AT_CHECK([[sed < stderr ' /vlog|INFO|opened log file/d /ovsdb_server|INFO|ovsdb-server (Open vSwitch)/d']]) AT_CAPTURE_FILE([ovsdb-server.log]) dnl Initialize database. AT_CHECK([ovs-vsctl --no-wait init]) ]) # OVS_DPDK_START_VSWITCHD() # # Add special configuration for dpdk-init. Start ovs-vswitchd. # m4_define([OVS_DPDK_START_VSWITCHD], [dnl Change DPDK drivers log levels so that tests only catch errors AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-extra=--log-level=pmd.*:error]) dnl Start ovs-vswitchd. AT_CHECK([ovs-vswitchd --detach --no-chdir --pidfile --log-file -vvconn -vofproto_dpif -vunixctl], [0], [stdout], [stderr]) AT_CAPTURE_FILE([ovs-vswitchd.log]) on_exit "kill_ovs_vswitchd `cat ovs-vswitchd.pid`" ])