Prepare Open vSwitch 1.1.2 release.
[sliver-openvswitch.git] / tests / daemon-py.at
index 7ff376e..9a2549c 100644 (file)
@@ -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-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
@@ -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])