mirror of
https://github.com/openvswitch/ovs
synced 2025-10-15 14:17:18 +00:00
Several of the tests start daemons and then need to make sure that the daemons get killed when the test completes, even if it completes in the middle due to an early failure. Until now, they have been using manual shell "trap" calls to do this. This works well enough for simple cases, but sometimes multiple macros start daemons in a single test, and then each "trap" has to be carefully written to kill off the daemons for the previously invoked macros. This commit introduces a new macro ON_EXIT whose use is composable: each call appends a new action to the ones already specified. Signed-off-by: Ben Pfaff <blp@nicira.com>
169 lines
5.2 KiB
Plaintext
169 lines
5.2 KiB
Plaintext
AT_BANNER([unixctl])
|
|
|
|
m4_define([APPCTL], [ovs-appctl --timeout 20])
|
|
m4_define([PYAPPCTL], [$PYTHON $srcdir/appctl.py --timeout 20])
|
|
|
|
AT_SETUP([unixctl ovs-vswitchd exit - Python])
|
|
AT_SKIP_IF([test $HAVE_PYTHON = no])
|
|
OVS_VSWITCHD_START
|
|
|
|
AT_CHECK([PYAPPCTL -t ovs-vswitchd exit], [0], [])
|
|
OVS_WAIT_WHILE([test -s ovs-vswitchd.pid])
|
|
|
|
AT_CHECK([PYAPPCTL -t ovsdb-server exit], [0], [])
|
|
OVS_WAIT_WHILE([test -s ovsdb-server.pid])
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([unixctl ovs-vswitchd help - Python])
|
|
AT_SKIP_IF([test $HAVE_PYTHON = no])
|
|
OVS_VSWITCHD_START
|
|
|
|
AT_CHECK([APPCTL help], [0], [stdout])
|
|
AT_CHECK([head -1 stdout], [0], [dnl
|
|
The available commands are:
|
|
])
|
|
mv stdout expout
|
|
AT_CHECK([PYAPPCTL help], [0], [expout])
|
|
|
|
OVS_VSWITCHD_STOP
|
|
AT_CLEANUP
|
|
|
|
|
|
AT_SETUP([unixctl ovs-vswitchd arguments - Python])
|
|
AT_SKIP_IF([test $HAVE_PYTHON = no])
|
|
OVS_VSWITCHD_START
|
|
|
|
AT_CHECK([APPCTL bond/hash], [2], [], [stderr])
|
|
AT_CHECK([head -1 stderr], [0], [dnl
|
|
"bond/hash" command requires at least 1 arguments
|
|
])
|
|
sed 's/ovs-appctl/appctl.py/' stderr > experr
|
|
AT_CHECK([PYAPPCTL bond/hash], [2], [], [experr])
|
|
|
|
AT_CHECK([APPCTL bond/hash mac], [2], [], [stderr])
|
|
AT_CHECK([head -1 stderr], [0], [dnl
|
|
invalid mac
|
|
])
|
|
sed 's/ovs-appctl/appctl.py/' stderr > experr
|
|
AT_CHECK([PYAPPCTL bond/hash mac], [2], [], [experr])
|
|
|
|
AT_CHECK([APPCTL bond/hash mac vlan], [2], [], [stderr])
|
|
AT_CHECK([head -1 stderr], [0], [dnl
|
|
invalid vlan
|
|
])
|
|
sed 's/ovs-appctl/appctl.py/' stderr > experr
|
|
AT_CHECK([PYAPPCTL bond/hash mac vlan], [2], [], [experr])
|
|
|
|
AT_CHECK([APPCTL bond/hash mac vlan basis], [2], [], [stderr])
|
|
AT_CHECK([head -1 stderr], [0], [dnl
|
|
invalid vlan
|
|
])
|
|
sed 's/ovs-appctl/appctl.py/' stderr > experr
|
|
AT_CHECK([PYAPPCTL bond/hash vlan basis], [2], [], [experr])
|
|
|
|
AT_CHECK([APPCTL bond/hash mac vlan basis extra], [2], [], [stderr])
|
|
AT_CHECK([head -1 stderr], [0], [dnl
|
|
"bond/hash" command takes at most 3 arguments
|
|
])
|
|
sed 's/ovs-appctl/appctl.py/' stderr > experr
|
|
AT_CHECK([PYAPPCTL bond/hash mac vlan basis extra], [2], [], [experr])
|
|
|
|
OVS_VSWITCHD_STOP
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([unixctl bad target - Python])
|
|
OVS_RUNDIR=`pwd`; export OVS_RUNDIR
|
|
OVS_DBDIR=`pwd`; export OVS_DBDIR
|
|
AT_SKIP_IF([test $HAVE_PYTHON = no])
|
|
|
|
AT_CHECK([PYAPPCTL -t bogus doit], [1], [], [stderr])
|
|
AT_CHECK_UNQUOTED([tail -1 stderr], [0], [dnl
|
|
appctl.py: cannot read pidfile "`pwd`/bogus.pid" (No such file or directory)
|
|
])
|
|
|
|
AT_CHECK([PYAPPCTL -t /bogus/path.pid doit], [1], [], [stderr])
|
|
AT_CHECK([tail -1 stderr], [0], [dnl
|
|
appctl.py: cannot connect to "/bogus/path.pid" (No such file or directory)
|
|
])
|
|
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([unixctl server - Python])
|
|
AT_SKIP_IF([test $HAVE_PYTHON = no])
|
|
OVS_RUNDIR=`pwd`; export OVS_RUNDIR
|
|
OVS_LOGDIR=`pwd`; export OVS_LOGDIR
|
|
OVS_DBDIR=`pwd`; export OVS_DBDIR
|
|
OVS_SYSCONFDIR=`pwd`; export OVS_SYSCONFDIR
|
|
ON_EXIT([kill `cat test-unixctl.py.pid`])
|
|
AT_CAPTURE_FILE([`pwd`/test-unixctl.py.log])
|
|
AT_CHECK([$PYTHON $srcdir/test-unixctl.py --log-file --pidfile --detach])
|
|
|
|
AT_CHECK([APPCTL -t test-unixctl.py help], [0], [stdout])
|
|
AT_CHECK([cat stdout], [0], [dnl
|
|
The available commands are:
|
|
block
|
|
echo [[arg ...]]
|
|
echo_error [[arg ...]]
|
|
exit
|
|
help
|
|
log [[arg ...]]
|
|
version
|
|
vlog/list
|
|
vlog/reopen
|
|
vlog/set spec
|
|
])
|
|
mv stdout expout
|
|
AT_CHECK([PYAPPCTL -t test-unixctl.py help], [0], [expout])
|
|
|
|
AT_CHECK([ovs-vsctl --version | sed 's/ovs-vsctl/test-unixctl.py/' | head -1 > expout])
|
|
AT_CHECK([APPCTL -t test-unixctl.py version], [0], [expout])
|
|
AT_CHECK([PYAPPCTL -t test-unixctl.py version], [0], [expout])
|
|
|
|
AT_CHECK([APPCTL -t test-unixctl.py echo robot ninja], [0], [stdout])
|
|
AT_CHECK([cat stdout], [0], [dnl
|
|
[[u'robot', u'ninja']]
|
|
])
|
|
mv stdout expout
|
|
AT_CHECK([PYAPPCTL -t test-unixctl.py echo robot ninja], [0], [expout])
|
|
|
|
AT_CHECK([APPCTL -t test-unixctl.py echo_error robot ninja], [2], [], [stderr])
|
|
AT_CHECK([cat stderr], [0], [dnl
|
|
[[u'robot', u'ninja']]
|
|
ovs-appctl: test-unixctl.py: server returned an error
|
|
])
|
|
sed 's/ovs-appctl/appctl.py/' stderr > experr
|
|
AT_CHECK([PYAPPCTL -t test-unixctl.py echo_error robot ninja], [2], [], [experr])
|
|
|
|
AT_CHECK([APPCTL -t test-unixctl.py echo], [2], [], [stderr])
|
|
AT_CHECK([cat stderr], [0], [dnl
|
|
"echo" command requires at least 1 arguments
|
|
ovs-appctl: test-unixctl.py: server returned an error
|
|
])
|
|
sed 's/ovs-appctl/appctl.py/' stderr > experr
|
|
AT_CHECK([PYAPPCTL -t test-unixctl.py echo], [2], [], [experr])
|
|
|
|
AT_CHECK([APPCTL -t test-unixctl.py echo robot ninja pirates], [2], [], [stderr])
|
|
AT_CHECK([cat stderr], [0], [dnl
|
|
"echo" command takes at most 2 arguments
|
|
ovs-appctl: test-unixctl.py: server returned an error
|
|
])
|
|
sed 's/ovs-appctl/appctl.py/' stderr > experr
|
|
AT_CHECK([PYAPPCTL -t test-unixctl.py echo robot ninja pirates], [2], [], [experr])
|
|
|
|
AT_CHECK([APPCTL -t test-unixctl.py bogus], [2], [], [stderr])
|
|
AT_CHECK([cat stderr], [0], [dnl
|
|
"bogus" is not a valid command
|
|
ovs-appctl: test-unixctl.py: server returned an error
|
|
])
|
|
sed 's/ovs-appctl/appctl.py/' stderr > experr
|
|
AT_CHECK([PYAPPCTL -t test-unixctl.py bogus], [2], [], [experr])
|
|
|
|
AT_CHECK([APPCTL -t test-unixctl.py exit])
|
|
AT_CLEANUP
|
|
|
|
|
|
AT_SETUP([unixctl server errors - Python])
|
|
AT_SKIP_IF([test $HAVE_PYTHON = no])
|
|
AT_CHECK($PYTHON $srcdir/test-unixctl.py --unixctl "`pwd`"/bogus/path, [1], [], [ignore])
|
|
AT_CLEANUP
|