2008-11-20 12:40:01 +03:00
#!/bin/bash
2008-11-24 09:47:09 +03:00
test_info( )
{
cat <<EOF
Verify that 'ctdb process-exists' shows correct information.
The implementation is creative about how it gets PIDs for existing and
non-existing processes.
Prerequisites:
* An active CTDB cluster with at least 2 active nodes.
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) .
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
process and verify that the correct output is shown.
Expected results:
* 'ctdb process-exists' shows the correct output.
EOF
}
2008-11-20 12:40:01 +03:00
. ctdb_test_functions.bash
2008-11-24 09:47:09 +03:00
ctdb_test_init " $@ "
2008-11-20 12:40:01 +03:00
set -e
2009-07-06 11:52:11 +04:00
cluster_is_healthy
2008-11-20 12:40:01 +03:00
2008-12-10 08:13:42 +03:00
test_node = 1
# Create a background process on $test_node that will last for 60 seconds.
2008-11-24 09:47:09 +03:00
# It should still be there when we check.
2008-12-10 08:13:42 +03:00
try_command_on_node $test_node 'sleep 60 >/dev/null 2>&1 & echo $!'
2008-11-20 12:40:01 +03:00
pid = " $out "
2008-12-10 08:13:42 +03:00
echo " Checking for PID $pid on node $test_node "
2008-11-20 12:40:01 +03:00
# set -e is good, but avoid it here
status = 0
2009-01-08 09:12:03 +03:00
onnode 0 " $CTDB process-exists ${ test_node } : ${ pid } " || status = $?
2008-11-20 12:40:01 +03:00
echo " $out "
if [ $status -eq 0 ] ; then
echo "OK"
else
echo "BAD"
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
2008-11-24 09:47:09 +03:00
# enough to trick the test... but there is a chance that will happen!
2008-12-10 08:13:42 +03:00
try_command_on_node $test_node 'echo $$'
2008-11-20 12:40:01 +03:00
pid = " $out "
2008-12-10 08:13:42 +03:00
echo " Checking for PID $pid on node $test_node "
2009-07-03 11:40:16 +04:00
try_command_on_node -v 0 " ! $CTDB process-exists ${ test_node } : ${ pid } "