Steps:
1. Verify that the status on all of the ctdb nodes is 'OK'.
-2. On one of the cluster nodes, get the PID of an existing process
- (using ps wax).
+2. On one of the cluster nodes, get the PID of a ctdb client.
3. Run 'ctdb process-exists <pid>' on the node and verify that the
correct output is shown.
-4. Run 'ctdb process-exists <pid>' with a pid of a non-existent
+4. Run 'ctdb process-exists <pid>' with a pid of ctdb daemon
process and verify that the correct output is shown.
Expected results:
test_node=1
-# Create a background process on $test_node that will last for 60 seconds.
+# Execute a ctdb client on $test_node that will last for 60 seconds.
# It should still be there when we check.
-try_command_on_node $test_node 'sleep 60 >/dev/null 2>&1 & echo $!'
-pid="$out"
+try_command_on_node -v $test_node \
+ "$CTDB_TEST_WRAPPER exec dummy_client >/dev/null 2>&1 & echo \$!"
+client_pid="$out"
-echo "Checking for PID $pid on node $test_node"
-# set -e is good, but avoid it here
+cleanup ()
+{
+ if [ -n "$client_pid" ] ; then
+ onnode $test_node kill -9 "$client_pid"
+ fi
+}
+
+ctdb_test_exit_hook_add cleanup
+
+echo "Checking for PID $client_pid on node $test_node"
status=0
-try_command_on_node $test_node "$CTDB process-exists ${pid}" || status=$?
+try_command_on_node $test_node \
+ "$CTDB process-exists ${client_pid}" || status=$?
echo "$out"
if [ $status -eq 0 ] ; then
testfailures=1
fi
-# Now just echo the PID of the shell from the onnode process on node
-# 2. This PID will disappear and PIDs shouldn't roll around fast
-# enough to trick the test... but there is a chance that will happen!
-try_command_on_node $test_node 'echo $$'
+# Now just echo the PID of the ctdb daemon on test node.
+# This is not a ctdb client and process-exists should return error.
+try_command_on_node $test_node "ctdb getpid"
pid="$out"
echo "Checking for PID $pid on node $test_node"