mirror of
https://github.com/openvswitch/ovs
synced 2025-08-30 13:58:14 +00:00
tests: Add support for running OFTest.
Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
@@ -55,6 +55,7 @@ EXTRA_DIST = \
|
|||||||
NOTICE \
|
NOTICE \
|
||||||
OPENFLOW-1.1+ \
|
OPENFLOW-1.1+ \
|
||||||
PORTING \
|
PORTING \
|
||||||
|
README-OFTest \
|
||||||
README-gcov \
|
README-gcov \
|
||||||
README-lisp \
|
README-lisp \
|
||||||
REPORTING-BUGS \
|
REPORTING-BUGS \
|
||||||
|
2
NEWS
2
NEWS
@@ -4,6 +4,8 @@ post-v1.11.0
|
|||||||
* New support for matching outer source and destination IP address
|
* New support for matching outer source and destination IP address
|
||||||
of tunneled packets, for tunnel ports configured with the newly
|
of tunneled packets, for tunnel ports configured with the newly
|
||||||
added "remote_ip=flow" and "local_ip=flow" options.
|
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
|
v1.11.0 - xx xxx xxxx
|
||||||
|
70
README-OFTest
Normal file
70
README-OFTest
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
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 commit 406614846c5 (make ovs-dummy
|
||||||
|
platform work again). This commit was merged into the OFTest
|
||||||
|
repository on Feb 1, 2013, so any copy of OFTest more recent than that
|
||||||
|
should work.
|
||||||
|
|
||||||
|
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@openvswitch.org
|
||||||
|
http://openvswitch.org/
|
@@ -145,6 +145,12 @@ check-valgrind: all tests/atconfig tests/atlocal $(TESTSUITE) \
|
|||||||
@echo 'Valgrind output can be found in tests/testsuite.dir/*/valgrind.*'
|
@echo 'Valgrind output can be found in tests/testsuite.dir/*/valgrind.*'
|
||||||
@echo '----------------------------------------------------------------------'
|
@echo '----------------------------------------------------------------------'
|
||||||
|
|
||||||
|
# OFTest support.
|
||||||
|
|
||||||
|
check-oftest: all
|
||||||
|
srcdir='$(srcdir)' $(SHELL) $(srcdir)/tests/run-oftest
|
||||||
|
EXTRA_DIST += tests/run-oftest
|
||||||
|
|
||||||
clean-local:
|
clean-local:
|
||||||
test ! -f '$(TESTSUITE)' || $(SHELL) '$(TESTSUITE)' -C tests --clean
|
test ! -f '$(TESTSUITE)' || $(SHELL) '$(TESTSUITE)' -C tests --clean
|
||||||
|
|
||||||
|
94
tests/run-oftest
Executable file
94
tests/run-oftest
Executable file
@@ -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
|
Reference in New Issue
Block a user