ctdb-tests: Handle special cases first and return
authorMartin Schwenke <martin@meltin.net>
Mon, 29 Jul 2019 06:43:09 +0000 (16:43 +1000)
committerMartin Schwenke <martins@samba.org>
Wed, 21 Aug 2019 11:50:30 +0000 (11:50 +0000)
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>
ctdb/tests/scripts/integration.bash

index a81f2a022ebd3695d751f7e91abc59dbfb580621..36ee09c563b75121bab873a628662341c7dbac30 100644 (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
-
-       if [ -n "$bits" ] ; then
-               local out x line
-
-               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'
+       local out x line
+
+       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
-       fi
+       } <<<"$out" # Yay bash!
 }
 
 wait_until_node_has_status ()