2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 09:58:01 +00:00

Rework and simplify the "lcov" support for the testsuite.

This commit is contained in:
Ben Pfaff 2010-02-01 14:04:25 -08:00
parent a778696338
commit 7c126fbb8a
31 changed files with 229 additions and 162 deletions

View File

@ -15,17 +15,10 @@ code-coverage related options:
--enable-coverage --enable-coverage
--enable-coverage=yes --enable-coverage=yes
Build with gcov code coverage support, but do not assume that any Build with gcov code coverage support.
coverage-related tools are installed and do not add special
coverage support to the test suite.
--enable-coverage=lcov If you enable coverage and you have the "lcov" and "genhtml"
programs in PATH, then you may run "make check-lcov" to produce a
Build with gcov code coverage support, as above, but also add directory "tests/coverage.html" in the build directory with an
support for coverage analysis to the test suite. Running "make analysis of the test suite's coverage. lcov is available at
check" will produce a directory "tests/coverage.html" in the build http://ltp.sourceforge.net/coverage/lcov.php
directory with an analysis of the test suite's coverage.
This setting requires the lcov suite of utilities to be installed.
The "lcov" and "genhtml" programs from lcov must be in PATH. lcov
is available at: http://ltp.sourceforge.net/coverage/lcov.php

View File

@ -22,22 +22,15 @@ AC_DEFUN([OVS_CHECK_COVERAGE],
[AC_HELP_STRING([--enable-coverage], [AC_HELP_STRING([--enable-coverage],
[Enable gcov coverage tool.])], [Enable gcov coverage tool.])],
[case "${enableval}" in [case "${enableval}" in
(lcov) coverage=true lcov=true ;; (lcov|yes) coverage=true ;;
(yes) coverage=true lcov=false ;; (no) coverage=false ;;
(no) coverage=false lcov=false ;;
(*) AC_MSG_ERROR([bad value ${enableval} for --enable-coverage]) ;; (*) AC_MSG_ERROR([bad value ${enableval} for --enable-coverage]) ;;
esac], esac],
[coverage=false lcov=false]) [coverage=false])
if $coverage; then if $coverage; then
CFLAGS="$CFLAGS -O0 --coverage" CFLAGS="$CFLAGS -O0 --coverage"
LDFLAGS="$LDFLAGS --coverage" LDFLAGS="$LDFLAGS --coverage"
fi fi])
if $lcov; then
if lcov --version >/dev/null 2>&1; then :; else
AC_MSG_ERROR([--enable-coverage=lcov was specified but lcov is not in \$PATH])
fi
fi
AC_SUBST([LCOV], [$lcov])])
dnl Checks for --enable-ndebug and defines NDEBUG if it is specified. dnl Checks for --enable-ndebug and defines NDEBUG if it is specified.
AC_DEFUN([OVS_CHECK_NDEBUG], AC_DEFUN([OVS_CHECK_NDEBUG],

View File

@ -3,7 +3,7 @@ AT_BANNER([AES-128 unit tests])
m4_define([AES128_CHECK], m4_define([AES128_CHECK],
[AT_SETUP([$1]) [AT_SETUP([$1])
AT_KEYWORDS([aes128]) AT_KEYWORDS([aes128])
OVS_CHECK_LCOV([test-aes128 $2 $3], [0], [$4 AT_CHECK([test-aes128 $2 $3], [0], [$4
], []) ], [])
AT_CLEANUP]) AT_CLEANUP])

View File

@ -1,6 +1,5 @@
# -*- shell-script -*- # -*- shell-script -*-
HAVE_OPENSSL='@HAVE_OPENSSL@' HAVE_OPENSSL='@HAVE_OPENSSL@'
HAVE_PYTHON='@HAVE_PYTHON@' HAVE_PYTHON='@HAVE_PYTHON@'
LCOV='@LCOV@'
PERL='@PERL@' PERL='@PERL@'
PYTHON='@PYTHON@' PYTHON='@PYTHON@'

View File

@ -7,7 +7,6 @@ EXTRA_DIST += \
TESTSUITE_AT = \ TESTSUITE_AT = \
tests/testsuite.at \ tests/testsuite.at \
tests/ovsdb-macros.at \ tests/ovsdb-macros.at \
tests/lcov-pre.at \
tests/library.at \ tests/library.at \
tests/check-structs.at \ tests/check-structs.at \
tests/daemon.at \ tests/daemon.at \
@ -38,14 +37,64 @@ TESTSUITE_AT = \
tests/ovsdb-monitor.at \ tests/ovsdb-monitor.at \
tests/ovsdb-idl.at \ tests/ovsdb-idl.at \
tests/stp.at \ tests/stp.at \
tests/ovs-vsctl.at \ tests/ovs-vsctl.at
tests/lcov-post.at
TESTSUITE = $(srcdir)/tests/testsuite TESTSUITE = $(srcdir)/tests/testsuite
DISTCLEANFILES += tests/atconfig tests/atlocal $(TESTSUITE) DISTCLEANFILES += tests/atconfig tests/atlocal $(TESTSUITE)
check-local: tests/atconfig tests/atlocal $(TESTSUITE) AUTOTEST_PATH = utilities:vswitchd:ovsdb:tests
$(SHELL) '$(TESTSUITE)' -C tests AUTOTEST_PATH='utilities:vswitchd:ovsdb:tests' $(TESTSUITEFLAGS)
check-local: tests/atconfig tests/atlocal $(TESTSUITE)
$(SHELL) '$(TESTSUITE)' -C tests AUTOTEST_PATH=$(AUTOTEST_PATH) $(TESTSUITEFLAGS)
# lcov support
lcov_wrappers = \
tests/lcov/ovs-appctl \
tests/lcov/ovs-vsctl \
tests/lcov/ovsdb-client \
tests/lcov/ovsdb-server \
tests/lcov/ovsdb-tool \
tests/lcov/test-aes128 \
tests/lcov/test-classifier \
tests/lcov/test-csum \
tests/lcov/test-dhcp-client \
tests/lcov/test-dir_name \
tests/lcov/test-flows \
tests/lcov/test-hash \
tests/lcov/test-hmap \
tests/lcov/test-json \
tests/lcov/test-jsonrpc \
tests/lcov/test-list \
tests/lcov/test-lockfile \
tests/lcov/test-ovsdb \
tests/lcov/test-reconnect \
tests/lcov/test-sha1 \
tests/lcov/test-stp \
tests/lcov/test-timeval \
tests/lcov/test-type-props \
tests/lcov/test-uuid \
tests/lcov/test-vconn
$(lcov_wrappers): tests/lcov-wrapper.in
@test -d tests/lcov || mkdir tests/lcov
sed -e 's,[@]abs_top_builddir[@],$(abs_top_builddir),' \
-e 's,[@]wrap_program[@],$@,' \
$(top_srcdir)/tests/lcov-wrapper.in > $@.tmp
chmod +x $@.tmp
mv $@.tmp $@
CLEANFILES += $(lcov_wrappers)
EXTRA_DIST += tests/lcov-wrapper.in
LCOV = lcov -b $(abs_top_builddir) -d $(abs_top_builddir) -q
check-lcov: all tests/atconfig tests/atlocal $(TESTSUITE) $(lcov_wrappers)
rm -fr tests/coverage.html tests/coverage.info
$(LCOV) -c -i -o - > tests/coverage.info
$(SHELL) '$(TESTSUITE)' -C tests CHECK_LCOV=true AUTOTEST_PATH='tests/lcov:$(AUTOTEST_PATH)' $(TESTSUITEFLAGS); \
rc=$$?; \
echo "Producing coverage.html..."; \
cd tests && genhtml -q -o coverage.html coverage.info; \
exit $$rc
clean-local: clean-local:
test ! -f '$(TESTSUITE)' || $(SHELL) '$(TESTSUITE)' -C tests --clean test ! -f '$(TESTSUITE)' || $(SHELL) '$(TESTSUITE)' -C tests --clean

View File

@ -1,6 +1,7 @@
AT_BANNER([daemon unit tests]) AT_BANNER([daemon unit tests])
AT_SETUP([daemon]) AT_SETUP([daemon])
AT_SKIP_IF([test "$CHECK_LCOV" = true]) # lcov wrapper make pids differ
OVSDB_INIT([db]) OVSDB_INIT([db])
AT_CAPTURE_FILE([pid]) AT_CAPTURE_FILE([pid])
AT_CAPTURE_FILE([expected]) AT_CAPTURE_FILE([expected])
@ -19,6 +20,7 @@ AT_CHECK([test ! -e pid])
AT_CLEANUP AT_CLEANUP
AT_SETUP([daemon --monitor]) AT_SETUP([daemon --monitor])
AT_SKIP_IF([test "$CHECK_LCOV" = true]) # lcov wrapper make pids differ
OVSDB_INIT([db]) OVSDB_INIT([db])
AT_CAPTURE_FILE([pid]) AT_CAPTURE_FILE([pid])
AT_CAPTURE_FILE([parent]) AT_CAPTURE_FILE([parent])
@ -62,6 +64,7 @@ OVS_WAIT_WHILE([kill -0 `cat parent` || kill -0 `cat newpid` || test -e pid],
AT_CLEANUP AT_CLEANUP
AT_SETUP([daemon --detach]) AT_SETUP([daemon --detach])
AT_SKIP_IF([test "$CHECK_LCOV" = true]) # lcov wrapper make pids differ
AT_CAPTURE_FILE([pid]) AT_CAPTURE_FILE([pid])
OVSDB_INIT([db]) OVSDB_INIT([db])
# Start the daemon and make sure that the pidfile exists immediately. # Start the daemon and make sure that the pidfile exists immediately.
@ -78,6 +81,7 @@ AT_CHECK([test ! -e pid])
AT_CLEANUP AT_CLEANUP
AT_SETUP([daemon --detach --monitor]) AT_SETUP([daemon --detach --monitor])
AT_SKIP_IF([test "$CHECK_LCOV" = true]) # lcov wrapper make pids differ
m4_define([CHECK], m4_define([CHECK],
[AT_CHECK([$1], [$2], [$3], [$4], [kill `cat daemon monitor`])]) [AT_CHECK([$1], [$2], [$3], [$4], [kill `cat daemon monitor`])])
OVSDB_INIT([db]) OVSDB_INIT([db])
@ -129,7 +133,7 @@ AT_CLEANUP
AT_SETUP([daemon --detach startup errors]) AT_SETUP([daemon --detach startup errors])
AT_CAPTURE_FILE([pid]) AT_CAPTURE_FILE([pid])
OVSDB_INIT([db]) OVSDB_INIT([db])
OVS_CHECK_LCOV([ovsdb-server --detach --pidfile=$PWD/pid --unixctl=$PWD/nonexistent/unixctl db], [1], [], [stderr]) AT_CHECK([ovsdb-server --detach --pidfile=$PWD/pid --unixctl=$PWD/nonexistent/unixctl db], [1], [], [stderr])
AT_CHECK([grep 'ovsdb-server: could not initialize control socket' stderr], AT_CHECK([grep 'ovsdb-server: could not initialize control socket' stderr],
[0], [ignore], []) [0], [ignore], [])
AT_CHECK([test ! -s pid]) AT_CHECK([test ! -s pid])
@ -138,7 +142,7 @@ AT_CLEANUP
AT_SETUP([daemon --detach --monitor startup errors]) AT_SETUP([daemon --detach --monitor startup errors])
AT_CAPTURE_FILE([pid]) AT_CAPTURE_FILE([pid])
OVSDB_INIT([db]) OVSDB_INIT([db])
OVS_CHECK_LCOV([ovsdb-server --detach --pidfile=$PWD/pid --monitor --unixctl=$PWD/nonexistent/unixctl db], [1], [], [stderr]) AT_CHECK([ovsdb-server --detach --pidfile=$PWD/pid --monitor --unixctl=$PWD/nonexistent/unixctl db], [1], [], [stderr])
AT_CHECK([grep 'ovsdb-server: could not initialize control socket' stderr], AT_CHECK([grep 'ovsdb-server: could not initialize control socket' stderr],
[0], [ignore], []) [0], [ignore], [])
AT_CHECK([test ! -s pid]) AT_CHECK([test ! -s pid])

View File

@ -3,7 +3,7 @@ AT_BANNER([test dir_name function])
m4_define([CHECK_DIR_NAME], m4_define([CHECK_DIR_NAME],
[AT_SETUP([dir_name("$1") returns "$2"]) [AT_SETUP([dir_name("$1") returns "$2"])
AT_KEYWORDS([dir_name]) AT_KEYWORDS([dir_name])
OVS_CHECK_LCOV([test-dir_name "AS_ESCAPE($1)"], [0], [$2 AT_CHECK([test-dir_name "AS_ESCAPE($1)"], [0], [$2
]) ])
AT_CLEANUP]) AT_CLEANUP])

View File

@ -3,7 +3,7 @@ m4_define([JSON_CHECK_POSITIVE],
AT_KEYWORDS([json positive]) AT_KEYWORDS([json positive])
AT_CHECK([printf %s "AS_ESCAPE([$2])" > input]) AT_CHECK([printf %s "AS_ESCAPE([$2])" > input])
AT_CAPTURE_FILE([input]) AT_CAPTURE_FILE([input])
OVS_CHECK_LCOV([test-json $4 input], [0], [stdout], []) AT_CHECK([test-json $4 input], [0], [stdout], [])
AT_CHECK([cat stdout], [0], [$3 AT_CHECK([cat stdout], [0], [$3
]) ])
AT_CLEANUP]) AT_CLEANUP])
@ -13,7 +13,7 @@ m4_define([JSON_CHECK_NEGATIVE],
AT_KEYWORDS([json negative]) AT_KEYWORDS([json negative])
AT_CHECK([printf %s "AS_ESCAPE([$2])" > input]) AT_CHECK([printf %s "AS_ESCAPE([$2])" > input])
AT_CAPTURE_FILE([input]) AT_CAPTURE_FILE([input])
OVS_CHECK_LCOV([test-json $4 input], [1], [stdout], []) AT_CHECK([test-json $4 input], [1], [stdout], [])
AT_CHECK([[sed 's/^error: [^:]*:/error:/' < stdout]], [0], [$3 AT_CHECK([[sed 's/^error: [^:]*:/error:/' < stdout]], [0], [$3
]) ])
AT_CLEANUP]) AT_CLEANUP])

