Message ID | 1453919833-19364-1-git-send-email-mike.holmes@linaro.org |
---|---|
State | New |
Headers | show |
This applies and builds OK, however when I try to run these tests I see this: bill@Ubuntu15:~/linaro/mikedoc/platform/linux-generic/test/validation/pktio$ ls Makefile Makefile.in pktio_run pktio_run_tap Makefile.am pktio_env pktio_run_pcap bill@Ubuntu15:~/linaro/mikedoc/platform/linux-generic/test/validation/pktio$ ./pktio_run_pcap cannot find pktio_main: please set you PATH for it. ./pktio_run_pcap: 30: ./pktio_run_pcap: pktio_main: not found So it looks like the make didn't build them. I ran with ./configure --enable-cunit-support --enable-user-guides Did I miss something? On Wed, Jan 27, 2016 at 12:37 PM, Mike Holmes <mike.holmes@linaro.org> wrote: > Simplify adding platform performance tests by mirroring the test directory > structure and moving the validation tests to their own directory. > > Signed-off-by: Mike Holmes <mike.holmes@linaro.org> > --- > platform/linux-generic/m4/configure.m4 | 3 +- > platform/linux-generic/test/Makefile.am | 51 +-------- > platform/linux-generic/test/pktio/.gitignore | 2 - > platform/linux-generic/test/pktio/Makefile.am | 9 -- > platform/linux-generic/test/pktio/pktio_env | 120 > --------------------- > platform/linux-generic/test/pktio/pktio_run | 110 > ------------------- > platform/linux-generic/test/pktio/pktio_run_pcap | 33 ------ > platform/linux-generic/test/pktio/pktio_run_tap | 115 > -------------------- > platform/linux-generic/test/validation/Makefile.am | 44 ++++++++ > .../linux-generic/test/validation/pktio/.gitignore | 2 + > .../test/validation/pktio/Makefile.am | 9 ++ > .../linux-generic/test/validation/pktio/pktio_env | 120 > +++++++++++++++++++++ > .../linux-generic/test/validation/pktio/pktio_run | 110 > +++++++++++++++++++ > .../test/validation/pktio/pktio_run_pcap | 33 ++++++ > .../test/validation/pktio/pktio_run_tap | 115 > ++++++++++++++++++++ > test/performance/odp_l2fwd_run | 6 +- > 16 files changed, 442 insertions(+), 440 deletions(-) > delete mode 100644 platform/linux-generic/test/pktio/.gitignore > delete mode 100644 platform/linux-generic/test/pktio/Makefile.am > delete mode 100644 platform/linux-generic/test/pktio/pktio_env > delete mode 100755 platform/linux-generic/test/pktio/pktio_run > delete mode 100755 platform/linux-generic/test/pktio/pktio_run_pcap > delete mode 100755 platform/linux-generic/test/pktio/pktio_run_tap > create mode 100644 platform/linux-generic/test/validation/Makefile.am > create mode 100644 platform/linux-generic/test/validation/pktio/.gitignore > create mode 100644 > platform/linux-generic/test/validation/pktio/Makefile.am > create mode 100644 platform/linux-generic/test/validation/pktio/pktio_env > create mode 100755 platform/linux-generic/test/validation/pktio/pktio_run > create mode 100755 > platform/linux-generic/test/validation/pktio/pktio_run_pcap > create mode 100755 > platform/linux-generic/test/validation/pktio/pktio_run_tap > > diff --git a/platform/linux-generic/m4/configure.m4 > b/platform/linux-generic/m4/configure.m4 > index df6dc64..97c15fa 100644 > --- a/platform/linux-generic/m4/configure.m4 > +++ b/platform/linux-generic/m4/configure.m4 > @@ -23,4 +23,5 @@ m4_include([platform/linux-generic/m4/odp_pcap.m4]) > > AC_CONFIG_FILES([platform/linux-generic/Makefile > platform/linux-generic/test/Makefile > - platform/linux-generic/test/pktio/Makefile]) > + platform/linux-generic/test/validation/Makefile > + platform/linux-generic/test/validation/pktio/Makefile]) > diff --git a/platform/linux-generic/test/Makefile.am > b/platform/linux-generic/test/Makefile.am > index e629872..3cf638d 100644 > --- a/platform/linux-generic/test/Makefile.am > +++ b/platform/linux-generic/test/Makefile.am > @@ -1,56 +1,13 @@ > -include $(top_srcdir)/test/Makefile.inc > -TESTS_ENVIRONMENT += TEST_DIR=${top_builddir}/test/validation > - > -ODP_MODULES = pktio > +SUBDIRS = > > if test_vald > -TESTS = pktio/pktio_run \ > - pktio/pktio_run_tap \ > - ${top_builddir}/test/validation/buffer/buffer_main$(EXEEXT) \ > - > ${top_builddir}/test/validation/classification/classification_main$(EXEEXT) > \ > - ${top_builddir}/test/validation/config/config_main$(EXEEXT) \ > - ${top_builddir}/test/validation/cpumask/cpumask_main$(EXEEXT) \ > - ${top_builddir}/test/validation/crypto/crypto_main$(EXEEXT) \ > - ${top_builddir}/test/validation/errno/errno_main$(EXEEXT) \ > - ${top_builddir}/test/validation/hash/hash_main$(EXEEXT) \ > - ${top_builddir}/test/validation/init/init_main_ok$(EXEEXT) \ > - ${top_builddir}/test/validation/init/init_main_abort$(EXEEXT) \ > - ${top_builddir}/test/validation/init/init_main_log$(EXEEXT) \ > - ${top_builddir}/test/validation/packet/packet_main$(EXEEXT) \ > - ${top_builddir}/test/validation/pool/pool_main$(EXEEXT) \ > - ${top_builddir}/test/validation/queue/queue_main$(EXEEXT) \ > - ${top_builddir}/test/validation/random/random_main$(EXEEXT) \ > - ${top_builddir}/test/validation/scheduler/scheduler_main$(EXEEXT) \ > - ${top_builddir}/test/validation/std_clib/std_clib_main$(EXEEXT) \ > - > ${top_builddir}/test/validation/synchronizers/synchronizers_main$(EXEEXT) \ > - ${top_builddir}/test/validation/thread/thread_main$(EXEEXT) \ > - ${top_builddir}/test/validation/time/time_main$(EXEEXT) \ > - ${top_builddir}/test/validation/timer/timer_main$(EXEEXT) \ > - ${top_builddir}/test/validation/shmem/shmem_main$(EXEEXT) \ > - ${top_builddir}/test/validation/system/system_main$(EXEEXT) > - > -SUBDIRS = $(ODP_MODULES) > - > -if HAVE_PCAP > -TESTS += pktio/pktio_run_pcap > +SUBDIRS += validation > endif > -endif > - > -dist_check_SCRIPTS = run-test tests-validation.env $(LOG_COMPILER) > - > -test_SCRIPTS = $(dist_check_SCRIPTS) > - > -tests-validation.env: > - echo "TESTS=\"$(TESTS)\"" > $@ > - echo "$(TESTS_ENVIRONMENT)" >> $@ > - echo "$(LOG_COMPILER)" >> $@ > > if test_installdir > installcheck-local: > $(DESTDIR)/$(testdir)/run-test > endif > > -#performance tests refer to pktio_env > -if test_perf > -SUBDIRS = pktio > -endif > +dist_check_SCRIPTS = run-test $(LOG_COMPILER) > +test_SCRIPTS = $(dist_check_SCRIPTS) > \ No newline at end of file > diff --git a/platform/linux-generic/test/pktio/.gitignore > b/platform/linux-generic/test/pktio/.gitignore > deleted file mode 100644 > index 7e563b8..0000000 > --- a/platform/linux-generic/test/pktio/.gitignore > +++ /dev/null > @@ -1,2 +0,0 @@ > -*.log > -*.trs > diff --git a/platform/linux-generic/test/pktio/Makefile.am > b/platform/linux-generic/test/pktio/Makefile.am > deleted file mode 100644 > index ea0ad87..0000000 > --- a/platform/linux-generic/test/pktio/Makefile.am > +++ /dev/null > @@ -1,9 +0,0 @@ > -dist_check_SCRIPTS = pktio_env \ > - pktio_run \ > - pktio_run_tap > - > -if HAVE_PCAP > -dist_check_SCRIPTS += pktio_run_pcap > -endif > - > -test_SCRIPTS = $(dist_check_SCRIPTS) > diff --git a/platform/linux-generic/test/pktio/pktio_env > b/platform/linux-generic/test/pktio/pktio_env > deleted file mode 100644 > index 345b5bd..0000000 > --- a/platform/linux-generic/test/pktio/pktio_env > +++ /dev/null > @@ -1,120 +0,0 @@ > -#!/bin/sh > -# > -# Copyright (c) 2015, Linaro Limited > -# All rights reserved. > -# > -# SPDX-License-Identifier: BSD-3-Clause > -# > -# Test script wrapper for running ODP pktio apps on linux-generic. > -# > -# For linux-generic the default behavior is to create two pairs of > -# virtual Ethernet interfaces and provide the names of these via > -# environment variables to pktio apps, the interfaces will be removed > -# before the script exits. > -# > -# Note that the creation of virtual Ethernet devices depends on having > -# CONFIG_VETH enabled in the kernel, if not enabled the env setup will be > skipped. > -# > -# Network set up > -# IF0 <---> IF1 > -# IF2 <---> IF3 > -IF0=pktiop0p1 > -IF1=pktiop1p0 > -IF2=pktiop2p3 > -IF3=pktiop3p2 > - > -if [ "$0" = "$BASH_SOURCE" ]; then > - echo "Error: Platform specific env file has to be sourced." > -fi > - > -check_for_root() > -{ > - if [ "$(id -u)" != "0" ]; then > - echo "check_for_root(): need to be root to setup VETH" > - return 1 > - fi > - return 0 > -} > - > -# wait for a network interface's operational state to be "up" > -wait_for_iface_up() > -{ > - iface=$1 > - cnt=0 > - > - while [ $cnt -lt 50 ]; do > - read operstate < /sys/class/net/$iface/operstate > - > - if [ $? -ne 0 ]; then > - break > - elif [ "$operstate" = "up" ]; then > - return 0 > - fi > - > - sleep 0.1 > - cnt=`expr $cnt + 1` > - done > - > - return 1 > -} > - > -setup_pktio_env() > -{ > - echo "pktio: setting up test interfaces $IF0, $IF1, $IF2, $IF3." > - > - check_for_root > - if [ $? -ne 0 ]; then > - return 1 > - fi > - > - for iface in $IF0 $IF1 $IF2 $IF3; do > - ip link show $iface 2> /dev/null > - if [ $? -eq 0 ]; then > - echo "pktio: interface $iface already exist $?" > - return 2 > - fi > - done > - > - if [ "$1" = "clean" ]; then > - trap cleanup_pktio_env EXIT > - fi > - > - ip link add $IF0 type veth peer name $IF1 > - if [ $? -ne 0 ]; then > - echo "pktio: error: unable to create veth pair" > - return 3 > - fi > - ip link add $IF2 type veth peer name $IF3 > - if [ $? -ne 0 ]; then > - echo "pktio: error: unable to create veth pair" > - return 4 > - fi > - > - for iface in $IF0 $IF1 $IF2 $IF3; do > - ip link set $iface mtu 9216 up > - ifconfig $iface -arp > - done > - > - # check that the interface has come up before starting the test > - for iface in $IF0 $IF1 $IF2 $IF3; do > - wait_for_iface_up $iface > - if [ $? -ne 0 ]; then > - echo "pktio: interface $iface failed to come up" > - return 5 > - fi > - done > -} > - > -cleanup_pktio_env() > -{ > - echo "pktio: removing test interfaces $IF0, $IF1, $IF2, $IF3" > - check_for_root > - if [ $? -ne 0 ]; then > - return 1 > - fi > - > - for iface in $IF0 $IF1 $IF2 $IF3; do > - ip link del $iface 2> /dev/null > - done > - return 0 > -} > diff --git a/platform/linux-generic/test/pktio/pktio_run > b/platform/linux-generic/test/pktio/pktio_run > deleted file mode 100755 > index 7029ab2..0000000 > --- a/platform/linux-generic/test/pktio/pktio_run > +++ /dev/null > @@ -1,110 +0,0 @@ > -#!/bin/sh > -# > -# Copyright (c) 2015, Linaro Limited > -# All rights reserved. > -# > -# SPDX-License-Identifier: BSD-3-Clause > -# > - > -# directories where pktio_main binary can be found: > -# -in the validation dir when running make check (intree or out of tree) > -# -in the script directory, when running after 'make install', or > -# -in the validation when running standalone (./pktio_run) intree. > -# -in the current directory. > -# running stand alone out of tree requires setting PATH > -PATH=${TEST_DIR}/pktio:$PATH > -PATH=$(dirname $0):$PATH > -PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH > -PATH=.:$PATH > - > -pktio_main_path=$(which pktio_main${EXEEXT}) > -if [ -x "$pktio_main_path" ] ; then > - echo "running with pktio_main: $pktio_run_path" > -else > - echo "cannot find pktio_main: please set you PATH for it." > -fi > - > -# directory where platform test sources are, including scripts > -TEST_SRC_DIR=$(dirname $0) > - > -# exit codes expected by automake for skipped tests > -TEST_SKIPPED=77 > - > -# Use installed pktio env or for make check take it from platform > directory > -if [ -f "./pktio_env" ]; then > - . ./pktio_env > -elif [ -f ${TEST_SRC_DIR}/pktio_env ]; then > - . ${TEST_SRC_DIR}/pktio_env > -else > - echo "BUG: unable to find pktio_env!" > - echo "pktio_env has to be in current directory or in > platform/\$ODP_PLATFORM/test." > - echo "ODP_PLATFORM=\"$ODP_PLATFORM\"" > - exit 1 > -fi > - > -run_test() > -{ > - local ret=0 > - > - # environment variables are used to control which socket method is > - # used, so try each combination to ensure decent coverage. > - for distype in MMAP MMSG; do > - unset ODP_PKTIO_DISABLE_SOCKET_${distype} > - done > - > - # this script doesn't support testing with netmap > - export ODP_PKTIO_DISABLE_NETMAP=y > - > - for distype in SKIP MMAP; do > - if [ "$disabletype" != "SKIP" ]; then > - export ODP_PKTIO_DISABLE_SOCKET_${distype}=y > - fi > - pktio_main${EXEEXT} > - if [ $? -ne 0 ]; then > - ret=1 > - fi > - done > - > - if [ $ret -ne 0 ]; then > - echo "!!! FAILED !!!" > - fi > - > - return $ret > -} > - > -run() > -{ > - echo "pktio: using 'loop' device" > - pktio_main${EXEEXT} > - loop_ret=$? > - > - # need to be root to run tests with real interfaces > - if [ "$(id -u)" != "0" ]; then > - exit $ret > - fi > - > - if [ "$ODP_PKTIO_IF0" = "" ]; then > - # no interfaces specified, use default veth interfaces > - # setup by the pktio_env script > - setup_pktio_env clean > - if [ $? != 0 ]; then > - echo "Failed to setup test environment, skipping > test." > - exit $TEST_SKIPPED > - fi > - export ODP_PKTIO_IF0=$IF0 > - export ODP_PKTIO_IF1=$IF1 > - fi > - > - run_test > - ret=$? > - > - [ $ret = 0 ] && ret=$loop_ret > - > - exit $ret > -} > - > -case "$1" in > - setup) setup_pktio_env ;; > - cleanup) cleanup_pktio_env ;; > - *) run ;; > -esac > diff --git a/platform/linux-generic/test/pktio/pktio_run_pcap > b/platform/linux-generic/test/pktio/pktio_run_pcap > deleted file mode 100755 > index c130417..0000000 > --- a/platform/linux-generic/test/pktio/pktio_run_pcap > +++ /dev/null > @@ -1,33 +0,0 @@ > -#!/bin/sh > -# > -# Copyright (c) 2015, Linaro Limited > -# All rights reserved. > -# > -# SPDX-License-Identifier: BSD-3-Clause > -# > - > -# directories where pktio_main binary can be found: > -# -in the validation dir when running make check (intree or out of tree) > -# -in the script directory, when running after 'make install', or > -# -in the validation when running standalone intree. > -# -in the current directory. > -# running stand alone out of tree requires setting PATH > -PATH=${TEST_DIR}/pktio:$PATH > -PATH=$(dirname $0):$PATH > -PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH > -PATH=.:$PATH > - > -pktio_main_path=$(which pktio_main${EXEEXT}) > -if [ -x "$pktio_main_path" ] ; then > - echo "running with $pktio_main_path" > -else > - echo "cannot find pktio_main${EXEEXT}: please set you PATH for it." > -fi > - > -PCAP_FNAME=vald.pcap > -export ODP_PKTIO_IF0="pcap:out=${PCAP_FNAME}" > -export ODP_PKTIO_IF1="pcap:in=${PCAP_FNAME}" > -pktio_main${EXEEXT} > -ret=$? > -rm -f ${PCAP_FNAME} > -exit $ret > diff --git a/platform/linux-generic/test/pktio/pktio_run_tap > b/platform/linux-generic/test/pktio/pktio_run_tap > deleted file mode 100755 > index 975da81..0000000 > --- a/platform/linux-generic/test/pktio/pktio_run_tap > +++ /dev/null > @@ -1,115 +0,0 @@ > -#!/bin/sh > -# > -# Copyright (c) 2015, Ilya Maximets <i.maximets@samsung.com> > -# All rights reserved. > -# > -# SPDX-License-Identifier: BSD-3-Clause > -# > - > -# directories where pktio_main binary can be found: > -# -in the validation dir when running make check (intree or out of tree) > -# -in the script directory, when running after 'make install', or > -# -in the validation when running standalone intree. > -# -in the current directory. > -# running stand alone out of tree requires setting PATH > -PATH=${TEST_DIR}/pktio:$PATH > -PATH=$(dirname $0):$PATH > -PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH > -PATH=.:$PATH > - > -pktio_main_path=$(which pktio_main${EXEEXT}) > -if [ -x "$pktio_main_path" ] ; then > - echo "running with $pktio_main_path" > -else > - echo "cannot find pktio_main${EXEEXT}: please set you PATH for it." > -fi > - > -# exit code expected by automake for skipped tests > -TEST_SKIPPED=77 > - > -TAP_BASE_NAME=iotap_vald > -IF0=${TAP_BASE_NAME}0 > -IF1=${TAP_BASE_NAME}1 > -BR=${TAP_BASE_NAME}_br > - > -export ODP_PKTIO_IF0="tap:$IF0" > -export ODP_PKTIO_IF1="tap:$IF1" > - > -tap_cleanup() > -{ > - ret=$? > - > - for iface in $IF0 $IF1; do > - ip link set dev $iface nomaster > - done > - > - ip link delete $BR type bridge > - > - for iface in $IF0 $IF1; do > - ip tuntap del mode tap $iface > - done > - > - trap - EXIT > - exit $ret > -} > - > -tap_setup() > -{ > - if [ "$(id -u)" != "0" ]; then > - echo "pktio: need to be root to setup TAP interfaces." > - return $TEST_SKIPPED > - fi > - > - for iface in $IF0 $IF1 $BR; do > - ip link show $iface 2> /dev/null > - if [ $? -eq 0 ]; then > - echo "pktio: interface $iface already exist $?" > - return 2 > - fi > - done > - > - trap tap_cleanup EXIT > - > - for iface in $IF0 $IF1; do > - ip tuntap add mode tap $iface > - if [ $? -ne 0 ]; then > - echo "pktio: error: unable to create TAP device > $iface" > - return 3 > - fi > - done > - > - ip link add name $BR type bridge > - if [ $? -ne 0 ]; then > - echo "pktio: error: unable to create bridge $BR" > - return 3 > - fi > - > - for iface in $IF0 $IF1; do > - ip link set dev $iface master $BR > - if [ $? -ne 0 ]; then > - echo "pktio: error: unable to add $iface to bridge > $BR" > - return 4 > - fi > - done > - > - for iface in $IF0 $IF1 $BR; do > - ifconfig $iface -arp > - sysctl -w net.ipv6.conf.${iface}.disable_ipv6=1 > - ip link set dev $iface mtu 9216 up > - done > - > - return 0 > -} > - > -tap_setup > -ret=$? > -if [ $ret -ne 0 ]; then > - echo "pktio: tap_setup() FAILED!" > - exit $ret > -fi > - > -# Using ODP_WAIT_FOR_NETWORK to prevent fail if tap still not enabled in > bridge > -ODP_WAIT_FOR_NETWORK=yes pktio_main${EXEEXT} > -ret=$? > - > -exit $ret > diff --git a/platform/linux-generic/test/validation/Makefile.am > b/platform/linux-generic/test/validation/Makefile.am > new file mode 100644 > index 0000000..39c6cdd > --- /dev/null > +++ b/platform/linux-generic/test/validation/Makefile.am > @@ -0,0 +1,44 @@ > +include $(top_srcdir)/test/Makefile.inc > +TESTS_ENVIRONMENT += TEST_DIR=${top_builddir}/test/validation > + > +ODP_MODULES = pktio > + > +TESTS = pktio/pktio_run \ > + pktio/pktio_run_tap \ > + ${top_builddir}/test/validation/buffer/buffer_main$(EXEEXT) \ > + > ${top_builddir}/test/validation/classification/classification_main$(EXEEXT) > \ > + ${top_builddir}/test/validation/config/config_main$(EXEEXT) \ > + ${top_builddir}/test/validation/cpumask/cpumask_main$(EXEEXT) \ > + ${top_builddir}/test/validation/crypto/crypto_main$(EXEEXT) \ > + ${top_builddir}/test/validation/errno/errno_main$(EXEEXT) \ > + ${top_builddir}/test/validation/hash/hash_main$(EXEEXT) \ > + ${top_builddir}/test/validation/init/init_main_ok$(EXEEXT) \ > + ${top_builddir}/test/validation/init/init_main_abort$(EXEEXT) \ > + ${top_builddir}/test/validation/init/init_main_log$(EXEEXT) \ > + ${top_builddir}/test/validation/packet/packet_main$(EXEEXT) \ > + ${top_builddir}/test/validation/pool/pool_main$(EXEEXT) \ > + ${top_builddir}/test/validation/queue/queue_main$(EXEEXT) \ > + ${top_builddir}/test/validation/random/random_main$(EXEEXT) \ > + ${top_builddir}/test/validation/scheduler/scheduler_main$(EXEEXT) \ > + ${top_builddir}/test/validation/std_clib/std_clib_main$(EXEEXT) \ > + > ${top_builddir}/test/validation/synchronizers/synchronizers_main$(EXEEXT) \ > + ${top_builddir}/test/validation/thread/thread_main$(EXEEXT) \ > + ${top_builddir}/test/validation/time/time_main$(EXEEXT) \ > + ${top_builddir}/test/validation/timer/timer_main$(EXEEXT) \ > + ${top_builddir}/test/validation/shmem/shmem_main$(EXEEXT) \ > + ${top_builddir}/test/validation/system/system_main$(EXEEXT) > + > +SUBDIRS = $(ODP_MODULES) > + > +if HAVE_PCAP > +TESTS += pktio/pktio_run_pcap > +endif > + > +dist_check_SCRIPTS = tests-validation.env > + > +test_SCRIPTS = $(dist_check_SCRIPTS) > + > +tests-validation.env: > + echo "TESTS=\"$(TESTS)\"" > $@ > + echo "$(TESTS_ENVIRONMENT)" >> $@ > + echo "$(LOG_COMPILER)" >> $@ > diff --git a/platform/linux-generic/test/validation/pktio/.gitignore > b/platform/linux-generic/test/validation/pktio/.gitignore > new file mode 100644 > index 0000000..7e563b8 > --- /dev/null > +++ b/platform/linux-generic/test/validation/pktio/.gitignore > @@ -0,0 +1,2 @@ > +*.log > +*.trs > diff --git a/platform/linux-generic/test/validation/pktio/Makefile.am > b/platform/linux-generic/test/validation/pktio/Makefile.am > new file mode 100644 > index 0000000..ea0ad87 > --- /dev/null > +++ b/platform/linux-generic/test/validation/pktio/Makefile.am > @@ -0,0 +1,9 @@ > +dist_check_SCRIPTS = pktio_env \ > + pktio_run \ > + pktio_run_tap > + > +if HAVE_PCAP > +dist_check_SCRIPTS += pktio_run_pcap > +endif > + > +test_SCRIPTS = $(dist_check_SCRIPTS) > diff --git a/platform/linux-generic/test/validation/pktio/pktio_env > b/platform/linux-generic/test/validation/pktio/pktio_env > new file mode 100644 > index 0000000..345b5bd > --- /dev/null > +++ b/platform/linux-generic/test/validation/pktio/pktio_env > @@ -0,0 +1,120 @@ > +#!/bin/sh > +# > +# Copyright (c) 2015, Linaro Limited > +# All rights reserved. > +# > +# SPDX-License-Identifier: BSD-3-Clause > +# > +# Test script wrapper for running ODP pktio apps on linux-generic. > +# > +# For linux-generic the default behavior is to create two pairs of > +# virtual Ethernet interfaces and provide the names of these via > +# environment variables to pktio apps, the interfaces will be removed > +# before the script exits. > +# > +# Note that the creation of virtual Ethernet devices depends on having > +# CONFIG_VETH enabled in the kernel, if not enabled the env setup will be > skipped. > +# > +# Network set up > +# IF0 <---> IF1 > +# IF2 <---> IF3 > +IF0=pktiop0p1 > +IF1=pktiop1p0 > +IF2=pktiop2p3 > +IF3=pktiop3p2 > + > +if [ "$0" = "$BASH_SOURCE" ]; then > + echo "Error: Platform specific env file has to be sourced." > +fi > + > +check_for_root() > +{ > + if [ "$(id -u)" != "0" ]; then > + echo "check_for_root(): need to be root to setup VETH" > + return 1 > + fi > + return 0 > +} > + > +# wait for a network interface's operational state to be "up" > +wait_for_iface_up() > +{ > + iface=$1 > + cnt=0 > + > + while [ $cnt -lt 50 ]; do > + read operstate < /sys/class/net/$iface/operstate > + > + if [ $? -ne 0 ]; then > + break > + elif [ "$operstate" = "up" ]; then > + return 0 > + fi > + > + sleep 0.1 > + cnt=`expr $cnt + 1` > + done > + > + return 1 > +} > + > +setup_pktio_env() > +{ > + echo "pktio: setting up test interfaces $IF0, $IF1, $IF2, $IF3." > + > + check_for_root > + if [ $? -ne 0 ]; then > + return 1 > + fi > + > + for iface in $IF0 $IF1 $IF2 $IF3; do > + ip link show $iface 2> /dev/null > + if [ $? -eq 0 ]; then > + echo "pktio: interface $iface already exist $?" > + return 2 > + fi > + done > + > + if [ "$1" = "clean" ]; then > + trap cleanup_pktio_env EXIT > + fi > + > + ip link add $IF0 type veth peer name $IF1 > + if [ $? -ne 0 ]; then > + echo "pktio: error: unable to create veth pair" > + return 3 > + fi > + ip link add $IF2 type veth peer name $IF3 > + if [ $? -ne 0 ]; then > + echo "pktio: error: unable to create veth pair" > + return 4 > + fi > + > + for iface in $IF0 $IF1 $IF2 $IF3; do > + ip link set $iface mtu 9216 up > + ifconfig $iface -arp > + done > + > + # check that the interface has come up before starting the test > + for iface in $IF0 $IF1 $IF2 $IF3; do > + wait_for_iface_up $iface > + if [ $? -ne 0 ]; then > + echo "pktio: interface $iface failed to come up" > + return 5 > + fi > + done > +} > + > +cleanup_pktio_env() > +{ > + echo "pktio: removing test interfaces $IF0, $IF1, $IF2, $IF3" > + check_for_root > + if [ $? -ne 0 ]; then > + return 1 > + fi > + > + for iface in $IF0 $IF1 $IF2 $IF3; do > + ip link del $iface 2> /dev/null > + done > + return 0 > +} > diff --git a/platform/linux-generic/test/validation/pktio/pktio_run > b/platform/linux-generic/test/validation/pktio/pktio_run > new file mode 100755 > index 0000000..7029ab2 > --- /dev/null > +++ b/platform/linux-generic/test/validation/pktio/pktio_run > @@ -0,0 +1,110 @@ > +#!/bin/sh > +# > +# Copyright (c) 2015, Linaro Limited > +# All rights reserved. > +# > +# SPDX-License-Identifier: BSD-3-Clause > +# > + > +# directories where pktio_main binary can be found: > +# -in the validation dir when running make check (intree or out of tree) > +# -in the script directory, when running after 'make install', or > +# -in the validation when running standalone (./pktio_run) intree. > +# -in the current directory. > +# running stand alone out of tree requires setting PATH > +PATH=${TEST_DIR}/pktio:$PATH > +PATH=$(dirname $0):$PATH > +PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH > +PATH=.:$PATH > + > +pktio_main_path=$(which pktio_main${EXEEXT}) > +if [ -x "$pktio_main_path" ] ; then > + echo "running with pktio_main: $pktio_run_path" > +else > + echo "cannot find pktio_main: please set you PATH for it." > +fi > + > +# directory where platform test sources are, including scripts > +TEST_SRC_DIR=$(dirname $0) > + > +# exit codes expected by automake for skipped tests > +TEST_SKIPPED=77 > + > +# Use installed pktio env or for make check take it from platform > directory > +if [ -f "./pktio_env" ]; then > + . ./pktio_env > +elif [ -f ${TEST_SRC_DIR}/pktio_env ]; then > + . ${TEST_SRC_DIR}/pktio_env > +else > + echo "BUG: unable to find pktio_env!" > + echo "pktio_env has to be in current directory or in > platform/\$ODP_PLATFORM/test." > + echo "ODP_PLATFORM=\"$ODP_PLATFORM\"" > + exit 1 > +fi > + > +run_test() > +{ > + local ret=0 > + > + # environment variables are used to control which socket method is > + # used, so try each combination to ensure decent coverage. > + for distype in MMAP MMSG; do > + unset ODP_PKTIO_DISABLE_SOCKET_${distype} > + done > + > + # this script doesn't support testing with netmap > + export ODP_PKTIO_DISABLE_NETMAP=y > + > + for distype in SKIP MMAP; do > + if [ "$disabletype" != "SKIP" ]; then > + export ODP_PKTIO_DISABLE_SOCKET_${distype}=y > + fi > + pktio_main${EXEEXT} > + if [ $? -ne 0 ]; then > + ret=1 > + fi > + done > + > + if [ $ret -ne 0 ]; then > + echo "!!! FAILED !!!" > + fi > + > + return $ret > +} > + > +run() > +{ > + echo "pktio: using 'loop' device" > + pktio_main${EXEEXT} > + loop_ret=$? > + > + # need to be root to run tests with real interfaces > + if [ "$(id -u)" != "0" ]; then > + exit $ret > + fi > + > + if [ "$ODP_PKTIO_IF0" = "" ]; then > + # no interfaces specified, use default veth interfaces > + # setup by the pktio_env script > + setup_pktio_env clean > + if [ $? != 0 ]; then > + echo "Failed to setup test environment, skipping > test." > + exit $TEST_SKIPPED > + fi > + export ODP_PKTIO_IF0=$IF0 > + export ODP_PKTIO_IF1=$IF1 > + fi > + > + run_test > + ret=$? > + > + [ $ret = 0 ] && ret=$loop_ret > + > + exit $ret > +} > + > +case "$1" in > + setup) setup_pktio_env ;; > + cleanup) cleanup_pktio_env ;; > + *) run ;; > +esac > diff --git a/platform/linux-generic/test/validation/pktio/pktio_run_pcap > b/platform/linux-generic/test/validation/pktio/pktio_run_pcap > new file mode 100755 > index 0000000..c130417 > --- /dev/null > +++ b/platform/linux-generic/test/validation/pktio/pktio_run_pcap > @@ -0,0 +1,33 @@ > +#!/bin/sh > +# > +# Copyright (c) 2015, Linaro Limited > +# All rights reserved. > +# > +# SPDX-License-Identifier: BSD-3-Clause > +# > + > +# directories where pktio_main binary can be found: > +# -in the validation dir when running make check (intree or out of tree) > +# -in the script directory, when running after 'make install', or > +# -in the validation when running standalone intree. > +# -in the current directory. > +# running stand alone out of tree requires setting PATH > +PATH=${TEST_DIR}/pktio:$PATH > +PATH=$(dirname $0):$PATH > +PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH > +PATH=.:$PATH > + > +pktio_main_path=$(which pktio_main${EXEEXT}) > +if [ -x "$pktio_main_path" ] ; then > + echo "running with $pktio_main_path" > +else > + echo "cannot find pktio_main${EXEEXT}: please set you PATH for it." > +fi > + > +PCAP_FNAME=vald.pcap > +export ODP_PKTIO_IF0="pcap:out=${PCAP_FNAME}" > +export ODP_PKTIO_IF1="pcap:in=${PCAP_FNAME}" > +pktio_main${EXEEXT} > +ret=$? > +rm -f ${PCAP_FNAME} > +exit $ret > diff --git a/platform/linux-generic/test/validation/pktio/pktio_run_tap > b/platform/linux-generic/test/validation/pktio/pktio_run_tap > new file mode 100755 > index 0000000..975da81 > --- /dev/null > +++ b/platform/linux-generic/test/validation/pktio/pktio_run_tap > @@ -0,0 +1,115 @@ > +#!/bin/sh > +# > +# Copyright (c) 2015, Ilya Maximets <i.maximets@samsung.com> > +# All rights reserved. > +# > +# SPDX-License-Identifier: BSD-3-Clause > +# > + > +# directories where pktio_main binary can be found: > +# -in the validation dir when running make check (intree or out of tree) > +# -in the script directory, when running after 'make install', or > +# -in the validation when running standalone intree. > +# -in the current directory. > +# running stand alone out of tree requires setting PATH > +PATH=${TEST_DIR}/pktio:$PATH > +PATH=$(dirname $0):$PATH > +PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH > +PATH=.:$PATH > + > +pktio_main_path=$(which pktio_main${EXEEXT}) > +if [ -x "$pktio_main_path" ] ; then > + echo "running with $pktio_main_path" > +else > + echo "cannot find pktio_main${EXEEXT}: please set you PATH for it." > +fi > + > +# exit code expected by automake for skipped tests > +TEST_SKIPPED=77 > + > +TAP_BASE_NAME=iotap_vald > +IF0=${TAP_BASE_NAME}0 > +IF1=${TAP_BASE_NAME}1 > +BR=${TAP_BASE_NAME}_br > + > +export ODP_PKTIO_IF0="tap:$IF0" > +export ODP_PKTIO_IF1="tap:$IF1" > + > +tap_cleanup() > +{ > + ret=$? > + > + for iface in $IF0 $IF1; do > + ip link set dev $iface nomaster > + done > + > + ip link delete $BR type bridge > + > + for iface in $IF0 $IF1; do > + ip tuntap del mode tap $iface > + done > + > + trap - EXIT > + exit $ret > +} > + > +tap_setup() > +{ > + if [ "$(id -u)" != "0" ]; then > + echo "pktio: need to be root to setup TAP interfaces." > + return $TEST_SKIPPED > + fi > + > + for iface in $IF0 $IF1 $BR; do > + ip link show $iface 2> /dev/null > + if [ $? -eq 0 ]; then > + echo "pktio: interface $iface already exist $?" > + return 2 > + fi > + done > + > + trap tap_cleanup EXIT > + > + for iface in $IF0 $IF1; do > + ip tuntap add mode tap $iface > + if [ $? -ne 0 ]; then > + echo "pktio: error: unable to create TAP device > $iface" > + return 3 > + fi > + done > + > + ip link add name $BR type bridge > + if [ $? -ne 0 ]; then > + echo "pktio: error: unable to create bridge $BR" > + return 3 > + fi > + > + for iface in $IF0 $IF1; do > + ip link set dev $iface master $BR > + if [ $? -ne 0 ]; then > + echo "pktio: error: unable to add $iface to bridge > $BR" > + return 4 > + fi > + done > + > + for iface in $IF0 $IF1 $BR; do > + ifconfig $iface -arp > + sysctl -w net.ipv6.conf.${iface}.disable_ipv6=1 > + ip link set dev $iface mtu 9216 up > + done > + > + return 0 > +} > + > +tap_setup > +ret=$? > +if [ $ret -ne 0 ]; then > + echo "pktio: tap_setup() FAILED!" > + exit $ret > +fi > + > +# Using ODP_WAIT_FOR_NETWORK to prevent fail if tap still not enabled in > bridge > +ODP_WAIT_FOR_NETWORK=yes pktio_main${EXEEXT} > +ret=$? > + > +exit $ret > diff --git a/test/performance/odp_l2fwd_run > b/test/performance/odp_l2fwd_run > index cab97a8..8dfb415 100755 > --- a/test/performance/odp_l2fwd_run > +++ b/test/performance/odp_l2fwd_run > @@ -37,11 +37,11 @@ elif [ "$ODP_PLATFORM" = "" ]; then > echo "$0: error: ODP_PLATFORM must be defined" > # not skipped as this should never happen via "make check" > exit 1 > -elif [ -f > ${TEST_SRC_DIR}/../../platform/$ODP_PLATFORM/test/pktio/pktio_env ]; then > - . ${TEST_SRC_DIR}/../../platform/$ODP_PLATFORM/test/pktio/pktio_env > +elif [ -f > ${TEST_SRC_DIR}/../../platform/$ODP_PLATFORM/test/validation/pktio/pktio_env > ]; then > + . > ${TEST_SRC_DIR}/../../platform/$ODP_PLATFORM/test/validation/pktio/pktio_env > else > echo "BUG: unable to find pktio_env!" > - echo "pktio_env has to be in current directory or in > platform/\$ODP_PLATFORM/test." > + echo "pktio_env has to be in current directory or in > platform/\$ODP_PLATFORM/validation/test." > echo "ODP_PLATFORM=\"$ODP_PLATFORM\"" > exit 1 > fi > -- > 2.5.0 > > _______________________________________________ > lng-odp mailing list > lng-odp@lists.linaro.org > https://lists.linaro.org/mailman/listinfo/lng-odp >
On 27 January 2016 at 20:49, Bill Fischofer <bill.fischofer@linaro.org> wrote: > This applies and builds OK, however when I try to run these tests I see > this: > > bill@Ubuntu15:~/linaro/mikedoc/platform/linux-generic/test/validation/pktio$ > ls > Makefile Makefile.in pktio_run pktio_run_tap > Makefile.am pktio_env pktio_run_pcap > bill@Ubuntu15:~/linaro/mikedoc/platform/linux-generic/test/validation/pktio$ > ./pktio_run_pcap > cannot find pktio_main: please set you PATH for it. > ./pktio_run_pcap: 30: ./pktio_run_pcap: pktio_main: not found > > So it looks like the make didn't build them. I ran with ./configure > --enable-cunit-support --enable-user-guides > > Did I miss something? > No, I did again :) I always use the check-odp suite and never run apps by hand, thank you. It is basically the same error you reported for the second part of this series and I did not think it though. v4 will fix this case the same way. > > On Wed, Jan 27, 2016 at 12:37 PM, Mike Holmes <mike.holmes@linaro.org> > wrote: > >> Simplify adding platform performance tests by mirroring the test directory >> structure and moving the validation tests to their own directory. >> >> Signed-off-by: Mike Holmes <mike.holmes@linaro.org> >> --- >> platform/linux-generic/m4/configure.m4 | 3 +- >> platform/linux-generic/test/Makefile.am | 51 +-------- >> platform/linux-generic/test/pktio/.gitignore | 2 - >> platform/linux-generic/test/pktio/Makefile.am | 9 -- >> platform/linux-generic/test/pktio/pktio_env | 120 >> --------------------- >> platform/linux-generic/test/pktio/pktio_run | 110 >> ------------------- >> platform/linux-generic/test/pktio/pktio_run_pcap | 33 ------ >> platform/linux-generic/test/pktio/pktio_run_tap | 115 >> -------------------- >> platform/linux-generic/test/validation/Makefile.am | 44 ++++++++ >> .../linux-generic/test/validation/pktio/.gitignore | 2 + >> .../test/validation/pktio/Makefile.am | 9 ++ >> .../linux-generic/test/validation/pktio/pktio_env | 120 >> +++++++++++++++++++++ >> .../linux-generic/test/validation/pktio/pktio_run | 110 >> +++++++++++++++++++ >> .../test/validation/pktio/pktio_run_pcap | 33 ++++++ >> .../test/validation/pktio/pktio_run_tap | 115 >> ++++++++++++++++++++ >> test/performance/odp_l2fwd_run | 6 +- >> 16 files changed, 442 insertions(+), 440 deletions(-) >> delete mode 100644 platform/linux-generic/test/pktio/.gitignore >> delete mode 100644 platform/linux-generic/test/pktio/Makefile.am >> delete mode 100644 platform/linux-generic/test/pktio/pktio_env >> delete mode 100755 platform/linux-generic/test/pktio/pktio_run >> delete mode 100755 platform/linux-generic/test/pktio/pktio_run_pcap >> delete mode 100755 platform/linux-generic/test/pktio/pktio_run_tap >> create mode 100644 platform/linux-generic/test/validation/Makefile.am >> create mode 100644 >> platform/linux-generic/test/validation/pktio/.gitignore >> create mode 100644 >> platform/linux-generic/test/validation/pktio/Makefile.am >> create mode 100644 platform/linux-generic/test/validation/pktio/pktio_env >> create mode 100755 platform/linux-generic/test/validation/pktio/pktio_run >> create mode 100755 >> platform/linux-generic/test/validation/pktio/pktio_run_pcap >> create mode 100755 >> platform/linux-generic/test/validation/pktio/pktio_run_tap >> >> diff --git a/platform/linux-generic/m4/configure.m4 >> b/platform/linux-generic/m4/configure.m4 >> index df6dc64..97c15fa 100644 >> --- a/platform/linux-generic/m4/configure.m4 >> +++ b/platform/linux-generic/m4/configure.m4 >> @@ -23,4 +23,5 @@ m4_include([platform/linux-generic/m4/odp_pcap.m4]) >> >> AC_CONFIG_FILES([platform/linux-generic/Makefile >> platform/linux-generic/test/Makefile >> - platform/linux-generic/test/pktio/Makefile]) >> + platform/linux-generic/test/validation/Makefile >> + platform/linux-generic/test/validation/pktio/Makefile]) >> diff --git a/platform/linux-generic/test/Makefile.am >> b/platform/linux-generic/test/Makefile.am >> index e629872..3cf638d 100644 >> --- a/platform/linux-generic/test/Makefile.am >> +++ b/platform/linux-generic/test/Makefile.am >> @@ -1,56 +1,13 @@ >> -include $(top_srcdir)/test/Makefile.inc >> -TESTS_ENVIRONMENT += TEST_DIR=${top_builddir}/test/validation >> - >> -ODP_MODULES = pktio >> +SUBDIRS = >> >> if test_vald >> -TESTS = pktio/pktio_run \ >> - pktio/pktio_run_tap \ >> - ${top_builddir}/test/validation/buffer/buffer_main$(EXEEXT) \ >> - >> ${top_builddir}/test/validation/classification/classification_main$(EXEEXT) >> \ >> - ${top_builddir}/test/validation/config/config_main$(EXEEXT) \ >> - ${top_builddir}/test/validation/cpumask/cpumask_main$(EXEEXT) \ >> - ${top_builddir}/test/validation/crypto/crypto_main$(EXEEXT) \ >> - ${top_builddir}/test/validation/errno/errno_main$(EXEEXT) \ >> - ${top_builddir}/test/validation/hash/hash_main$(EXEEXT) \ >> - ${top_builddir}/test/validation/init/init_main_ok$(EXEEXT) \ >> - ${top_builddir}/test/validation/init/init_main_abort$(EXEEXT) \ >> - ${top_builddir}/test/validation/init/init_main_log$(EXEEXT) \ >> - ${top_builddir}/test/validation/packet/packet_main$(EXEEXT) \ >> - ${top_builddir}/test/validation/pool/pool_main$(EXEEXT) \ >> - ${top_builddir}/test/validation/queue/queue_main$(EXEEXT) \ >> - ${top_builddir}/test/validation/random/random_main$(EXEEXT) \ >> - ${top_builddir}/test/validation/scheduler/scheduler_main$(EXEEXT) >> \ >> - ${top_builddir}/test/validation/std_clib/std_clib_main$(EXEEXT) \ >> - >> ${top_builddir}/test/validation/synchronizers/synchronizers_main$(EXEEXT) \ >> - ${top_builddir}/test/validation/thread/thread_main$(EXEEXT) \ >> - ${top_builddir}/test/validation/time/time_main$(EXEEXT) \ >> - ${top_builddir}/test/validation/timer/timer_main$(EXEEXT) \ >> - ${top_builddir}/test/validation/shmem/shmem_main$(EXEEXT) \ >> - ${top_builddir}/test/validation/system/system_main$(EXEEXT) >> - >> -SUBDIRS = $(ODP_MODULES) >> - >> -if HAVE_PCAP >> -TESTS += pktio/pktio_run_pcap >> +SUBDIRS += validation >> endif >> -endif >> - >> -dist_check_SCRIPTS = run-test tests-validation.env $(LOG_COMPILER) >> - >> -test_SCRIPTS = $(dist_check_SCRIPTS) >> - >> -tests-validation.env: >> - echo "TESTS=\"$(TESTS)\"" > $@ >> - echo "$(TESTS_ENVIRONMENT)" >> $@ >> - echo "$(LOG_COMPILER)" >> $@ >> >> if test_installdir >> installcheck-local: >> $(DESTDIR)/$(testdir)/run-test >> endif >> >> -#performance tests refer to pktio_env >> -if test_perf >> -SUBDIRS = pktio >> -endif >> +dist_check_SCRIPTS = run-test $(LOG_COMPILER) >> +test_SCRIPTS = $(dist_check_SCRIPTS) >> \ No newline at end of file >> diff --git a/platform/linux-generic/test/pktio/.gitignore >> b/platform/linux-generic/test/pktio/.gitignore >> deleted file mode 100644 >> index 7e563b8..0000000 >> --- a/platform/linux-generic/test/pktio/.gitignore >> +++ /dev/null >> @@ -1,2 +0,0 @@ >> -*.log >> -*.trs >> diff --git a/platform/linux-generic/test/pktio/Makefile.am >> b/platform/linux-generic/test/pktio/Makefile.am >> deleted file mode 100644 >> index ea0ad87..0000000 >> --- a/platform/linux-generic/test/pktio/Makefile.am >> +++ /dev/null >> @@ -1,9 +0,0 @@ >> -dist_check_SCRIPTS = pktio_env \ >> - pktio_run \ >> - pktio_run_tap >> - >> -if HAVE_PCAP >> -dist_check_SCRIPTS += pktio_run_pcap >> -endif >> - >> -test_SCRIPTS = $(dist_check_SCRIPTS) >> diff --git a/platform/linux-generic/test/pktio/pktio_env >> b/platform/linux-generic/test/pktio/pktio_env >> deleted file mode 100644 >> index 345b5bd..0000000 >> --- a/platform/linux-generic/test/pktio/pktio_env >> +++ /dev/null >> @@ -1,120 +0,0 @@ >> -#!/bin/sh >> -# >> -# Copyright (c) 2015, Linaro Limited >> -# All rights reserved. >> -# >> -# SPDX-License-Identifier: BSD-3-Clause >> -# >> -# Test script wrapper for running ODP pktio apps on linux-generic. >> -# >> -# For linux-generic the default behavior is to create two pairs of >> -# virtual Ethernet interfaces and provide the names of these via >> -# environment variables to pktio apps, the interfaces will be removed >> -# before the script exits. >> -# >> -# Note that the creation of virtual Ethernet devices depends on having >> -# CONFIG_VETH enabled in the kernel, if not enabled the env setup will >> be skipped. >> -# >> -# Network set up >> -# IF0 <---> IF1 >> -# IF2 <---> IF3 >> -IF0=pktiop0p1 >> -IF1=pktiop1p0 >> -IF2=pktiop2p3 >> -IF3=pktiop3p2 >> - >> -if [ "$0" = "$BASH_SOURCE" ]; then >> - echo "Error: Platform specific env file has to be sourced." >> -fi >> - >> -check_for_root() >> -{ >> - if [ "$(id -u)" != "0" ]; then >> - echo "check_for_root(): need to be root to setup VETH" >> - return 1 >> - fi >> - return 0 >> -} >> - >> -# wait for a network interface's operational state to be "up" >> -wait_for_iface_up() >> -{ >> - iface=$1 >> - cnt=0 >> - >> - while [ $cnt -lt 50 ]; do >> - read operstate < /sys/class/net/$iface/operstate >> - >> - if [ $? -ne 0 ]; then >> - break >> - elif [ "$operstate" = "up" ]; then >> - return 0 >> - fi >> - >> - sleep 0.1 >> - cnt=`expr $cnt + 1` >> - done >> - >> - return 1 >> -} >> - >> -setup_pktio_env() >> -{ >> - echo "pktio: setting up test interfaces $IF0, $IF1, $IF2, $IF3." >> - >> - check_for_root >> - if [ $? -ne 0 ]; then >> - return 1 >> - fi >> - >> - for iface in $IF0 $IF1 $IF2 $IF3; do >> - ip link show $iface 2> /dev/null >> - if [ $? -eq 0 ]; then >> - echo "pktio: interface $iface already exist $?" >> - return 2 >> - fi >> - done >> - >> - if [ "$1" = "clean" ]; then >> - trap cleanup_pktio_env EXIT >> - fi >> - >> - ip link add $IF0 type veth peer name $IF1 >> - if [ $? -ne 0 ]; then >> - echo "pktio: error: unable to create veth pair" >> - return 3 >> - fi >> - ip link add $IF2 type veth peer name $IF3 >> - if [ $? -ne 0 ]; then >> - echo "pktio: error: unable to create veth pair" >> - return 4 >> - fi >> - >> - for iface in $IF0 $IF1 $IF2 $IF3; do >> - ip link set $iface mtu 9216 up >> - ifconfig $iface -arp >> - done >> - >> - # check that the interface has come up before starting the test >> - for iface in $IF0 $IF1 $IF2 $IF3; do >> - wait_for_iface_up $iface >> - if [ $? -ne 0 ]; then >> - echo "pktio: interface $iface failed to come up" >> - return 5 >> - fi >> - done >> -} >> - >> -cleanup_pktio_env() >> -{ >> - echo "pktio: removing test interfaces $IF0, $IF1, $IF2, $IF3" >> - check_for_root >> - if [ $? -ne 0 ]; then >> - return 1 >> - fi >> - >> - for iface in $IF0 $IF1 $IF2 $IF3; do >> - ip link del $iface 2> /dev/null >> - done >> - return 0 >> -} >> diff --git a/platform/linux-generic/test/pktio/pktio_run >> b/platform/linux-generic/test/pktio/pktio_run >> deleted file mode 100755 >> index 7029ab2..0000000 >> --- a/platform/linux-generic/test/pktio/pktio_run >> +++ /dev/null >> @@ -1,110 +0,0 @@ >> -#!/bin/sh >> -# >> -# Copyright (c) 2015, Linaro Limited >> -# All rights reserved. >> -# >> -# SPDX-License-Identifier: BSD-3-Clause >> -# >> - >> -# directories where pktio_main binary can be found: >> -# -in the validation dir when running make check (intree or out of tree) >> -# -in the script directory, when running after 'make install', or >> -# -in the validation when running standalone (./pktio_run) intree. >> -# -in the current directory. >> -# running stand alone out of tree requires setting PATH >> -PATH=${TEST_DIR}/pktio:$PATH >> -PATH=$(dirname $0):$PATH >> -PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH >> -PATH=.:$PATH >> - >> -pktio_main_path=$(which pktio_main${EXEEXT}) >> -if [ -x "$pktio_main_path" ] ; then >> - echo "running with pktio_main: $pktio_run_path" >> -else >> - echo "cannot find pktio_main: please set you PATH for it." >> -fi >> - >> -# directory where platform test sources are, including scripts >> -TEST_SRC_DIR=$(dirname $0) >> - >> -# exit codes expected by automake for skipped tests >> -TEST_SKIPPED=77 >> - >> -# Use installed pktio env or for make check take it from platform >> directory >> -if [ -f "./pktio_env" ]; then >> - . ./pktio_env >> -elif [ -f ${TEST_SRC_DIR}/pktio_env ]; then >> - . ${TEST_SRC_DIR}/pktio_env >> -else >> - echo "BUG: unable to find pktio_env!" >> - echo "pktio_env has to be in current directory or in >> platform/\$ODP_PLATFORM/test." >> - echo "ODP_PLATFORM=\"$ODP_PLATFORM\"" >> - exit 1 >> -fi >> - >> -run_test() >> -{ >> - local ret=0 >> - >> - # environment variables are used to control which socket method is >> - # used, so try each combination to ensure decent coverage. >> - for distype in MMAP MMSG; do >> - unset ODP_PKTIO_DISABLE_SOCKET_${distype} >> - done >> - >> - # this script doesn't support testing with netmap >> - export ODP_PKTIO_DISABLE_NETMAP=y >> - >> - for distype in SKIP MMAP; do >> - if [ "$disabletype" != "SKIP" ]; then >> - export ODP_PKTIO_DISABLE_SOCKET_${distype}=y >> - fi >> - pktio_main${EXEEXT} >> - if [ $? -ne 0 ]; then >> - ret=1 >> - fi >> - done >> - >> - if [ $ret -ne 0 ]; then >> - echo "!!! FAILED !!!" >> - fi >> - >> - return $ret >> -} >> - >> -run() >> -{ >> - echo "pktio: using 'loop' device" >> - pktio_main${EXEEXT} >> - loop_ret=$? >> - >> - # need to be root to run tests with real interfaces >> - if [ "$(id -u)" != "0" ]; then >> - exit $ret >> - fi >> - >> - if [ "$ODP_PKTIO_IF0" = "" ]; then >> - # no interfaces specified, use default veth interfaces >> - # setup by the pktio_env script >> - setup_pktio_env clean >> - if [ $? != 0 ]; then >> - echo "Failed to setup test environment, skipping >> test." >> - exit $TEST_SKIPPED >> - fi >> - export ODP_PKTIO_IF0=$IF0 >> - export ODP_PKTIO_IF1=$IF1 >> - fi >> - >> - run_test >> - ret=$? >> - >> - [ $ret = 0 ] && ret=$loop_ret >> - >> - exit $ret >> -} >> - >> -case "$1" in >> - setup) setup_pktio_env ;; >> - cleanup) cleanup_pktio_env ;; >> - *) run ;; >> -esac >> diff --git a/platform/linux-generic/test/pktio/pktio_run_pcap >> b/platform/linux-generic/test/pktio/pktio_run_pcap >> deleted file mode 100755 >> index c130417..0000000 >> --- a/platform/linux-generic/test/pktio/pktio_run_pcap >> +++ /dev/null >> @@ -1,33 +0,0 @@ >> -#!/bin/sh >> -# >> -# Copyright (c) 2015, Linaro Limited >> -# All rights reserved. >> -# >> -# SPDX-License-Identifier: BSD-3-Clause >> -# >> - >> -# directories where pktio_main binary can be found: >> -# -in the validation dir when running make check (intree or out of tree) >> -# -in the script directory, when running after 'make install', or >> -# -in the validation when running standalone intree. >> -# -in the current directory. >> -# running stand alone out of tree requires setting PATH >> -PATH=${TEST_DIR}/pktio:$PATH >> -PATH=$(dirname $0):$PATH >> -PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH >> -PATH=.:$PATH >> - >> -pktio_main_path=$(which pktio_main${EXEEXT}) >> -if [ -x "$pktio_main_path" ] ; then >> - echo "running with $pktio_main_path" >> -else >> - echo "cannot find pktio_main${EXEEXT}: please set you PATH for >> it." >> -fi >> - >> -PCAP_FNAME=vald.pcap >> -export ODP_PKTIO_IF0="pcap:out=${PCAP_FNAME}" >> -export ODP_PKTIO_IF1="pcap:in=${PCAP_FNAME}" >> -pktio_main${EXEEXT} >> -ret=$? >> -rm -f ${PCAP_FNAME} >> -exit $ret >> diff --git a/platform/linux-generic/test/pktio/pktio_run_tap >> b/platform/linux-generic/test/pktio/pktio_run_tap >> deleted file mode 100755 >> index 975da81..0000000 >> --- a/platform/linux-generic/test/pktio/pktio_run_tap >> +++ /dev/null >> @@ -1,115 +0,0 @@ >> -#!/bin/sh >> -# >> -# Copyright (c) 2015, Ilya Maximets <i.maximets@samsung.com> >> -# All rights reserved. >> -# >> -# SPDX-License-Identifier: BSD-3-Clause >> -# >> - >> -# directories where pktio_main binary can be found: >> -# -in the validation dir when running make check (intree or out of tree) >> -# -in the script directory, when running after 'make install', or >> -# -in the validation when running standalone intree. >> -# -in the current directory. >> -# running stand alone out of tree requires setting PATH >> -PATH=${TEST_DIR}/pktio:$PATH >> -PATH=$(dirname $0):$PATH >> -PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH >> -PATH=.:$PATH >> - >> -pktio_main_path=$(which pktio_main${EXEEXT}) >> -if [ -x "$pktio_main_path" ] ; then >> - echo "running with $pktio_main_path" >> -else >> - echo "cannot find pktio_main${EXEEXT}: please set you PATH for >> it." >> -fi >> - >> -# exit code expected by automake for skipped tests >> -TEST_SKIPPED=77 >> - >> -TAP_BASE_NAME=iotap_vald >> -IF0=${TAP_BASE_NAME}0 >> -IF1=${TAP_BASE_NAME}1 >> -BR=${TAP_BASE_NAME}_br >> - >> -export ODP_PKTIO_IF0="tap:$IF0" >> -export ODP_PKTIO_IF1="tap:$IF1" >> - >> -tap_cleanup() >> -{ >> - ret=$? >> - >> - for iface in $IF0 $IF1; do >> - ip link set dev $iface nomaster >> - done >> - >> - ip link delete $BR type bridge >> - >> - for iface in $IF0 $IF1; do >> - ip tuntap del mode tap $iface >> - done >> - >> - trap - EXIT >> - exit $ret >> -} >> - >> -tap_setup() >> -{ >> - if [ "$(id -u)" != "0" ]; then >> - echo "pktio: need to be root to setup TAP interfaces." >> - return $TEST_SKIPPED >> - fi >> - >> - for iface in $IF0 $IF1 $BR; do >> - ip link show $iface 2> /dev/null >> - if [ $? -eq 0 ]; then >> - echo "pktio: interface $iface already exist $?" >> - return 2 >> - fi >> - done >> - >> - trap tap_cleanup EXIT >> - >> - for iface in $IF0 $IF1; do >> - ip tuntap add mode tap $iface >> - if [ $? -ne 0 ]; then >> - echo "pktio: error: unable to create TAP device >> $iface" >> - return 3 >> - fi >> - done >> - >> - ip link add name $BR type bridge >> - if [ $? -ne 0 ]; then >> - echo "pktio: error: unable to create bridge $BR" >> - return 3 >> - fi >> - >> - for iface in $IF0 $IF1; do >> - ip link set dev $iface master $BR >> - if [ $? -ne 0 ]; then >> - echo "pktio: error: unable to add $iface to >> bridge $BR" >> - return 4 >> - fi >> - done >> - >> - for iface in $IF0 $IF1 $BR; do >> - ifconfig $iface -arp >> - sysctl -w net.ipv6.conf.${iface}.disable_ipv6=1 >> - ip link set dev $iface mtu 9216 up >> - done >> - >> - return 0 >> -} >> - >> -tap_setup >> -ret=$? >> -if [ $ret -ne 0 ]; then >> - echo "pktio: tap_setup() FAILED!" >> - exit $ret >> -fi >> - >> -# Using ODP_WAIT_FOR_NETWORK to prevent fail if tap still not enabled in >> bridge >> -ODP_WAIT_FOR_NETWORK=yes pktio_main${EXEEXT} >> -ret=$? >> - >> -exit $ret >> diff --git a/platform/linux-generic/test/validation/Makefile.am >> b/platform/linux-generic/test/validation/Makefile.am >> new file mode 100644 >> index 0000000..39c6cdd >> --- /dev/null >> +++ b/platform/linux-generic/test/validation/Makefile.am >> @@ -0,0 +1,44 @@ >> +include $(top_srcdir)/test/Makefile.inc >> +TESTS_ENVIRONMENT += TEST_DIR=${top_builddir}/test/validation >> + >> +ODP_MODULES = pktio >> + >> +TESTS = pktio/pktio_run \ >> + pktio/pktio_run_tap \ >> + ${top_builddir}/test/validation/buffer/buffer_main$(EXEEXT) \ >> + >> ${top_builddir}/test/validation/classification/classification_main$(EXEEXT) >> \ >> + ${top_builddir}/test/validation/config/config_main$(EXEEXT) \ >> + ${top_builddir}/test/validation/cpumask/cpumask_main$(EXEEXT) \ >> + ${top_builddir}/test/validation/crypto/crypto_main$(EXEEXT) \ >> + ${top_builddir}/test/validation/errno/errno_main$(EXEEXT) \ >> + ${top_builddir}/test/validation/hash/hash_main$(EXEEXT) \ >> + ${top_builddir}/test/validation/init/init_main_ok$(EXEEXT) \ >> + ${top_builddir}/test/validation/init/init_main_abort$(EXEEXT) \ >> + ${top_builddir}/test/validation/init/init_main_log$(EXEEXT) \ >> + ${top_builddir}/test/validation/packet/packet_main$(EXEEXT) \ >> + ${top_builddir}/test/validation/pool/pool_main$(EXEEXT) \ >> + ${top_builddir}/test/validation/queue/queue_main$(EXEEXT) \ >> + ${top_builddir}/test/validation/random/random_main$(EXEEXT) \ >> + ${top_builddir}/test/validation/scheduler/scheduler_main$(EXEEXT) >> \ >> + ${top_builddir}/test/validation/std_clib/std_clib_main$(EXEEXT) \ >> + >> ${top_builddir}/test/validation/synchronizers/synchronizers_main$(EXEEXT) \ >> + ${top_builddir}/test/validation/thread/thread_main$(EXEEXT) \ >> + ${top_builddir}/test/validation/time/time_main$(EXEEXT) \ >> + ${top_builddir}/test/validation/timer/timer_main$(EXEEXT) \ >> + ${top_builddir}/test/validation/shmem/shmem_main$(EXEEXT) \ >> + ${top_builddir}/test/validation/system/system_main$(EXEEXT) >> + >> +SUBDIRS = $(ODP_MODULES) >> + >> +if HAVE_PCAP >> +TESTS += pktio/pktio_run_pcap >> +endif >> + >> +dist_check_SCRIPTS = tests-validation.env >> + >> +test_SCRIPTS = $(dist_check_SCRIPTS) >> + >> +tests-validation.env: >> + echo "TESTS=\"$(TESTS)\"" > $@ >> + echo "$(TESTS_ENVIRONMENT)" >> $@ >> + echo "$(LOG_COMPILER)" >> $@ >> diff --git a/platform/linux-generic/test/validation/pktio/.gitignore >> b/platform/linux-generic/test/validation/pktio/.gitignore >> new file mode 100644 >> index 0000000..7e563b8 >> --- /dev/null >> +++ b/platform/linux-generic/test/validation/pktio/.gitignore >> @@ -0,0 +1,2 @@ >> +*.log >> +*.trs >> diff --git a/platform/linux-generic/test/validation/pktio/Makefile.am >> b/platform/linux-generic/test/validation/pktio/Makefile.am >> new file mode 100644 >> index 0000000..ea0ad87 >> --- /dev/null >> +++ b/platform/linux-generic/test/validation/pktio/Makefile.am >> @@ -0,0 +1,9 @@ >> +dist_check_SCRIPTS = pktio_env \ >> + pktio_run \ >> + pktio_run_tap >> + >> +if HAVE_PCAP >> +dist_check_SCRIPTS += pktio_run_pcap >> +endif >> + >> +test_SCRIPTS = $(dist_check_SCRIPTS) >> diff --git a/platform/linux-generic/test/validation/pktio/pktio_env >> b/platform/linux-generic/test/validation/pktio/pktio_env >> new file mode 100644 >> index 0000000..345b5bd >> --- /dev/null >> +++ b/platform/linux-generic/test/validation/pktio/pktio_env >> @@ -0,0 +1,120 @@ >> +#!/bin/sh >> +# >> +# Copyright (c) 2015, Linaro Limited >> +# All rights reserved. >> +# >> +# SPDX-License-Identifier: BSD-3-Clause >> +# >> +# Test script wrapper for running ODP pktio apps on linux-generic. >> +# >> +# For linux-generic the default behavior is to create two pairs of >> +# virtual Ethernet interfaces and provide the names of these via >> +# environment variables to pktio apps, the interfaces will be removed >> +# before the script exits. >> +# >> +# Note that the creation of virtual Ethernet devices depends on having >> +# CONFIG_VETH enabled in the kernel, if not enabled the env setup will >> be skipped. >> +# >> +# Network set up >> +# IF0 <---> IF1 >> +# IF2 <---> IF3 >> +IF0=pktiop0p1 >> +IF1=pktiop1p0 >> +IF2=pktiop2p3 >> +IF3=pktiop3p2 >> + >> +if [ "$0" = "$BASH_SOURCE" ]; then >> + echo "Error: Platform specific env file has to be sourced." >> +fi >> + >> +check_for_root() >> +{ >> + if [ "$(id -u)" != "0" ]; then >> + echo "check_for_root(): need to be root to setup VETH" >> + return 1 >> + fi >> + return 0 >> +} >> + >> +# wait for a network interface's operational state to be "up" >> +wait_for_iface_up() >> +{ >> + iface=$1 >> + cnt=0 >> + >> + while [ $cnt -lt 50 ]; do >> + read operstate < /sys/class/net/$iface/operstate >> + >> + if [ $? -ne 0 ]; then >> + break >> + elif [ "$operstate" = "up" ]; then >> + return 0 >> + fi >> + >> + sleep 0.1 >> + cnt=`expr $cnt + 1` >> + done >> + >> + return 1 >> +} >> + >> +setup_pktio_env() >> +{ >> + echo "pktio: setting up test interfaces $IF0, $IF1, $IF2, $IF3." >> + >> + check_for_root >> + if [ $? -ne 0 ]; then >> + return 1 >> + fi >> + >> + for iface in $IF0 $IF1 $IF2 $IF3; do >> + ip link show $iface 2> /dev/null >> + if [ $? -eq 0 ]; then >> + echo "pktio: interface $iface already exist $?" >> + return 2 >> + fi >> + done >> + >> + if [ "$1" = "clean" ]; then >> + trap cleanup_pktio_env EXIT >> + fi >> + >> + ip link add $IF0 type veth peer name $IF1 >> + if [ $? -ne 0 ]; then >> + echo "pktio: error: unable to create veth pair" >> + return 3 >> + fi >> + ip link add $IF2 type veth peer name $IF3 >> + if [ $? -ne 0 ]; then >> + echo "pktio: error: unable to create veth pair" >> + return 4 >> + fi >> + >> + for iface in $IF0 $IF1 $IF2 $IF3; do >> + ip link set $iface mtu 9216 up >> + ifconfig $iface -arp >> + done >> + >> + # check that the interface has come up before starting the test >> + for iface in $IF0 $IF1 $IF2 $IF3; do >> + wait_for_iface_up $iface >> + if [ $? -ne 0 ]; then >> + echo "pktio: interface $iface failed to come up" >> + return 5 >> + fi >> + done >> +} >> + >> +cleanup_pktio_env() >> +{ >> + echo "pktio: removing test interfaces $IF0, $IF1, $IF2, $IF3" >> + check_for_root >> + if [ $? -ne 0 ]; then >> + return 1 >> + fi >> + >> + for iface in $IF0 $IF1 $IF2 $IF3; do >> + ip link del $iface 2> /dev/null >> + done >> + return 0 >> +} >> diff --git a/platform/linux-generic/test/validation/pktio/pktio_run >> b/platform/linux-generic/test/validation/pktio/pktio_run >> new file mode 100755 >> index 0000000..7029ab2 >> --- /dev/null >> +++ b/platform/linux-generic/test/validation/pktio/pktio_run >> @@ -0,0 +1,110 @@ >> +#!/bin/sh >> +# >> +# Copyright (c) 2015, Linaro Limited >> +# All rights reserved. >> +# >> +# SPDX-License-Identifier: BSD-3-Clause >> +# >> + >> +# directories where pktio_main binary can be found: >> +# -in the validation dir when running make check (intree or out of tree) >> +# -in the script directory, when running after 'make install', or >> +# -in the validation when running standalone (./pktio_run) intree. >> +# -in the current directory. >> +# running stand alone out of tree requires setting PATH >> +PATH=${TEST_DIR}/pktio:$PATH >> +PATH=$(dirname $0):$PATH >> +PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH >> +PATH=.:$PATH >> + >> +pktio_main_path=$(which pktio_main${EXEEXT}) >> +if [ -x "$pktio_main_path" ] ; then >> + echo "running with pktio_main: $pktio_run_path" >> +else >> + echo "cannot find pktio_main: please set you PATH for it." >> +fi >> + >> +# directory where platform test sources are, including scripts >> +TEST_SRC_DIR=$(dirname $0) >> + >> +# exit codes expected by automake for skipped tests >> +TEST_SKIPPED=77 >> + >> +# Use installed pktio env or for make check take it from platform >> directory >> +if [ -f "./pktio_env" ]; then >> + . ./pktio_env >> +elif [ -f ${TEST_SRC_DIR}/pktio_env ]; then >> + . ${TEST_SRC_DIR}/pktio_env >> +else >> + echo "BUG: unable to find pktio_env!" >> + echo "pktio_env has to be in current directory or in >> platform/\$ODP_PLATFORM/test." >> + echo "ODP_PLATFORM=\"$ODP_PLATFORM\"" >> + exit 1 >> +fi >> + >> +run_test() >> +{ >> + local ret=0 >> + >> + # environment variables are used to control which socket method is >> + # used, so try each combination to ensure decent coverage. >> + for distype in MMAP MMSG; do >> + unset ODP_PKTIO_DISABLE_SOCKET_${distype} >> + done >> + >> + # this script doesn't support testing with netmap >> + export ODP_PKTIO_DISABLE_NETMAP=y >> + >> + for distype in SKIP MMAP; do >> + if [ "$disabletype" != "SKIP" ]; then >> + export ODP_PKTIO_DISABLE_SOCKET_${distype}=y >> + fi >> + pktio_main${EXEEXT} >> + if [ $? -ne 0 ]; then >> + ret=1 >> + fi >> + done >> + >> + if [ $ret -ne 0 ]; then >> + echo "!!! FAILED !!!" >> + fi >> + >> + return $ret >> +} >> + >> +run() >> +{ >> + echo "pktio: using 'loop' device" >> + pktio_main${EXEEXT} >> + loop_ret=$? >> + >> + # need to be root to run tests with real interfaces >> + if [ "$(id -u)" != "0" ]; then >> + exit $ret >> + fi >> + >> + if [ "$ODP_PKTIO_IF0" = "" ]; then >> + # no interfaces specified, use default veth interfaces >> + # setup by the pktio_env script >> + setup_pktio_env clean >> + if [ $? != 0 ]; then >> + echo "Failed to setup test environment, skipping >> test." >> + exit $TEST_SKIPPED >> + fi >> + export ODP_PKTIO_IF0=$IF0 >> + export ODP_PKTIO_IF1=$IF1 >> + fi >> + >> + run_test >> + ret=$? >> + >> + [ $ret = 0 ] && ret=$loop_ret >> + >> + exit $ret >> +} >> + >> +case "$1" in >> + setup) setup_pktio_env ;; >> + cleanup) cleanup_pktio_env ;; >> + *) run ;; >> +esac >> diff --git a/platform/linux-generic/test/validation/pktio/pktio_run_pcap >> b/platform/linux-generic/test/validation/pktio/pktio_run_pcap >> new file mode 100755 >> index 0000000..c130417 >> --- /dev/null >> +++ b/platform/linux-generic/test/validation/pktio/pktio_run_pcap >> @@ -0,0 +1,33 @@ >> +#!/bin/sh >> +# >> +# Copyright (c) 2015, Linaro Limited >> +# All rights reserved. >> +# >> +# SPDX-License-Identifier: BSD-3-Clause >> +# >> + >> +# directories where pktio_main binary can be found: >> +# -in the validation dir when running make check (intree or out of tree) >> +# -in the script directory, when running after 'make install', or >> +# -in the validation when running standalone intree. >> +# -in the current directory. >> +# running stand alone out of tree requires setting PATH >> +PATH=${TEST_DIR}/pktio:$PATH >> +PATH=$(dirname $0):$PATH >> +PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH >> +PATH=.:$PATH >> + >> +pktio_main_path=$(which pktio_main${EXEEXT}) >> +if [ -x "$pktio_main_path" ] ; then >> + echo "running with $pktio_main_path" >> +else >> + echo "cannot find pktio_main${EXEEXT}: please set you PATH for >> it." >> +fi >> + >> +PCAP_FNAME=vald.pcap >> +export ODP_PKTIO_IF0="pcap:out=${PCAP_FNAME}" >> +export ODP_PKTIO_IF1="pcap:in=${PCAP_FNAME}" >> +pktio_main${EXEEXT} >> +ret=$? >> +rm -f ${PCAP_FNAME} >> +exit $ret >> diff --git a/platform/linux-generic/test/validation/pktio/pktio_run_tap >> b/platform/linux-generic/test/validation/pktio/pktio_run_tap >> new file mode 100755 >> index 0000000..975da81 >> --- /dev/null >> +++ b/platform/linux-generic/test/validation/pktio/pktio_run_tap >> @@ -0,0 +1,115 @@ >> +#!/bin/sh >> +# >> +# Copyright (c) 2015, Ilya Maximets <i.maximets@samsung.com> >> +# All rights reserved. >> +# >> +# SPDX-License-Identifier: BSD-3-Clause >> +# >> + >> +# directories where pktio_main binary can be found: >> +# -in the validation dir when running make check (intree or out of tree) >> +# -in the script directory, when running after 'make install', or >> +# -in the validation when running standalone intree. >> +# -in the current directory. >> +# running stand alone out of tree requires setting PATH >> +PATH=${TEST_DIR}/pktio:$PATH >> +PATH=$(dirname $0):$PATH >> +PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH >> +PATH=.:$PATH >> + >> +pktio_main_path=$(which pktio_main${EXEEXT}) >> +if [ -x "$pktio_main_path" ] ; then >> + echo "running with $pktio_main_path" >> +else >> + echo "cannot find pktio_main${EXEEXT}: please set you PATH for >> it." >> +fi >> + >> +# exit code expected by automake for skipped tests >> +TEST_SKIPPED=77 >> + >> +TAP_BASE_NAME=iotap_vald >> +IF0=${TAP_BASE_NAME}0 >> +IF1=${TAP_BASE_NAME}1 >> +BR=${TAP_BASE_NAME}_br >> + >> +export ODP_PKTIO_IF0="tap:$IF0" >> +export ODP_PKTIO_IF1="tap:$IF1" >> + >> +tap_cleanup() >> +{ >> + ret=$? >> + >> + for iface in $IF0 $IF1; do >> + ip link set dev $iface nomaster >> + done >> + >> + ip link delete $BR type bridge >> + >> + for iface in $IF0 $IF1; do >> + ip tuntap del mode tap $iface >> + done >> + >> + trap - EXIT >> + exit $ret >> +} >> + >> +tap_setup() >> +{ >> + if [ "$(id -u)" != "0" ]; then >> + echo "pktio: need to be root to setup TAP interfaces." >> + return $TEST_SKIPPED >> + fi >> + >> + for iface in $IF0 $IF1 $BR; do >> + ip link show $iface 2> /dev/null >> + if [ $? -eq 0 ]; then >> + echo "pktio: interface $iface already exist $?" >> + return 2 >> + fi >> + done >> + >> + trap tap_cleanup EXIT >> + >> + for iface in $IF0 $IF1; do >> + ip tuntap add mode tap $iface >> + if [ $? -ne 0 ]; then >> + echo "pktio: error: unable to create TAP device >> $iface" >> + return 3 >> + fi >> + done >> + >> + ip link add name $BR type bridge >> + if [ $? -ne 0 ]; then >> + echo "pktio: error: unable to create bridge $BR" >> + return 3 >> + fi >> + >> + for iface in $IF0 $IF1; do >> + ip link set dev $iface master $BR >> + if [ $? -ne 0 ]; then >> + echo "pktio: error: unable to add $iface to >> bridge $BR" >> + return 4 >> + fi >> + done >> + >> + for iface in $IF0 $IF1 $BR; do >> + ifconfig $iface -arp >> + sysctl -w net.ipv6.conf.${iface}.disable_ipv6=1 >> + ip link set dev $iface mtu 9216 up >> + done >> + >> + return 0 >> +} >> + >> +tap_setup >> +ret=$? >> +if [ $ret -ne 0 ]; then >> + echo "pktio: tap_setup() FAILED!" >> + exit $ret >> +fi >> + >> +# Using ODP_WAIT_FOR_NETWORK to prevent fail if tap still not enabled in >> bridge >> +ODP_WAIT_FOR_NETWORK=yes pktio_main${EXEEXT} >> +ret=$? >> + >> +exit $ret >> diff --git a/test/performance/odp_l2fwd_run >> b/test/performance/odp_l2fwd_run >> index cab97a8..8dfb415 100755 >> --- a/test/performance/odp_l2fwd_run >> +++ b/test/performance/odp_l2fwd_run >> @@ -37,11 +37,11 @@ elif [ "$ODP_PLATFORM" = "" ]; then >> echo "$0: error: ODP_PLATFORM must be defined" >> # not skipped as this should never happen via "make check" >> exit 1 >> -elif [ -f >> ${TEST_SRC_DIR}/../../platform/$ODP_PLATFORM/test/pktio/pktio_env ]; then >> - . >> ${TEST_SRC_DIR}/../../platform/$ODP_PLATFORM/test/pktio/pktio_env >> +elif [ -f >> ${TEST_SRC_DIR}/../../platform/$ODP_PLATFORM/test/validation/pktio/pktio_env >> ]; then >> + . >> ${TEST_SRC_DIR}/../../platform/$ODP_PLATFORM/test/validation/pktio/pktio_env >> else >> echo "BUG: unable to find pktio_env!" >> - echo "pktio_env has to be in current directory or in >> platform/\$ODP_PLATFORM/test." >> + echo "pktio_env has to be in current directory or in >> platform/\$ODP_PLATFORM/validation/test." >> echo "ODP_PLATFORM=\"$ODP_PLATFORM\"" >> exit 1 >> fi >> -- >> 2.5.0 >> >> _______________________________________________ >> lng-odp mailing list >> lng-odp@lists.linaro.org >> https://lists.linaro.org/mailman/listinfo/lng-odp >> > > -- Mike Holmes Technical Manager - Linaro Networking Group Linaro.org <http://www.linaro.org/> *│ *Open source software for ARM SoCs "Work should be fun and collborative, the rest follows"
diff --git a/platform/linux-generic/m4/configure.m4 b/platform/linux-generic/m4/configure.m4 index df6dc64..97c15fa 100644 --- a/platform/linux-generic/m4/configure.m4 +++ b/platform/linux-generic/m4/configure.m4 @@ -23,4 +23,5 @@ m4_include([platform/linux-generic/m4/odp_pcap.m4]) AC_CONFIG_FILES([platform/linux-generic/Makefile platform/linux-generic/test/Makefile - platform/linux-generic/test/pktio/Makefile]) + platform/linux-generic/test/validation/Makefile + platform/linux-generic/test/validation/pktio/Makefile]) diff --git a/platform/linux-generic/test/Makefile.am b/platform/linux-generic/test/Makefile.am index e629872..3cf638d 100644 --- a/platform/linux-generic/test/Makefile.am +++ b/platform/linux-generic/test/Makefile.am @@ -1,56 +1,13 @@ -include $(top_srcdir)/test/Makefile.inc -TESTS_ENVIRONMENT += TEST_DIR=${top_builddir}/test/validation - -ODP_MODULES = pktio +SUBDIRS = if test_vald -TESTS = pktio/pktio_run \ - pktio/pktio_run_tap \ - ${top_builddir}/test/validation/buffer/buffer_main$(EXEEXT) \ - ${top_builddir}/test/validation/classification/classification_main$(EXEEXT) \ - ${top_builddir}/test/validation/config/config_main$(EXEEXT) \ - ${top_builddir}/test/validation/cpumask/cpumask_main$(EXEEXT) \ - ${top_builddir}/test/validation/crypto/crypto_main$(EXEEXT) \ - ${top_builddir}/test/validation/errno/errno_main$(EXEEXT) \ - ${top_builddir}/test/validation/hash/hash_main$(EXEEXT) \ - ${top_builddir}/test/validation/init/init_main_ok$(EXEEXT) \ - ${top_builddir}/test/validation/init/init_main_abort$(EXEEXT) \ - ${top_builddir}/test/validation/init/init_main_log$(EXEEXT) \ - ${top_builddir}/test/validation/packet/packet_main$(EXEEXT) \ - ${top_builddir}/test/validation/pool/pool_main$(EXEEXT) \ - ${top_builddir}/test/validation/queue/queue_main$(EXEEXT) \ - ${top_builddir}/test/validation/random/random_main$(EXEEXT) \ - ${top_builddir}/test/validation/scheduler/scheduler_main$(EXEEXT) \ - ${top_builddir}/test/validation/std_clib/std_clib_main$(EXEEXT) \ - ${top_builddir}/test/validation/synchronizers/synchronizers_main$(EXEEXT) \ - ${top_builddir}/test/validation/thread/thread_main$(EXEEXT) \ - ${top_builddir}/test/validation/time/time_main$(EXEEXT) \ - ${top_builddir}/test/validation/timer/timer_main$(EXEEXT) \ - ${top_builddir}/test/validation/shmem/shmem_main$(EXEEXT) \ - ${top_builddir}/test/validation/system/system_main$(EXEEXT) - -SUBDIRS = $(ODP_MODULES) - -if HAVE_PCAP -TESTS += pktio/pktio_run_pcap +SUBDIRS += validation endif -endif - -dist_check_SCRIPTS = run-test tests-validation.env $(LOG_COMPILER) - -test_SCRIPTS = $(dist_check_SCRIPTS) - -tests-validation.env: - echo "TESTS=\"$(TESTS)\"" > $@ - echo "$(TESTS_ENVIRONMENT)" >> $@ - echo "$(LOG_COMPILER)" >> $@ if test_installdir installcheck-local: $(DESTDIR)/$(testdir)/run-test endif -#performance tests refer to pktio_env -if test_perf -SUBDIRS = pktio -endif +dist_check_SCRIPTS = run-test $(LOG_COMPILER) +test_SCRIPTS = $(dist_check_SCRIPTS) \ No newline at end of file diff --git a/platform/linux-generic/test/pktio/.gitignore b/platform/linux-generic/test/pktio/.gitignore deleted file mode 100644 index 7e563b8..0000000 --- a/platform/linux-generic/test/pktio/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.log -*.trs diff --git a/platform/linux-generic/test/pktio/Makefile.am b/platform/linux-generic/test/pktio/Makefile.am deleted file mode 100644 index ea0ad87..0000000 --- a/platform/linux-generic/test/pktio/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -dist_check_SCRIPTS = pktio_env \ - pktio_run \ - pktio_run_tap - -if HAVE_PCAP -dist_check_SCRIPTS += pktio_run_pcap -endif - -test_SCRIPTS = $(dist_check_SCRIPTS) diff --git a/platform/linux-generic/test/pktio/pktio_env b/platform/linux-generic/test/pktio/pktio_env deleted file mode 100644 index 345b5bd..0000000 --- a/platform/linux-generic/test/pktio/pktio_env +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2015, Linaro Limited -# All rights reserved. -# -# SPDX-License-Identifier: BSD-3-Clause -# -# Test script wrapper for running ODP pktio apps on linux-generic. -# -# For linux-generic the default behavior is to create two pairs of -# virtual Ethernet interfaces and provide the names of these via -# environment variables to pktio apps, the interfaces will be removed -# before the script exits. -# -# Note that the creation of virtual Ethernet devices depends on having -# CONFIG_VETH enabled in the kernel, if not enabled the env setup will be skipped. -# -# Network set up -# IF0 <---> IF1 -# IF2 <---> IF3 -IF0=pktiop0p1 -IF1=pktiop1p0 -IF2=pktiop2p3 -IF3=pktiop3p2 - -if [ "$0" = "$BASH_SOURCE" ]; then - echo "Error: Platform specific env file has to be sourced." -fi - -check_for_root() -{ - if [ "$(id -u)" != "0" ]; then - echo "check_for_root(): need to be root to setup VETH" - return 1 - fi - return 0 -} - -# wait for a network interface's operational state to be "up" -wait_for_iface_up() -{ - iface=$1 - cnt=0 - - while [ $cnt -lt 50 ]; do - read operstate < /sys/class/net/$iface/operstate - - if [ $? -ne 0 ]; then - break - elif [ "$operstate" = "up" ]; then - return 0 - fi - - sleep 0.1 - cnt=`expr $cnt + 1` - done - - return 1 -} - -setup_pktio_env() -{ - echo "pktio: setting up test interfaces $IF0, $IF1, $IF2, $IF3." - - check_for_root - if [ $? -ne 0 ]; then - return 1 - fi - - for iface in $IF0 $IF1 $IF2 $IF3; do - ip link show $iface 2> /dev/null - if [ $? -eq 0 ]; then - echo "pktio: interface $iface already exist $?" - return 2 - fi - done - - if [ "$1" = "clean" ]; then - trap cleanup_pktio_env EXIT - fi - - ip link add $IF0 type veth peer name $IF1 - if [ $? -ne 0 ]; then - echo "pktio: error: unable to create veth pair" - return 3 - fi - ip link add $IF2 type veth peer name $IF3 - if [ $? -ne 0 ]; then - echo "pktio: error: unable to create veth pair" - return 4 - fi - - for iface in $IF0 $IF1 $IF2 $IF3; do - ip link set $iface mtu 9216 up - ifconfig $iface -arp - done - - # check that the interface has come up before starting the test - for iface in $IF0 $IF1 $IF2 $IF3; do - wait_for_iface_up $iface - if [ $? -ne 0 ]; then - echo "pktio: interface $iface failed to come up" - return 5 - fi - done -} - -cleanup_pktio_env() -{ - echo "pktio: removing test interfaces $IF0, $IF1, $IF2, $IF3" - check_for_root - if [ $? -ne 0 ]; then - return 1 - fi - - for iface in $IF0 $IF1 $IF2 $IF3; do - ip link del $iface 2> /dev/null - done - return 0 -} diff --git a/platform/linux-generic/test/pktio/pktio_run b/platform/linux-generic/test/pktio/pktio_run deleted file mode 100755 index 7029ab2..0000000 --- a/platform/linux-generic/test/pktio/pktio_run +++ /dev/null @@ -1,110 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2015, Linaro Limited -# All rights reserved. -# -# SPDX-License-Identifier: BSD-3-Clause -# - -# directories where pktio_main binary can be found: -# -in the validation dir when running make check (intree or out of tree) -# -in the script directory, when running after 'make install', or -# -in the validation when running standalone (./pktio_run) intree. -# -in the current directory. -# running stand alone out of tree requires setting PATH -PATH=${TEST_DIR}/pktio:$PATH -PATH=$(dirname $0):$PATH -PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH -PATH=.:$PATH - -pktio_main_path=$(which pktio_main${EXEEXT}) -if [ -x "$pktio_main_path" ] ; then - echo "running with pktio_main: $pktio_run_path" -else - echo "cannot find pktio_main: please set you PATH for it." -fi - -# directory where platform test sources are, including scripts -TEST_SRC_DIR=$(dirname $0) - -# exit codes expected by automake for skipped tests -TEST_SKIPPED=77 - -# Use installed pktio env or for make check take it from platform directory -if [ -f "./pktio_env" ]; then - . ./pktio_env -elif [ -f ${TEST_SRC_DIR}/pktio_env ]; then - . ${TEST_SRC_DIR}/pktio_env -else - echo "BUG: unable to find pktio_env!" - echo "pktio_env has to be in current directory or in platform/\$ODP_PLATFORM/test." - echo "ODP_PLATFORM=\"$ODP_PLATFORM\"" - exit 1 -fi - -run_test() -{ - local ret=0 - - # environment variables are used to control which socket method is - # used, so try each combination to ensure decent coverage. - for distype in MMAP MMSG; do - unset ODP_PKTIO_DISABLE_SOCKET_${distype} - done - - # this script doesn't support testing with netmap - export ODP_PKTIO_DISABLE_NETMAP=y - - for distype in SKIP MMAP; do - if [ "$disabletype" != "SKIP" ]; then - export ODP_PKTIO_DISABLE_SOCKET_${distype}=y - fi - pktio_main${EXEEXT} - if [ $? -ne 0 ]; then - ret=1 - fi - done - - if [ $ret -ne 0 ]; then - echo "!!! FAILED !!!" - fi - - return $ret -} - -run() -{ - echo "pktio: using 'loop' device" - pktio_main${EXEEXT} - loop_ret=$? - - # need to be root to run tests with real interfaces - if [ "$(id -u)" != "0" ]; then - exit $ret - fi - - if [ "$ODP_PKTIO_IF0" = "" ]; then - # no interfaces specified, use default veth interfaces - # setup by the pktio_env script - setup_pktio_env clean - if [ $? != 0 ]; then - echo "Failed to setup test environment, skipping test." - exit $TEST_SKIPPED - fi - export ODP_PKTIO_IF0=$IF0 - export ODP_PKTIO_IF1=$IF1 - fi - - run_test - ret=$? - - [ $ret = 0 ] && ret=$loop_ret - - exit $ret -} - -case "$1" in - setup) setup_pktio_env ;; - cleanup) cleanup_pktio_env ;; - *) run ;; -esac diff --git a/platform/linux-generic/test/pktio/pktio_run_pcap b/platform/linux-generic/test/pktio/pktio_run_pcap deleted file mode 100755 index c130417..0000000 --- a/platform/linux-generic/test/pktio/pktio_run_pcap +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2015, Linaro Limited -# All rights reserved. -# -# SPDX-License-Identifier: BSD-3-Clause -# - -# directories where pktio_main binary can be found: -# -in the validation dir when running make check (intree or out of tree) -# -in the script directory, when running after 'make install', or -# -in the validation when running standalone intree. -# -in the current directory. -# running stand alone out of tree requires setting PATH -PATH=${TEST_DIR}/pktio:$PATH -PATH=$(dirname $0):$PATH -PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH -PATH=.:$PATH - -pktio_main_path=$(which pktio_main${EXEEXT}) -if [ -x "$pktio_main_path" ] ; then - echo "running with $pktio_main_path" -else - echo "cannot find pktio_main${EXEEXT}: please set you PATH for it." -fi - -PCAP_FNAME=vald.pcap -export ODP_PKTIO_IF0="pcap:out=${PCAP_FNAME}" -export ODP_PKTIO_IF1="pcap:in=${PCAP_FNAME}" -pktio_main${EXEEXT} -ret=$? -rm -f ${PCAP_FNAME} -exit $ret diff --git a/platform/linux-generic/test/pktio/pktio_run_tap b/platform/linux-generic/test/pktio/pktio_run_tap deleted file mode 100755 index 975da81..0000000 --- a/platform/linux-generic/test/pktio/pktio_run_tap +++ /dev/null @@ -1,115 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2015, Ilya Maximets <i.maximets@samsung.com> -# All rights reserved. -# -# SPDX-License-Identifier: BSD-3-Clause -# - -# directories where pktio_main binary can be found: -# -in the validation dir when running make check (intree or out of tree) -# -in the script directory, when running after 'make install', or -# -in the validation when running standalone intree. -# -in the current directory. -# running stand alone out of tree requires setting PATH -PATH=${TEST_DIR}/pktio:$PATH -PATH=$(dirname $0):$PATH -PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH -PATH=.:$PATH - -pktio_main_path=$(which pktio_main${EXEEXT}) -if [ -x "$pktio_main_path" ] ; then - echo "running with $pktio_main_path" -else - echo "cannot find pktio_main${EXEEXT}: please set you PATH for it." -fi - -# exit code expected by automake for skipped tests -TEST_SKIPPED=77 - -TAP_BASE_NAME=iotap_vald -IF0=${TAP_BASE_NAME}0 -IF1=${TAP_BASE_NAME}1 -BR=${TAP_BASE_NAME}_br - -export ODP_PKTIO_IF0="tap:$IF0" -export ODP_PKTIO_IF1="tap:$IF1" - -tap_cleanup() -{ - ret=$? - - for iface in $IF0 $IF1; do - ip link set dev $iface nomaster - done - - ip link delete $BR type bridge - - for iface in $IF0 $IF1; do - ip tuntap del mode tap $iface - done - - trap - EXIT - exit $ret -} - -tap_setup() -{ - if [ "$(id -u)" != "0" ]; then - echo "pktio: need to be root to setup TAP interfaces." - return $TEST_SKIPPED - fi - - for iface in $IF0 $IF1 $BR; do - ip link show $iface 2> /dev/null - if [ $? -eq 0 ]; then - echo "pktio: interface $iface already exist $?" - return 2 - fi - done - - trap tap_cleanup EXIT - - for iface in $IF0 $IF1; do - ip tuntap add mode tap $iface - if [ $? -ne 0 ]; then - echo "pktio: error: unable to create TAP device $iface" - return 3 - fi - done - - ip link add name $BR type bridge - if [ $? -ne 0 ]; then - echo "pktio: error: unable to create bridge $BR" - return 3 - fi - - for iface in $IF0 $IF1; do - ip link set dev $iface master $BR - if [ $? -ne 0 ]; then - echo "pktio: error: unable to add $iface to bridge $BR" - return 4 - fi - done - - for iface in $IF0 $IF1 $BR; do - ifconfig $iface -arp - sysctl -w net.ipv6.conf.${iface}.disable_ipv6=1 - ip link set dev $iface mtu 9216 up - done - - return 0 -} - -tap_setup -ret=$? -if [ $ret -ne 0 ]; then - echo "pktio: tap_setup() FAILED!" - exit $ret -fi - -# Using ODP_WAIT_FOR_NETWORK to prevent fail if tap still not enabled in bridge -ODP_WAIT_FOR_NETWORK=yes pktio_main${EXEEXT} -ret=$? - -exit $ret diff --git a/platform/linux-generic/test/validation/Makefile.am b/platform/linux-generic/test/validation/Makefile.am new file mode 100644 index 0000000..39c6cdd --- /dev/null +++ b/platform/linux-generic/test/validation/Makefile.am @@ -0,0 +1,44 @@ +include $(top_srcdir)/test/Makefile.inc +TESTS_ENVIRONMENT += TEST_DIR=${top_builddir}/test/validation + +ODP_MODULES = pktio + +TESTS = pktio/pktio_run \ + pktio/pktio_run_tap \ + ${top_builddir}/test/validation/buffer/buffer_main$(EXEEXT) \ + ${top_builddir}/test/validation/classification/classification_main$(EXEEXT) \ + ${top_builddir}/test/validation/config/config_main$(EXEEXT) \ + ${top_builddir}/test/validation/cpumask/cpumask_main$(EXEEXT) \ + ${top_builddir}/test/validation/crypto/crypto_main$(EXEEXT) \ + ${top_builddir}/test/validation/errno/errno_main$(EXEEXT) \ + ${top_builddir}/test/validation/hash/hash_main$(EXEEXT) \ + ${top_builddir}/test/validation/init/init_main_ok$(EXEEXT) \ + ${top_builddir}/test/validation/init/init_main_abort$(EXEEXT) \ + ${top_builddir}/test/validation/init/init_main_log$(EXEEXT) \ + ${top_builddir}/test/validation/packet/packet_main$(EXEEXT) \ + ${top_builddir}/test/validation/pool/pool_main$(EXEEXT) \ + ${top_builddir}/test/validation/queue/queue_main$(EXEEXT) \ + ${top_builddir}/test/validation/random/random_main$(EXEEXT) \ + ${top_builddir}/test/validation/scheduler/scheduler_main$(EXEEXT) \ + ${top_builddir}/test/validation/std_clib/std_clib_main$(EXEEXT) \ + ${top_builddir}/test/validation/synchronizers/synchronizers_main$(EXEEXT) \ + ${top_builddir}/test/validation/thread/thread_main$(EXEEXT) \ + ${top_builddir}/test/validation/time/time_main$(EXEEXT) \ + ${top_builddir}/test/validation/timer/timer_main$(EXEEXT) \ + ${top_builddir}/test/validation/shmem/shmem_main$(EXEEXT) \ + ${top_builddir}/test/validation/system/system_main$(EXEEXT) + +SUBDIRS = $(ODP_MODULES) + +if HAVE_PCAP +TESTS += pktio/pktio_run_pcap +endif + +dist_check_SCRIPTS = tests-validation.env + +test_SCRIPTS = $(dist_check_SCRIPTS) + +tests-validation.env: + echo "TESTS=\"$(TESTS)\"" > $@ + echo "$(TESTS_ENVIRONMENT)" >> $@ + echo "$(LOG_COMPILER)" >> $@ diff --git a/platform/linux-generic/test/validation/pktio/.gitignore b/platform/linux-generic/test/validation/pktio/.gitignore new file mode 100644 index 0000000..7e563b8 --- /dev/null +++ b/platform/linux-generic/test/validation/pktio/.gitignore @@ -0,0 +1,2 @@ +*.log +*.trs diff --git a/platform/linux-generic/test/validation/pktio/Makefile.am b/platform/linux-generic/test/validation/pktio/Makefile.am new file mode 100644 index 0000000..ea0ad87 --- /dev/null +++ b/platform/linux-generic/test/validation/pktio/Makefile.am @@ -0,0 +1,9 @@ +dist_check_SCRIPTS = pktio_env \ + pktio_run \ + pktio_run_tap + +if HAVE_PCAP +dist_check_SCRIPTS += pktio_run_pcap +endif + +test_SCRIPTS = $(dist_check_SCRIPTS) diff --git a/platform/linux-generic/test/validation/pktio/pktio_env b/platform/linux-generic/test/validation/pktio/pktio_env new file mode 100644 index 0000000..345b5bd --- /dev/null +++ b/platform/linux-generic/test/validation/pktio/pktio_env @@ -0,0 +1,120 @@ +#!/bin/sh +# +# Copyright (c) 2015, Linaro Limited +# All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# +# Test script wrapper for running ODP pktio apps on linux-generic. +# +# For linux-generic the default behavior is to create two pairs of +# virtual Ethernet interfaces and provide the names of these via +# environment variables to pktio apps, the interfaces will be removed +# before the script exits. +# +# Note that the creation of virtual Ethernet devices depends on having +# CONFIG_VETH enabled in the kernel, if not enabled the env setup will be skipped. +# +# Network set up +# IF0 <---> IF1 +# IF2 <---> IF3 +IF0=pktiop0p1 +IF1=pktiop1p0 +IF2=pktiop2p3 +IF3=pktiop3p2 + +if [ "$0" = "$BASH_SOURCE" ]; then + echo "Error: Platform specific env file has to be sourced." +fi + +check_for_root() +{ + if [ "$(id -u)" != "0" ]; then + echo "check_for_root(): need to be root to setup VETH" + return 1 + fi + return 0 +} + +# wait for a network interface's operational state to be "up" +wait_for_iface_up() +{ + iface=$1 + cnt=0 + + while [ $cnt -lt 50 ]; do + read operstate < /sys/class/net/$iface/operstate + + if [ $? -ne 0 ]; then + break + elif [ "$operstate" = "up" ]; then + return 0 + fi + + sleep 0.1 + cnt=`expr $cnt + 1` + done + + return 1 +} + +setup_pktio_env() +{ + echo "pktio: setting up test interfaces $IF0, $IF1, $IF2, $IF3." + + check_for_root + if [ $? -ne 0 ]; then + return 1 + fi + + for iface in $IF0 $IF1 $IF2 $IF3; do + ip link show $iface 2> /dev/null + if [ $? -eq 0 ]; then + echo "pktio: interface $iface already exist $?" + return 2 + fi + done + + if [ "$1" = "clean" ]; then + trap cleanup_pktio_env EXIT + fi + + ip link add $IF0 type veth peer name $IF1 + if [ $? -ne 0 ]; then + echo "pktio: error: unable to create veth pair" + return 3 + fi + ip link add $IF2 type veth peer name $IF3 + if [ $? -ne 0 ]; then + echo "pktio: error: unable to create veth pair" + return 4 + fi + + for iface in $IF0 $IF1 $IF2 $IF3; do + ip link set $iface mtu 9216 up + ifconfig $iface -arp + done + + # check that the interface has come up before starting the test + for iface in $IF0 $IF1 $IF2 $IF3; do + wait_for_iface_up $iface + if [ $? -ne 0 ]; then + echo "pktio: interface $iface failed to come up" + return 5 + fi + done +} + +cleanup_pktio_env() +{ + echo "pktio: removing test interfaces $IF0, $IF1, $IF2, $IF3" + check_for_root + if [ $? -ne 0 ]; then + return 1 + fi + + for iface in $IF0 $IF1 $IF2 $IF3; do + ip link del $iface 2> /dev/null + done + return 0 +} diff --git a/platform/linux-generic/test/validation/pktio/pktio_run b/platform/linux-generic/test/validation/pktio/pktio_run new file mode 100755 index 0000000..7029ab2 --- /dev/null +++ b/platform/linux-generic/test/validation/pktio/pktio_run @@ -0,0 +1,110 @@ +#!/bin/sh +# +# Copyright (c) 2015, Linaro Limited +# All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +# directories where pktio_main binary can be found: +# -in the validation dir when running make check (intree or out of tree) +# -in the script directory, when running after 'make install', or +# -in the validation when running standalone (./pktio_run) intree. +# -in the current directory. +# running stand alone out of tree requires setting PATH +PATH=${TEST_DIR}/pktio:$PATH +PATH=$(dirname $0):$PATH +PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH +PATH=.:$PATH + +pktio_main_path=$(which pktio_main${EXEEXT}) +if [ -x "$pktio_main_path" ] ; then + echo "running with pktio_main: $pktio_run_path" +else + echo "cannot find pktio_main: please set you PATH for it." +fi + +# directory where platform test sources are, including scripts +TEST_SRC_DIR=$(dirname $0) + +# exit codes expected by automake for skipped tests +TEST_SKIPPED=77 + +# Use installed pktio env or for make check take it from platform directory +if [ -f "./pktio_env" ]; then + . ./pktio_env +elif [ -f ${TEST_SRC_DIR}/pktio_env ]; then + . ${TEST_SRC_DIR}/pktio_env +else + echo "BUG: unable to find pktio_env!" + echo "pktio_env has to be in current directory or in platform/\$ODP_PLATFORM/test." + echo "ODP_PLATFORM=\"$ODP_PLATFORM\"" + exit 1 +fi + +run_test() +{ + local ret=0 + + # environment variables are used to control which socket method is + # used, so try each combination to ensure decent coverage. + for distype in MMAP MMSG; do + unset ODP_PKTIO_DISABLE_SOCKET_${distype} + done + + # this script doesn't support testing with netmap + export ODP_PKTIO_DISABLE_NETMAP=y + + for distype in SKIP MMAP; do + if [ "$disabletype" != "SKIP" ]; then + export ODP_PKTIO_DISABLE_SOCKET_${distype}=y + fi + pktio_main${EXEEXT} + if [ $? -ne 0 ]; then + ret=1 + fi + done + + if [ $ret -ne 0 ]; then + echo "!!! FAILED !!!" + fi + + return $ret +} + +run() +{ + echo "pktio: using 'loop' device" + pktio_main${EXEEXT} + loop_ret=$? + + # need to be root to run tests with real interfaces + if [ "$(id -u)" != "0" ]; then + exit $ret + fi + + if [ "$ODP_PKTIO_IF0" = "" ]; then + # no interfaces specified, use default veth interfaces + # setup by the pktio_env script + setup_pktio_env clean + if [ $? != 0 ]; then + echo "Failed to setup test environment, skipping test." + exit $TEST_SKIPPED + fi + export ODP_PKTIO_IF0=$IF0 + export ODP_PKTIO_IF1=$IF1 + fi + + run_test + ret=$? + + [ $ret = 0 ] && ret=$loop_ret + + exit $ret +} + +case "$1" in + setup) setup_pktio_env ;; + cleanup) cleanup_pktio_env ;; + *) run ;; +esac diff --git a/platform/linux-generic/test/validation/pktio/pktio_run_pcap b/platform/linux-generic/test/validation/pktio/pktio_run_pcap new file mode 100755 index 0000000..c130417 --- /dev/null +++ b/platform/linux-generic/test/validation/pktio/pktio_run_pcap @@ -0,0 +1,33 @@ +#!/bin/sh +# +# Copyright (c) 2015, Linaro Limited +# All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +# directories where pktio_main binary can be found: +# -in the validation dir when running make check (intree or out of tree) +# -in the script directory, when running after 'make install', or +# -in the validation when running standalone intree. +# -in the current directory. +# running stand alone out of tree requires setting PATH +PATH=${TEST_DIR}/pktio:$PATH +PATH=$(dirname $0):$PATH +PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH +PATH=.:$PATH + +pktio_main_path=$(which pktio_main${EXEEXT}) +if [ -x "$pktio_main_path" ] ; then + echo "running with $pktio_main_path" +else + echo "cannot find pktio_main${EXEEXT}: please set you PATH for it." +fi + +PCAP_FNAME=vald.pcap +export ODP_PKTIO_IF0="pcap:out=${PCAP_FNAME}" +export ODP_PKTIO_IF1="pcap:in=${PCAP_FNAME}" +pktio_main${EXEEXT} +ret=$? +rm -f ${PCAP_FNAME} +exit $ret diff --git a/platform/linux-generic/test/validation/pktio/pktio_run_tap b/platform/linux-generic/test/validation/pktio/pktio_run_tap new file mode 100755 index 0000000..975da81 --- /dev/null +++ b/platform/linux-generic/test/validation/pktio/pktio_run_tap @@ -0,0 +1,115 @@ +#!/bin/sh +# +# Copyright (c) 2015, Ilya Maximets <i.maximets@samsung.com> +# All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +# directories where pktio_main binary can be found: +# -in the validation dir when running make check (intree or out of tree) +# -in the script directory, when running after 'make install', or +# -in the validation when running standalone intree. +# -in the current directory. +# running stand alone out of tree requires setting PATH +PATH=${TEST_DIR}/pktio:$PATH +PATH=$(dirname $0):$PATH +PATH=$(dirname $0)/../../../../test/validation/pktio:$PATH +PATH=.:$PATH + +pktio_main_path=$(which pktio_main${EXEEXT}) +if [ -x "$pktio_main_path" ] ; then + echo "running with $pktio_main_path" +else + echo "cannot find pktio_main${EXEEXT}: please set you PATH for it." +fi + +# exit code expected by automake for skipped tests +TEST_SKIPPED=77 + +TAP_BASE_NAME=iotap_vald +IF0=${TAP_BASE_NAME}0 +IF1=${TAP_BASE_NAME}1 +BR=${TAP_BASE_NAME}_br + +export ODP_PKTIO_IF0="tap:$IF0" +export ODP_PKTIO_IF1="tap:$IF1" + +tap_cleanup() +{ + ret=$? + + for iface in $IF0 $IF1; do + ip link set dev $iface nomaster + done + + ip link delete $BR type bridge + + for iface in $IF0 $IF1; do + ip tuntap del mode tap $iface + done + + trap - EXIT + exit $ret +} + +tap_setup() +{ + if [ "$(id -u)" != "0" ]; then + echo "pktio: need to be root to setup TAP interfaces." + return $TEST_SKIPPED + fi + + for iface in $IF0 $IF1 $BR; do + ip link show $iface 2> /dev/null + if [ $? -eq 0 ]; then + echo "pktio: interface $iface already exist $?" + return 2 + fi + done + + trap tap_cleanup EXIT + + for iface in $IF0 $IF1; do + ip tuntap add mode tap $iface + if [ $? -ne 0 ]; then + echo "pktio: error: unable to create TAP device $iface" + return 3 + fi + done + + ip link add name $BR type bridge + if [ $? -ne 0 ]; then + echo "pktio: error: unable to create bridge $BR" + return 3 + fi + + for iface in $IF0 $IF1; do + ip link set dev $iface master $BR + if [ $? -ne 0 ]; then + echo "pktio: error: unable to add $iface to bridge $BR" + return 4 + fi + done + + for iface in $IF0 $IF1 $BR; do + ifconfig $iface -arp + sysctl -w net.ipv6.conf.${iface}.disable_ipv6=1 + ip link set dev $iface mtu 9216 up + done + + return 0 +} + +tap_setup +ret=$? +if [ $ret -ne 0 ]; then + echo "pktio: tap_setup() FAILED!" + exit $ret +fi + +# Using ODP_WAIT_FOR_NETWORK to prevent fail if tap still not enabled in bridge +ODP_WAIT_FOR_NETWORK=yes pktio_main${EXEEXT} +ret=$? + +exit $ret diff --git a/test/performance/odp_l2fwd_run b/test/performance/odp_l2fwd_run index cab97a8..8dfb415 100755 --- a/test/performance/odp_l2fwd_run +++ b/test/performance/odp_l2fwd_run @@ -37,11 +37,11 @@ elif [ "$ODP_PLATFORM" = "" ]; then echo "$0: error: ODP_PLATFORM must be defined" # not skipped as this should never happen via "make check" exit 1 -elif [ -f ${TEST_SRC_DIR}/../../platform/$ODP_PLATFORM/test/pktio/pktio_env ]; then - . ${TEST_SRC_DIR}/../../platform/$ODP_PLATFORM/test/pktio/pktio_env +elif [ -f ${TEST_SRC_DIR}/../../platform/$ODP_PLATFORM/test/validation/pktio/pktio_env ]; then + . ${TEST_SRC_DIR}/../../platform/$ODP_PLATFORM/test/validation/pktio/pktio_env else echo "BUG: unable to find pktio_env!" - echo "pktio_env has to be in current directory or in platform/\$ODP_PLATFORM/test." + echo "pktio_env has to be in current directory or in platform/\$ODP_PLATFORM/validation/test." echo "ODP_PLATFORM=\"$ODP_PLATFORM\"" exit 1 fi
Simplify adding platform performance tests by mirroring the test directory structure and moving the validation tests to their own directory. Signed-off-by: Mike Holmes <mike.holmes@linaro.org> --- platform/linux-generic/m4/configure.m4 | 3 +- platform/linux-generic/test/Makefile.am | 51 +-------- platform/linux-generic/test/pktio/.gitignore | 2 - platform/linux-generic/test/pktio/Makefile.am | 9 -- platform/linux-generic/test/pktio/pktio_env | 120 --------------------- platform/linux-generic/test/pktio/pktio_run | 110 ------------------- platform/linux-generic/test/pktio/pktio_run_pcap | 33 ------ platform/linux-generic/test/pktio/pktio_run_tap | 115 -------------------- platform/linux-generic/test/validation/Makefile.am | 44 ++++++++ .../linux-generic/test/validation/pktio/.gitignore | 2 + .../test/validation/pktio/Makefile.am | 9 ++ .../linux-generic/test/validation/pktio/pktio_env | 120 +++++++++++++++++++++ .../linux-generic/test/validation/pktio/pktio_run | 110 +++++++++++++++++++ .../test/validation/pktio/pktio_run_pcap | 33 ++++++ .../test/validation/pktio/pktio_run_tap | 115 ++++++++++++++++++++ test/performance/odp_l2fwd_run | 6 +- 16 files changed, 442 insertions(+), 440 deletions(-) delete mode 100644 platform/linux-generic/test/pktio/.gitignore delete mode 100644 platform/linux-generic/test/pktio/Makefile.am delete mode 100644 platform/linux-generic/test/pktio/pktio_env delete mode 100755 platform/linux-generic/test/pktio/pktio_run delete mode 100755 platform/linux-generic/test/pktio/pktio_run_pcap delete mode 100755 platform/linux-generic/test/pktio/pktio_run_tap create mode 100644 platform/linux-generic/test/validation/Makefile.am create mode 100644 platform/linux-generic/test/validation/pktio/.gitignore create mode 100644 platform/linux-generic/test/validation/pktio/Makefile.am create mode 100644 platform/linux-generic/test/validation/pktio/pktio_env create mode 100755 platform/linux-generic/test/validation/pktio/pktio_run create mode 100755 platform/linux-generic/test/validation/pktio/pktio_run_pcap create mode 100755 platform/linux-generic/test/validation/pktio/pktio_run_tap