diff options
author | Ethan Jackson <ethan@nicira.com> | 2010-09-22 21:59:02 -0700 |
---|---|---|
committer | Ethan Jackson <ethan@nicira.com> | 2010-09-23 02:00:03 -0700 |
commit | 6793129d369dee182d9260620d1db9188f09d986 (patch) | |
tree | 5254a8304f51a2e0815f9a4b5d0d669d1bcb7590 /tests/daemon-py.at | |
parent | 9c64f2384d850658985d7e18003443c196e89ae1 (diff) |
tests: Test that children restart with special exit code
Added a test which checks that the python daemon code properly
restarts child processes which exit with RESTART_EXIT_CODE.
Diffstat (limited to 'tests/daemon-py.at')
-rw-r--r-- | tests/daemon-py.at | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/daemon-py.at b/tests/daemon-py.at index 9e5f2793..9a2549c1 100644 --- a/tests/daemon-py.at +++ b/tests/daemon-py.at @@ -61,6 +61,49 @@ 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-name=$PWD/pid --monitor& echo $! > parent], [0], [ignore], [ignore]) +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 +# 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 --detach - Python]) AT_SKIP_IF([test $HAVE_PYTHON = no]) AT_CAPTURE_FILE([pid]) |