1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-22 13:34:15 +03:00

ctdb-tests: Handle special cases first and return

All the other cases involve matching bits.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14085

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
This commit is contained in:
Martin Schwenke 2019-07-29 16:43:09 +10:00 committed by Martin Schwenke
parent bb59073515
commit bff1a3a548

View File

@ -322,6 +322,19 @@ node_has_status ()
local pnn="$1"
local status="$2"
case "$status" in
recovered)
! $CTDB status -n "$pnn" | \
grep -Eq '^Recovery mode:RECOVERY \(1\)$'
return
;;
notlmaster)
! $CTDB status -n "$pnn" | \
grep -Eq "^hash:.* lmaster:${pnn}\$"
return
;;
esac
local bits
case "$status" in
unhealthy) bits="?|?|?|1|*" ;;
@ -334,42 +347,26 @@ node_has_status ()
enabled) bits="?|?|0|*" ;;
stopped) bits="?|?|?|?|1|*" ;;
notstopped) bits="?|?|?|?|0|*" ;;
recovered)
! $CTDB status -n "$pnn" | \
grep -Eq '^Recovery mode:RECOVERY \(1\)$'
return
;;
notlmaster)
! $CTDB status -n "$pnn" | \
grep -Eq "^hash:.* lmaster:${pnn}\$"
return
;;
*)
echo "node_has_status: unknown status \"$status\""
return 1
esac
local out x line
if [ -n "$bits" ] ; then
local out x line
out=$($CTDB -X status 2>&1) || return 1
out=$($CTDB -X status 2>&1) || return 1
{
read x
while read line ; do
# This needs to be done in 2 steps to
# avoid false matches.
local line_bits="${line#|${pnn}|*|}"
[ "$line_bits" = "$line" ] && continue
[ "${line_bits#${bits}}" != "$line_bits" ] && \
return 0
done
return 1
} <<<"$out" # Yay bash!
else
echo 'node_has_status: unknown mode, $bits not set'
{
read x
while read line ; do
# This needs to be done in 2 steps to
# avoid false matches.
local line_bits="${line#|${pnn}|*|}"
[ "$line_bits" = "$line" ] && continue
[ "${line_bits#${bits}}" != "$line_bits" ] && \
return 0
done
return 1
fi
} <<<"$out" # Yay bash!
}
wait_until_node_has_status ()