diff mbox

[PATCHv4] validation: implement platform env and add performance/odp_example_l2fwd_run

Message ID 1427211230-27812-1-git-send-email-maxim.uvarov@linaro.org
State New
Headers show

Commit Message

Maxim Uvarov March 24, 2015, 3:33 p.m. UTC
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>
---

 This patch depends on: [PATCHv5] example: l2fwd print packets per second

 v4: added Linaro copyright to script files.

 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   | 103 ++++++++++++++++++++++++++
 test/performance/Makefile.am            |   4 +-
 test/performance/odp_example_l2fwd_run  |  41 +++++++++++
 test/performance/odp_scheduling_run     |   5 ++
 test/validation/odp_pktio_run           | 125 +++++---------------------------
 8 files changed, 175 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

Comments

Mike Holmes March 24, 2015, 6:04 p.m. UTC | #1
On 24 March 2015 at 11:33, 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>
> ---
>
>  This patch depends on: [PATCHv5] example: l2fwd print packets per second
>
>  v4: added Linaro copyright to script files.
>
>  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   | 103 ++++++++++++++++++++++++++
>  test/performance/Makefile.am            |   4 +-
>  test/performance/odp_example_l2fwd_run  |  41 +++++++++++

 test/performance/odp_scheduling_run     |   5 ++
>  test/validation/odp_pktio_run           | 125
> +++++---------------------------
>  8 files changed, 175 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..0d8bdf3
> --- /dev/null
> +++ b/platform/linux-generic/test/pktio_env
> @@ -0,0 +1,103 @@
> +#!/bin/sh
> +#
> +# Copyright (c) 2015, Linaro Limited
> +# All rights reserved.
> +#
> +# SPDX-License-Identifier:     BSD-3-Clause
> +#
> +# Test script wrapper for running ODP pktio tests on linux-generic.
>

not just pktio test - examples too in this case


> +#
> +# For linux-generic the default behaviour is to create two pairs of
>

behavior


> +# virtual Ethernet interfaces and provide the names of these via
> +# environment variables to pktio test, the interfaces will be removed
> +# before the script exits.
>

The environment variables are passed to any test using this script not just
pktio test(s)


> +#
> +# 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.
> +#
>

Test if being run as root and warn appropriately that nothing will be
configured. It is not an error,  but an indication that the test will not
do what it is supposed to will help.


> +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
> +
> +# 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."
> +
> +       for iface in $IF0 $IF1 $IF2 $IF3; do
> +               echo "ip link show $iface"
> +               #ip link show $iface 2> /dev/null
> +               ip link show $iface
> +               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
> +}l2fwd_example
> +
> +cleanup_pktio_env()
> +{
> +       echo "pktio: removing test interfaces $IF0 - $IF3"
> +
> +       for iface in $IF0 $IF1 $IF2 $IF3; do
> +               ip link del $iface 2> /dev/null
> +       done
> +}
> 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..254a197
> --- /dev/null
> +++ b/test/performance/odp_example_l2fwd_run
> @@ -0,0 +1,41 @@
> +#!/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
> +
>

If you just drop directly into test/performance you cant run the test, you
get the message"unable to find pktio_env"  it might help users if that
message said that the platform specific set up "pktio_env"  is needed and
that it needs to be on the path.


> +run_l2fwd_example()
> +{
> +       setup_pktio_env
> +       #@todo: limit odp_generator to cores
>

Need a bug to track this todo actually happens.


> +       ($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 60 -c 2"
> +       $TEST_DIR/../../example/l2fwd/odp_l2fwd -i $IF1,$IF2 -m 0 -t 60 -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 mbox

Patch

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..0d8bdf3
--- /dev/null
+++ b/platform/linux-generic/test/pktio_env
@@ -0,0 +1,103 @@ 
+#!/bin/sh
+#
+# Copyright (c) 2015, Linaro Limited
+# All rights reserved.
+#
+# SPDX-License-Identifier:	BSD-3-Clause
+#
+# Test script wrapper for running ODP pktio tests on linux-generic.
+#
+# For linux-generic the default behaviour is to create two pairs of
+# virtual Ethernet interfaces and provide the names of these via
+# environment variables to pktio test, 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.
+#
+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
+
+# 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."
+
+	for iface in $IF0 $IF1 $IF2 $IF3; do
+		echo "ip link show $iface"
+		#ip link show $iface 2> /dev/null
+		ip link show $iface
+		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 - $IF3"
+
+	for iface in $IF0 $IF1 $IF2 $IF3; do
+		ip link del $iface 2> /dev/null
+	done
+}
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..254a197
--- /dev/null
+++ b/test/performance/odp_example_l2fwd_run
@@ -0,0 +1,41 @@ 
+#!/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
+	($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 60 -c 2"
+	$TEST_DIR/../../example/l2fwd/odp_l2fwd -i $IF1,$IF2 -m 0 -t 60 -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