X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Fdaemon-py.at;h=cafa8dfe22f55e699b7336a52fa513718822bcbd;hb=0ef165ecb57943e17a8ee8270df68ffb8d032e29;hp=7ff376eb743e2d03fd15fe19cb8d83a36ef22acb;hpb=991559357f6a03c3a5b70c053c8c2554aa8d5ee4;p=sliver-openvswitch.git diff --git a/tests/daemon-py.at b/tests/daemon-py.at index 7ff376eb7..cafa8dfe2 100644 --- a/tests/daemon-py.at +++ b/tests/daemon-py.at @@ -6,7 +6,7 @@ AT_CAPTURE_FILE([pid]) AT_CAPTURE_FILE([expected]) # Start the daemon and wait for the pidfile to get created # and that its contents are the correct pid. -AT_CHECK([$PYTHON $srcdir/test-daemon.py --pidfile-name=$PWD/pid& echo $! > expected], [0], [ignore], [ignore]) +AT_CHECK([$PYTHON $srcdir/test-daemon.py --pidfile=`pwd`/pid& echo $! > expected], [0]) OVS_WAIT_UNTIL([test -s pid], [kill `cat expected`]) AT_CHECK( [pid=`cat pid` && expected=`cat expected` && test "$pid" = "$expected"], @@ -25,7 +25,7 @@ AT_CAPTURE_FILE([parent]) AT_CAPTURE_FILE([parentpid]) AT_CAPTURE_FILE([newpid]) # Start the daemon and wait for the pidfile to get created. -AT_CHECK([$PYTHON $srcdir/test-daemon.py --pidfile-name=$PWD/pid --monitor& echo $! > parent], [0], [ignore], [ignore]) +AT_CHECK([$PYTHON $srcdir/test-daemon.py --pidfile=`pwd`/pid --monitor& echo $! > parent], [0]) OVS_WAIT_UNTIL([test -s pid], [kill `cat parent`]) # Check that the pidfile names a running process, # and that the parent process of that process is our child process. @@ -33,8 +33,8 @@ AT_CHECK([kill -0 `cat pid`], [0], [], [], [kill `cat parent`]) AT_CHECK([ps -o ppid= -p `cat pid` > parentpid], [0], [], [], [kill `cat parent`]) AT_CHECK( - [parentpid=`cat parentpid` && - parent=`cat parent` && + [parentpid=`cat parentpid` && + parent=`cat parent` && test $parentpid = $parent], [0], [], [], [kill `cat parent`]) # Kill the daemon process, making it look like a segfault, @@ -50,8 +50,51 @@ AT_CHECK([cp pid newpid], [0], [], [], [kill `cat parent`]) AT_CHECK([ps -o ppid= -p `cat pid` > parentpid], [0], [], [], [kill `cat parent`]) AT_CHECK( - [parentpid=`cat parentpid` && - parent=`cat parent` && + [parentpid=`cat parentpid` && + parent=`cat parent` && + test $parentpid = $parent], + [0], [], [], [kill `cat parent`]) +# Kill the daemon process with SIGTERM, and wait for the daemon +# and the monitor processes to go away and the pidfile to get deleted. +AT_CHECK([kill `cat pid`], [0], [], [ignore], [kill `cat parent`]) +OVS_WAIT_WHILE([kill -0 `cat parent` || kill -0 `cat newpid` || test -e pid], + [kill `cat parent`]) +AT_CLEANUP + +AT_SETUP([daemon --monitor restart exit code - Python]) +AT_SKIP_IF([test $HAVE_PYTHON = no]) +AT_CAPTURE_FILE([pid]) +AT_CAPTURE_FILE([parent]) +AT_CAPTURE_FILE([parentpid]) +AT_CAPTURE_FILE([newpid]) +# Start the daemon and wait for the pidfile to get created. +AT_CHECK([$PYTHON $srcdir/test-daemon.py --pidfile=`pwd`/pid --monitor& echo $! > parent], [0]) +OVS_WAIT_UNTIL([test -s pid], [kill `cat parent`]) +# Check that the pidfile names a running process, +# and that the parent process of that process is our child process. +AT_CHECK([kill -0 `cat pid`], [0], [], [], [kill `cat parent`]) +AT_CHECK([ps -o ppid= -p `cat pid` > parentpid], + [0], [], [], [kill `cat parent`]) +AT_CHECK( + [parentpid=`cat parentpid` && + parent=`cat parent` && + test $parentpid = $parent], + [0], [], [], [kill `cat parent`]) +# HUP the daemon process causing it to throw an exception, +# and wait for a new child process to get spawned. +AT_CHECK([cp pid oldpid], [0], [], [], [kill `cat parent`]) +AT_CHECK([kill -HUP `cat pid`], [0], [], [ignore], [kill `cat parent`]) +OVS_WAIT_WHILE([kill -0 `cat oldpid`], [kill `cat parent`]) +OVS_WAIT_UNTIL([test -s pid && test `cat pid` != `cat oldpid`], + [kill `cat parent`]) +AT_CHECK([cp pid newpid], [0], [], [], [kill `cat parent`]) +# Check that the pidfile names a running process, +# and that the parent process of that process is our child process. +AT_CHECK([ps -o ppid= -p `cat pid` > parentpid], + [0], [], [], [kill `cat parent`]) +AT_CHECK( + [parentpid=`cat parentpid` && + parent=`cat parent` && test $parentpid = $parent], [0], [], [], [kill `cat parent`]) # Kill the daemon process with SIGTERM, and wait for the daemon @@ -67,7 +110,7 @@ AT_CAPTURE_FILE([pid]) # 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. -AT_CHECK([$PYTHON $srcdir/test-daemon.py --pidfile-name=$PWD/pid --detach], [0], [ignore], [ignore]) +AT_CHECK([$PYTHON $srcdir/test-daemon.py --pidfile=`pwd`/pid --detach], [0]) AT_CHECK([test -s pid]) AT_CHECK([kill -0 `cat pid`]) # Kill the daemon and make sure that the pidfile gets deleted. @@ -79,7 +122,7 @@ AT_CLEANUP AT_SETUP([daemon --detach --monitor - Python]) AT_SKIP_IF([test $HAVE_PYTHON = no]) -m4_define([CHECK], +m4_define([CHECK], [AT_CHECK([$1], [$2], [$3], [$4], [kill `cat daemon monitor`])]) AT_CAPTURE_FILE([daemon]) AT_CAPTURE_FILE([olddaemon]) @@ -90,7 +133,7 @@ AT_CAPTURE_FILE([init]) # 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. -AT_CHECK([$PYTHON $srcdir/test-daemon.py --pidfile-name=$PWD/daemon --detach --monitor], [0], [ignore], [ignore]) +AT_CHECK([$PYTHON $srcdir/test-daemon.py --pidfile=`pwd`/daemon --detach --monitor], [0]) AT_CHECK([test -s daemon]) # Check that the pidfile names a running process, # and that the parent process of that process is a running process, @@ -99,7 +142,7 @@ CHECK([kill -0 `cat daemon`]) CHECK([ps -o ppid= -p `cat daemon` > monitor]) CHECK([kill -0 `cat monitor`]) CHECK([ps -o ppid= -p `cat monitor` > init]) -CHECK([test `cat init` = 1]) +CHECK([test `cat init` != $$]) # Kill the daemon process, making it look like a segfault, # and wait for a new daemon process to get spawned. CHECK([cp daemon olddaemon]) @@ -116,7 +159,7 @@ CHECK([ps -o ppid= -p `cat daemon` > newmonitor]) CHECK([diff monitor newmonitor]) CHECK([kill -0 `cat newmonitor`]) CHECK([ps -o ppid= -p `cat newmonitor` > init]) -CHECK([test `cat init` = 1]) +CHECK([test `cat init` != $$]) # Kill the daemon process with SIGTERM, and wait for the daemon # and the monitor processes to go away and the pidfile to get deleted. CHECK([kill `cat daemon`], [0], [], [ignore]) @@ -129,7 +172,7 @@ AT_CLEANUP AT_SETUP([daemon --detach startup errors - Python]) AT_SKIP_IF([test $HAVE_PYTHON = no]) AT_CAPTURE_FILE([pid]) -AT_CHECK([$PYTHON $srcdir/test-daemon.py --pidfile-name=$PWD/pid --detach --bail], [1], [], [stderr]) +AT_CHECK([$PYTHON $srcdir/test-daemon.py --pidfile=`pwd`/pid --detach --bail], [1], [], [stderr]) AT_CHECK([grep 'test-daemon.py: exiting after daemonize_start() as requested' stderr], [0], [ignore], []) AT_CHECK([test ! -s pid]) @@ -138,7 +181,7 @@ AT_CLEANUP AT_SETUP([daemon --detach --monitor startup errors - Python]) AT_SKIP_IF([test $HAVE_PYTHON = no]) AT_CAPTURE_FILE([pid]) -AT_CHECK([$PYTHON $srcdir/test-daemon.py --pidfile-name=$PWD/pid --detach --monitor --bail], [1], [], [stderr]) +AT_CHECK([$PYTHON $srcdir/test-daemon.py --pidfile=`pwd`/pid --detach --monitor --bail], [1], [], [stderr]) AT_CHECK([grep 'test-daemon.py: exiting after daemonize_start() as requested' stderr], [0], [ignore], []) AT_CHECK([test ! -s pid]) @@ -149,7 +192,7 @@ AT_SKIP_IF([test $HAVE_PYTHON = no]) AT_CAPTURE_FILE([pid]) AT_CAPTURE_FILE([status]) AT_CAPTURE_FILE([stderr]) -AT_CHECK([(yes 2>stderr; echo $? > status) | $PYTHON $srcdir/test-daemon.py --pidfile-name=$PWD/pid --detach], [0], [], []) +AT_CHECK([(yes 2>stderr; echo $? > status) | $PYTHON $srcdir/test-daemon.py --pidfile=`pwd`/pid --detach], [0], [], []) AT_CHECK([kill `cat pid`]) AT_CHECK([test -s status]) if grep '[[bB]]roken pipe' stderr >/dev/null 2>&1; then @@ -165,11 +208,12 @@ fi AT_CLEANUP AT_SETUP([daemon --detach --monitor closes standard fds]) +AT_SKIP_IF([test $HAVE_PYTHON = no]) AT_CAPTURE_FILE([pid]) AT_CAPTURE_FILE([status]) AT_CAPTURE_FILE([stderr]) OVSDB_INIT([db]) -AT_CHECK([(yes 2>stderr; echo $? > status) | $PYTHON $srcdir/test-daemon.py --pidfile-name=$PWD/pid --detach], [0], [], []) +AT_CHECK([(yes 2>stderr; echo $? > status) | $PYTHON $srcdir/test-daemon.py --pidfile=`pwd`/pid --detach], [0], [], []) AT_CHECK([kill `cat pid`]) AT_CHECK([test -s status]) if grep '[[bB]]roken pipe' stderr >/dev/null 2>&1; then