Message ID | 1427301166-31433-1-git-send-email-maxim.uvarov@linaro.org |
---|---|
State | New |
Headers | show |
On 25 March 2015 at 12:32, Maxim Uvarov <maxim.uvarov@linaro.org> wrote: > Different platforms need different steps to set up pktio for testing. That > might be veth devices for linux-generic, kernel modules and extended set up > for dpdk and simple set pktio testing names for other platforms. This patch > implements platform/test/pktio_env file which sets up global envs for > pktio. > As prof of validation that it works l2fwd is added to make check. > > Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> > --- > platform/linux-generic/Makefile.am | 2 + > platform/linux-generic/m4/configure.m4 | 2 + > platform/linux-generic/test/Makefile.am | 1 + > platform/linux-generic/test/pktio_env | 113 > +++++++++++++++++++++++++++++ > test/performance/Makefile.am | 4 +- > test/performance/odp_example_l2fwd_run | 42 +++++++++++ > test/performance/odp_scheduling_run | 5 ++ > test/validation/odp_pktio_run | 125 > +++++--------------------------- > 8 files changed, 186 insertions(+), 108 deletions(-) > create mode 100644 platform/linux-generic/test/Makefile.am > create mode 100755 platform/linux-generic/test/pktio_env > create mode 100755 test/performance/odp_example_l2fwd_run > > diff --git a/platform/linux-generic/Makefile.am > b/platform/linux-generic/Makefile.am > index e5558ac..033be51 100644 > --- a/platform/linux-generic/Makefile.am > +++ b/platform/linux-generic/Makefile.am > @@ -5,6 +5,8 @@ AM_CFLAGS += -I$(srcdir)/include > AM_CFLAGS += -I$(top_srcdir)/include > AM_CFLAGS += -I$(top_srcdir)/helper/include > > +SUBDIRS = test > + > include_HEADERS = \ > $(top_srcdir)/include/odp.h > > diff --git a/platform/linux-generic/m4/configure.m4 > b/platform/linux-generic/m4/configure.m4 > index 00f2f89..55124f1 100644 > --- a/platform/linux-generic/m4/configure.m4 > +++ b/platform/linux-generic/m4/configure.m4 > @@ -15,3 +15,5 @@ AC_LINK_IFELSE( > echo "GCC-style __atomic builtins not supported by the compiler." > echo "Use newer version. For gcc > 4.7.0" > exit -1) > + > +AC_CONFIG_FILES([platform/linux-generic/test/Makefile]) > diff --git a/platform/linux-generic/test/Makefile.am > b/platform/linux-generic/test/Makefile.am > new file mode 100644 > index 0000000..91e361c > --- /dev/null > +++ b/platform/linux-generic/test/Makefile.am > @@ -0,0 +1 @@ > +dist_bin_SCRIPTS = $(srcdir)/pktio_env > diff --git a/platform/linux-generic/test/pktio_env > b/platform/linux-generic/test/pktio_env > new file mode 100755 > index 0000000..02b64fb > --- /dev/null > +++ b/platform/linux-generic/test/pktio_env > @@ -0,0 +1,113 @@ > +#!/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. > +# > +TEST_DIR=$(dirname $0) > +# Network set up > +# IF0 <---> IF1 > +# IF2 <---> IF3 > +IF0=pktio-p0-p1 > +IF1=pktio-p1-p0 > +IF2=pktio-p2-p3 > +IF3=pktio-p3-p2 > + > +# exit codes expected by automake for skipped tests > +TEST_SKIPPED=77 > + > +check_for_root() > +{ > + if [ "$(id -u)" != "0" ]; then > + echo "check_for_root(): need to be root to setup VETH" > + exit $TEST_SKIPPED > Exiting with a skip at this point does not exercise the executable as much as letting the test itself decide if there is valuable work still to be done I think it is a valid test case that the executable exit cleanly because it can't run rather than the script deciding for it at this level since this is shared by many tests. > + fi > +} > + > +# 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 > + > + 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 > + 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" > + exit $TEST_SKIPPED > + fi > + ip link add $IF2 type veth peer name $IF3 > + if [ $? -ne 0 ]; then > + echo "pktio: error: unable to create veth pair" > + exit $TEST_SKIPPED > + 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" > + exit 1 > + fi > + done > +} > + > +cleanup_pktio_env() > +{ > + echo "pktio: removing test interfaces $IF0, $IF1, $IF2, $IF3" > + check_for_root > + > + for iface in $IF0 $IF1 $IF2 $IF3; do > + ip link del $iface 2> /dev/null > + done > + return 0 > +} > diff --git a/test/performance/Makefile.am b/test/performance/Makefile.am > index b0f7457..665c499 100644 > --- a/test/performance/Makefile.am > +++ b/test/performance/Makefile.am > @@ -1,12 +1,12 @@ > include $(top_srcdir)/test/Makefile.inc > > -TESTS_ENVIRONMENT = TEST_DIR=${builddir} > +TESTS_ENVIRONMENT = TEST_DIR=${builddir} ODP_PLATFORM=${with_platform} > > EXECUTABLES = odp_atomic > > COMPILE_ONLY = odp_scheduling > > -TESTSCRIPTS = odp_scheduling_run > +TESTSCRIPTS = odp_scheduling_run odp_example_l2fwd_run > > if test_perf > TESTS = $(EXECUTABLES) $(TESTSCRIPTS) > diff --git a/test/performance/odp_example_l2fwd_run > b/test/performance/odp_example_l2fwd_run > new file mode 100755 > index 0000000..27aa20c > --- /dev/null > +++ b/test/performance/odp_example_l2fwd_run > @@ -0,0 +1,42 @@ > +#!/bin/sh > +# > +# Copyright (c) 2015, Linaro Limited > +# All rights reserved. > +# > +# SPDX-License-Identifier: BSD-3-Clause > +# > + > +TEST_DIR=$(dirname $0) > + > +# Use installed pktio env or for make check take it from platform > directory > +if [ -f "./pktio_env" ]; then > + . ./pktio_env > +else if [ -f ${TEST_DIR}/../../platform/$ODP_PLATFORM/test/pktio_env ]; > then > + . ${TEST_DIR}/../../platform/$ODP_PLATFORM/test/pktio_env > +else > + echo "unable to find pktio_env" > This message is not very helpful, the update to the pktio_env script informs the user and makes it clear how to fix the issue, this message still leves the user wondering what pktio_env is and where to start looking for it. As a diagnostic to a human I think it should be clearer what was expected. + exit 1 > + fi > +fi > + > +run_l2fwd_example() > +{ > + setup_pktio_env > + #@todo: limit odp_generator to cores > + #https://bugs.linaro.org/show_bug.cgi?id=1398 > + ($TEST_DIR/../../example/generator/odp_generator -I $IF0 \ > + --srcmac fe:0f:97:c9:e0:44 --dstmac > 32:cb:9b:27:2f:1a \ > + --srcip 192.168.0.1 --dstip 192.168.0.2 -m u 2>&1 > > /dev/null) \ > + 2>&1 > /dev/null & > + > + echo "Run $TEST_DIR/../../example/l2fwd/odp_l2fwd -i $IF1,$IF2 -m > 0 -t 30 -c 2" > + $TEST_DIR/../../example/l2fwd/odp_l2fwd -i $IF1,$IF2 -m 0 -t 30 -c > 2 > + cleanup_pktio_env > + exit 0 > +} > + > +case "$1" in > + setup) setup_pktio_env ;; > + cleanup) cleanup_pktio_env ;; > + *) run_l2fwd_example ;; > +esac > diff --git a/test/performance/odp_scheduling_run > b/test/performance/odp_scheduling_run > index b64a79d..e957a98 100755 > --- a/test/performance/odp_scheduling_run > +++ b/test/performance/odp_scheduling_run > @@ -1,5 +1,10 @@ > #!/bin/sh > # > +# Copyright (c) 2015, Linaro Limited > +# All rights reserved. > +# > +# SPDX-License-Identifier: BSD-3-Clause > +# > # Script that passes command line arguments to odp_scheduling test when > # launched by 'make check' > > diff --git a/test/validation/odp_pktio_run b/test/validation/odp_pktio_run > index b725a5f..2b72ce8 100755 > --- a/test/validation/odp_pktio_run > +++ b/test/validation/odp_pktio_run > @@ -1,104 +1,23 @@ > #!/bin/sh > # > -# Test script wrapper for running ODP pktio tests on linux-generic. > +# Copyright (c) 2015, Linaro Limited > +# All rights reserved. > # > -# For platforms other than linux-generic this script does nothing other > -# than running the odp_pktio binary, odp_pktio will then attempt to > -# open and use the special device named "loop" for testing. > +# SPDX-License-Identifier: BSD-3-Clause > # > -# For linux-generic the default behaviour is to create a pair of > -# virtual Ethernet interfaces and provide the names of these via > -# environment variables to odp_pktio, 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 test will be skipped. > -# > -# The evironment variable ODP_PLATFORM is used to determine the > -# platform under test, when this script is invoked via 'make check' > -# this variable is set automatically. > -# > -# It's also possible to split up the steps, which makes it easier when > -# debugging, for example; > -# > -# export ODP_PLATFORM=linux-generic > -# odp_pktio_run setup > -# wireshark -i pktio-p0 -k & > -# odp_pktio_run > -# (repeat running test multiple times..) > -# odp_pktio_run cleanup > -# > -TEST_DIR="${TEST_DIR:-$(dirname $0)}" > -IF0=pktio-p0 > -IF1=pktio-p1 > - > -# exit codes expected by automake for skipped tests > -TEST_SKIPPED=77 > - > -# 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 [ $? != 0 ]; then > - break > - elif [ "$operstate" = "up" ]; then > - return 0 > - fi > > - sleep 0.1 > - cnt=`expr $cnt + 1` > - done > +TEST_DIR=$(dirname $0) > > - return 1 > -} > - > -setup_env1() > -{ > - ip link show $IF0 2> /dev/null > - if [ $? = 0 ]; then > - ip link show $IF1 2> /dev/null > - if [ $? = 0 ]; then > - echo "pktio: interfaces $IF0 and $IF1 already > exist" > - return > - fi > - fi > - > - echo "pktio: setting up test interfaces $IF0 and $IF1" > - > - if [ "$1" = "clean" ]; then > - trap cleanup_env1 EXIT > +# Use installed pktio env or for make check take it from platform > directory > +if [ -f "./pktio_env" ]; then > + . ./pktio_env > +else if [ -f ${TEST_DIR}/../../platform/$ODP_PLATFORM/test/pktio_env ]; > then > + . ${TEST_DIR}/../../platform/$ODP_PLATFORM/test/pktio_env > +else > + echo "unable to find pktio_env" > + exit 1 > fi > - > - ip link add $IF0 type veth peer name $IF1 > - if [ $? != 0 ]; then > - echo "pktio: error: unable to create veth pair" > - exit $TEST_SKIPPED > - fi > - ip link set $IF0 mtu 9216 up > - ip link set $IF1 mtu 9216 up > - ifconfig $IF0 -arp > - ifconfig $IF1 -arp > - > - # check that the interface has come up before starting the test > - for iface in $IF0 $IF1; do > - wait_for_iface_up $iface > - if [ $? != 0 ]; then > - echo "pktio: interface $iface failed to come up" > - exit 1 > - fi > - done > -} > - > -cleanup_env1() > -{ > - echo "pktio: removing test interfaces $IF0 and $IF1" > - ip link del $IF0 2> /dev/null > - ip link del $IF1 2> /dev/null > -} > +fi > > run_test() > { > @@ -116,12 +35,12 @@ run_test() > export ODP_PKTIO_DISABLE_SOCKET_${distype}=y > fi > $TEST_DIR/odp_pktio > - if [ $? != 0 ]; then > + if [ $? -ne 0 ]; then > ret=1 > fi > done > > - if [ $ret != 0 ]; then > + if [ $ret -ne 0 ]; then > echo "!!! FAILED !!!" > fi > > @@ -138,7 +57,7 @@ run() > > if [ "$ODP_PKTIO_IF0" = "" ]; then > # no interfaces specified on linux-generic, use defaults > - setup_env1 clean > + setup_pktio_env clean > export ODP_PKTIO_IF0=$IF0 > export ODP_PKTIO_IF1=$IF1 > fi > @@ -146,14 +65,8 @@ run() > run_test > } > > -if [ "$ODP_PLATFORM" = "" ]; then > - echo "pktio: error: ODP_PLATFORM must be defined" > - # not skipped as this should never happen via "make check" > - exit 1 > -fi > - > case "$1" in > - setup) setup_env1 ;; > - cleanup) cleanup_env1 ;; > - *) run ;; > + setup) setup_pktio_env ;; > + cleanup) cleanup_pktio_env ;; > + *) run ;; > esac > -- > 1.9.1 > > > _______________________________________________ > lng-odp mailing list > lng-odp@lists.linaro.org > http://lists.linaro.org/mailman/listinfo/lng-odp >
diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am index e5558ac..033be51 100644 --- a/platform/linux-generic/Makefile.am +++ b/platform/linux-generic/Makefile.am @@ -5,6 +5,8 @@ AM_CFLAGS += -I$(srcdir)/include AM_CFLAGS += -I$(top_srcdir)/include AM_CFLAGS += -I$(top_srcdir)/helper/include +SUBDIRS = test + include_HEADERS = \ $(top_srcdir)/include/odp.h diff --git a/platform/linux-generic/m4/configure.m4 b/platform/linux-generic/m4/configure.m4 index 00f2f89..55124f1 100644 --- a/platform/linux-generic/m4/configure.m4 +++ b/platform/linux-generic/m4/configure.m4 @@ -15,3 +15,5 @@ AC_LINK_IFELSE( echo "GCC-style __atomic builtins not supported by the compiler." echo "Use newer version. For gcc > 4.7.0" exit -1) + +AC_CONFIG_FILES([platform/linux-generic/test/Makefile]) diff --git a/platform/linux-generic/test/Makefile.am b/platform/linux-generic/test/Makefile.am new file mode 100644 index 0000000..91e361c --- /dev/null +++ b/platform/linux-generic/test/Makefile.am @@ -0,0 +1 @@ +dist_bin_SCRIPTS = $(srcdir)/pktio_env diff --git a/platform/linux-generic/test/pktio_env b/platform/linux-generic/test/pktio_env new file mode 100755 index 0000000..02b64fb --- /dev/null +++ b/platform/linux-generic/test/pktio_env @@ -0,0 +1,113 @@ +#!/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. +# +TEST_DIR=$(dirname $0) +# Network set up +# IF0 <---> IF1 +# IF2 <---> IF3 +IF0=pktio-p0-p1 +IF1=pktio-p1-p0 +IF2=pktio-p2-p3 +IF3=pktio-p3-p2 + +# exit codes expected by automake for skipped tests +TEST_SKIPPED=77 + +check_for_root() +{ + if [ "$(id -u)" != "0" ]; then + echo "check_for_root(): need to be root to setup VETH" + exit $TEST_SKIPPED + fi +} + +# 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 + + 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 + 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" + exit $TEST_SKIPPED + fi + ip link add $IF2 type veth peer name $IF3 + if [ $? -ne 0 ]; then + echo "pktio: error: unable to create veth pair" + exit $TEST_SKIPPED + 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" + exit 1 + fi + done +} + +cleanup_pktio_env() +{ + echo "pktio: removing test interfaces $IF0, $IF1, $IF2, $IF3" + check_for_root + + for iface in $IF0 $IF1 $IF2 $IF3; do + ip link del $iface 2> /dev/null + done + return 0 +} diff --git a/test/performance/Makefile.am b/test/performance/Makefile.am index b0f7457..665c499 100644 --- a/test/performance/Makefile.am +++ b/test/performance/Makefile.am @@ -1,12 +1,12 @@ include $(top_srcdir)/test/Makefile.inc -TESTS_ENVIRONMENT = TEST_DIR=${builddir} +TESTS_ENVIRONMENT = TEST_DIR=${builddir} ODP_PLATFORM=${with_platform} EXECUTABLES = odp_atomic COMPILE_ONLY = odp_scheduling -TESTSCRIPTS = odp_scheduling_run +TESTSCRIPTS = odp_scheduling_run odp_example_l2fwd_run if test_perf TESTS = $(EXECUTABLES) $(TESTSCRIPTS) diff --git a/test/performance/odp_example_l2fwd_run b/test/performance/odp_example_l2fwd_run new file mode 100755 index 0000000..27aa20c --- /dev/null +++ b/test/performance/odp_example_l2fwd_run @@ -0,0 +1,42 @@ +#!/bin/sh +# +# Copyright (c) 2015, Linaro Limited +# All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +TEST_DIR=$(dirname $0) + +# Use installed pktio env or for make check take it from platform directory +if [ -f "./pktio_env" ]; then + . ./pktio_env +else if [ -f ${TEST_DIR}/../../platform/$ODP_PLATFORM/test/pktio_env ]; then + . ${TEST_DIR}/../../platform/$ODP_PLATFORM/test/pktio_env +else + echo "unable to find pktio_env" + exit 1 + fi +fi + +run_l2fwd_example() +{ + setup_pktio_env + #@todo: limit odp_generator to cores + #https://bugs.linaro.org/show_bug.cgi?id=1398 + ($TEST_DIR/../../example/generator/odp_generator -I $IF0 \ + --srcmac fe:0f:97:c9:e0:44 --dstmac 32:cb:9b:27:2f:1a \ + --srcip 192.168.0.1 --dstip 192.168.0.2 -m u 2>&1 > /dev/null) \ + 2>&1 > /dev/null & + + echo "Run $TEST_DIR/../../example/l2fwd/odp_l2fwd -i $IF1,$IF2 -m 0 -t 30 -c 2" + $TEST_DIR/../../example/l2fwd/odp_l2fwd -i $IF1,$IF2 -m 0 -t 30 -c 2 + cleanup_pktio_env + exit 0 +} + +case "$1" in + setup) setup_pktio_env ;; + cleanup) cleanup_pktio_env ;; + *) run_l2fwd_example ;; +esac diff --git a/test/performance/odp_scheduling_run b/test/performance/odp_scheduling_run index b64a79d..e957a98 100755 --- a/test/performance/odp_scheduling_run +++ b/test/performance/odp_scheduling_run @@ -1,5 +1,10 @@ #!/bin/sh # +# Copyright (c) 2015, Linaro Limited +# All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# # Script that passes command line arguments to odp_scheduling test when # launched by 'make check' diff --git a/test/validation/odp_pktio_run b/test/validation/odp_pktio_run index b725a5f..2b72ce8 100755 --- a/test/validation/odp_pktio_run +++ b/test/validation/odp_pktio_run @@ -1,104 +1,23 @@ #!/bin/sh # -# Test script wrapper for running ODP pktio tests on linux-generic. +# Copyright (c) 2015, Linaro Limited +# All rights reserved. # -# For platforms other than linux-generic this script does nothing other -# than running the odp_pktio binary, odp_pktio will then attempt to -# open and use the special device named "loop" for testing. +# SPDX-License-Identifier: BSD-3-Clause # -# For linux-generic the default behaviour is to create a pair of -# virtual Ethernet interfaces and provide the names of these via -# environment variables to odp_pktio, 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 test will be skipped. -# -# The evironment variable ODP_PLATFORM is used to determine the -# platform under test, when this script is invoked via 'make check' -# this variable is set automatically. -# -# It's also possible to split up the steps, which makes it easier when -# debugging, for example; -# -# export ODP_PLATFORM=linux-generic -# odp_pktio_run setup -# wireshark -i pktio-p0 -k & -# odp_pktio_run -# (repeat running test multiple times..) -# odp_pktio_run cleanup -# -TEST_DIR="${TEST_DIR:-$(dirname $0)}" -IF0=pktio-p0 -IF1=pktio-p1 - -# exit codes expected by automake for skipped tests -TEST_SKIPPED=77 - -# 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 [ $? != 0 ]; then - break - elif [ "$operstate" = "up" ]; then - return 0 - fi - sleep 0.1 - cnt=`expr $cnt + 1` - done +TEST_DIR=$(dirname $0) - return 1 -} - -setup_env1() -{ - ip link show $IF0 2> /dev/null - if [ $? = 0 ]; then - ip link show $IF1 2> /dev/null - if [ $? = 0 ]; then - echo "pktio: interfaces $IF0 and $IF1 already exist" - return - fi - fi - - echo "pktio: setting up test interfaces $IF0 and $IF1" - - if [ "$1" = "clean" ]; then - trap cleanup_env1 EXIT +# Use installed pktio env or for make check take it from platform directory +if [ -f "./pktio_env" ]; then + . ./pktio_env +else if [ -f ${TEST_DIR}/../../platform/$ODP_PLATFORM/test/pktio_env ]; then + . ${TEST_DIR}/../../platform/$ODP_PLATFORM/test/pktio_env +else + echo "unable to find pktio_env" + exit 1 fi - - ip link add $IF0 type veth peer name $IF1 - if [ $? != 0 ]; then - echo "pktio: error: unable to create veth pair" - exit $TEST_SKIPPED - fi - ip link set $IF0 mtu 9216 up - ip link set $IF1 mtu 9216 up - ifconfig $IF0 -arp - ifconfig $IF1 -arp - - # check that the interface has come up before starting the test - for iface in $IF0 $IF1; do - wait_for_iface_up $iface - if [ $? != 0 ]; then - echo "pktio: interface $iface failed to come up" - exit 1 - fi - done -} - -cleanup_env1() -{ - echo "pktio: removing test interfaces $IF0 and $IF1" - ip link del $IF0 2> /dev/null - ip link del $IF1 2> /dev/null -} +fi run_test() { @@ -116,12 +35,12 @@ run_test() export ODP_PKTIO_DISABLE_SOCKET_${distype}=y fi $TEST_DIR/odp_pktio - if [ $? != 0 ]; then + if [ $? -ne 0 ]; then ret=1 fi done - if [ $ret != 0 ]; then + if [ $ret -ne 0 ]; then echo "!!! FAILED !!!" fi @@ -138,7 +57,7 @@ run() if [ "$ODP_PKTIO_IF0" = "" ]; then # no interfaces specified on linux-generic, use defaults - setup_env1 clean + setup_pktio_env clean export ODP_PKTIO_IF0=$IF0 export ODP_PKTIO_IF1=$IF1 fi @@ -146,14 +65,8 @@ run() run_test } -if [ "$ODP_PLATFORM" = "" ]; then - echo "pktio: error: ODP_PLATFORM must be defined" - # not skipped as this should never happen via "make check" - exit 1 -fi - case "$1" in - setup) setup_env1 ;; - cleanup) cleanup_env1 ;; - *) run ;; + setup) setup_pktio_env ;; + cleanup) cleanup_pktio_env ;; + *) run ;; esac
Different platforms need different steps to set up pktio for testing. That might be veth devices for linux-generic, kernel modules and extended set up for dpdk and simple set pktio testing names for other platforms. This patch implements platform/test/pktio_env file which sets up global envs for pktio. As prof of validation that it works l2fwd is added to make check. Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> --- platform/linux-generic/Makefile.am | 2 + platform/linux-generic/m4/configure.m4 | 2 + platform/linux-generic/test/Makefile.am | 1 + platform/linux-generic/test/pktio_env | 113 +++++++++++++++++++++++++++++ test/performance/Makefile.am | 4 +- test/performance/odp_example_l2fwd_run | 42 +++++++++++ test/performance/odp_scheduling_run | 5 ++ test/validation/odp_pktio_run | 125 +++++--------------------------- 8 files changed, 186 insertions(+), 108 deletions(-) create mode 100644 platform/linux-generic/test/Makefile.am create mode 100755 platform/linux-generic/test/pktio_env create mode 100755 test/performance/odp_example_l2fwd_run