[ovs-dev] [oftest v3 5/5] tests: Add support for running OFTest.
Ben Pfaff
blp at nicira.com
Fri May 17 22:23:50 UTC 2013
Signed-off-by: Ben Pfaff <blp at nicira.com>
---
Makefile.am | 1 +
NEWS | 2 +
README-OFTest | 77 +++++++++++++++++++++++++++++++++++++++++++
tests/automake.mk | 6 +++
tests/run-oftest | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 180 insertions(+), 0 deletions(-)
create mode 100644 README-OFTest
create mode 100755 tests/run-oftest
diff --git a/Makefile.am b/Makefile.am
index 36beb6c..193b19e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -55,6 +55,7 @@ EXTRA_DIST = \
NOTICE \
OPENFLOW-1.1+ \
PORTING \
+ README-OFTest \
README-gcov \
README-lisp \
REPORTING-BUGS \
diff --git a/NEWS b/NEWS
index 4cb4499..7340898 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,8 @@ post-v1.11.0
* New support for matching outer source and destination IP address
of tunneled packets, for tunnel ports configured with the newly
added "remote_ip=flow" and "local_ip=flow" options.
+ - New "check-oftest" Makefile target for running OFTest against Open
+ vSwitch. See README-OFTest for details.
v1.11.0 - xx xxx xxxx
diff --git a/README-OFTest b/README-OFTest
new file mode 100644
index 0000000..92936a7
--- /dev/null
+++ b/README-OFTest
@@ -0,0 +1,77 @@
+ How to Use OFTest With Open vSwitch
+ ===================================
+
+This document describes how to use the OFTest OpenFlow protocol
+testing suite with Open vSwitch in "dummy mode". In this mode of
+testing, no packets travel across physical or virtual networks.
+Instead, Unix domain sockets stand in as simulated networks. This
+simulation is imperfect, but it is much easier to set up, does not
+require extra physical or virtual hardware, and does not require
+supervisor privileges.
+
+Prerequisites
+-------------
+
+First, build Open vSwitch according to the instructions in INSTALL.
+You need not install it.
+
+Second, obtain a copy of OFTest and install its prerequisites. You
+need a copy of OFTest that includes this commit available at
+https://github.com/blp/oftest/commits/master:
+
+ commit 406614846c5eae01f0eb460a9f107e7ed604924f
+ Author: Ben Pfaff <blp at nicira.com>
+
+ make ovs-dummy platform work again
+
+ Commit e1b8da9 (dataplane: single-threaded rewrite) changed the
+ DataPlanePort required interface but it did not update the ovs-dummy
+ implementation to match. This commit makes the platform work again.
+
+Testing OVS in dummy mode does not require root privilege, so you may
+ignore that requirement.
+
+Optionally, add the top-level OFTest directory (containing the "oft"
+program) to your $PATH. This slightly simplifies running OFTest later.
+
+Running OFTest
+--------------
+
+To run OFTest in dummy mode, run the following command from your Open
+vSwitch build directory:
+
+ make check-oftest OFT=<oft-binary>
+
+where <oft-binary> is the absolute path to the "oft" program in
+OFTest.
+
+If you added "oft" to your $PATH, you may omit the OFT variable
+assignment:
+
+ make check-oftest
+
+By default, "check-oftest" passes "oft" just enough options to enable
+dummy mode. You can use OFTFLAGS to pass additional options. For
+example, to run just the basic.Echo test instead of all tests (the
+default) and enable verbose logging:
+
+ make check-oftest OFT=<oft-binary> OFTFLAGS='--verbose -T basic.Echo'
+
+Interpreting OFTest Results
+---------------------------
+
+Please interpret OFTest results cautiously. Open vSwitch can fail a
+given test in OFTest for many reasons, including bugs in Open vSwitch,
+bugs in OFTest, bugs in the "dummy mode" integration, and differing
+interpretations of the OpenFlow standard and other standards.
+
+Open vSwitch has not been validated against OFTest. Please do report
+test failures that you believe to represent bugs in Open vSwitch.
+Include the precise versions of Open vSwitch and OFTest in your bug
+report, plus any other information needed to reproduce the problem.
+
+Contact
+-------
+
+bugs at openvswitch.org
+http://openvswitch.org/
diff --git a/tests/automake.mk b/tests/automake.mk
index 4442eb5..15df623 100644
--- a/tests/automake.mk
+++ b/tests/automake.mk
@@ -145,6 +145,12 @@ check-valgrind: all tests/atconfig tests/atlocal $(TESTSUITE) \
@echo 'Valgrind output can be found in tests/testsuite.dir/*/valgrind.*'
@echo '----------------------------------------------------------------------'
+# OFTest support.
+
+check-oftest: all
+ srcdir='$(srcdir)' $(SHELL) $(srcdir)/tests/run-oftest
+EXTRA_DIST += tests/run-oftest
+
clean-local:
test ! -f '$(TESTSUITE)' || $(SHELL) '$(TESTSUITE)' -C tests --clean
diff --git a/tests/run-oftest b/tests/run-oftest
new file mode 100755
index 0000000..d12a22f
--- /dev/null
+++ b/tests/run-oftest
@@ -0,0 +1,94 @@
+#! /bin/sh
+
+set -e
+
+run () {
+ echo "$@"
+ "$@" || exit 1
+}
+
+# Put built tools early in $PATH.
+builddir=`pwd`
+if test ! -e vswitchd/ovs-vswitchd; then
+ echo >&2 'not in build directory, please change directory or run via \"make check-oftest'
+ exit 1
+fi
+PATH=$builddir/ovsdb:$builddir/vswitchd:$builddir/utilities:$PATH; export PATH
+
+# Find srcdir.
+case $srcdir in
+ '') srcdir=$builddir ;;
+ /*) ;;
+ *) srcdir=`pwd`/$srcdir ;;
+esac
+if test ! -e "$srcdir"/WHY-OVS; then
+ echo >&2 'source directory not found, please set $srcdir or run via \"make check-oftest'
+ exit 1
+fi
+
+# Make sure oftest is available.
+if test X"$OFT" = X; then
+ OFT=oft
+fi
+if ($OFT --version) >/dev/null 2>&1; then
+ :
+else
+ echo >&2 'OFTest "oft" binary not found or cannot be run, please add to $PATH or set $OFT'
+ exit 1
+fi
+
+# Create sandbox.
+rm -rf sandbox
+mkdir sandbox
+cd sandbox
+sandbox=`pwd`
+
+# Set up environment for OVS programs to sandbox themselves.
+OVS_RUNDIR=$sandbox; export OVS_RUNDIR
+OVS_LOGDIR=$sandbox; export OVS_LOGDIR
+OVS_DBDIR=$sandbox; export OVS_DBDIR
+OVS_SYSCONFDIR=$sandbox; export OVS_SYSCONFDIR
+
+trap 'kill `cat *.pid`' 0 1 2 3 13 14 15
+
+# Create database and start ovsdb-server.
+touch .conf.db.~lock~
+rm -f conf.db
+run ovsdb-tool create conf.db "$srcdir"/vswitchd/vswitch.ovsschema
+run ovsdb-server --detach --no-chdir --pidfile -vconsole:off --log-file \
+ --remote=punix:"$sandbox"/db.sock
+
+# Start ovs-vswitchd.
+run ovs-vswitchd --detach --no-chdir --pidfile -vconsole:off --log-file \
+ --enable-dummy --disable-system -vvconn -vnetdev_dummy
+
+# Add a bridge and some ports for OFTest to use,
+# and configure ovs-vswitchd to connect to OFTest.
+run ovs-vsctl --no-wait \
+ -- add-br br0 \
+ -- set bridge br0 datapath-type=dummy fail-mode=secure
+for port in p1 p2 p3 p4; do
+ run ovs-vsctl --no-wait \
+ -- add-port br0 $port \
+ -- set interface $port type=dummy \
+ options:pstream=punix:$OVS_RUNDIR/$port
+done
+run ovs-vsctl \
+ -- set-controller br0 tcp:127.0.0.1 \
+ -- set controller br0 connection-mode=out-of-band max-backoff=1000
+
+# Run OFTest.
+run $OFT -P ovs-dummy $OFTFLAGS; status=$?
+
+cat <<EOF
+
+----------------------------------------------------------------------
+Logs may be found under $sandbox, e.g.:
+ $sandbox/oft.log
+ $sandbox/ovs-vswitchd.log
+ $sandbox/ovsdb-server.log
+----------------------------------------------------------------------
+EOF
+
+# Propagate OFTest exit status.
+exit $status
--
1.7.2.5
More information about the dev
mailing list