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 <[email protected]>
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 <[email protected]>
> ---
>  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 <[email protected]>
> -# 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 <[email protected]>
> +# 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
> [email protected]
> https://lists.linaro.org/mailman/listinfo/lng-odp
>
_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to