On 27 January 2016 at 20:49, Bill Fischofer <[email protected]> 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 <[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 >> > > -- 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"
_______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
