summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xctdb/tests/complex/11_ctdb_delip_removes_ip.sh10
-rwxr-xr-xctdb/tests/complex/18_ctdb_reloadips.sh8
-rwxr-xr-xctdb/tests/complex/32_cifs_tickle.sh7
-rwxr-xr-xctdb/tests/complex/36_smb_reset_server.sh12
-rwxr-xr-xctdb/tests/complex/37_nfs_reset_server.sh4
-rwxr-xr-xctdb/tests/complex/60_rogueip_releaseip.sh2
-rw-r--r--ctdb/tests/complex/scripts/local.bash5
-rw-r--r--ctdb/tests/scripts/integration.bash40
-rwxr-xr-xctdb/tests/simple/02_ctdb_tunables.sh3
-rwxr-xr-xctdb/tests/simple/05_ctdb_listnodes.sh2
-rwxr-xr-xctdb/tests/simple/08_ctdb_isnotrecmaster.sh10
-rwxr-xr-xctdb/tests/simple/11_ctdb_ip.sh14
-rwxr-xr-xctdb/tests/simple/15_ctdb_statisticsreset.sh21
-rwxr-xr-xctdb/tests/simple/19_ip_takeover_noop.sh4
-rwxr-xr-xctdb/tests/simple/20_delip_iface_gc.sh10
-rwxr-xr-xctdb/tests/simple/21_ctdb_attach.sh7
-rwxr-xr-xctdb/tests/simple/23_ctdb_moveip.sh25
-rwxr-xr-xctdb/tests/simple/24_ctdb_getdbmap.sh6
-rwxr-xr-xctdb/tests/simple/26_ctdb_config_check_error_on_unreachable_ctdb.sh6
-rwxr-xr-xctdb/tests/simple/27_ctdb_detach.sh21
-rwxr-xr-xctdb/tests/simple/35_ctdb_getreclock.sh2
-rwxr-xr-xctdb/tests/simple/51_message_ring.sh12
-rwxr-xr-xctdb/tests/simple/52_fetch_ring.sh12
-rwxr-xr-xctdb/tests/simple/53_transaction_loop.sh4
-rwxr-xr-xctdb/tests/simple/54_transaction_loop_recovery.sh4
-rwxr-xr-xctdb/tests/simple/55_ctdb_ptrans.sh12
-rwxr-xr-xctdb/tests/simple/56_replicated_transaction_recovery.sh4
-rwxr-xr-xctdb/tests/simple/58_ctdb_restoredb.sh8
-rwxr-xr-xctdb/tests/simple/69_recovery_resurrect_deleted.sh10
-rwxr-xr-xctdb/tests/simple/70_recoverpdbbyseqnum.sh4
-rwxr-xr-xctdb/tests/simple/71_ctdb_wipedb.sh4
-rwxr-xr-xctdb/tests/simple/72_update_record_persistent.sh4
-rwxr-xr-xctdb/tests/simple/75_readonly_records_basic.sh24
-rwxr-xr-xctdb/tests/simple/77_ctdb_db_recovery.sh6
-rwxr-xr-xctdb/tests/simple/79_volatile_db_traverse.sh4
-rwxr-xr-xctdb/tests/simple/80_ctdb_traverse.sh2
-rwxr-xr-xctdb/tests/simple/81_tunnel_ring.sh12
-rwxr-xr-xctdb/tests/simple/90_debug_hung_script.sh6
38 files changed, 161 insertions, 190 deletions
diff --git a/ctdb/tests/complex/11_ctdb_delip_removes_ip.sh b/ctdb/tests/complex/11_ctdb_delip_removes_ip.sh
index b5c8866d67a..543472c0f22 100755
--- a/ctdb/tests/complex/11_ctdb_delip_removes_ip.sh
+++ b/ctdb/tests/complex/11_ctdb_delip_removes_ip.sh
@@ -22,8 +22,8 @@ cluster_is_healthy
select_test_node_and_ips
get_test_ip_mask_and_iface
-echo "Checking that node ${test_node} hosts ${test_ip} on interface ${iface}..."
-try_command_on_node $test_node "ip addr show dev $iface | grep -E 'inet6?[[:space:]]*${test_ip}/'"
+echo "Checking that node ${test_node} hosts ${test_ip}..."
+try_command_on_node $test_node "ip addr show to ${test_ip} | grep -q ."
echo "Attempting to remove ${test_ip} from node ${test_node}."
try_command_on_node $test_node $CTDB delip $test_ip
@@ -33,10 +33,10 @@ wait_until_ips_are_on_node '!' $test_node $test_ip
timeout=60
increment=5
count=0
-echo "Waiting for ${test_ip} to disappear from ${iface}..."
+echo "Waiting for ${test_ip} to disappear from node ${test_node}..."
while : ; do
- try_command_on_node -v $test_node "ip addr show dev $iface"
- if echo "$out" | grep -E 'inet6?[[:space:]]*${test_ip}/'; then
+ try_command_on_node -v $test_node "ip addr show to ${test_node}"
+ if -n "$out" ; then
echo "Still there..."
if [ $(($count * $increment)) -ge $timeout ] ; then
echo "BAD: Timed out waiting..."
diff --git a/ctdb/tests/complex/18_ctdb_reloadips.sh b/ctdb/tests/complex/18_ctdb_reloadips.sh
index 2beff771874..4ba1b26a8e8 100755
--- a/ctdb/tests/complex/18_ctdb_reloadips.sh
+++ b/ctdb/tests/complex/18_ctdb_reloadips.sh
@@ -48,12 +48,12 @@ select_test_node_and_ips
echo "Getting public IP information from CTDB..."
try_command_on_node any "$CTDB ip -X -v all"
-ctdb_ip_info=$(echo "$out" | awk -F'|' 'NR > 1 { print $2, $3, $5 }')
+ctdb_ip_info=$(awk -F'|' 'NR > 1 { print $2, $3, $5 }' "$outfile")
echo "Getting IP information from interfaces..."
try_command_on_node all "ip addr show"
-ip_addr_info=$(echo "$out" | \
- awk '$1 == "inet" { ip = $2; sub(/\/.*/, "", ip); print ip }')
+ip_addr_info=$(awk '$1 == "inet" { ip = $2; sub(/\/.*/, "", ip); print ip }' \
+ "$outfile")
prefix=""
for b in $(seq 0 255) ; do
@@ -168,7 +168,7 @@ check_ips ()
try_command_on_node $test_node "ip addr show dev ${iface}"
local ip_addrs_file=$(mktemp)
- echo "$out" | \
+ cat "$outfile" | \
sed -n -e "s@.*inet * \(${prefix//./\.}\.[0-9]*\)/.*@\1@p" | \
sort >"$ip_addrs_file"
diff --git a/ctdb/tests/complex/32_cifs_tickle.sh b/ctdb/tests/complex/32_cifs_tickle.sh
index 4f2cdadbdfc..bfe3df4e82f 100755
--- a/ctdb/tests/complex/32_cifs_tickle.sh
+++ b/ctdb/tests/complex/32_cifs_tickle.sh
@@ -61,13 +61,6 @@ echo "Source socket is $src_socket"
# we sometimes beat the registration.
echo "Checking if CIFS connection is tracked by CTDB on test node..."
wait_until 10 check_tickles $test_node $test_ip $test_port $src_socket
-echo "$out"
-
-if [ "${out/SRC: ${src_socket} /}" != "$out" ] ; then
- echo "GOOD: CIFS connection tracked OK by CTDB."
-else
- die "BAD: Socket not tracked by CTDB."
-fi
# This is almost immediate. However, it is sent between nodes
# asynchonously, so it is worth checking...
diff --git a/ctdb/tests/complex/36_smb_reset_server.sh b/ctdb/tests/complex/36_smb_reset_server.sh
index 0de77722fc3..870b80661aa 100755
--- a/ctdb/tests/complex/36_smb_reset_server.sh
+++ b/ctdb/tests/complex/36_smb_reset_server.sh
@@ -59,16 +59,8 @@ echo "Source socket is $src_socket"
# This should happen as soon as connection is up... but unless we wait
# we sometimes beat the registration.
-echo "Checking if CIFS connection is tracked by CTDB on test node..."
+echo "Waiting until SMB connection is tracked by CTDB on test node..."
wait_until 10 check_tickles $test_node $test_ip $test_port $src_socket
-echo "$out"
-
-if [ "${out/SRC: ${src_socket} /}" != "$out" ] ; then
- echo "GOOD: CIFS connection tracked OK by CTDB."
-else
- echo "BAD: Socket not tracked by CTDB."
- exit 1
-fi
# It would be nice if ss consistently used local/peer instead of src/dst
ss_filter="src ${test_ip}:${test_port} dst ${src_socket}"
@@ -80,7 +72,7 @@ if [ -z "$out" ] ; then
exit 1
fi
echo "GOOD: ss lists the socket:"
-echo "$out"
+cat "$outfile"
echo "Disabling node $test_node"
try_command_on_node 1 $CTDB disable -n $test_node
diff --git a/ctdb/tests/complex/37_nfs_reset_server.sh b/ctdb/tests/complex/37_nfs_reset_server.sh
index 7190af0f552..32ff9295cc6 100755
--- a/ctdb/tests/complex/37_nfs_reset_server.sh
+++ b/ctdb/tests/complex/37_nfs_reset_server.sh
@@ -60,7 +60,7 @@ echo "Source socket is $src_socket"
echo "Wait until NFS connection is tracked by CTDB on test node ..."
wait_until $((monitor_interval * 2)) \
check_tickles $test_node $test_ip $test_port $src_socket
-echo "$out"
+cat "$outfile"
# It would be nice if ss consistently used local/peer instead of src/dst
ss_filter="src ${test_ip}:${test_port} dst ${src_socket}"
@@ -72,7 +72,7 @@ if [ -z "$out" ] ; then
exit 1
fi
echo "GOOD: ss lists the socket:"
-echo "$out"
+cat "$outfile"
echo "Disabling node $test_node"
try_command_on_node 1 $CTDB disable -n $test_node
diff --git a/ctdb/tests/complex/60_rogueip_releaseip.sh b/ctdb/tests/complex/60_rogueip_releaseip.sh
index 2fddc06f867..88e4e554c34 100755
--- a/ctdb/tests/complex/60_rogueip_releaseip.sh
+++ b/ctdb/tests/complex/60_rogueip_releaseip.sh
@@ -31,7 +31,7 @@ for i in $all_pnns ; do
continue
fi
try_command_on_node $i "$CTDB ip"
- n=$(awk -v ip="$test_ip" '$1 == ip { print }' <<<"$out")
+ n=$(awk -v ip="$test_ip" '$1 == ip { print }' "$outfile")
if [ -n "$n" ] ; then
other_node="$i"
break
diff --git a/ctdb/tests/complex/scripts/local.bash b/ctdb/tests/complex/scripts/local.bash
index 7787de8f111..787f597edcc 100644
--- a/ctdb/tests/complex/scripts/local.bash
+++ b/ctdb/tests/complex/scripts/local.bash
@@ -67,7 +67,7 @@ check_tickles ()
local src_socket="$4"
try_command_on_node $node ctdb gettickles $test_ip $test_port
# SRC: 10.0.2.45:49091 DST: 10.0.2.143:445
- [ "${out/SRC: ${src_socket} /}" != "$out" ]
+ grep -Fq "SRC: ${src_socket} " "$outfile"
}
check_tickles_all ()
@@ -79,8 +79,7 @@ check_tickles_all ()
try_command_on_node all ctdb gettickles $test_ip $test_port
# SRC: 10.0.2.45:49091 DST: 10.0.2.143:445
- local t="${src_socket//./\\.}"
- local count=$(grep -E -c "SRC: ${t} " <<<"$out" || true)
+ local count=$(grep -Fc "SRC: ${src_socket} " "$outfile" || true)
[ $count -eq $numnodes ]
}
diff --git a/ctdb/tests/scripts/integration.bash b/ctdb/tests/scripts/integration.bash
index d9afe898ad2..ce5bd576b24 100644
--- a/ctdb/tests/scripts/integration.bash
+++ b/ctdb/tests/scripts/integration.bash
@@ -148,30 +148,7 @@ sanity_check_output ()
return $ret
}
-sanity_check_ips ()
-{
- local ips="$1" # list of "ip node" lines
-
- echo "Sanity checking IPs..."
-
- local x ipp prev
- prev=""
- while read x ipp ; do
- [ "$ipp" = "-1" ] && break
- if [ -n "$prev" -a "$ipp" != "$prev" ] ; then
- echo "OK"
- return 0
- fi
- prev="$ipp"
- done <<<"$ips"
-
- echo "BAD: a node was -1 or IPs are only assigned to one node:"
- echo "$ips"
- echo "Are you running an old version of CTDB?"
- return 1
-}
-
-# This returns a list of "ip node" lines in $out
+# This returns a list of "ip node" lines in $outfile
all_ips_on_node()
{
local node="$1"
@@ -192,9 +169,9 @@ _select_test_node_and_ips ()
test_node="$pnn"
fi
if [ "$pnn" = "$test_node" ] ; then
- test_node_ips="${test_node_ips}${test_node_ips:+ }${ip}"
+ test_node_ips="${test_node_ips}${test_node_ips:+ }${ip}"
fi
- done <<<"$out" # bashism to avoid problem setting variable in pipeline.
+ done <"$outfile"
echo "Selected node ${test_node} with IPs: ${test_node_ips}."
test_ip="${test_node_ips%% *}"
@@ -264,7 +241,7 @@ delete_ip_from_all_nodes ()
if [ "$_ip" = "$_i" ] ; then
_nodes="${_nodes}${_nodes:+,}${_pnn}"
fi
- done <<<"$out" # bashism
+ done <"$outfile"
done
try_command_on_node -pq "$_nodes" "$CTDB delip $_ip"
@@ -435,7 +412,7 @@ ips_are_on_node ()
if $negating ; then
ips="${ips/${check}}"
fi
- done <<<"$out" # bashism to avoid problem setting variable in pipeline.
+ done <"$outfile"
done
ips="${ips// }" # Remove any spaces.
@@ -477,7 +454,7 @@ node_has_some_ips ()
if [ "$node" = "$pnn" ] ; then
return 0
fi
- done <<<"$out" # bashism to avoid problem setting variable in pipeline.
+ done <"$outfile"
return 1
}
@@ -614,7 +591,8 @@ wait_for_monitor_event ()
return 1
}
- local ctdb_scriptstatus_original="$out"
+ mv "$outfile" "${outfile}.orig"
+
wait_until 120 _ctdb_scriptstatus_changed
}
@@ -625,7 +603,7 @@ _ctdb_scriptstatus_changed ()
return 1
}
- [ "$out" != "$ctdb_scriptstatus_original" ]
+ ! diff "$outfile" "${outfile}.orig" >/dev/null
}
#######################################
diff --git a/ctdb/tests/simple/02_ctdb_tunables.sh b/ctdb/tests/simple/02_ctdb_tunables.sh
index e205da217e6..2e7a08b6f6f 100755
--- a/ctdb/tests/simple/02_ctdb_tunables.sh
+++ b/ctdb/tests/simple/02_ctdb_tunables.sh
@@ -23,7 +23,6 @@ sanity_check_output \
echo "Verifying all variable values using \"ctdb getvar\"..."
-echo "$out" |
while read var x val ; do
try_command_on_node 0 "$CTDB getvar $var"
@@ -33,7 +32,7 @@ while read var x val ; do
echo "MISMATCH on $var: $val != $val2"
exit 1
fi
-done
+done <"$outfile"
echo "GOOD: all tunables match"
diff --git a/ctdb/tests/simple/05_ctdb_listnodes.sh b/ctdb/tests/simple/05_ctdb_listnodes.sh
index 0adb291f758..722c9d2a035 100755
--- a/ctdb/tests/simple/05_ctdb_listnodes.sh
+++ b/ctdb/tests/simple/05_ctdb_listnodes.sh
@@ -32,7 +32,7 @@ cluster_is_healthy
try_command_on_node -v 0 "$CTDB listnodes"
-num_nodes=$(echo "$out" | wc -l)
+num_nodes=$(wc -l <"$outfile")
# Each line should look like an IP address.
ipv4_pat='[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+'
diff --git a/ctdb/tests/simple/08_ctdb_isnotrecmaster.sh b/ctdb/tests/simple/08_ctdb_isnotrecmaster.sh
index 12c8164b223..68e22879ba3 100755
--- a/ctdb/tests/simple/08_ctdb_isnotrecmaster.sh
+++ b/ctdb/tests/simple/08_ctdb_isnotrecmaster.sh
@@ -33,13 +33,11 @@ set -e
cluster_is_healthy
cmd="$CTDB isnotrecmaster || true"
-try_command_on_node all "$cmd"
-echo "Output of \"$cmd\":"
-echo "$out"
+try_command_on_node -v all "$cmd"
-num_all_lines=$(echo "$out" | wc -l)
-num_rm_lines=$(echo "$out" | fgrep -c 'this node is the recmaster') || true
-num_not_rm_lines=$(echo "$out" | fgrep -c 'this node is not the recmaster') || true
+num_all_lines=$(wc -l <"$outfile")
+num_rm_lines=$(grep -Fc 'this node is the recmaster' "$outfile") || true
+num_not_rm_lines=$(grep -Fc 'this node is not the recmaster' "$outfile") || true
if [ $num_rm_lines -eq 1 ] ; then
echo "OK, there is only 1 recmaster"
diff --git a/ctdb/tests/simple/11_ctdb_ip.sh b/ctdb/tests/simple/11_ctdb_ip.sh
index 4b11729a1e1..d9fdd28f775 100755
--- a/ctdb/tests/simple/11_ctdb_ip.sh
+++ b/ctdb/tests/simple/11_ctdb_ip.sh
@@ -33,18 +33,20 @@ cluster_is_healthy
echo "Getting list of public IPs..."
try_command_on_node -v 1 "$CTDB ip all | tail -n +2"
-ips=$(echo "$out" | sed \
+ips=$(sed \
-e 's@ node\[@ @' \
- -e 's@\].*$@@')
-machineout=$(echo "$out" | sed -r \
+ -e 's@\].*$@@' \
+ "$outfile")
+machineout=$(sed -r \
-e 's@^| |$@\|@g' \
-e 's@[[:alpha:]]+\[@@g' \
- -e 's@\]@@g')
+ -e 's@\]@@g' \
+ "$outfile")
if [ -z "$TEST_LOCAL_DAEMONS" ]; then
while read ip pnn ; do
- try_command_on_node $pnn "ip addr show"
- if [ "${out/inet* ${ip}\/}" != "$out" ] ; then
+ try_command_on_node $pnn "ip addr show to ${ip}"
+ if [ -n "$out" ] ; then
echo "GOOD: node $pnn appears to have $ip assigned"
else
die "BAD: node $pnn does not appear to have $ip assigned"
diff --git a/ctdb/tests/simple/15_ctdb_statisticsreset.sh b/ctdb/tests/simple/15_ctdb_statisticsreset.sh
index 8843a4dd9f7..1dce7b39965 100755
--- a/ctdb/tests/simple/15_ctdb_statisticsreset.sh
+++ b/ctdb/tests/simple/15_ctdb_statisticsreset.sh
@@ -37,10 +37,11 @@ num_nodes="$out"
get_stat ()
{
- local label="$1"
- local out="$2"
+ local label="$1"
- echo "$out" | sed -rn -e "s@^[[:space:]]+${label}[[:space:]]+([[:digit:]])@\1@p" | head -1
+ cat "$outfile" |
+ sed -rn -e "s@^[[:space:]]+${label}[[:space:]]+([[:digit:]])@\1@p" |
+ head -1
}
check_reduced ()
@@ -59,20 +60,20 @@ check_reduced ()
n=0
while [ $n -lt $num_nodes ] ; do
echo "Getting initial statistics for node ${n}..."
-
+
try_command_on_node -v $n $CTDB statistics
- before_req_control=$(get_stat "req_control" "$out")
- before_reply_control=$(get_stat "reply_control" "$out")
- before_node_packets_recv=$(get_stat "node_packets_recv" "$out")
+ before_req_control=$(get_stat "req_control")
+ before_reply_control=$(get_stat "reply_control")
+ before_node_packets_recv=$(get_stat "node_packets_recv")
try_command_on_node $n $CTDB statisticsreset
try_command_on_node -v $n $CTDB statistics
- after_req_control=$(get_stat "req_control" "$out")
- after_reply_control=$(get_stat "reply_control" "$out")
- after_node_packets_recv=$(get_stat "node_packets_recv" "$out")
+ after_req_control=$(get_stat "req_control")
+ after_reply_control=$(get_stat "reply_control")
+ after_node_packets_recv=$(get_stat "node_packets_recv")
check_reduced "req_control" "$before_req_control" "$after_req_control"
check_reduced "reply_control" "$before_reply_control" "$after_reply_control"
diff --git a/ctdb/tests/simple/19_ip_takeover_noop.sh b/ctdb/tests/simple/19_ip_takeover_noop.sh
index 8aedb339d94..93caf668c0b 100755
--- a/ctdb/tests/simple/19_ip_takeover_noop.sh
+++ b/ctdb/tests/simple/19_ip_takeover_noop.sh
@@ -34,9 +34,7 @@ while read ip pnn ; do
if [ "$pnn" != "-1" ] ; then
die "BAD: IP address ${ip} is assigned to node ${pnn}"
fi
-done <<EOF
-$out
-EOF
+done <"$outfile"
echo "GOOD: All IP addresses are unassigned"
diff --git a/ctdb/tests/simple/20_delip_iface_gc.sh b/ctdb/tests/simple/20_delip_iface_gc.sh
index 6cc39580c5e..2756f64ceb1 100755
--- a/ctdb/tests/simple/20_delip_iface_gc.sh
+++ b/ctdb/tests/simple/20_delip_iface_gc.sh
@@ -19,14 +19,14 @@ select_test_node_and_ips
# Find interfaces on test node
try_command_on_node $test_node "$CTDB ifaces -X"
-ifaces=$(awk -F'|' 'NR > 1 { print $2 }' <<<"$out")
+ifaces=$(awk -F'|' 'NR > 1 { print $2 }' "$outfile")
echo "Node ${test_node} has interfaces: ${ifaces}"
# Delete all IPs on each interface... deleting IPs from one interface
# can cause other interfaces to disappear, so we need to be careful...
for i in $ifaces ; do
try_command_on_node $test_node "$CTDB ifaces -X"
- info=$(awk -F'|' -v iface="$i" '$2 == iface { print $0 }' <<<"$out")
+ info=$(awk -F'|' -v iface="$i" '$2 == iface { print $0 }' "$outfile")
if [ -z "$info" ] ; then
echo "Interface ${i} missing... assuming already deleted!"
@@ -38,7 +38,7 @@ for i in $ifaces ; do
try_command_on_node $test_node "$CTDB ip -v -X | tail -n +2"
awk -F'|' -v i="$i" \
- '$6 == i { print $2 }' <<<"$out" |
+ '$6 == i { print $2 }' "$outfile" |
while read ip ; do
echo " $ip"
try_command_on_node $test_node "$CTDB delip $ip"
@@ -46,8 +46,8 @@ for i in $ifaces ; do
try_command_on_node $test_node "$CTDB ipreallocate"
try_command_on_node $test_node "$CTDB ifaces -X"
- info=$(awk -F'|' -v iface="$i" '$2 == iface { print $0 }' <<<"$out")
-
+ info=$(awk -F'|' -v iface="$i" '$2 == iface { print $0 }' "$outfile")
+
if [ -z "$info" ] ; then
echo "GOOD: Interface ${i} has been garbage collected"
else
diff --git a/ctdb/tests/simple/21_ctdb_attach.sh b/ctdb/tests/simple/21_ctdb_attach.sh
index 88f91e69acd..7965ced6052 100755
--- a/ctdb/tests/simple/21_ctdb_attach.sh
+++ b/ctdb/tests/simple/21_ctdb_attach.sh
@@ -36,9 +36,8 @@ cluster_is_healthy
######################################################################
-try_command_on_node 0 "$CTDB listnodes -X"
-listnodes_output="$out"
-numnodes=$(wc -l <<<"$listnodes_output")
+try_command_on_node 0 "$CTDB listnodes -X | wc -l"
+numnodes="$out"
lastnode=$(( numnodes - 1 ))
######################################################################
@@ -55,7 +54,7 @@ check_db ()
echo "$out"
exit 1
else
- local flags=$(awk '{print $4}' <<<"$out") || true
+ local flags=$(awk '{print $4}' "$outfile") || true
if [ "$flags" = "$flag" ]; then
echo "GOOD: database $db is attached on node $node with flag $flag"
else
diff --git a/ctdb/tests/simple/23_ctdb_moveip.sh b/ctdb/tests/simple/23_ctdb_moveip.sh
index 4220d1268e4..699ccc3d2ee 100755
--- a/ctdb/tests/simple/23_ctdb_moveip.sh
+++ b/ctdb/tests/simple/23_ctdb_moveip.sh
@@ -23,7 +23,28 @@ cluster_is_healthy
select_test_node_and_ips
-sanity_check_ips "$out"
+sanity_check_ips ()
+{
+ echo "Sanity checking IPs..."
+
+ local x ipp prev
+ prev=""
+ while read x ipp ; do
+ [ "$ipp" = "-1" ] && break
+ if [ -n "$prev" -a "$ipp" != "$prev" ] ; then
+ echo "OK"
+ return 0
+ fi
+ prev="$ipp"
+ done <"$outfile"
+
+ echo "BAD: a node was -1 or IPs are only assigned to one node:"
+ cat "$outfile"
+ echo "Are you running an old version of CTDB?"
+ return 1
+}
+
+sanity_check_ips
# Find a target node - it must be willing to host $test_ip
try_command_on_node any "$CTDB listnodes | wc -l"
@@ -37,7 +58,7 @@ for i in $(seq 0 $(($num_nodes - 1)) ) ; do
to_node="$i"
break 2
fi
- done <<<"$out"
+ done <"$outfile"
done
if [ -z "$to_node" ] ; then
diff --git a/ctdb/tests/simple/24_ctdb_getdbmap.sh b/ctdb/tests/simple/24_ctdb_getdbmap.sh
index 612fec1b49b..32d6d26a4ff 100755
--- a/ctdb/tests/simple/24_ctdb_getdbmap.sh
+++ b/ctdb/tests/simple/24_ctdb_getdbmap.sh
@@ -44,7 +44,7 @@ db_map_pattern='^(Number of databases:[[:digit:]]+|dbid:0x[[:xdigit:]]+ name:[^[
sanity_check_output $(($num_db_init + 1)) "$dbmap_pattern"
-num_db_init=$(echo "$out" | sed -n -e '1s/.*://p')
+num_db_init=$(sed -n -e '1s/.*://p' "$outfile")
for i in $(seq 1 5) ; do
f=$(make_temp_db_filename)
@@ -52,14 +52,14 @@ for i in $(seq 1 5) ; do
try_command_on_node 0 $CTDB attach "$f"
try_command_on_node 0 $CTDB getdbmap
sanity_check_output $(($num_db_init + 1)) "$dbmap_pattern"
- num=$(echo "$out" | sed -n -e '1s/^.*://p')
+ num=$(sed -n -e '1s/^.*://p' "$outfile")
if [ $num = $(($num_db_init + $i)) ] ; then
echo "OK: correct number of additional databases"
else
echo "BAD: no additional database"
exit 1
fi
- if [ "${out/name:${f} /}" != "$out" ] ; then
+ if awk '{print $2}' "$outfile" | grep -Fqx "name:$f" ; then
echo "OK: getdbmap knows about \"$f\""
else
echo "BAD: getdbmap does not know about \"$f\""
diff --git a/ctdb/tests/simple/26_ctdb_config_check_error_on_unreachable_ctdb.sh b/ctdb/tests/simple/26_ctdb_config_check_error_on_unreachable_ctdb.sh
index f356c820260..d7c0c0f9100 100755
--- a/ctdb/tests/simple/26_ctdb_config_check_error_on_unreachable_ctdb.sh
+++ b/ctdb/tests/simple/26_ctdb_config_check_error_on_unreachable_ctdb.sh
@@ -42,8 +42,8 @@ cluster_is_healthy
test_node=1
-try_command_on_node 0 "$CTDB listnodes"
-num_nodes=$(echo "$out" | wc -l)
+try_command_on_node 0 "$CTDB listnodes | wc -l"
+num_nodes="$out"
echo "There are $num_nodes nodes."
echo "Shutting down node ${test_node}..."
@@ -58,7 +58,7 @@ pat="ctdb_control error: 'ctdb_control to disconnected node'|ctdb_control error:
for i in ip disable enable "ban 0" unban listvars ; do
try_command_on_node -v 0 ! $CTDB $i -n $test_node
- if egrep -q "$pat" <<<"$out" ; then
+ if egrep -q "$pat" "$outfile" ; then
echo "OK: \"ctdb ${i}\" fails with expected \"disconnected node\" message"
else
echo "BAD: \"ctdb ${i}\" does not fail with expected \"disconnected node\" message"
diff --git a/ctdb/tests/simple/27_ctdb_detach.sh b/ctdb/tests/simple/27_ctdb_detach.sh
index e8ca2382e88..f7f7a7e8c40 100755
--- a/ctdb/tests/simple/27_ctdb_detach.sh
+++ b/ctdb/tests/simple/27_ctdb_detach.sh
@@ -32,9 +32,8 @@ cluster_is_healthy
######################################################################
-try_command_on_node 0 "$CTDB listnodes -X"
-listnodes_output="$out"
-numnodes=$(wc -l <<<"$listnodes_output")
+try_command_on_node 0 "$CTDB listnodes -X | wc -l"
+numnodes="$out"
######################################################################
@@ -43,12 +42,12 @@ check_db ()
{
db="$1"
try_command_on_node all $CTDB getdbmap
- local num_db=$(grep -cF "$db" <<<"$out") || true
+ local num_db=$(grep -cF "$db" "$outfile") || true
if [ $num_db -eq $numnodes ]; then
echo "GOOD: database $db is attached on all nodes"
else
echo "BAD: database $db is not attached on all nodes"
- echo "$out"
+ cat "$outfile"
exit 1
fi
}
@@ -58,12 +57,12 @@ check_no_db ()
{
db="$1"
try_command_on_node all $CTDB getdbmap
- local num_db=$(grep -cF "$db" <<<"$out") || true
+ local num_db=$(grep -cF "$db" "$outfile") || true
if [ $num_db -eq 0 ]; then
echo "GOOD: database $db is not attached any more"
else
echo "BAD: database $db is still attached"
- echo "$out"
+ cat "$outfile"
exit 1
fi
}
@@ -134,12 +133,12 @@ echo
echo "Write a key to database"
try_command_on_node 0 $CTDB writekey $testdb1 foo bar
try_command_on_node 0 $CTDB catdb $testdb1
-num_keys=$(echo "$out" | sed -n -e 's/Dumped \([0-9]*\) records/\1/p') || true
+num_keys=$(sed -n -e 's/Dumped \([0-9]*\) records/\1/p' "$outfile") || true
if [ -n "$num_keys" -a $num_keys -eq 1 ]; then
echo "GOOD: Key added to database"
else
echo "BAD: Key did not get added to database"
- echo "$out"
+ cat "$outfile"
exit 1
fi
@@ -158,11 +157,11 @@ check_db "$testdb1"
echo
echo "Check if the database is empty"
try_command_on_node 0 $CTDB catdb $testdb1
-num_keys=$(echo "$out" | sed -n -e 's/Dumped \([0-9]*\) records/\1/p') || true
+num_keys=$(sed -n -e 's/Dumped \([0-9]*\) records/\1/p' "$outfile") || true
if [ -n "$num_keys" -a $num_keys -eq 0 ]; then
echo "GOOD: Database $testdb1 is empty"
else
echo "BAD: Database $testdb1 is not empty"
- echo "$out"
+ cat "$outfile"
exit 1
fi
diff --git a/ctdb/tests/simple/35_ctdb_getreclock.sh b/ctdb/tests/simple/35_ctdb_getreclock.sh
index 0a2f3d5b92e..8cedd34045b 100755
--- a/ctdb/tests/simple/35_ctdb_getreclock.sh
+++ b/ctdb/tests/simple/35_ctdb_getreclock.sh
@@ -25,7 +25,7 @@ if [ -z "$out" ] ; then
exit 0
fi
-n=$(echo "$out" | sort -u | wc -l)
+n=$(sort -u "$outfile" | wc -l)
if [ "$n" = 1 ] ; then
echo "GOOD: All nodes have the same recovery lock setting"
else
diff --git a/ctdb/tests/simple/51_message_ring.sh b/ctdb/tests/simple/51_message_ring.sh
index f6f064e43bf..6f90c8fd5bb 100755
--- a/ctdb/tests/simple/51_message_ring.sh
+++ b/ctdb/tests/simple/51_message_ring.sh
@@ -19,23 +19,21 @@ set -e
cluster_is_healthy
-try_command_on_node 0 "$CTDB listnodes"
-num_nodes=$(echo "$out" | wc -l)
+try_command_on_node 0 "$CTDB listnodes | wc -l"
+num_nodes="$out"
echo "Running message_ring on all $num_nodes nodes."
try_command_on_node -v -p all $CTDB_TEST_WRAPPER $VALGRIND message_ring -n $num_nodes
# Get the last line of output.
-while read line ; do
- prev=$line
-done <<<"$out"
+last=$(tail -n 1 "$outfile")
pat='^(Waiting for cluster|Ring\[[[:digit:]]+\]: [[:digit:]]+(\.[[:digit:]]+)? msgs/sec \(\+ve=[[:digit:]]+ -ve=[[:digit:]]+\))$'
sanity_check_output 1 "$pat"
-# $prev should look like this:
+# $last should look like this:
# Ring[1]: 10670.93 msgs/sec (+ve=53391 -ve=53373)
-stuff="${prev##Ring\[*\]: }"
+stuff="${last##Ring\[*\]: }"
mps="${stuff% msgs/sec*}"
if [ ${mps%.*} -ge 10 ] ; then
diff --git a/ctdb/tests/simple/52_fetch_ring.sh b/ctdb/tests/simple/52_fetch_ring.sh
index bdd8186c49e..05632024cb5 100755
--- a/ctdb/tests/simple/52_fetch_ring.sh
+++ b/ctdb/tests/simple/52_fetch_ring.sh
@@ -19,8 +19,8 @@ set -e
cluster_is_healthy
-try_command_on_node 0 "$CTDB listnodes"
-num_nodes=$(echo "$out" | wc -l)
+try_command_on_node 0 "$CTDB listnodes | wc -l"
+num_nodes="$out"
echo "Running fetch_ring on all $num_nodes nodes."
try_command_on_node -v -p all $CTDB_TEST_WRAPPER $VALGRIND fetch_ring -n $num_nodes
@@ -29,13 +29,11 @@ pat='^(Waiting for cluster|Fetch\[[[:digit:]]+\]: [[:digit:]]+(\.[[:digit:]]+)?
sanity_check_output 1 "$pat"
# Get the last line of output.
-while read line ; do
- prev=$line
-done <<<"$out"
+last=$(tail -n 1 "$outfile")
-# $prev should look like this:
+# $last should look like this:
# Fetch[1]: 10670.93 msgs/sec
-stuff="${prev##*Fetch\[*\]: }"
+stuff="${last##*Fetch\[*\]: }"
mps="${stuff% msgs/sec*}"
if [ ${mps%.*} -ge 10 ] ; then
diff --git a/ctdb/tests/simple/53_transaction_loop.sh b/ctdb/tests/simple/53_transaction_loop.sh
index 2102e401384..d47761216ce 100755
--- a/ctdb/tests/simple/53_transaction_loop.sh
+++ b/ctdb/tests/simple/53_transaction_loop.sh
@@ -24,8 +24,8 @@ TESTDB="persistent_trans.tdb"
try_command_on_node 0 "$CTDB attach $TESTDB persistent"
try_command_on_node 0 "$CTDB wipedb $TESTDB"
-try_command_on_node 0 "$CTDB listnodes"
-num_nodes=$(echo "$out" | wc -l)
+try_command_on_node 0 "$CTDB listnodes | wc -l"
+num_nodes="$out"
if [ -z "$CTDB_TEST_TIMELIMIT" ] ; then
CTDB_TEST_TIMELIMIT=30
diff --git a/ctdb/tests/simple/54_transaction_loop_recovery.sh b/ctdb/tests/simple/54_transaction_loop_recovery.sh
index 61ac29ca178..7beacb9c913 100755
--- a/ctdb/tests/simple/54_transaction_loop_recovery.sh
+++ b/ctdb/tests/simple/54_transaction_loop_recovery.sh
@@ -43,8 +43,8 @@ TESTDB="persistent_trans.tdb"
try_command_on_node 0 "$CTDB attach $TESTDB persistent"
try_command_on_node 0 "$CTDB wipedb $TESTDB"
-try_command_on_node 0 "$CTDB listnodes"
-num_nodes=$(echo "$out" | wc -l)
+try_command_on_node 0 "$CTDB listnodes | wc -l"
+num_nodes="$out"
if [ -z "$CTDB_TEST_TIMELIMIT" ] ; then
CTDB_TEST_TIMELIMIT=30
diff --git a/ctdb/tests/simple/55_ctdb_ptrans.sh b/ctdb/tests/simple/55_ctdb_ptrans.sh
index e7db3aea456..72b18348398 100755
--- a/ctdb/tests/simple/55_ctdb_ptrans.sh
+++ b/ctdb/tests/simple/55_ctdb_ptrans.sh
@@ -51,11 +51,11 @@ echo "$items" | try_command_on_node -i 0 $CTDB ptrans "$TESTDB"
try_command_on_node 0 $CTDB catdb "$TESTDB"
-n=$(echo "$out" | grep -c '^key.*= "key.*"' || true)
+n=$(grep -c '^key.*= "key.*"' "$outfile" || true)
if [ $n -ne 3 ] ; then
echo "BAD: expected 3 keys in..."
- echo "$out"
+ cat "$outfile"
exit 1
else
echo "GOOD: 3 records were inserted"
@@ -75,11 +75,11 @@ echo "$items" | try_command_on_node -i 0 $CTDB ptrans "$TESTDB"
try_command_on_node 0 $CTDB catdb "$TESTDB"
-n=$(echo "$out" | grep -c '^key.*= "key.*"' || true)
+n=$(grep -c '^key.*= "key.*"' "$outfile" || true)
if [ $n -ne 3 ] ; then
echo "BAD: expected 3 keys in..."
- echo "$out"
+ cat "$outfile"
exit 1
else
echo "GOOD: 3 records found"
@@ -116,11 +116,11 @@ echo "$items" | try_command_on_node -i 0 $CTDB ptrans "$TESTDB"
try_command_on_node 0 $CTDB catdb "$TESTDB"
-n=$(echo "$out" | grep -c '^key.*= "key.*"' || true)
+n=$(grep -c '^key.*= "key.*"' "$outfile" || true)
if [ $n -ne 0 ] ; then
echo "BAD: expected 0 keys in..."
- echo "$out"
+ cat "$outfile"
exit 1
else
echo "GOOD: 0 records found"
diff --git a/ctdb/tests/simple/56_replicated_transaction_recovery.sh b/ctdb/tests/simple/56_replicated_transaction_recovery.sh
index f09ed550c82..4d5c1297fa9 100755
--- a/ctdb/tests/simple/56_replicated_transaction_recovery.sh
+++ b/ctdb/tests/simple/56_replicated_transaction_recovery.sh
@@ -44,8 +44,8 @@ TESTDB="replicated_trans.tdb"
try_command_on_node 0 "$CTDB attach $TESTDB replicated"
try_command_on_node 0 "$CTDB wipedb $TESTDB"
-try_command_on_node 0 "$CTDB listnodes"
-num_nodes=$(echo "$out" | wc -l)
+try_command_on_node 0 "$CTDB listnodes | wc -l"
+num_nodes="$out"
if [ -z "$CTDB_TEST_TIMELIMIT" ] ; then
CTDB_TEST_TIMELIMIT=30
diff --git a/ctdb/tests/simple/58_ctdb_restoredb.sh b/ctdb/tests/simple/58_ctdb_restoredb.sh
index eacbdfc5465..579233e0e80 100755
--- a/ctdb/tests/simple/58_ctdb_restoredb.sh
+++ b/ctdb/tests/simple/58_ctdb_restoredb.sh
@@ -36,10 +36,10 @@ set -e
cluster_is_healthy
try_command_on_node 0 $CTDB status
-generation=$(echo "$out" | sed -n -e 's/^Generation:\([0-9]*\)/\1/p')
+generation=$(sed -n -e 's/^Generation:\([0-9]*\)/\1/p' "$outfile")
-try_command_on_node 0 "$CTDB listnodes"
-num_nodes=$(echo "$out" | wc -l)
+try_command_on_node 0 "$CTDB listnodes | wc -l"
+num_nodes="$out"
# 2.
test_db="restoredb_test.tdb"
@@ -105,7 +105,7 @@ fi
wait_until_ready
try_command_on_node 0 $CTDB status
-new_generation=$(echo "$out" | sed -n -e 's/^Generation:\([0-9]*\)/\1/p')
+new_generation=$(sed -n -e 's/^Generation:\([0-9]*\)/\1/p' "$outfile")
echo "Old generation = $generation"
echo "New generation = $new_generation"
diff --git a/ctdb/tests/simple/69_recovery_resurrect_deleted.sh b/ctdb/tests/simple/69_recovery_resurrect_deleted.sh
index 2c8fc12edef..8126c49b83c 100755
--- a/ctdb/tests/simple/69_recovery_resurrect_deleted.sh
+++ b/ctdb/tests/simple/69_recovery_resurrect_deleted.sh
@@ -20,9 +20,9 @@ testdb="rec_test.tdb"
echo "Getting list of nodes..."
try_command_on_node -v any "onnode -pq all ctdb pnn | grep '^[0-9][0-9]*$'"
-first=$(echo "$out" | sed -n -e '1p')
-second=$(echo "$out" | sed -n -e '2p')
-notfirst=$(echo "$out" | tail -n +2)
+first=$(sed -n -e '1p' "$outfile")
+second=$(sed -n -e '2p' "$outfile")
+notfirst=$(tail -n +2 "$outfile")
echo "Create/wipe test database ${testdb}"
try_command_on_node $first $CTDB attach "$testdb"
@@ -46,7 +46,7 @@ database_has_zero_records ()
local n
for n in $notfirst ; do
try_command_on_node $n $CTDB cattdb "$testdb"
- if echo "$out" | grep -q '^key(' ; then
+ if grep -q '^key(' "$outfile" ; then
return 1
fi
done
@@ -74,7 +74,7 @@ wait_until_node_has_status $first notstopped
echo "Get database contents"
try_command_on_node -v $first $CTDB catdb "$testdb"
-if echo "$out" | grep -q '^key(' ; then
+if grep -q '^key(' "$outfile" ; then
echo "BAD: Deleted record has been resurrected"
exit 1
fi
diff --git a/ctdb/tests/simple/70_recoverpdbbyseqnum.sh b/ctdb/tests/simple/70_recoverpdbbyseqnum.sh
index 1722288b562..84e0ec15c43 100755
--- a/ctdb/tests/simple/70_recoverpdbbyseqnum.sh
+++ b/ctdb/tests/simple/70_recoverpdbbyseqnum.sh
@@ -35,8 +35,8 @@ set -e
cluster_is_healthy
-try_command_on_node 0 "$CTDB listnodes"
-num_nodes=$(echo "$out" | wc -l)
+try_command_on_node 0 "$CTDB listnodes | wc -l"
+num_nodes="$out"
add_record_per_node ()
{
diff --git a/ctdb/tests/simple/71_ctdb_wipedb.sh b/ctdb/tests/simple/71_ctdb_wipedb.sh
index 6fae93b0a43..9305339d1e3 100755
--- a/ctdb/tests/simple/71_ctdb_wipedb.sh
+++ b/ctdb/tests/simple/71_ctdb_wipedb.sh
@@ -32,8 +32,8 @@ set -e
cluster_is_healthy
-try_command_on_node 0 "$CTDB listnodes"
-num_nodes=$(echo "$out" | wc -l)
+try_command_on_node 0 "$CTDB listnodes | wc -l"
+num_nodes="$out"
# 2.
test_db="persistent_test.tdb"
diff --git a/ctdb/tests/simple/72_update_record_persistent.sh b/ctdb/tests/simple/72_update_record_persistent.sh
index 4ab69d81b61..90b5ee06151 100755
--- a/ctdb/tests/simple/72_update_record_persistent.sh
+++ b/ctdb/tests/simple/72_update_record_persistent.sh
@@ -34,8 +34,8 @@ set -e
cluster_is_healthy
-try_command_on_node 0 "$CTDB listnodes"
-num_nodes=$(echo "$out" | wc -l)
+try_command_on_node 0 "$CTDB listnodes | wc -l"
+num_nodes="$out"
test_db="persistent_test.tdb"
diff --git a/ctdb/tests/simple/75_readonly_records_basic.sh b/ctdb/tests/simple/75_readonly_records_basic.sh
index c5662f571c6..a83b4d31530 100755
--- a/ctdb/tests/simple/75_readonly_records_basic.sh
+++ b/ctdb/tests/simple/75_readonly_records_basic.sh
@@ -49,12 +49,12 @@ check_no_readonly ()
{
try_command_on_node all $CTDB cattdb $testdb
local ro_flags="RO_HAVE_READONLY|RO_HAVE_DELEGATIONS"
- local numreadonly=$(grep -c -E "$ro_flags" <<<"$out") || true
+ local numreadonly=$(grep -c -E "$ro_flags" "$outfile") || true
if [ $numreadonly -eq 0 ] ; then
echo "GOOD: no read-only delegations"
else
echo "BAD: there are read-only delegations"
- echo "$out"
+ cat "$outfile"
exit 1
fi
}
@@ -72,36 +72,36 @@ check_readonly ()
local count
try_command_on_node $dmaster $CTDB cattdb $testdb
- count=$(grep -c -E "RO_HAVE_DELEGATIONS" <<<"$out") || true
+ count=$(grep -c -E "RO_HAVE_DELEGATIONS" "$outfile") || true
if [ $count -eq 1 ] ; then
echo "GOOD: dmaster ${dmaster} has read-only delegations"
else
echo "BAD: dmaster ${dmaster} has no read-only delegations"
- echo "$out"
+ cat "$outfile"
exit 1
fi
- count=$(grep -c -E "RO_HAVE_READONLY" <<<"$out") || true
+ count=$(grep -c -E "RO_HAVE_READONLY" "$outfile") || true
if [ $count -ne 0 ] ; then
echo "BAD: dmaster ${dmaster} has a read-only copy"
- echo "$out"
+ cat "$outfile"
exit 1
fi
local o
for o in $others ; do
try_command_on_node $o $CTDB cattdb $testdb
- count=$(grep -c -E "RO_HAVE_READONLY" <<<"$out") || true
+ count=$(grep -c -E "RO_HAVE_READONLY" "$outfile") || true
if [ $count -eq 1 ] ; then
echo "GOOD: node ${o} has a read-only copy"
else
echo "BAD: node ${o} has no read-only copy"
- echo "$out"
+ cat "$outfile"
exit 1
fi
- count=$(grep -c -E "RO_HAVE_DELEGATIONS" <<<"$out") || true
+ count=$(grep -c -E "RO_HAVE_DELEGATIONS" "$outfile") || true
if [ $count -ne 0 ] ; then
echo "BAD: other node ${o} has read-only delegations"
- echo "$out"
+ cat "$outfile"
exit 1
fi
done
@@ -111,7 +111,7 @@ check_readonly ()
echo "Get list of nodes..."
try_command_on_node any $CTDB -X listnodes
-all_nodes=$(awk -F'|' '{print $2}' <<<"$out")
+all_nodes=$(awk -F'|' '{print $2}' "$outfile")
######################################################################
@@ -138,7 +138,7 @@ try_command_on_node all $CTDB setdbreadonly $testdb
# Database should be tagged as READONLY
try_command_on_node 0 $CTDB getdbmap
-db_details=$(awk -v db="$testdb" '$2 == foo="name:" db { print }' <<<"$out")
+db_details=$(awk -v db="$testdb" '$2 == foo="name:" db { print }' "$outfile")
if grep -q "READONLY" <<<"$db_details" ; then
echo "GOOD: read-only record support is enabled"
else
diff --git a/ctdb/tests/simple/77_ctdb_db_recovery.sh b/ctdb/tests/simple/77_ctdb_db_recovery.sh
index b2703eedbc4..a8bc2d95ef6 100755
--- a/ctdb/tests/simple/77_ctdb_db_recovery.sh
+++ b/ctdb/tests/simple/77_ctdb_db_recovery.sh
@@ -93,7 +93,7 @@ try_command_on_node $recmaster $CTDB writekey $TESTDB test1 value1
# Fetch a record key=test1
echo "read key(test1)"
try_command_on_node $recmaster $CTDB readkey $TESTDB test1
-echo "$out"
+cat "$outfile"
# Do a recovery
echo "force recovery"
@@ -108,7 +108,7 @@ try_command_on_node $recmaster $CTDB writekey $TESTDB test1 value2
# Fetch a record key=test1
echo "read key(test1)"
try_command_on_node $recmaster $CTDB readkey $TESTDB test1
-echo "$out"
+cat "$outfile"
# Do a recovery
echo "force recovery"
@@ -119,7 +119,7 @@ wait_until_node_has_status $recmaster recovered
# Verify record key=test1
echo "read key(test1)"
try_command_on_node $recmaster $CTDB readkey $TESTDB test1
-echo "$out"
+cat "$outfile"
if [ "$out" = "Data: size:6 ptr:[value2]" ]; then
echo "GOOD: Recovery did not corrupt database"
else
diff --git a/ctdb/tests/simple/79_volatile_db_traverse.sh b/ctdb/tests/simple/79_volatile_db_traverse.sh
index b98be4d23f9..af7e962f579 100755
--- a/ctdb/tests/simple/79_volatile_db_traverse.sh
+++ b/ctdb/tests/simple/79_volatile_db_traverse.sh
@@ -75,7 +75,7 @@ try_command_on_node 1 $CTDB writekey "$TESTDB" "foo" "bar1"
echo "do traverse on node 0"
try_command_on_node -v 0 $CTDB catdb "$TESTDB"
-num=$(echo "$out" | sed -n -e 's|^Dumped \(.*\) records$|\1|p')
+num=$(sed -n -e 's|^Dumped \(.*\) records$|\1|p' "$outfile")
if [ "$num" = 1 ] ; then
echo "OK: There was 1 record"
else
@@ -83,7 +83,7 @@ else
exit 1
fi
-if echo "$out" | grep -q "^data(4) = \"bar1\"\$" ; then
+if grep -q "^data(4) = \"bar1\"\$" "$outfile" ; then
echo "OK: Data from node 1 was returned"
else
echo "BAD: Data from node 1 was not returned"
diff --git a/ctdb/tests/simple/80_ctdb_traverse.sh b/ctdb/tests/simple/80_ctdb_traverse.sh
index 544d8932cd9..d28f9c2814e 100755
--- a/ctdb/tests/simple/80_ctdb_traverse.sh
+++ b/ctdb/tests/simple/80_ctdb_traverse.sh
@@ -58,7 +58,7 @@ done
echo "Start a traverse and collect records"
try_command_on_node 0 $CTDB catdb $TESTDB
-num_read=$(echo "$out" | tail -n 1 | cut -d\ -f2)
+num_read=$(tail -n 1 "$outfile" | cut -d\ -f2)
if [ $num_read -eq $num_records ]; then
echo "GOOD: All $num_records records retrieved"
status=0
diff --git a/ctdb/tests/simple/81_tunnel_ring.sh b/ctdb/tests/simple/81_tunnel_ring.sh
index 990039abfcb..c78c4209ea6 100755
--- a/ctdb/tests/simple/81_tunnel_ring.sh
+++ b/ctdb/tests/simple/81_tunnel_ring.sh
@@ -19,24 +19,22 @@ set -e
cluster_is_healthy
-try_command_on_node 0 "$CTDB listnodes"
-num_nodes=$(echo "$out" | wc -l)
+try_command_on_node 0 "$CTDB listnodes | wc -l"
+num_nodes="$out"
echo "Running tunnel_test on all $num_nodes nodes."
try_command_on_node -v -p all $CTDB_TEST_WRAPPER $VALGRIND \
tunnel_test -t 30 -n $num_nodes
# Get the last line of output.
-while read line ; do
- prev=$line
-done <<<"$out"
+last=$(tail -n 1 "$outfile")
pat='^(Waiting for cluster|pnn\[[[:digit:]]+\] [[:digit:]]+(\.[[:digit:]]+)? msgs/sec)$'
sanity_check_output 1 "$pat"
-# $prev should look like this:
+# $last should look like this:
# pnn[2] count=85400
-stuff="${prev##pnn\[*\] }"
+stuff="${last##pnn\[*\] }"
mps="${stuff% msgs/sec}"
if [ ${mps%.*} -ge 10 ] ; then
diff --git a/ctdb/tests/simple/90_debug_hung_script.sh b/ctdb/tests/simple/90_debug_hung_script.sh
index 9e2072c98b6..e8cdefec734 100755
--- a/ctdb/tests/simple/90_debug_hung_script.sh
+++ b/ctdb/tests/simple/90_debug_hung_script.sh
@@ -54,11 +54,9 @@ wait_for_monitor_event $test_node
echo "Waiting for debugging output to appear..."
# Use test -s because the file is created above using mktemp
-wait_until 60 onnode $test_node test -s "$debug_output"
+wait_until 60 test -s "$debug_output"
echo "Checking output of hung script debugging..."
-try_command_on_node -v $test_node cat "$debug_output"
-hung_script_output="$out"
# Can we actually read kernel stacks
if try_command_on_node $test_node "cat /proc/$$/stack >/dev/null 2>&1" ; then
@@ -72,7 +70,7 @@ fi
while IFS="" read pattern ; do
[ -n "$pattern" ] || continue
- if grep -- "^${pattern}\$" <<<"$hung_script_output" >/dev/null ; then
+ if grep -q -- "^${pattern}\$" "$debug_output" ; then
printf 'GOOD: output contains "%s"\n' "$pattern"
else
printf 'BAD: output does not contain "%s"\n' "$pattern"