View File

@ -28,7 +28,7 @@ AT_CHECK([test -s pid])
# When a daemon dies it deletes its pidfile, so make a copy. # When a daemon dies it deletes its pidfile, so make a copy.
AT_CHECK([cp pid pid2]) AT_CHECK([cp pid pid2])
AT_CHECK([kill -0 `cat pid2`]) AT_CHECK([kill -0 `cat pid2`])
OVS_CHECK_LCOV([[test-jsonrpc notify unix:socket shutdown '[]']], [0], [], AT_CHECK([[test-jsonrpc notify unix:socket shutdown '[]']], [0], [],
[ignore], [kill `cat pid2`]) [ignore], [kill `cat pid2`])
AT_CHECK( AT_CHECK(
[pid=`cat pid2` [pid=`cat pid2`

View File

@ -1,6 +0,0 @@
AT_BANNER([code coverage])
AT_SETUP([generate coverage.html with lcov])
AT_CHECK([$LCOV || exit 77])
AT_CHECK([cd $abs_builddir && genhtml -o coverage.html coverage.info], [0], [ignore], [ignore])
AT_CLEANUP

View File

@ -1,21 +0,0 @@
AT_BANNER([code coverage])
m4_define([_OVS_RUN_LCOV], [test $LCOV = false || lcov -b $abs_top_builddir -d $abs_top_builddir $1])
AT_SETUP([initialize lcov])
AT_CHECK([rm -fr $abs_builddir/coverage.html])
AT_CHECK([rm -f $abs_builddir/coverage.info])
AT_CHECK([$LCOV || exit 77])
AT_CHECK([_OVS_RUN_LCOV([-c -i -o - > $abs_builddir/coverage.info])], [0], [ignore], [ignore])
AT_CLEANUP
# OVS_CHECK_LCOV(COMMAND, [STATUS = `0'], [STDOUT = `'], [STDERR = `'],
# [RUN-IF-FAIL], [RUN-IF-PASS])
#
# This macro is equivalent to AT_CHECK, except that COMMAND should be a single
# shell command that invokes a program whose code coverage is to be measured
# (if configure was invoked with --coverage).
m4_define([OVS_CHECK_LCOV],
[AT_CHECK([_OVS_RUN_LCOV([-z])], [0], [ignore], [ignore])
AT_CHECK($@)
AT_CHECK([_OVS_RUN_LCOV([-c -o - >> $abs_builddir/coverage.info])], [0], [ignore], [ignore])])

58
tests/lcov-wrapper.in Executable file
View File

@ -0,0 +1,58 @@
#! /bin/sh
abs_top_builddir='@abs_top_builddir@'
wrap_program=`basename '@wrap_program@'`
# Strip the first directory from $PATH that contains $wrap_program,
# so that below we run the real $wrap_program, not ourselves.
not_found=true
new_path=
first=true
save_IFS=$IFS
IFS=:
for dir in $PATH; do
IFS=$save_IFS
if $not_found && test -x "$dir/$wrap_program"; then
not_found=false
else
if $first; then
first=false
new_path=$dir
else
new_path=$new_path:$dir
fi
fi
done
IFS=$save_IFS
if $not_found; then
echo "$0: error: cannot find $wrap_program in \$PATH" >&2
exit 1
fi
PATH=$new_path
export PATH
# XXX Probably want some kind of synchronization here to deal with
# programs running in parallel.
LCOV="lcov -b $abs_top_builddir -d $abs_top_builddir -q"
$LCOV -z
# Run the subprocess and propagate signals to it.
for signal in 1 2 3 5 15; do
trap "kill -$signal \$! # Propagate signal
trap - $signal # Reset signal to default
wait # Wait for child to die
kill -$signal $$ # Kill ourselves with same signal
exit 1 # Exit in case 'kill' failed" $signal
done
$wrap_program 0<&0 "$@" & # 0<&0 prevents shell from closing stdin
exec 0</dev/null # Don't hold stdin open unnecessarily
wait $!; rc=$?
# Run lcov, but only if some .gcda files were produced, since lcov
# complains otherwise.
for file in `find "$abs_top_builddir" -name '*.gcda'`; do
$LCOV -c -o - >> "$abs_top_builddir/tests/coverage.info"
break
done
exit $rc

View File

@ -2,35 +2,35 @@ AT_BANNER([library unit tests])
AT_SETUP([test flow extractor]) AT_SETUP([test flow extractor])
AT_CHECK([$PERL `which flowgen.pl` >/dev/null 3>flows 4>pcap]) AT_CHECK([$PERL `which flowgen.pl` >/dev/null 3>flows 4>pcap])
OVS_CHECK_LCOV([test-flows <flows 3<pcap], [0], [checked 247 packets, 0 errors AT_CHECK([test-flows <flows 3<pcap], [0], [checked 247 packets, 0 errors
]) ])
AT_CLEANUP AT_CLEANUP
AT_SETUP([test TCP/IP checksumming]) AT_SETUP([test TCP/IP checksumming])
OVS_CHECK_LCOV([test-csum], [0], [ignore]) AT_CHECK([test-csum], [0], [ignore])
AT_CLEANUP AT_CLEANUP
AT_SETUP([test flow classifier]) AT_SETUP([test flow classifier])
AT_KEYWORDS([slow]) AT_KEYWORDS([slow])
OVS_CHECK_LCOV([test-classifier], [0], [ignore]) AT_CHECK([test-classifier], [0], [ignore])
AT_CLEANUP AT_CLEANUP
AT_SETUP([test hash functions]) AT_SETUP([test hash functions])
OVS_CHECK_LCOV([test-hash], [0], [ignore]) AT_CHECK([test-hash], [0], [ignore])
AT_CLEANUP AT_CLEANUP
AT_SETUP([test hash map]) AT_SETUP([test hash map])
OVS_CHECK_LCOV([test-hmap], [0], [ignore]) AT_CHECK([test-hmap], [0], [ignore])
AT_CLEANUP AT_CLEANUP
AT_SETUP([test linked lists]) AT_SETUP([test linked lists])
OVS_CHECK_LCOV([test-list], [0], [ignore]) AT_CHECK([test-list], [0], [ignore])
AT_CLEANUP AT_CLEANUP
AT_SETUP([test SHA-1]) AT_SETUP([test SHA-1])
OVS_CHECK_LCOV([test-sha1], [0], [ignore]) AT_CHECK([test-sha1], [0], [ignore])
AT_CLEANUP AT_CLEANUP
AT_SETUP([test type properties]) AT_SETUP([test type properties])
OVS_CHECK_LCOV([test-type-props], [0], [ignore]) AT_CHECK([test-type-props], [0], [ignore])
AT_CLEANUP AT_CLEANUP

View File

@ -3,7 +3,7 @@ AT_BANNER([lockfile unit tests])
m4_define([CHECK_LOCKFILE], m4_define([CHECK_LOCKFILE],
[AT_SETUP([m4_translit([$1], [_], [ ])]) [AT_SETUP([m4_translit([$1], [_], [ ])])
AT_KEYWORDS([lockfile]) AT_KEYWORDS([lockfile])
OVS_CHECK_LCOV([test-lockfile $1], [0], [$1: success (m4_if( AT_CHECK([test-lockfile $1], [0], [$1: success (m4_if(
[$2], [1], [$2 child], [$2 children])) [$2], [1], [$2 child], [$2 children]))
]) ])
AT_CLEANUP]) AT_CLEANUP])

View File

@ -74,7 +74,7 @@ OVSDB_CHECK_POSITIVE([conditions on scalars],
AT_SETUP([disallowed conditions on scalars]) AT_SETUP([disallowed conditions on scalars])
AT_KEYWORDS([ovsdb negative condition]) AT_KEYWORDS([ovsdb negative condition])
OVS_CHECK_LCOV([[test-ovsdb parse-conditions \ AT_CHECK([[test-ovsdb parse-conditions \
'{"columns": '{"columns":
{"i": {"type": "integer"}, {"i": {"type": "integer"},
"r": {"type": "real"}, "r": {"type": "real"},

View File

@ -23,7 +23,7 @@ m4_define([ORDINAL_SCHEMA],
m4_define([OVSDB_CHECK_EXECUTION], m4_define([OVSDB_CHECK_EXECUTION],
[AT_SETUP([$1]) [AT_SETUP([$1])
AT_KEYWORDS([ovsdb execute execution positive $5]) AT_KEYWORDS([ovsdb execute execution positive $5])
OVS_CHECK_LCOV([test-ovsdb execute '$2' m4_foreach([txn], [$3], [ 'txn'])], AT_CHECK([test-ovsdb execute '$2' m4_foreach([txn], [$3], [ 'txn'])],
[0], [stdout], []) [0], [stdout], [])
AT_CHECK([perl $srcdir/uuidfilt.pl stdout], [0], [$4]) AT_CHECK([perl $srcdir/uuidfilt.pl stdout], [0], [$4])
AT_CLEANUP]) AT_CLEANUP])

View File

@ -19,9 +19,9 @@ m4_define([OVSDB_CHECK_EXECUTION],
AT_DATA([schema], [$2 AT_DATA([schema], [$2
]) ])
touch .db.~lock~ touch .db.~lock~
OVS_CHECK_LCOV([ovsdb-tool create db schema], [0], [stdout], [ignore]) AT_CHECK([ovsdb-tool create db schema], [0], [stdout], [ignore])
m4_foreach([txn], [$3], m4_foreach([txn], [$3],
[OVS_CHECK_LCOV([ovsdb-tool transact db 'txn'], [0], [stdout], [ignore]) [AT_CHECK([ovsdb-tool transact db 'txn'], [0], [stdout], [ignore])
cat stdout >> output cat stdout >> output
]) ])
AT_CHECK([perl $srcdir/uuidfilt.pl output], [0], [$4]) AT_CHECK([perl $srcdir/uuidfilt.pl output], [0], [$4])
@ -34,8 +34,8 @@ AT_KEYWORDS([ovsdb file positive])
AT_DATA([schema], [ORDINAL_SCHEMA AT_DATA([schema], [ORDINAL_SCHEMA
]) ])
touch .db.~lock~ touch .db.~lock~
OVS_CHECK_LCOV([ovsdb-tool create db schema], [0], [], [ignore]) AT_CHECK([ovsdb-tool create db schema], [0], [], [ignore])
OVS_CHECK_LCOV([[ovsdb-tool transact db ' AT_CHECK([[ovsdb-tool transact db '
[{"op": "insert", [{"op": "insert",
"table": "ordinals", "table": "ordinals",
"row": {"name": "five", "number": 5}}, "row": {"name": "five", "number": 5}},

View File

@ -17,11 +17,11 @@ AT_BANNER([OVSDB -- interface description language (IDL)])
m4_define([OVSDB_CHECK_IDL], m4_define([OVSDB_CHECK_IDL],
[AT_SETUP([$1]) [AT_SETUP([$1])
AT_KEYWORDS([ovsdb server idl positive $5]) AT_KEYWORDS([ovsdb server idl positive $5])
OVS_CHECK_LCOV([ovsdb-tool create db $abs_srcdir/idltest.ovsschema], AT_CHECK([ovsdb-tool create db $abs_srcdir/idltest.ovsschema],
[0], [stdout], [ignore]) [0], [stdout], [ignore])
AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach --pidfile=$PWD/server-pid --remote=punix:socket --unixctl=$PWD/unixctl db], [0], [ignore], [ignore]) AT_CHECK([ovsdb-server '-vPATTERN:console:ovsdb-server|%c|%m' --detach --pidfile=$PWD/server-pid --remote=punix:socket --unixctl=$PWD/unixctl db], [0], [ignore], [ignore])
m4_if([$2], [], [], m4_if([$2], [], [],
[OVS_CHECK_LCOV([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore], [kill `cat server-pid`])]) [AT_CHECK([ovsdb-client transact unix:socket $2], [0], [ignore], [ignore], [kill `cat server-pid`])])
AT_CHECK([test-ovsdb '-vPATTERN:console:test-ovsdb|%c|%m' -vjsonrpc -t10 idl unix:socket $3], AT_CHECK([test-ovsdb '-vPATTERN:console:test-ovsdb|%c|%m' -vjsonrpc -t10 idl unix:socket $3],
[0], [stdout], [ignore], [kill `cat server-pid`]) [0], [stdout], [ignore], [kill `cat server-pid`])
AT_CHECK([sort stdout | perl $srcdir/uuidfilt.pl], [0], [$4], [], AT_CHECK([sort stdout | perl $srcdir/uuidfilt.pl], [0], [$4], [],

View File

@ -3,11 +3,11 @@ AT_BANNER([OVSDB -- logging])
AT_SETUP([create empty, reread]) AT_SETUP([create empty, reread])
AT_KEYWORDS([ovsdb log]) AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([log]) AT_CAPTURE_FILE([log])
OVS_CHECK_LCOV( AT_CHECK(
[test-ovsdb log-io file 'O_CREAT|O_RDWR'], [0], [test-ovsdb log-io file 'O_CREAT|O_RDWR'], [0],
[file: open successful [file: open successful
], [ignore]) ], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[test-ovsdb log-io file 'O_RDONLY' read], [0], [test-ovsdb log-io file 'O_RDONLY' read], [0],
[file: open successful [file: open successful
file: read: end of log file: read: end of log
@ -18,12 +18,12 @@ AT_CLEANUP
AT_SETUP([write one, reread]) AT_SETUP([write one, reread])
AT_KEYWORDS([ovsdb log]) AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file]) AT_CAPTURE_FILE([file])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]']], [0], [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]']], [0],
[[file: open successful [[file: open successful
file: write:[0] successful file: write:[0] successful
]], [ignore]) ]], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[test-ovsdb log-io file 'O_RDONLY' read read], [0], [test-ovsdb log-io file 'O_RDONLY' read read], [0],
[[file: open successful [[file: open successful
file: read: [0] file: read: [0]
@ -35,17 +35,17 @@ AT_CLEANUP
AT_SETUP([check that O_EXCL works]) AT_SETUP([check that O_EXCL works])
AT_KEYWORDS([ovsdb log]) AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file]) AT_CAPTURE_FILE([file])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[1]']], [0], [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[1]']], [0],
[[file: open successful [[file: open successful
file: write:[1] successful file: write:[1] successful
]], [ignore]) ]], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[test-ovsdb log-io file 'O_RDONLY' read], [0], [test-ovsdb log-io file 'O_RDONLY' read], [0],
[[file: open successful [[file: open successful
file: read: [1] file: read: [1]
]], [ignore]) ]], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[test-ovsdb log-io file 'O_CREAT|O_RDWR|O_EXCL' read], [1], [test-ovsdb log-io file 'O_CREAT|O_RDWR|O_EXCL' read], [1],
[], [test-ovsdb: I/O error: create: file failed (File exists) [], [test-ovsdb: I/O error: create: file failed (File exists)
]) ])
@ -55,14 +55,14 @@ AT_CLEANUP
AT_SETUP([write one, reread]) AT_SETUP([write one, reread])
AT_KEYWORDS([ovsdb log]) AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file]) AT_CAPTURE_FILE([file])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful [[file: open successful
file: write:[0] successful file: write:[0] successful
file: write:[1] successful file: write:[1] successful
file: write:[2] successful file: write:[2] successful
]], [ignore]) ]], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[test-ovsdb log-io file 'O_RDONLY' read read read read], [0], [test-ovsdb log-io file 'O_RDONLY' read read read read], [0],
[[file: open successful [[file: open successful
file: read: [0] file: read: [0]
@ -76,14 +76,14 @@ AT_CLEANUP
AT_SETUP([write one, reread, append]) AT_SETUP([write one, reread, append])
AT_KEYWORDS([ovsdb log]) AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file]) AT_CAPTURE_FILE([file])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful [[file: open successful
file: write:[0] successful file: write:[0] successful
file: write:[1] successful file: write:[1] successful
file: write:[2] successful file: write:[2] successful
]], [ignore]) ]], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_RDWR' read read read 'write:["append"]']], [0], [[test-ovsdb log-io file 'O_RDWR' read read read 'write:["append"]']], [0],
[[file: open successful [[file: open successful
file: read: [0] file: read: [0]
@ -91,7 +91,7 @@ file: read: [1]
file: read: [2] file: read: [2]
file: write:["append"] successful file: write:["append"] successful
]], [ignore]) ]], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[test-ovsdb log-io file 'O_RDONLY' read read read read read], [0], [test-ovsdb log-io file 'O_RDONLY' read read read read read], [0],
[[file: open successful [[file: open successful
file: read: [0] file: read: [0]
@ -106,20 +106,20 @@ AT_CLEANUP
AT_SETUP([write, reread one, overwrite]) AT_SETUP([write, reread one, overwrite])
AT_KEYWORDS([ovsdb log]) AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file]) AT_CAPTURE_FILE([file])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful [[file: open successful
file: write:[0] successful file: write:[0] successful
file: write:[1] successful file: write:[1] successful
file: write:[2] successful file: write:[2] successful
]], [ignore]) ]], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_RDWR' read 'write:["more data"]']], [0], [[test-ovsdb log-io file 'O_RDWR' read 'write:["more data"]']], [0],
[[file: open successful [[file: open successful
file: read: [0] file: read: [0]
file: write:["more data"] successful file: write:["more data"] successful
]], [ignore]) ]], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[test-ovsdb log-io file 'O_RDONLY' read read read], [0], [test-ovsdb log-io file 'O_RDONLY' read read read], [0],
[[file: open successful [[file: open successful
file: read: [0] file: read: [0]
@ -132,7 +132,7 @@ AT_CLEANUP
AT_SETUP([write, add corrupted data, read]) AT_SETUP([write, add corrupted data, read])
AT_KEYWORDS([ovsdb log]) AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file]) AT_CAPTURE_FILE([file])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful [[file: open successful
file: write:[0] successful file: write:[0] successful
@ -140,7 +140,7 @@ file: write:[1] successful
file: write:[2] successful file: write:[2] successful
]], [ignore]) ]], [ignore])
AT_CHECK([echo 'xxx' >> file]) AT_CHECK([echo 'xxx' >> file])
OVS_CHECK_LCOV( AT_CHECK(
[test-ovsdb log-io file 'O_RDONLY' read read read read], [0], [test-ovsdb log-io file 'O_RDONLY' read read read read], [0],
[[file: open successful [[file: open successful
file: read: [0] file: read: [0]
@ -154,7 +154,7 @@ AT_CLEANUP
AT_SETUP([write, add corrupted data, read, overwrite]) AT_SETUP([write, add corrupted data, read, overwrite])
AT_KEYWORDS([ovsdb log]) AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file]) AT_CAPTURE_FILE([file])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful [[file: open successful
file: write:[0] successful file: write:[0] successful
@ -162,7 +162,7 @@ file: write:[1] successful
file: write:[2] successful file: write:[2] successful
]], [ignore]) ]], [ignore])
AT_CHECK([echo 'xxx' >> file]) AT_CHECK([echo 'xxx' >> file])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_RDWR' read read read read 'write:[3]']], [0], [[test-ovsdb log-io file 'O_RDWR' read read read read 'write:[3]']], [0],
[[file: open successful [[file: open successful
file: read: [0] file: read: [0]
@ -171,7 +171,7 @@ file: read: [2]
file: read failed: syntax error: file: parse error at offset 174 in header line "xxx" file: read failed: syntax error: file: parse error at offset 174 in header line "xxx"
file: write:[3] successful file: write:[3] successful
]], [ignore]) ]], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[test-ovsdb log-io file 'O_RDONLY' read read read read read], [0], [test-ovsdb log-io file 'O_RDONLY' read read read read read], [0],
[[file: open successful [[file: open successful
file: read: [0] file: read: [0]
@ -186,7 +186,7 @@ AT_CLEANUP
AT_SETUP([write, corrupt some data, read, overwrite]) AT_SETUP([write, corrupt some data, read, overwrite])
AT_KEYWORDS([ovsdb log]) AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file]) AT_CAPTURE_FILE([file])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful [[file: open successful
file: write:[0] successful file: write:[0] successful
@ -197,7 +197,7 @@ AT_CHECK([[sed 's/\[2]/[3]/' < file > file.tmp]])
AT_CHECK([mv file.tmp file]) AT_CHECK([mv file.tmp file])
AT_CHECK([[grep -c '\[3]' file]], [0], [1 AT_CHECK([[grep -c '\[3]' file]], [0], [1
]) ])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_RDWR' read read read 'write:["longer data"]']], [0], [[test-ovsdb log-io file 'O_RDWR' read read read 'write:["longer data"]']], [0],
[[file: open successful [[file: open successful
file: read: [0] file: read: [0]
@ -205,7 +205,7 @@ file: read: [1]
file: read failed: syntax error: file: 4 bytes starting at offset 170 have SHA-1 hash 5c031e5c0d3a9338cc127ebe40bb2748b6a67e78 but should have hash 98f55556e7ffd432381b56a19bd485b3e6446442 file: read failed: syntax error: file: 4 bytes starting at offset 170 have SHA-1 hash 5c031e5c0d3a9338cc127ebe40bb2748b6a67e78 but should have hash 98f55556e7ffd432381b56a19bd485b3e6446442
file: write:["longer data"] successful file: write:["longer data"] successful
]], [ignore]) ]], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[test-ovsdb log-io file 'O_RDONLY' read read read read], [0], [test-ovsdb log-io file 'O_RDONLY' read read read read], [0],
[[file: open successful [[file: open successful
file: read: [0] file: read: [0]
@ -219,7 +219,7 @@ AT_CLEANUP
AT_SETUP([write, truncate file, read, overwrite]) AT_SETUP([write, truncate file, read, overwrite])
AT_KEYWORDS([ovsdb log]) AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file]) AT_CAPTURE_FILE([file])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful [[file: open successful
file: write:[0] successful file: write:[0] successful
@ -230,7 +230,7 @@ AT_CHECK([[sed 's/\[2]/2/' < file > file.tmp]])
AT_CHECK([mv file.tmp file]) AT_CHECK([mv file.tmp file])
AT_CHECK([[grep -c '^2$' file]], [0], [1 AT_CHECK([[grep -c '^2$' file]], [0], [1
]) ])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_RDWR' read read read 'write:["longer data"]']], [0], [[test-ovsdb log-io file 'O_RDWR' read read read 'write:["longer data"]']], [0],
[[file: open successful [[file: open successful
file: read: [0] file: read: [0]
@ -238,7 +238,7 @@ file: read: [1]
file: read failed: I/O error: file: error reading 4 bytes starting at offset 170 (unexpected end of file) file: read failed: I/O error: file: error reading 4 bytes starting at offset 170 (unexpected end of file)
file: write:["longer data"] successful file: write:["longer data"] successful
]], [ignore]) ]], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[test-ovsdb log-io file 'O_RDONLY' read read read read], [0], [test-ovsdb log-io file 'O_RDONLY' read read read read], [0],
[[file: open successful [[file: open successful
file: read: [0] file: read: [0]
@ -252,7 +252,7 @@ AT_CLEANUP
AT_SETUP([write bad JSON, read, overwrite]) AT_SETUP([write bad JSON, read, overwrite])
AT_KEYWORDS([ovsdb log]) AT_KEYWORDS([ovsdb log])
AT_CAPTURE_FILE([file]) AT_CAPTURE_FILE([file])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0], [[test-ovsdb log-io file 'O_CREAT|O_RDWR' 'write:[0]' 'write:[1]' 'write:[2]']], [0],
[[file: open successful [[file: open successful
file: write:[0] successful file: write:[0] successful
@ -260,7 +260,7 @@ file: write:[1] successful
file: write:[2] successful file: write:[2] successful
]], [ignore]) ]], [ignore])
AT_CHECK([[printf '%s\n%s\n' 'OVSDB JSON 5 d910b02871075d3156ec8675dfc95b7d5d640aa6' 'null' >> file]]) AT_CHECK([[printf '%s\n%s\n' 'OVSDB JSON 5 d910b02871075d3156ec8675dfc95b7d5d640aa6' 'null' >> file]])
OVS_CHECK_LCOV( AT_CHECK(
[[test-ovsdb log-io file 'O_RDWR' read read read read 'write:["replacement data"]']], [0], [[test-ovsdb log-io file 'O_RDWR' read read read read 'write:["replacement data"]']], [0],
[[file: open successful [[file: open successful
file: read: [0] file: read: [0]
@ -269,7 +269,7 @@ file: read: [2]
file: read failed: syntax error: file: 5 bytes starting at offset 228 are not valid JSON (line 1, column 0, byte 5: syntax error at beginning of input) file: read failed: syntax error: file: 5 bytes starting at offset 228 are not valid JSON (line 1, column 0, byte 5: syntax error at beginning of input)
file: write:["replacement data"] successful file: write:["replacement data"] successful
]], [ignore]) ]], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[test-ovsdb log-io file 'O_RDONLY' read read read read read], [0], [test-ovsdb log-io file 'O_RDONLY' read read read read read], [0],
[[file: open successful [[file: open successful
file: read: [0] file: read: [0]

View File

@ -2,10 +2,10 @@ dnl OVSDB_INIT([$1])
dnl dnl
dnl Creates an empty database named $1. dnl Creates an empty database named $1.
m4_define([OVSDB_INIT], m4_define([OVSDB_INIT],
[OVS_CHECK_LCOV( [AT_CHECK(
[ovsdb-tool create $1 $abs_top_srcdir/vswitchd/vswitch.ovsschema], [ovsdb-tool create $1 $abs_top_srcdir/vswitchd/vswitch.ovsschema],
[0], [stdout], [ignore]) [0], [stdout], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[[ovsdb-tool transact $1 \ [[ovsdb-tool transact $1 \
'[{"op": "insert", '[{"op": "insert",
"table": "Open_vSwitch", "table": "Open_vSwitch",

View File

@ -20,17 +20,17 @@ m4_define([OVSDB_CHECK_MONITOR],
AT_KEYWORDS([ovsdb server monitor positive $7]) AT_KEYWORDS([ovsdb server monitor positive $7])
AT_DATA([schema], [$2 AT_DATA([schema], [$2
]) ])
OVS_CHECK_LCOV([ovsdb-tool create db schema], [0], [stdout], [ignore]) AT_CHECK([ovsdb-tool create db schema], [0], [stdout], [ignore])
m4_foreach([txn], [$3], m4_foreach([txn], [$3],
[OVS_CHECK_LCOV([ovsdb-tool transact db 'txn'], [0], [ignore], [ignore])]) [AT_CHECK([ovsdb-tool transact db 'txn'], [0], [ignore], [ignore])])
AT_CHECK([ovsdb-server --detach --pidfile=$PWD/server-pid --remote=punix:socket --unixctl=$PWD/unixctl db], [0], [ignore], [ignore]) AT_CHECK([ovsdb-server --detach --pidfile=$PWD/server-pid --remote=punix:socket --unixctl=$PWD/unixctl db], [0], [ignore], [ignore])
AT_CHECK([ovsdb-client --detach --pidfile=$PWD/client-pid monitor --format=csv unix:socket $4 > output], AT_CHECK([ovsdb-client --detach --pidfile=$PWD/client-pid monitor --format=csv unix:socket $4 > output],
[0], [ignore], [ignore], [kill `cat server-pid`]) [0], [ignore], [ignore], [kill `cat server-pid`])
m4_foreach([txn], [$5], m4_foreach([txn], [$5],
[OVS_CHECK_LCOV([ovsdb-client transact unix:socket 'txn'], [0], [AT_CHECK([ovsdb-client transact unix:socket 'txn'], [0],
[ignore], [ignore], [kill `cat server-pid client-pid`])]) [ignore], [ignore], [kill `cat server-pid client-pid`])])
OVS_CHECK_LCOV([ovsdb-client transact unix:socket '[[]]'], [0], AT_CHECK([ovsdb-client transact unix:socket '[[]]'], [0],
[ignore], [ignore], [kill `cat server-pid client-pid`]) [ignore], [ignore], [kill `cat server-pid client-pid`])
AT_CHECK([ovs-appctl -t $PWD/unixctl -e exit], [0], [ignore], [ignore]) AT_CHECK([ovs-appctl -t $PWD/unixctl -e exit], [0], [ignore], [ignore])
OVS_WAIT_UNTIL([test ! -e server-pid && test ! -e client-pid]) OVS_WAIT_UNTIL([test ! -e server-pid && test ! -e client-pid])
AT_CHECK([perl $srcdir/uuidfilt.pl output], [0], [$6], [ignore]) AT_CHECK([perl $srcdir/uuidfilt.pl output], [0], [$6], [ignore])

View File

@ -36,7 +36,7 @@ OVSDB_CHECK_POSITIVE([mutations on scalars],
AT_SETUP([disallowed mutations on scalars]) AT_SETUP([disallowed mutations on scalars])
AT_KEYWORDS([ovsdb negative mutation]) AT_KEYWORDS([ovsdb negative mutation])
OVS_CHECK_LCOV([[test-ovsdb parse-mutations \ AT_CHECK([[test-ovsdb parse-mutations \
'{"columns": '{"columns":
{"i": {"type": "integer"}, {"i": {"type": "integer"},
"r": {"type": "real"}, "r": {"type": "real"},

View File

@ -19,10 +19,10 @@ m4_define([OVSDB_CHECK_EXECUTION],
AT_KEYWORDS([ovsdb server positive $5]) AT_KEYWORDS([ovsdb server positive $5])
AT_DATA([schema], [$2 AT_DATA([schema], [$2
]) ])
OVS_CHECK_LCOV([ovsdb-tool create db schema], [0], [stdout], [ignore]) AT_CHECK([ovsdb-tool create db schema], [0], [stdout], [ignore])
AT_CHECK([ovsdb-server --detach --pidfile=$PWD/pid --remote=punix:socket --unixctl=$PWD/unixctl db], [0], [ignore], [ignore]) AT_CHECK([ovsdb-server --detach --pidfile=$PWD/pid --remote=punix:socket --unixctl=$PWD/unixctl db], [0], [ignore], [ignore])
m4_foreach([txn], [$3], m4_foreach([txn], [$3],
[OVS_CHECK_LCOV([ovsdb-client transact unix:socket 'txn'], [0], [stdout], [ignore], [AT_CHECK([ovsdb-client transact unix:socket 'txn'], [0], [stdout], [ignore],
[test ! -e pid || kill `cat pid`]) [test ! -e pid || kill `cat pid`])
cat stdout >> output cat stdout >> output
]) ])
@ -42,14 +42,14 @@ AT_DATA([schema],
"columns": { "columns": {
"manager": {"type": "string"}}}}} "manager": {"type": "string"}}}}}
]]) ]])
OVS_CHECK_LCOV([ovsdb-tool create db schema], [0], [ignore], [ignore]) AT_CHECK([ovsdb-tool create db schema], [0], [ignore], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[[ovsdb-tool transact db \ [[ovsdb-tool transact db \
'[{"op": "insert", '[{"op": "insert",
"table": "Manager", "table": "Manager",
"row": {"manager": "punix:socket"}}]']], [0], [ignore], [ignore]) "row": {"manager": "punix:socket"}}]']], [0], [ignore], [ignore])
AT_CHECK([ovsdb-server --detach --pidfile=$PWD/pid --remote=db:Manager,manager --unixctl=$PWD/unixctl db], [0], [ignore], [ignore]) AT_CHECK([ovsdb-server --detach --pidfile=$PWD/pid --remote=db:Manager,manager --unixctl=$PWD/unixctl db], [0], [ignore], [ignore])
OVS_CHECK_LCOV( AT_CHECK(
[[ovsdb-client transact unix:socket \ [[ovsdb-client transact unix:socket \
'[{"op": "select", '[{"op": "select",
"table": "Manager", "table": "Manager",
@ -91,10 +91,10 @@ m4_define([OVSDB_CHECK_EXECUTION],
]) ])
SSL_PORT=`expr 32767 + \( $RANDOM % 32767 \)` SSL_PORT=`expr 32767 + \( $RANDOM % 32767 \)`
PKIDIR=$abs_top_srcdir/tests PKIDIR=$abs_top_srcdir/tests
OVS_CHECK_LCOV([ovsdb-tool create db schema], [0], [stdout], [ignore]) AT_CHECK([ovsdb-tool create db schema], [0], [stdout], [ignore])
AT_CHECK([ovsdb-server --detach --pidfile=$PWD/pid --private-key=$PKIDIR/testpki-privkey2.pem --certificate=$PKIDIR/testpki-cert2.pem --ca-cert=$PKIDIR/testpki-cacert.pem --remote=pssl:$SSL_PORT:127.0.0.1 --unixctl=$PWD/unixctl db], [0], [ignore], [ignore]) AT_CHECK([ovsdb-server --detach --pidfile=$PWD/pid --private-key=$PKIDIR/testpki-privkey2.pem --certificate=$PKIDIR/testpki-cert2.pem --ca-cert=$PKIDIR/testpki-cacert.pem --remote=pssl:$SSL_PORT:127.0.0.1 --unixctl=$PWD/unixctl db], [0], [ignore], [ignore])
m4_foreach([txn], [$3], m4_foreach([txn], [$3],
[OVS_CHECK_LCOV([ovsdb-client --private-key=$PKIDIR/testpki-privkey.pem --certificate=$PKIDIR/testpki-cert.pem --ca-cert=$PKIDIR/testpki-cacert.pem transact ssl:127.0.0.1:$SSL_PORT 'txn'], [0], [stdout], [ignore], [AT_CHECK([ovsdb-client --private-key=$PKIDIR/testpki-privkey.pem --certificate=$PKIDIR/testpki-cert.pem --ca-cert=$PKIDIR/testpki-cacert.pem transact ssl:127.0.0.1:$SSL_PORT 'txn'], [0], [stdout], [ignore],
[test ! -e pid || kill `cat pid`]) [test ! -e pid || kill `cat pid`])
cat stdout >> output cat stdout >> output
]) ])

View File

@ -8,7 +8,7 @@ AT_BANNER([OVSDB -- triggers])
m4_define([OVSDB_CHECK_TRIGGER], m4_define([OVSDB_CHECK_TRIGGER],
[AT_SETUP([$1]) [AT_SETUP([$1])
AT_KEYWORDS([ovsdb execute execution trigger positive $4]) AT_KEYWORDS([ovsdb execute execution trigger positive $4])
OVS_CHECK_LCOV([test-ovsdb trigger $2], [0], [stdout], []) AT_CHECK([test-ovsdb trigger $2], [0], [stdout], [])
AT_CHECK([perl $srcdir/uuidfilt.pl stdout], [0], [$3]) AT_CHECK([perl $srcdir/uuidfilt.pl stdout], [0], [$3])
AT_CLEANUP]) AT_CLEANUP])

View File

@ -11,7 +11,7 @@ m4_define([OVSDB_CHECK_POSITIVE],
m4_if([$5], [], [], m4_if([$5], [], [],
[AT_XFAIL_IF([m4_version_prereq([$5], [false], [true])])]) [AT_XFAIL_IF([m4_version_prereq([$5], [false], [true])])])
AT_KEYWORDS([ovsdb positive $4]) AT_KEYWORDS([ovsdb positive $4])
OVS_CHECK_LCOV([test-ovsdb $2], [0], [$3 AT_CHECK([test-ovsdb $2], [0], [$3
], []) ], [])
AT_CLEANUP]) AT_CLEANUP])
@ -23,7 +23,7 @@ m4_define([OVSDB_CHECK_POSITIVE],
m4_define([OVSDB_CHECK_NEGATIVE], m4_define([OVSDB_CHECK_NEGATIVE],
[AT_SETUP([$1]) [AT_SETUP([$1])
AT_KEYWORDS([ovsdb negative $4]) AT_KEYWORDS([ovsdb negative $4])
OVS_CHECK_LCOV([test-ovsdb $2], [1], [], [stderr]) AT_CHECK([test-ovsdb $2], [1], [], [stderr])
m4_assert(m4_len([$3])) m4_assert(m4_len([$3]))
AT_CHECK( AT_CHECK(
[if grep -F -e "AS_ESCAPE([$3])" stderr [if grep -F -e "AS_ESCAPE([$3])" stderr

View File

@ -6,7 +6,7 @@ AT_KEYWORDS([reconnect])
AT_DATA([input], [run AT_DATA([input], [run
timeout timeout
]) ])
OVS_CHECK_LCOV([test-reconnect < input], [0], AT_CHECK([test-reconnect < input], [0],
[### t=1000 ### [### t=1000 ###
run run
timeout timeout
@ -32,7 +32,7 @@ timeout
run run
disconnected disconnected
]) ])
OVS_CHECK_LCOV([test-reconnect < input], [0], AT_CHECK([test-reconnect < input], [0],
[### t=1000 ### [### t=1000 ###
enable enable
in BACKOFF for 0 ms (0 ms backoff) in BACKOFF for 0 ms (0 ms backoff)
@ -95,7 +95,7 @@ timeout
run run
disconnected disconnected
]) ])
OVS_CHECK_LCOV([test-reconnect < input], [0], AT_CHECK([test-reconnect < input], [0],
[### t=1000 ### [### t=1000 ###
enable enable
in BACKOFF for 0 ms (0 ms backoff) in BACKOFF for 0 ms (0 ms backoff)
@ -208,7 +208,7 @@ timeout
run run
connect-failed connect-failed
]) ])
OVS_CHECK_LCOV([test-reconnect < input], [0], AT_CHECK([test-reconnect < input], [0],
[### t=1000 ### [### t=1000 ###
enable enable
in BACKOFF for 0 ms (0 ms backoff) in BACKOFF for 0 ms (0 ms backoff)
@ -552,7 +552,7 @@ run
timeout timeout
run run
]) ])
OVS_CHECK_LCOV([test-reconnect < input], [0], AT_CHECK([test-reconnect < input], [0],
[### t=1000 ### [### t=1000 ###
enable enable
in BACKOFF for 0 ms (0 ms backoff) in BACKOFF for 0 ms (0 ms backoff)
@ -695,7 +695,7 @@ run
timeout timeout
run run
]) ])
OVS_CHECK_LCOV([test-reconnect < input], [0], AT_CHECK([test-reconnect < input], [0],
[### t=1000 ### [### t=1000 ###
enable enable
in BACKOFF for 0 ms (0 ms backoff) in BACKOFF for 0 ms (0 ms backoff)
@ -859,7 +859,7 @@ run
timeout timeout
run run
]) ])
OVS_CHECK_LCOV([test-reconnect < input], [0], AT_CHECK([test-reconnect < input], [0],
[### t=1000 ### [### t=1000 ###
enable enable
in BACKOFF for 0 ms (0 ms backoff) in BACKOFF for 0 ms (0 ms backoff)
@ -992,7 +992,7 @@ connect-failed ECONNREFUSED
run run
timeout timeout
]) ])
OVS_CHECK_LCOV([test-reconnect < input], [0], AT_CHECK([test-reconnect < input], [0],
[### t=1000 ### [### t=1000 ###
enable enable
in BACKOFF for 0 ms (0 ms backoff) in BACKOFF for 0 ms (0 ms backoff)
@ -1048,7 +1048,7 @@ timeout
run run
disconnected disconnected
]) ])
OVS_CHECK_LCOV([test-reconnect < input], [0], AT_CHECK([test-reconnect < input], [0],
[### t=1000 ### [### t=1000 ###
set-max-tries 1 set-max-tries 1
1 tries left 1 tries left
@ -1099,7 +1099,7 @@ enable
run run
timeout timeout
]) ])
OVS_CHECK_LCOV([test-reconnect < input], [0], AT_CHECK([test-reconnect < input], [0],
[### t=1000 ### [### t=1000 ###
set-max-tries 0 set-max-tries 0
0 tries left 0 tries left

View File

@ -15,7 +15,7 @@ check 2 = F:10 B
check 3 = F:5 F check 3 = F:5 F
check 4 = F:5 B check 4 = F:5 B
]) ])
OVS_CHECK_LCOV([test-stp test-stp-ieee802.1d-1998]) AT_CHECK([test-stp test-stp-ieee802.1d-1998])
AT_CLEANUP AT_CLEANUP
AT_SETUP([STP example from IEEE 802.1D-2004 figures 17.4 and 17.5]) AT_SETUP([STP example from IEEE 802.1D-2004 figures 17.4 and 17.5])
@ -52,7 +52,7 @@ check 5 = F:20 B F F
check 6 = F:20 B F F check 6 = F:20 B F F
check 7 = F:20 B F B check 7 = F:20 B F B
]) ])
OVS_CHECK_LCOV([test-stp test-stp-ieee802.1d-2004-fig17.4]) AT_CHECK([test-stp test-stp-ieee802.1d-2004-fig17.4])
AT_CLEANUP AT_CLEANUP
AT_SETUP([STP example from IEEE 802.1D-2004 figure 17.6]) AT_SETUP([STP example from IEEE 802.1D-2004 figure 17.6])
@ -72,7 +72,7 @@ check 3 = F:30 F B
check 4 = F:20 F F check 4 = F:20 F F
check 5 = F:10 F F check 5 = F:10 F F
]) ])
OVS_CHECK_LCOV([test-stp test-stp-ieee802.1d-2004-fig17.6]) AT_CHECK([test-stp test-stp-ieee802.1d-2004-fig17.6])
AT_CLEANUP AT_CLEANUP
AT_SETUP([STP example from IEEE 802.1D-2004 figure 17.7]) AT_SETUP([STP example from IEEE 802.1D-2004 figure 17.7])
@ -95,7 +95,7 @@ check 0 = root
check 1 = F F:10 F F F F F F check 1 = F F:10 F F F F F F
check 2 = F:20 D F F F F F F check 2 = F:20 D F F F F F F
]) ])
OVS_CHECK_LCOV([test-stp test-stp-ieee802.1d-2004-fig17.7]) AT_CHECK([test-stp test-stp-ieee802.1d-2004-fig17.7])
AT_CLEANUP AT_CLEANUP
AT_SETUP([STP.io.1.1: Link Failure]) AT_SETUP([STP.io.1.1: Link Failure])
@ -128,7 +128,7 @@ run 1000
check 0 = root check 0 = root
check 1 = D D F:10 check 1 = D D F:10
]) ])
OVS_CHECK_LCOV([test-stp test-stp-iol-io-1.1]) AT_CHECK([test-stp test-stp-iol-io-1.1])
AT_CLEANUP AT_CLEANUP
AT_SETUP([STP.io.1.2: Repeated Network]) AT_SETUP([STP.io.1.2: Repeated Network])
@ -148,7 +148,7 @@ run 1000
check 0 = rootid:0x111 F B check 0 = rootid:0x111 F B
check 1 = rootid:0x111 B F:10 check 1 = rootid:0x111 B F:10
]) ])
OVS_CHECK_LCOV([test-stp test-stp-iol-io-1.2]) AT_CHECK([test-stp test-stp-iol-io-1.2])
AT_CLEANUP AT_CLEANUP
AT_SETUP([STP.io.1.4: Network Initialization]) AT_SETUP([STP.io.1.4: Network Initialization])
@ -168,7 +168,7 @@ check 1 = F:10 F F
check 2 = F:10 B F check 2 = F:10 B F
check 3 = F:10 B B check 3 = F:10 B B
]) ])
OVS_CHECK_LCOV([test-stp test-stp-iol-io-1.4]) AT_CHECK([test-stp test-stp-iol-io-1.4])
AT_CLEANUP AT_CLEANUP
AT_SETUP([STP.io.1.5: Topology Change]) AT_SETUP([STP.io.1.5: Topology Change])
@ -215,7 +215,7 @@ check 1 = F:10 B F F
check 2 = B F:10 F F check 2 = B F:10 F F
check 3 = B F:20 B B check 3 = B F:20 B B
]) ])
OVS_CHECK_LCOV([test-stp test-stp-iol-io-1.5]) AT_CHECK([test-stp test-stp-iol-io-1.5])
AT_CLEANUP AT_CLEANUP
AT_SETUP([STP.op.1.1 and STP.op.1.2]) AT_SETUP([STP.op.1.1 and STP.op.1.2])
@ -229,7 +229,7 @@ AT_DATA([test-stp-iol-op-1.1],
bridge 0 0x123 = bridge 0 0x123 =
check 0 = root check 0 = root
]) ])
OVS_CHECK_LCOV([test-stp test-stp-iol-op-1.1]) AT_CHECK([test-stp test-stp-iol-op-1.1])
AT_CLEANUP AT_CLEANUP
AT_SETUP([STP.op.1.4: All Ports Initialized to Designated Ports]) AT_SETUP([STP.op.1.4: All Ports Initialized to Designated Ports])
@ -244,7 +244,7 @@ check 0 = Li Li Li Li Li Li
run 1000 run 1000
check 0 = F F F F F F check 0 = F F F F F F
]) ])
OVS_CHECK_LCOV([test-stp test-stp-iol-op-1.4]) AT_CHECK([test-stp test-stp-iol-op-1.4])
AT_CLEANUP AT_CLEANUP
AT_SETUP([STP.op.3.1: Root Bridge Selection: Root ID Values]) AT_SETUP([STP.op.3.1: Root Bridge Selection: Root ID Values])
@ -262,7 +262,7 @@ run 1000
check 0 = rootid:0x111 root check 0 = rootid:0x111 root
check 1 = rootid:0x111 F:10 check 1 = rootid:0x111 F:10
]) ])
OVS_CHECK_LCOV([test-stp test-stp-iol-op-3.1]) AT_CHECK([test-stp test-stp-iol-op-3.1])
AT_CLEANUP AT_CLEANUP
AT_SETUP([STP.op.3.3: Root Bridge Selection: Bridge ID Values]) AT_SETUP([STP.op.3.3: Root Bridge Selection: Bridge ID Values])
@ -280,7 +280,7 @@ check 0 = rootid:0x333^0x6000 root
check 1 = rootid:0x333^0x6000 F:20 check 1 = rootid:0x333^0x6000 F:20
check 2 = rootid:0x333^0x6000 F:10 F check 2 = rootid:0x333^0x6000 F:10 F
]) ])
OVS_CHECK_LCOV([test-stp test-stp-iol-op-3.3]) AT_CHECK([test-stp test-stp-iol-op-3.3])
AT_CLEANUP AT_CLEANUP
AT_SETUP([STP.op.3.3: Root Bridge Selection: Bridge ID Values]) AT_SETUP([STP.op.3.3: Root Bridge Selection: Bridge ID Values])
@ -298,6 +298,6 @@ check 0 = rootid:0x333^0x6000 root
check 1 = rootid:0x333^0x6000 F:20 check 1 = rootid:0x333^0x6000 F:20
check 2 = rootid:0x333^0x6000 F:10 F check 2 = rootid:0x333^0x6000 F:10 F
]) ])
OVS_CHECK_LCOV([test-stp test-stp-iol-op-3.4]) AT_CHECK([test-stp test-stp-iol-op-3.4])
AT_CLEANUP AT_CLEANUP

