Signed-off-by: Ben Pfaff <b...@nicira.com> --- Makefile.am | 3 +- NEWS | 2 + README-OFTest | 77 +++++++++++++++++++++++++++++++++++++++++++ tests/automake.mk | 6 +++ tests/run-oftest | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 181 insertions(+), 1 deletions(-) create mode 100644 README-OFTest create mode 100755 tests/run-oftest
diff --git a/Makefile.am b/Makefile.am index 328b248..ac6d3e4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,4 +1,4 @@ -# Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012 Nicira, Inc. +# Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc. # # Copying and distribution of this file, with or without modification, # are permitted in any medium without royalty provided the copyright @@ -55,6 +55,7 @@ EXTRA_DIST = \ NOTICE \ OPENFLOW-1.1+ \ PORTING \ + README-OFTest \ README-gcov \ REPORTING-BUGS \ SubmittingPatches \ diff --git a/NEWS b/NEWS index 1164962..9fec569 100644 --- a/NEWS +++ b/NEWS @@ -28,6 +28,8 @@ post-v1.9.0 - Patch ports are implemented in userspace. - Tunneling requires the version of the kernel module paired with Open vSwitch 1.9.0 or later. + - New "check-oftest" Makefile target for running OFTest against Open + vSwitch. See README-OFTest for details. v1.9.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 <b...@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 +------- + +b...@openvswitch.org +http://openvswitch.org/ diff --git a/tests/automake.mk b/tests/automake.mk index 1ebdf85..385efd0 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 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev