2010-08-25 10:26:40 -07:00
|
|
|
AT_BANNER([daemon unit tests - C])
|
2010-01-15 12:13:46 -08:00
|
|
|
|
2018-12-10 09:43:19 -08:00
|
|
|
OVS_START_SHELL_HELPERS
|
|
|
|
# check_process_name PID NAME
|
|
|
|
#
|
|
|
|
# On Linux, make sure that the name of process PID is NAME.
|
|
|
|
# (On other systems, don't bother.)
|
|
|
|
if test -e /proc/$$/comm; then
|
|
|
|
check_process_name() {
|
2018-12-16 08:25:59 -08:00
|
|
|
# In case we're building with shared libraries enabled, strip
|
|
|
|
# off libtool's lt- prefix.
|
|
|
|
AT_CHECK_UNQUOTED([sed 's/lt-//' /proc/$1/comm], [0], [$2
|
2018-12-10 09:43:19 -08:00
|
|
|
])
|
|
|
|
}
|
|
|
|
else
|
|
|
|
check_process_name() {
|
|
|
|
:
|
|
|
|
}
|
|
|
|
fi
|
|
|
|
|
|
|
|
# check_ancestors PID PARENT [GRANDPARENT...]
|
|
|
|
check_ancestors() {
|
|
|
|
echo "checking ancestry: $*"
|
|
|
|
local child=$1; shift
|
|
|
|
AT_CHECK([kill -0 $child])
|
|
|
|
while test $# != 0; do
|
|
|
|
local parent=$1; shift
|
|
|
|
AT_CHECK([parent_pid $child], [0], [stdout])
|
|
|
|
actual_parent=$(cat stdout)
|
|
|
|
if test $parent = 1; then
|
|
|
|
# Traditionally, if a parent's process exits, the process's new
|
|
|
|
# parent is pid 1 (init) but this is not always the case these
|
|
|
|
# days. Instead, if the parent process should be pid 1, be
|
|
|
|
# satisfied if the parent process is different from our own pid.
|
|
|
|
if test $actual_parent = $$; then
|
|
|
|
echo "parent of pid $child is this shell ($$) but should not be"
|
|
|
|
AT_FAIL_IF([:])
|
|
|
|
fi
|
|
|
|
elif test $parent != $actual_parent; then
|
|
|
|
echo "parent of pid $child is $actual_parent but should be $parent"
|
|
|
|
AT_FAIL_IF([:])
|
|
|
|
fi
|
|
|
|
child=$parent
|
|
|
|
done
|
|
|
|
}
|
|
|
|
OVS_END_SHELL_HELPERS
|
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
AT_SETUP([daemon])
|
2014-05-29 08:31:09 -07:00
|
|
|
AT_SKIP_IF([test "$IS_WIN32" = "yes"])
|
2016-06-07 08:12:16 +00:00
|
|
|
|
|
|
|
dnl OVS_SKIP_NON_ADMIN_WIN()
|
|
|
|
dnl
|
|
|
|
dnl Checks if we have enough rights to create a service
|
|
|
|
m4_define([OVS_SKIP_NON_ADMIN_WIN],
|
|
|
|
[
|
|
|
|
AT_SKIP_IF([net session; test $? -ne 0])
|
|
|
|
])
|
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
# Start the daemon and wait for the pidfile to get created
|
|
|
|
# and that its contents are the correct pid.
|
2018-12-10 09:43:19 -08:00
|
|
|
on_exit 'kill $(cat *.pid)'
|
|
|
|
AT_CHECK([ovsdb-server --pidfile --no-db 2>/dev/null & echo $!], [0], [stdout])
|
|
|
|
expected_pid=$(cat stdout)
|
|
|
|
|
tests: Get rid of overly specific --pidfile and --unixctl options.
At an early point in OVS development, OVS was built with fixed default
directories for pidfiles and sockets. This meant that it was necessary to
use lots of --pidfile and --unixctl options in the testsuite, to point the
daemons to where they should put these files (since the testsuite cannot
and generally should not touch the real system /var/run). Later on,
the environment variables OVS_RUNDIR, OVS_LOGDIR, etc. were introduced
to override these defaults, and even later the testsuite was changed to
always set these variables correctly in every test. Thus, these days it
isn't usually necessary to specify a filename on --pidfile or to specify
--unixctl at all. However, many of the tests are built by cut-and-paste,
so they tended to keep appearing anyhow. This commit drops most of them,
making the testsuite easier to read and understand.
This commit also sweeps away some other historical detritus. In
particular, in early days of the testsuite there was no way to
automatically kill daemons when a test failed (or otherwise ended). This
meant that some tests were littered with calls to "kill `cat pidfile`" on
almost every line (or m4 macros that expanded to the same thing) so that if
a test failed partway through the testsuite would not hang waiting for a
daemon to die that was never going to die without manual intervention.
However, a long time ago we introduced the "on_exit" mechanism that
obsoletes this. This commit eliminates a lot of the old litter of kill
invocations, which also makes those tests easier to read.
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Andy Zhou <azhou@ovn.org>
2016-10-05 20:07:56 -07:00
|
|
|
OVS_WAIT_UNTIL([test -s ovsdb-server.pid])
|
2018-12-10 09:43:19 -08:00
|
|
|
pid=$(cat ovsdb-server.pid)
|
|
|
|
|
|
|
|
AT_CHECK([test $pid = $expected_pid])
|
|
|
|
AT_CHECK([kill -0 $pid])
|
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
# Kill the daemon and make sure that the pidfile gets deleted.
|
2018-12-10 09:43:19 -08:00
|
|
|
AT_CHECK([kill $pid])
|
|
|
|
OVS_WAIT_WHILE([kill -0 $pid])
|
|
|
|
|
tests: Get rid of overly specific --pidfile and --unixctl options.
At an early point in OVS development, OVS was built with fixed default
directories for pidfiles and sockets. This meant that it was necessary to
use lots of --pidfile and --unixctl options in the testsuite, to point the
daemons to where they should put these files (since the testsuite cannot
and generally should not touch the real system /var/run). Later on,
the environment variables OVS_RUNDIR, OVS_LOGDIR, etc. were introduced
to override these defaults, and even later the testsuite was changed to
always set these variables correctly in every test. Thus, these days it
isn't usually necessary to specify a filename on --pidfile or to specify
--unixctl at all. However, many of the tests are built by cut-and-paste,
so they tended to keep appearing anyhow. This commit drops most of them,
making the testsuite easier to read and understand.
This commit also sweeps away some other historical detritus. In
particular, in early days of the testsuite there was no way to
automatically kill daemons when a test failed (or otherwise ended). This
meant that some tests were littered with calls to "kill `cat pidfile`" on
almost every line (or m4 macros that expanded to the same thing) so that if
a test failed partway through the testsuite would not hang waiting for a
daemon to die that was never going to die without manual intervention.
However, a long time ago we introduced the "on_exit" mechanism that
obsoletes this. This commit eliminates a lot of the old litter of kill
invocations, which also makes those tests easier to read.
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Andy Zhou <azhou@ovn.org>
2016-10-05 20:07:56 -07:00
|
|
|
AT_CHECK([test ! -e ovsdb-server.pid])
|
2010-01-15 12:13:46 -08:00
|
|
|
AT_CLEANUP
|
|
|
|
|
|
|
|
AT_SETUP([daemon --monitor])
|
2014-05-29 08:31:09 -07:00
|
|
|
AT_SKIP_IF([test "$IS_WIN32" = "yes"])
|
2018-11-14 21:55:55 -08:00
|
|
|
|
2024-01-10 11:22:22 +01:00
|
|
|
# This test intentionally causes SIGSEGV, so make sanitizers ignore it.
|
2018-11-14 21:55:55 -08:00
|
|
|
ASAN_OPTIONS=$ASAN_OPTIONS:handle_segv=0; export ASAN_OPTIONS
|
2024-01-10 11:22:22 +01:00
|
|
|
UBSAN_OPTIONS=$UBSAN_OPTIONS:handle_segv=0; export UBSAN_OPTIONS
|
2022-04-11 13:39:16 +02:00
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
# Start the daemon and wait for the pidfile to get created.
|
2018-12-10 09:43:19 -08:00
|
|
|
on_exit 'kill $(cat *.pid)'
|
|
|
|
AT_CHECK([ovsdb-server --monitor --pidfile --no-db 2>/dev/null & echo $!],
|
|
|
|
[0], [stdout])
|
|
|
|
parent=$(cat stdout)
|
|
|
|
OVS_WAIT_UNTIL([test -s ovsdb-server.pid])
|
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
# Check that the pidfile names a running process,
|
2018-12-10 09:43:19 -08:00
|
|
|
# and that the parent process of that process is our child process,
|
|
|
|
# and that (with a Linux kernel) the child's process name is correct.
|
|
|
|
child=$(cat ovsdb-server.pid)
|
|
|
|
check_ancestors $child $parent
|
|
|
|
check_process_name $child ovsdb-server
|
|
|
|
|
2012-04-23 10:05:50 -07:00
|
|
|
# Avoid a race between pidfile creation and notifying the parent,
|
|
|
|
# which can easily trigger if ovsdb-server is slow (e.g. due to valgrind).
|
2019-10-10 16:23:57 +02:00
|
|
|
OVS_WAIT_UNTIL([ovs-appctl -t ovsdb-server version])
|
2018-12-10 09:43:19 -08:00
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
# Kill the daemon process, making it look like a segfault,
|
|
|
|
# and wait for a new child process to get spawned.
|
2018-12-10 09:43:19 -08:00
|
|
|
AT_CHECK([kill -SEGV $child], [0], [], [ignore])
|
|
|
|
OVS_WAIT_WHILE([kill -0 $child])
|
|
|
|
OVS_WAIT_UNTIL([test -s ovsdb-server.pid && test $(cat ovsdb-server.pid) != $child])
|
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
# Check that the pidfile names a running process,
|
|
|
|
# and that the parent process of that process is our child process.
|
2018-12-10 09:43:19 -08:00
|
|
|
child2=$(cat ovsdb-server.pid)
|
|
|
|
check_ancestors $child2 $parent
|
|
|
|
check_process_name $child2 ovsdb-server
|
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
# Kill the daemon process with SIGTERM, and wait for the daemon
|
|
|
|
# and the monitor processes to go away and the pidfile to get deleted.
|
2018-12-10 09:43:19 -08:00
|
|
|
AT_CHECK([kill $child2])
|
|
|
|
OVS_WAIT_WHILE([kill -0 $parent || kill -0 $child2 || test -e ovsdb-server.pid])
|
2010-01-15 12:13:46 -08:00
|
|
|
AT_CLEANUP
|
|
|
|
|
2018-12-10 09:43:19 -08:00
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
AT_SETUP([daemon --detach])
|
2018-12-10 09:43:19 -08:00
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
# Start the daemon and make sure that the pidfile exists immediately.
|
|
|
|
# We don't wait for the pidfile to get created because the daemon is
|
|
|
|
# supposed to do so before the parent exits.
|
2018-12-10 09:43:19 -08:00
|
|
|
AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --no-db], [0])
|
tests: Get rid of overly specific --pidfile and --unixctl options.
At an early point in OVS development, OVS was built with fixed default
directories for pidfiles and sockets. This meant that it was necessary to
use lots of --pidfile and --unixctl options in the testsuite, to point the
daemons to where they should put these files (since the testsuite cannot
and generally should not touch the real system /var/run). Later on,
the environment variables OVS_RUNDIR, OVS_LOGDIR, etc. were introduced
to override these defaults, and even later the testsuite was changed to
always set these variables correctly in every test. Thus, these days it
isn't usually necessary to specify a filename on --pidfile or to specify
--unixctl at all. However, many of the tests are built by cut-and-paste,
so they tended to keep appearing anyhow. This commit drops most of them,
making the testsuite easier to read and understand.
This commit also sweeps away some other historical detritus. In
particular, in early days of the testsuite there was no way to
automatically kill daemons when a test failed (or otherwise ended). This
meant that some tests were littered with calls to "kill `cat pidfile`" on
almost every line (or m4 macros that expanded to the same thing) so that if
a test failed partway through the testsuite would not hang waiting for a
daemon to die that was never going to die without manual intervention.
However, a long time ago we introduced the "on_exit" mechanism that
obsoletes this. This commit eliminates a lot of the old litter of kill
invocations, which also makes those tests easier to read.
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Andy Zhou <azhou@ovn.org>
2016-10-05 20:07:56 -07:00
|
|
|
AT_CHECK([test -s ovsdb-server.pid])
|
2018-12-10 09:43:19 -08:00
|
|
|
child=$(cat ovsdb-server.pid)
|
|
|
|
AT_CHECK([kill -0 $child])
|
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
# Kill the daemon and make sure that the pidfile gets deleted.
|
2014-05-29 08:31:09 -07:00
|
|
|
if test "$IS_WIN32" = "yes"; then
|
|
|
|
# When a 'kill pid' is done on windows (through 'taskkill //F'),
|
|
|
|
# pidfiles are not deleted (because it is force kill), so use
|
|
|
|
# 'ovs-appctl exit' instead
|
tests: Get rid of overly specific --pidfile and --unixctl options.
At an early point in OVS development, OVS was built with fixed default
directories for pidfiles and sockets. This meant that it was necessary to
use lots of --pidfile and --unixctl options in the testsuite, to point the
daemons to where they should put these files (since the testsuite cannot
and generally should not touch the real system /var/run). Later on,
the environment variables OVS_RUNDIR, OVS_LOGDIR, etc. were introduced
to override these defaults, and even later the testsuite was changed to
always set these variables correctly in every test. Thus, these days it
isn't usually necessary to specify a filename on --pidfile or to specify
--unixctl at all. However, many of the tests are built by cut-and-paste,
so they tended to keep appearing anyhow. This commit drops most of them,
making the testsuite easier to read and understand.
This commit also sweeps away some other historical detritus. In
particular, in early days of the testsuite there was no way to
automatically kill daemons when a test failed (or otherwise ended). This
meant that some tests were littered with calls to "kill `cat pidfile`" on
almost every line (or m4 macros that expanded to the same thing) so that if
a test failed partway through the testsuite would not hang waiting for a
daemon to die that was never going to die without manual intervention.
However, a long time ago we introduced the "on_exit" mechanism that
obsoletes this. This commit eliminates a lot of the old litter of kill
invocations, which also makes those tests easier to read.
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Andy Zhou <azhou@ovn.org>
2016-10-05 20:07:56 -07:00
|
|
|
OVS_APP_EXIT_AND_WAIT([ovsdb-server])
|
2014-05-29 08:31:09 -07:00
|
|
|
else
|
2018-12-10 09:43:19 -08:00
|
|
|
kill $child
|
2014-05-29 08:31:09 -07:00
|
|
|
fi
|
2018-12-10 09:43:19 -08:00
|
|
|
OVS_WAIT_WHILE([kill -0 $child])
|
tests: Get rid of overly specific --pidfile and --unixctl options.
At an early point in OVS development, OVS was built with fixed default
directories for pidfiles and sockets. This meant that it was necessary to
use lots of --pidfile and --unixctl options in the testsuite, to point the
daemons to where they should put these files (since the testsuite cannot
and generally should not touch the real system /var/run). Later on,
the environment variables OVS_RUNDIR, OVS_LOGDIR, etc. were introduced
to override these defaults, and even later the testsuite was changed to
always set these variables correctly in every test. Thus, these days it
isn't usually necessary to specify a filename on --pidfile or to specify
--unixctl at all. However, many of the tests are built by cut-and-paste,
so they tended to keep appearing anyhow. This commit drops most of them,
making the testsuite easier to read and understand.
This commit also sweeps away some other historical detritus. In
particular, in early days of the testsuite there was no way to
automatically kill daemons when a test failed (or otherwise ended). This
meant that some tests were littered with calls to "kill `cat pidfile`" on
almost every line (or m4 macros that expanded to the same thing) so that if
a test failed partway through the testsuite would not hang waiting for a
daemon to die that was never going to die without manual intervention.
However, a long time ago we introduced the "on_exit" mechanism that
obsoletes this. This commit eliminates a lot of the old litter of kill
invocations, which also makes those tests easier to read.
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Andy Zhou <azhou@ovn.org>
2016-10-05 20:07:56 -07:00
|
|
|
AT_CHECK([test ! -e ovsdb-server.pid])
|
2018-12-10 09:43:19 -08:00
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
AT_CLEANUP
|
|
|
|
|
2018-12-10 09:43:19 -08:00
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
AT_SETUP([daemon --detach --monitor])
|
2014-05-29 08:31:09 -07:00
|
|
|
AT_SKIP_IF([test "$IS_WIN32" = "yes"])
|
2018-11-14 21:55:55 -08:00
|
|
|
|
2024-01-10 11:22:22 +01:00
|
|
|
# This test intentionally causes SIGSEGV, so make sanitizers ignore it.
|
2018-11-14 21:55:55 -08:00
|
|
|
ASAN_OPTIONS=$ASAN_OPTIONS:handle_segv=0; export ASAN_OPTIONS
|
2024-01-10 11:22:22 +01:00
|
|
|
UBSAN_OPTIONS=$UBSAN_OPTIONS:handle_segv=0; export UBSAN_OPTIONS
|
2022-04-11 13:39:16 +02:00
|
|
|
|
2018-12-10 09:43:19 -08:00
|
|
|
on_exit 'kill $(cat *.pid)'
|
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
# Start the daemon and make sure that the pidfile exists immediately.
|
|
|
|
# We don't wait for the pidfile to get created because the daemon is
|
|
|
|
# supposed to do so before the parent exits.
|
2018-12-10 09:43:19 -08:00
|
|
|
AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --monitor --no-db])
|
tests: Get rid of overly specific --pidfile and --unixctl options.
At an early point in OVS development, OVS was built with fixed default
directories for pidfiles and sockets. This meant that it was necessary to
use lots of --pidfile and --unixctl options in the testsuite, to point the
daemons to where they should put these files (since the testsuite cannot
and generally should not touch the real system /var/run). Later on,
the environment variables OVS_RUNDIR, OVS_LOGDIR, etc. were introduced
to override these defaults, and even later the testsuite was changed to
always set these variables correctly in every test. Thus, these days it
isn't usually necessary to specify a filename on --pidfile or to specify
--unixctl at all. However, many of the tests are built by cut-and-paste,
so they tended to keep appearing anyhow. This commit drops most of them,
making the testsuite easier to read and understand.
This commit also sweeps away some other historical detritus. In
particular, in early days of the testsuite there was no way to
automatically kill daemons when a test failed (or otherwise ended). This
meant that some tests were littered with calls to "kill `cat pidfile`" on
almost every line (or m4 macros that expanded to the same thing) so that if
a test failed partway through the testsuite would not hang waiting for a
daemon to die that was never going to die without manual intervention.
However, a long time ago we introduced the "on_exit" mechanism that
obsoletes this. This commit eliminates a lot of the old litter of kill
invocations, which also makes those tests easier to read.
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Andy Zhou <azhou@ovn.org>
2016-10-05 20:07:56 -07:00
|
|
|
AT_CHECK([test -s ovsdb-server.pid])
|
2018-12-10 09:43:19 -08:00
|
|
|
child=$(cat ovsdb-server.pid)
|
|
|
|
|
|
|
|
# Check process naming and ancestry.
|
|
|
|
monitor=$(parent_pid $child)
|
|
|
|
check_process_name $child ovsdb-server
|
|
|
|
check_ancestors $child $monitor 1
|
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
# Kill the daemon process, making it look like a segfault,
|
|
|
|
# and wait for a new daemon process to get spawned.
|
2018-12-10 09:43:19 -08:00
|
|
|
AT_CHECK([kill -SEGV $child], [0])
|
|
|
|
OVS_WAIT_WHILE([kill -0 $child])
|
|
|
|
OVS_WAIT_UNTIL([test -s ovsdb-server.pid && test `cat ovsdb-server.pid` != $child])
|
|
|
|
child2=$(cat ovsdb-server.pid)
|
|
|
|
|
|
|
|
# Check process naming and ancestry.
|
|
|
|
check_process_name $child2 ovsdb-server
|
|
|
|
check_ancestors $child2 $monitor 1
|
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
# Kill the daemon process with SIGTERM, and wait for the daemon
|
|
|
|
# and the monitor processes to go away and the pidfile to get deleted.
|
2018-12-10 09:43:19 -08:00
|
|
|
AT_CHECK([kill $child2])
|
2010-01-15 12:13:46 -08:00
|
|
|
OVS_WAIT_WHILE(
|
2018-12-10 09:43:19 -08:00
|
|
|
[kill -0 $monitor || kill -0 $child2 || test -e ovsdb-server.pid])
|
2010-01-15 12:13:46 -08:00
|
|
|
AT_CLEANUP
|
|
|
|
|
2018-12-10 09:43:19 -08:00
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
AT_SETUP([daemon --detach startup errors])
|
2018-12-10 09:43:19 -08:00
|
|
|
AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --unixctl=nonexistent/unixctl --no-db], [1], [], [stderr])
|
2018-07-24 10:45:25 -07:00
|
|
|
AT_CHECK([grep 'could not initialize control socket' stderr],
|
tests: Get rid of overly specific --pidfile and --unixctl options.
At an early point in OVS development, OVS was built with fixed default
directories for pidfiles and sockets. This meant that it was necessary to
use lots of --pidfile and --unixctl options in the testsuite, to point the
daemons to where they should put these files (since the testsuite cannot
and generally should not touch the real system /var/run). Later on,
the environment variables OVS_RUNDIR, OVS_LOGDIR, etc. were introduced
to override these defaults, and even later the testsuite was changed to
always set these variables correctly in every test. Thus, these days it
isn't usually necessary to specify a filename on --pidfile or to specify
--unixctl at all. However, many of the tests are built by cut-and-paste,
so they tended to keep appearing anyhow. This commit drops most of them,
making the testsuite easier to read and understand.
This commit also sweeps away some other historical detritus. In
particular, in early days of the testsuite there was no way to
automatically kill daemons when a test failed (or otherwise ended). This
meant that some tests were littered with calls to "kill `cat pidfile`" on
almost every line (or m4 macros that expanded to the same thing) so that if
a test failed partway through the testsuite would not hang waiting for a
daemon to die that was never going to die without manual intervention.
However, a long time ago we introduced the "on_exit" mechanism that
obsoletes this. This commit eliminates a lot of the old litter of kill
invocations, which also makes those tests easier to read.
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Andy Zhou <azhou@ovn.org>
2016-10-05 20:07:56 -07:00
|
|
|
[0], [ignore])
|
2018-12-10 09:43:19 -08:00
|
|
|
AT_CHECK([test ! -e ovsdb-server.pid])
|
2010-01-15 12:13:46 -08:00
|
|
|
AT_CLEANUP
|
|
|
|
|
2018-12-10 09:43:19 -08:00
|
|
|
|
2010-01-15 12:13:46 -08:00
|
|
|
AT_SETUP([daemon --detach --monitor startup errors])
|
2014-05-29 08:31:09 -07:00
|
|
|
AT_SKIP_IF([test "$IS_WIN32" = "yes"])
|
2018-12-10 09:43:19 -08:00
|
|
|
AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --monitor --unixctl=nonexistent/unixctl --no-db], [1], [], [stderr])
|
2018-07-24 10:45:25 -07:00
|
|
|
AT_CHECK([grep 'could not initialize control socket' stderr],
|
tests: Get rid of overly specific --pidfile and --unixctl options.
At an early point in OVS development, OVS was built with fixed default
directories for pidfiles and sockets. This meant that it was necessary to
use lots of --pidfile and --unixctl options in the testsuite, to point the
daemons to where they should put these files (since the testsuite cannot
and generally should not touch the real system /var/run). Later on,
the environment variables OVS_RUNDIR, OVS_LOGDIR, etc. were introduced
to override these defaults, and even later the testsuite was changed to
always set these variables correctly in every test. Thus, these days it
isn't usually necessary to specify a filename on --pidfile or to specify
--unixctl at all. However, many of the tests are built by cut-and-paste,
so they tended to keep appearing anyhow. This commit drops most of them,
making the testsuite easier to read and understand.
This commit also sweeps away some other historical detritus. In
particular, in early days of the testsuite there was no way to
automatically kill daemons when a test failed (or otherwise ended). This
meant that some tests were littered with calls to "kill `cat pidfile`" on
almost every line (or m4 macros that expanded to the same thing) so that if
a test failed partway through the testsuite would not hang waiting for a
daemon to die that was never going to die without manual intervention.
However, a long time ago we introduced the "on_exit" mechanism that
obsoletes this. This commit eliminates a lot of the old litter of kill
invocations, which also makes those tests easier to read.
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Andy Zhou <azhou@ovn.org>
2016-10-05 20:07:56 -07:00
|
|
|
[0], [ignore])
|
2018-12-10 09:43:19 -08:00
|
|
|
AT_CHECK([test ! -e ovsdb-server.pid])
|
2010-01-15 12:13:46 -08:00
|
|
|
AT_CLEANUP
|
2014-05-28 15:07:31 -07:00
|
|
|
|
2018-12-10 09:43:19 -08:00
|
|
|
|
2014-05-28 15:07:31 -07:00
|
|
|
AT_SETUP([daemon --service])
|
2015-02-11 10:34:11 -08:00
|
|
|
AT_KEYWORDS([windows-service])
|
2014-05-28 15:07:31 -07:00
|
|
|
AT_SKIP_IF([test "$IS_WIN32" != "yes"])
|
2016-06-07 08:12:16 +00:00
|
|
|
OVS_SKIP_NON_ADMIN_WIN
|
2017-01-26 18:32:56 +00:00
|
|
|
AT_SKIP_IF([sc qc ovsdb-server])
|
2016-06-07 08:12:16 +00:00
|
|
|
|
2014-05-28 15:07:31 -07:00
|
|
|
AT_CAPTURE_FILE([pid])
|
|
|
|
# To create a Windows service, we need the absolute path for the executable.
|
|
|
|
abs_path="$(cd $(dirname `which ovsdb-server`); pwd -W; cd $OLDPWD)"
|
|
|
|
|
2018-12-10 09:43:19 -08:00
|
|
|
AT_CHECK([sc create ovsdb-server binpath="$abs_path/ovsdb-server --no-db --log-file=`pwd`/ovsdb-server.log --pidfile=`pwd`/ovsdb-server.pid --unixctl=`pwd`/ovsdb-server.ctl --remote=punix:`pwd`/socket --service"],
|
2014-05-28 15:07:31 -07:00
|
|
|
[0], [[[SC]] CreateService SUCCESS
|
|
|
|
])
|
|
|
|
|
2015-06-22 22:45:18 +00:00
|
|
|
AT_CHECK([sc start ovsdb-server], [0], [ignore], [ignore], [sc delete ovsdb-server])
|
tests: Get rid of overly specific --pidfile and --unixctl options.
At an early point in OVS development, OVS was built with fixed default
directories for pidfiles and sockets. This meant that it was necessary to
use lots of --pidfile and --unixctl options in the testsuite, to point the
daemons to where they should put these files (since the testsuite cannot
and generally should not touch the real system /var/run). Later on,
the environment variables OVS_RUNDIR, OVS_LOGDIR, etc. were introduced
to override these defaults, and even later the testsuite was changed to
always set these variables correctly in every test. Thus, these days it
isn't usually necessary to specify a filename on --pidfile or to specify
--unixctl at all. However, many of the tests are built by cut-and-paste,
so they tended to keep appearing anyhow. This commit drops most of them,
making the testsuite easier to read and understand.
This commit also sweeps away some other historical detritus. In
particular, in early days of the testsuite there was no way to
automatically kill daemons when a test failed (or otherwise ended). This
meant that some tests were littered with calls to "kill `cat pidfile`" on
almost every line (or m4 macros that expanded to the same thing) so that if
a test failed partway through the testsuite would not hang waiting for a
daemon to die that was never going to die without manual intervention.
However, a long time ago we introduced the "on_exit" mechanism that
obsoletes this. This commit eliminates a lot of the old litter of kill
invocations, which also makes those tests easier to read.
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Andy Zhou <azhou@ovn.org>
2016-10-05 20:07:56 -07:00
|
|
|
OVS_WAIT_UNTIL([test -s ovsdb-server.pid])
|
2015-02-11 10:34:11 -08:00
|
|
|
OVS_WAIT_UNTIL([sc query ovsdb-server | grep STATE | grep RUNNING > /dev/null 2>&1])
|
tests: Get rid of overly specific --pidfile and --unixctl options.
At an early point in OVS development, OVS was built with fixed default
directories for pidfiles and sockets. This meant that it was necessary to
use lots of --pidfile and --unixctl options in the testsuite, to point the
daemons to where they should put these files (since the testsuite cannot
and generally should not touch the real system /var/run). Later on,
the environment variables OVS_RUNDIR, OVS_LOGDIR, etc. were introduced
to override these defaults, and even later the testsuite was changed to
always set these variables correctly in every test. Thus, these days it
isn't usually necessary to specify a filename on --pidfile or to specify
--unixctl at all. However, many of the tests are built by cut-and-paste,
so they tended to keep appearing anyhow. This commit drops most of them,
making the testsuite easier to read and understand.
This commit also sweeps away some other historical detritus. In
particular, in early days of the testsuite there was no way to
automatically kill daemons when a test failed (or otherwise ended). This
meant that some tests were littered with calls to "kill `cat pidfile`" on
almost every line (or m4 macros that expanded to the same thing) so that if
a test failed partway through the testsuite would not hang waiting for a
daemon to die that was never going to die without manual intervention.
However, a long time ago we introduced the "on_exit" mechanism that
obsoletes this. This commit eliminates a lot of the old litter of kill
invocations, which also makes those tests easier to read.
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Andy Zhou <azhou@ovn.org>
2016-10-05 20:07:56 -07:00
|
|
|
AT_CHECK([kill -0 `cat ovsdb-server.pid`], [0], [ignore])
|
|
|
|
AT_CHECK([ovs-appctl -t ovsdb-server ovsdb-server/list-dbs], [0],
|
2020-09-24 07:26:33 +03:00
|
|
|
[_Server
|
2014-05-28 15:07:31 -07:00
|
|
|
])
|
|
|
|
AT_CHECK([sc stop ovsdb-server], [0], [ignore])
|
tests: Get rid of overly specific --pidfile and --unixctl options.
At an early point in OVS development, OVS was built with fixed default
directories for pidfiles and sockets. This meant that it was necessary to
use lots of --pidfile and --unixctl options in the testsuite, to point the
daemons to where they should put these files (since the testsuite cannot
and generally should not touch the real system /var/run). Later on,
the environment variables OVS_RUNDIR, OVS_LOGDIR, etc. were introduced
to override these defaults, and even later the testsuite was changed to
always set these variables correctly in every test. Thus, these days it
isn't usually necessary to specify a filename on --pidfile or to specify
--unixctl at all. However, many of the tests are built by cut-and-paste,
so they tended to keep appearing anyhow. This commit drops most of them,
making the testsuite easier to read and understand.
This commit also sweeps away some other historical detritus. In
particular, in early days of the testsuite there was no way to
automatically kill daemons when a test failed (or otherwise ended). This
meant that some tests were littered with calls to "kill `cat pidfile`" on
almost every line (or m4 macros that expanded to the same thing) so that if
a test failed partway through the testsuite would not hang waiting for a
daemon to die that was never going to die without manual intervention.
However, a long time ago we introduced the "on_exit" mechanism that
obsoletes this. This commit eliminates a lot of the old litter of kill
invocations, which also makes those tests easier to read.
Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Andy Zhou <azhou@ovn.org>
2016-10-05 20:07:56 -07:00
|
|
|
OVS_WAIT_UNTIL([test ! -s ovsdb-server.pid])
|
2020-09-24 07:26:33 +03:00
|
|
|
OVS_WAIT_UNTIL([sc query ovsdb-server | grep STATE | grep STOPPED > /dev/null 2>&1])
|
2014-05-28 15:07:31 -07:00
|
|
|
AT_CHECK([sc delete ovsdb-server], [0], [[[SC]] DeleteService SUCCESS
|
|
|
|
])
|
|
|
|
AT_CLEANUP
|
2023-05-30 09:34:12 +02:00
|
|
|
|
|
|
|
AT_SETUP([backtrace without monitor])
|
|
|
|
AT_SKIP_IF([test "$HAVE_BACKTRACE" = "no" && test "$HAVE_UNWIND" = "no"])
|
|
|
|
AT_SKIP_IF([test "$IS_WIN32" = "yes"])
|
|
|
|
|
2024-01-10 11:22:22 +01:00
|
|
|
# This test intentionally causes SIGSEGV, so make sanitizers ignore it.
|
2023-05-30 09:34:12 +02:00
|
|
|
ASAN_OPTIONS=$ASAN_OPTIONS:handle_segv=0; export ASAN_OPTIONS
|
2024-01-10 11:22:22 +01:00
|
|
|
UBSAN_OPTIONS=$UBSAN_OPTIONS:handle_segv=0; export UBSAN_OPTIONS
|
2023-05-30 09:34:12 +02:00
|
|
|
|
|
|
|
AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --no-db \
|
|
|
|
--log-file --verbose=DBG], [0], [ignore], [ignore])
|
|
|
|
OVS_WAIT_UNTIL([test -s ovsdb-server.pid])
|
|
|
|
child=$(cat ovsdb-server.pid)
|
|
|
|
|
|
|
|
AT_CAPTURE_FILE([ovsdb-server.log])
|
|
|
|
|
|
|
|
AT_CHECK([kill -SEGV $child])
|
|
|
|
|
|
|
|
OVS_WAIT_UNTIL([grep -q "^SIGSEGV detected, backtrace:" ovsdb-server.log])
|
|
|
|
|
|
|
|
AT_CLEANUP
|
|
|
|
|
|
|
|
AT_SETUP([backtrace with monitor])
|
|
|
|
AT_SKIP_IF([test "$HAVE_BACKTRACE" = "no" && test "$HAVE_UNWIND" = "no"])
|
|
|
|
AT_SKIP_IF([test "$IS_WIN32" = "yes"])
|
|
|
|
|
2024-01-10 11:22:22 +01:00
|
|
|
# This test intentionally causes SIGSEGV, so make sanitizers ignore it.
|
2023-05-30 09:34:12 +02:00
|
|
|
ASAN_OPTIONS=$ASAN_OPTIONS:handle_segv=0; export ASAN_OPTIONS
|
2024-01-10 11:22:22 +01:00
|
|
|
UBSAN_OPTIONS=$UBSAN_OPTIONS:handle_segv=0; export UBSAN_OPTIONS
|
2023-05-30 09:34:12 +02:00
|
|
|
|
|
|
|
on_exit 'kill $(cat *.pid)'
|
|
|
|
|
|
|
|
AT_CHECK([ovsdb-server --detach --monitor --no-chdir --pidfile --no-db \
|
|
|
|
--log-file --verbose=DBG], [0], [ignore], [ignore])
|
|
|
|
OVS_WAIT_UNTIL([test -s ovsdb-server.pid])
|
|
|
|
child=$(cat ovsdb-server.pid)
|
|
|
|
|
|
|
|
AT_CAPTURE_FILE([ovsdb-server.log])
|
|
|
|
|
|
|
|
AT_CHECK([kill -SEGV $child])
|
|
|
|
|
|
|
|
OVS_WAIT_UNTIL([grep -q "backtrace(monitor)|WARN|SIGSEGV detected, backtrace:" ovsdb-server.log])
|
|
|
|
OVS_WAIT_UNTIL([grep -q "daemon_unix(monitor)|ERR|1 crashes: pid .* died, killed (Segmentation fault)" ovsdb-server.log])
|
|
|
|
|
2023-07-19 12:33:03 +02:00
|
|
|
# Wait until a new process is started before exiting, so it will be
|
|
|
|
# stopped correctly.
|
|
|
|
OVS_WAIT_UNTIL([test -s ovsdb-server.pid && test $(cat ovsdb-server.pid) != $child])
|
|
|
|
OVS_APP_EXIT_AND_WAIT([ovsdb-server])
|
2023-05-30 09:34:12 +02:00
|
|
|
AT_CLEANUP
|