1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-27 14:04:05 +03:00
samba-mirror/ctdb/tests/simple/07_ctdb_process_exists.sh
Martin Schwenke 96b3517356 Test suite: better debug info when the cluster is unexpectedly unhealthy.
cluster_is_healthy() is now run locally in tests and internally causes
_cluster_is_healthy() to be run on node 0.  When it detects that the
cluster is unhealthy and $ctdb_test_restart_scheduled is not true,
debug information is printed.  This replaces the previous use of
$CTDB_TEST_CLEANING_UP.

To avoid spurious debug on expected restarts, added scheduled
restarts to several tests.

Signed-off-by: Martin Schwenke <martin@meltin.net>

(This used to be ctdb commit ee7caae3a55a64fb50cd28fa2fd4663c5dd83b4f)
2009-07-06 17:52:11 +10:00

67 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
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
}
. ctdb_test_functions.bash
ctdb_test_init "$@"
set -e
cluster_is_healthy
test_node=1
# Create a background process 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"
echo "Checking for PID $pid on node $test_node"
# set -e is good, but avoid it here
status=0
onnode 0 "$CTDB process-exists ${test_node}:${pid}" || status=$?
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
# enough to trick the test... but there is a chance that will happen!
try_command_on_node $test_node 'echo $$'
pid="$out"
echo "Checking for PID $pid on node $test_node"
try_command_on_node -v 0 "! $CTDB process-exists ${test_node}:${pid}"