View File

@ -36,7 +36,6 @@ m4_define([OVS_WAIT_UNTIL], [OVS_WAIT([if $1; then exit 0; fi], [$2])])
m4_define([OVS_WAIT_WHILE], [OVS_WAIT([if $1; then :; else exit 0; fi], [$2])]) m4_define([OVS_WAIT_WHILE], [OVS_WAIT([if $1; then :; else exit 0; fi], [$2])])
m4_include([tests/ovsdb-macros.at]) m4_include([tests/ovsdb-macros.at])
m4_include([tests/lcov-pre.at])
m4_include([tests/library.at]) m4_include([tests/library.at])
m4_include([tests/check-structs.at]) m4_include([tests/check-structs.at])
@ -53,5 +52,3 @@ m4_include([tests/reconnect.at])
m4_include([tests/ovsdb.at]) m4_include([tests/ovsdb.at])
m4_include([tests/stp.at]) m4_include([tests/stp.at])
m4_include([tests/ovs-vsctl.at]) m4_include([tests/ovs-vsctl.at])
m4_include([tests/lcov-post.at])

View File

@ -2,12 +2,12 @@ AT_BANNER([timeval unit tests])
AT_SETUP([check that time advances]) AT_SETUP([check that time advances])
AT_KEYWORDS([timeval]) AT_KEYWORDS([timeval])
OVS_CHECK_LCOV([test-timeval plain], [0]) AT_CHECK([test-timeval plain], [0])
AT_CLEANUP AT_CLEANUP
AT_SETUP([check that time advances after daemonize()]) AT_SETUP([check that time advances after daemonize()])
AT_KEYWORDS([timeval]) AT_KEYWORDS([timeval])
OVS_CHECK_LCOV([test-timeval daemon], [0]) AT_CHECK([test-timeval daemon], [0])
AT_CHECK( AT_CHECK(
[# First try a quick sleep, so that the test completes very quickly [# First try a quick sleep, so that the test completes very quickly
# in the normal case. POSIX doesn't require fractional times to # in the normal case. POSIX doesn't require fractional times to

View File

@ -13,25 +13,26 @@ m4_define([CHECK_UUID],
fi]) fi])
# This test is a strict subset of the larger test down below, but it # This test is a strict subset of the larger test down below, but it
# allows us to get test coverage data via OVS_CHECK_LCOV. # completes in a realistic amount of time with the "lcov" wrapper.
AT_SETUP([UUID generation]) AT_SETUP([UUID generation])
AT_KEYWORDS([UUID]) AT_KEYWORDS([UUID])
OVS_CHECK_LCOV([test-uuid > uuid]) AT_CHECK([test-uuid > uuid])
AT_CHECK([ AT_CHECK([
uuid=`cat uuid` uuid=`cat uuid`
CHECK_UUID]) CHECK_UUID])
AT_CLEANUP AT_CLEANUP
# This test is a strict subset of the larger test down below, but it # This test is a strict subset of the larger test down below, but it
# allows us to get test coverage data via OVS_CHECK_LCOV. # completes in a realistic amount of time with the "lcov" wrapper.
AT_SETUP([UUID parsing and serialization]) AT_SETUP([UUID parsing and serialization])
AT_KEYWORDS([UUID]) AT_KEYWORDS([UUID])
OVS_CHECK_LCOV([test-uuid f47ac10b-58cc-4372-a567-0e02b2c3d479], [0], AT_CHECK([test-uuid f47ac10b-58cc-4372-a567-0e02b2c3d479], [0],
[f47ac10b-58cc-4372-a567-0e02b2c3d479 [f47ac10b-58cc-4372-a567-0e02b2c3d479
]) ])
AT_CLEANUP AT_CLEANUP
AT_SETUP([UUID generation, parsing, serialization]) AT_SETUP([UUID generation, parsing, serialization])
AT_SKIP_IF([test "$CHECK_LCOV" = true]) # lcov makes this test absurdly slow
AT_KEYWORDS([UUID]) AT_KEYWORDS([UUID])
AT_CHECK([ AT_CHECK([
uuids= uuids=

View File

@ -14,7 +14,7 @@ m4_define([TEST_VCONN_CLASS],
m4_if([$1], [ssl], [ m4_if([$1], [ssl], [
AT_SKIP_IF([test "$HAVE_OPENSSL" = no]) AT_SKIP_IF([test "$HAVE_OPENSSL" = no])
AT_CHECK([cp $abs_top_srcdir/tests/testpki*.pem .])]) AT_CHECK([cp $abs_top_srcdir/tests/testpki*.pem .])])
OVS_CHECK_LCOV([test-vconn testname $1], [0], [], [ignore]) AT_CHECK([test-vconn testname $1], [0], [], [ignore])
AT_CLEANUP])]) AT_CLEANUP])])
TEST_VCONN_CLASS([unix]) TEST_VCONN_CLASS([unix])