1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-11 16:58:40 +03:00

ctdb-tests: Reformat with "shfmt -w -p -i 0 -fn"

Best reviewed with "git show -w".

Signed-off-by: Martin Schwenke <mschwenke@ddn.com>
Reviewed-by: Andreas Schneider <asn@samba.org>
This commit is contained in:
Martin Schwenke 2023-07-03 09:26:34 +10:00 committed by Martin Schwenke
parent 7813c979ed
commit cbda1a78dc
19 changed files with 394 additions and 360 deletions

View File

@ -1,4 +1,4 @@
setup ()
setup()
{
setup_dbdir
setup_date
@ -15,7 +15,7 @@ setup ()
"
}
result_filter ()
result_filter()
{
_date="[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"
_time="[0-9][0-9][0-9][0-9][0-9][0-9]"

View File

@ -1,13 +1,13 @@
setup ()
setup()
{
if [ $# -eq 1 ] ; then
if [ $# -eq 1 ]; then
reclock="$1"
else
reclock="${CTDB_TEST_TMP_DIR}/reclock_subdir/rec.lock"
fi
CTDB_RECOVERY_LOCK="$reclock"
if [ -n "$CTDB_RECOVERY_LOCK" ] ; then
if [ -n "$CTDB_RECOVERY_LOCK" ]; then
cat >>"${CTDB_BASE}/ctdb.conf" <<EOF
[cluster]
recovery lock = $CTDB_RECOVERY_LOCK

View File

@ -1,16 +1,16 @@
set_mem_usage ()
set_mem_usage()
{
_mem_usage="${1:-10}" # Default is 10%
_swap_usage="${2:-0}" # Default is 0%
_swap_total=5857276
_swap_free=$(( (100 - $_swap_usage) * $_swap_total / 100 ))
_swap_free=$(((100 - $_swap_usage) * $_swap_total / 100))
_mem_total=3940712
_mem_free=225268
_mem_buffers=146120
_mem_cached=$(( $_mem_total * (100 - $_mem_usage) / 100 -
$_mem_free - $_mem_buffers ))
_mem_cached=$(($_mem_total * (100 - $_mem_usage) / 100 - \
$_mem_free - $_mem_buffers))
export FAKE_PROC_MEMINFO="\
MemTotal: ${_mem_total} kB
@ -31,12 +31,12 @@ SwapFree: ${_swap_free} kB
..."
}
set_fs_usage ()
set_fs_usage()
{
export FAKE_FS_USE="${1:-10}" # Default is 10% usage
export FAKE_FS_USE="${1:-10}" # Default is 10% usage
}
setup ()
setup()
{
setup_dbdir

View File

@ -1,4 +1,4 @@
setup ()
setup()
{
:
}

View File

@ -1,9 +1,9 @@
setup ()
setup()
{
setup_public_addresses
}
_tcp_connections ()
_tcp_connections()
{
_count="$1"
_sip="$2"
@ -14,7 +14,7 @@ _tcp_connections ()
_cip_prefix="${_cip_base%.*}"
_cip_suffix="${_cip_base##*.}"
for _i in $(seq 1 $_count) ; do
for _i in $(seq 1 $_count); do
_cip_last=$((_cip_suffix + _i))
_cip="${_cip_prefix}.${_cip_last}"
_cport=$((_cport_base + _i))
@ -22,14 +22,14 @@ _tcp_connections ()
done
}
setup_tcp_connections ()
setup_tcp_connections()
{
_t="${FAKE_NETWORK_STATE}/tcp-established"
export FAKE_NETSTAT_TCP_ESTABLISHED_FILE="$_t"
_tcp_connections "$@" >"$FAKE_NETSTAT_TCP_ESTABLISHED_FILE"
}
setup_tcp_connections_unkillable ()
setup_tcp_connections_unkillable()
{
# These connections are listed by the "ss" stub but are not
# killed by the "ctdb killtcp" stub. So killing these
@ -44,7 +44,7 @@ setup_tcp_connections_unkillable ()
# arg1 is interface name, arg2 is currently active slave (use "None"
# if none), arg3 is MII status ("up" or "down").
setup_bond ()
setup_bond()
{
_iface="$1"
_slave="${2:-${_iface}_sl_0}"

View File

@ -1,4 +1,4 @@
setup ()
setup()
{
debug "Setting up NAT gateway"
@ -9,10 +9,10 @@ setup ()
# A separate function for this makes sense because it can be done
# multiple times per test
setup_ctdb_natgw ()
setup_ctdb_natgw()
{
# Read from stdin
while read _ip _opts ; do
while read _ip _opts; do
case "$_opts" in
leader)
export FAKE_CTDB_NATGW_LEADER="$_ip"
@ -43,11 +43,11 @@ CTDB_NATGW_DEFAULT_GATEWAY="10.1.1.254"
EOF
}
ok_natgw_leader_ip_addr_show ()
ok_natgw_leader_ip_addr_show()
{
_mac=$(echo "$CTDB_NATGW_PUBLIC_IFACE" |
cksum |
sed -r -e 's@(..)(..)(..).*@fe:fe:fe:\1:\2:\3@')
cksum |
sed -r -e 's@(..)(..)(..).*@fe:fe:fe:\1:\2:\3@')
# This is based on CTDB_NATGW_PUBLIC_IP
_brd="10.1.1.255"
@ -60,11 +60,11 @@ ok_natgw_leader_ip_addr_show ()
EOF
}
ok_natgw_follower_ip_addr_show ()
ok_natgw_follower_ip_addr_show()
{
_mac=$(echo "$CTDB_NATGW_PUBLIC_IFACE" |
cksum |
sed -r -e 's@(..)(..)(..).*@fe:fe:fe:\1:\2:\3@')
cksum |
sed -r -e 's@(..)(..)(..).*@fe:fe:fe:\1:\2:\3@')
ok <<EOF
1: ${CTDB_NATGW_PUBLIC_IFACE}: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
@ -72,12 +72,12 @@ ok_natgw_follower_ip_addr_show ()
EOF
}
ok_natgw_leader_static_routes ()
ok_natgw_leader_static_routes()
{
_nl="
"
_t=""
for _i in $CTDB_NATGW_STATIC_ROUTES ; do
for _i in $CTDB_NATGW_STATIC_ROUTES; do
# This is intentionally different to the code in 11.natgw ;-)
case "$_i" in
*@*)
@ -87,6 +87,7 @@ ok_natgw_leader_static_routes ()
*)
_net="$_i"
_gw="$CTDB_NATGW_DEFAULT_GATEWAY"
;;
esac
[ -n "$_gw" ] || continue
@ -97,12 +98,12 @@ ok_natgw_leader_static_routes ()
ok "$_t"
}
ok_natgw_follower_static_routes ()
ok_natgw_follower_static_routes()
{
_nl="
"
_t=""
for _i in $CTDB_NATGW_STATIC_ROUTES ; do
for _i in $CTDB_NATGW_STATIC_ROUTES; do
# This is intentionally different to the code in 11.natgw ;-)
_net=$(echo "$_i" | sed -e 's|@.*||')

View File

@ -1,4 +1,4 @@
setup ()
setup()
{
setup_public_addresses
@ -18,25 +18,28 @@ EOF
# Create policy routing configuration in $CTDB_PER_IP_ROUTING_CONF.
# $1 is the number of assigned IPs to use (<num>, all), defaulting to
# 1. If $2 is "default" then a default route is also added.
create_policy_routing_config ()
create_policy_routing_config()
{
_num_ips="${1:-1}"
_should_add_default="$2"
ctdb_get_my_public_addresses |
if [ "$_num_ips" = "all" ] ; then
cat
else
{ head -n "$_num_ips" ; cat >/dev/null ; }
fi |
while read _dev _ip _bits ; do
_net=$(ipv4_host_addr_to_net "$_ip" "$_bits")
_gw="${_net%.*}.254" # a dumb, calculated default
if [ "$_num_ips" = "all" ]; then
cat
else
{
head -n "$_num_ips"
cat >/dev/null
}
fi |
while read _dev _ip _bits; do
_net=$(ipv4_host_addr_to_net "$_ip" "$_bits")
_gw="${_net%.*}.254" # a dumb, calculated default
echo "$_ip $_net"
echo "$_ip $_net"
if [ "$_should_add_default" = "default" ] ; then
echo "$_ip 0.0.0.0/0 $_gw"
fi
done >"$CTDB_PER_IP_ROUTING_CONF"
if [ "$_should_add_default" = "default" ]; then
echo "$_ip 0.0.0.0/0 $_gw"
fi
done >"$CTDB_PER_IP_ROUTING_CONF"
}

View File

@ -1,16 +1,17 @@
setup ()
setup()
{
_failures=""
_devices=""
for i ; do
for i; do
case "$i" in
\!*)
_t="${i#!}"
echo "Marking ${_t} as having no active paths"
_failures="${_failures}${_failures:+ }${_t}"
;;
;;
*)
_t="$i"
;;
esac
_devices="${_devices}${_devices:+ }${_t}"
done

View File

@ -1,4 +1,4 @@
setup ()
setup()
{
setup_script_options <<EOF
CTDB_CLAMD_SOCKET="/var/run/clamd.sock"

View File

@ -1,10 +1,10 @@
setup ()
setup()
{
debug "Setting up VSFTPD environment: service $1, not managed by CTDB"
_service_name="vsftpd"
if [ "$1" != "down" ] ; then
if [ "$1" != "down" ]; then
service "$_service_name" start
else
service "$_service_name" force-stopped

View File

@ -1,13 +1,13 @@
setup ()
setup()
{
debug "Setting up HTTPD environment: service $1, not managed by CTDB"
if [ "$1" != "down" ] ; then
for _service_name in "apache2" "httpd" ; do
if [ "$1" != "down" ]; then
for _service_name in "apache2" "httpd"; do
service "$_service_name" start
done
else
for _service_name in "apache2" "httpd" ; do
for _service_name in "apache2" "httpd"; do
service "$_service_name" force-stopped
done
fi

View File

@ -1,20 +1,20 @@
setup ()
setup()
{
service_name="netbios"
if [ "$1" != "down" ] ; then
if [ "$1" != "down" ]; then
debug "Marking Netbios name services as up, listening and managed by CTDB"
# All possible service names for all known distros.
for i in "nmb" "nmbd" ; do
for i in "nmb" "nmbd"; do
service "$i" force-started
done
else
debug "Marking Netbios name services as down, not listening and not managed by CTDB"
# All possible service names for all known distros.
for i in "nmb" "nmbd" ; do
for i in "nmb" "nmbd"; do
service "$i" force-stopped
done
fi

View File

@ -1,8 +1,8 @@
setup ()
setup()
{
service_name="winbind"
if [ "$1" != "down" ] ; then
if [ "$1" != "down" ]; then
debug "Marking Winbind service as up and managed by CTDB"
@ -19,7 +19,7 @@ setup ()
fi
}
wbinfo_down ()
wbinfo_down()
{
debug "Making wbinfo commands fail"
FAKE_WBINFO_FAIL="yes"

View File

@ -1,13 +1,13 @@
setup ()
setup()
{
service_name="samba"
if [ "$1" != "down" ] ; then
if [ "$1" != "down" ]; then
debug "Marking Samba services as up, listening and managed by CTDB"
# All possible service names for all known distros.
for i in "smb" "samba" "smbd" ; do
for i in "smb" "samba" "smbd"; do
service "$i" force-started
done
@ -21,7 +21,7 @@ setup ()
debug "Marking Samba services as down, not listening and not managed by CTDB"
# All possible service names for all known distros.
for i in "smb" "samba" "smbd" ; do
for i in "smb" "samba" "smbd"; do
service "$i" force-stopped
done
@ -36,7 +36,7 @@ EOF
}
samba_setup_fake_threads ()
samba_setup_fake_threads()
{
export FAKE_SMBD_THREAD_PIDS="$*"
@ -44,7 +44,7 @@ samba_setup_fake_threads ()
"
_out=""
_count=0
for _pid ; do
for _pid; do
[ "$_count" -lt 5 ] || break
_t=$(program_stack_trace "smbd" $_pid)
_out="${_out:+${_out}${_nl}}${_t}"

View File

@ -1,11 +1,11 @@
setup ()
setup()
{
setup_public_addresses
setup_shares
service_name="nfs"
if [ -z "$CTDB_NFS_DISTRO_STYLE" ] ; then
if [ -z "$CTDB_NFS_DISTRO_STYLE" ]; then
# Currently supported: sysvinit-redhat, systemd-redhat
CTDB_NFS_DISTRO_STYLE="systemd-redhat"
fi
@ -20,7 +20,7 @@ EOF
export RPCNFSDCOUNT
if [ "$1" != "down" ] ; then
if [ "$1" != "down" ]; then
debug <<EOF
Setting up NFS environment: all RPC services up, NFS managed by CTDB
EOF
@ -43,7 +43,7 @@ EOF
"nlockmgr" "status"
nfs_setup_fake_threads "nfsd"
nfs_setup_fake_threads "rpc.foobar" # Set the variable to empty
nfs_setup_fake_threads "rpc.foobar" # Set the variable to empty
else
debug <<EOF
Setting up NFS environment: all RPC services down, NFS not managed by CTDB
@ -72,14 +72,14 @@ EOF
rm "${CTDB_BASE}/statd-callout"
}
rpc_services_down ()
rpc_services_down()
{
_out=""
for _s in $FAKE_RPCINFO_SERVICES ; do
for _i ; do
if [ "$_i" = "${_s%%:*}" ] ; then
debug "Marking RPC service \"${_i}\" as UNAVAILABLE"
continue 2
for _s in $FAKE_RPCINFO_SERVICES; do
for _i; do
if [ "$_i" = "${_s%%:*}" ]; then
debug "Marking RPC service \"${_i}\" as UNAVAILABLE"
continue 2
fi
done
_out="${_out}${_out:+ }${_s}"
@ -87,18 +87,18 @@ rpc_services_down ()
FAKE_RPCINFO_SERVICES="$_out"
}
rpc_services_up ()
rpc_services_up()
{
_out="$FAKE_RPCINFO_SERVICES"
for _i ; do
for _i; do
debug "Marking RPC service \"${_i}\" as available"
case "$_i" in
portmapper) _t="2:4" ;;
nfs) _t="2:3" ;;
mountd) _t="1:3" ;;
rquotad) _t="1:2" ;;
nlockmgr) _t="3:4" ;;
status) _t="1:1" ;;
nfs) _t="2:3" ;;
mountd) _t="1:3" ;;
rquotad) _t="1:2" ;;
nlockmgr) _t="3:4" ;;
status) _t="1:1" ;;
*) die "Internal error - unsupported RPC service \"${_i}\"" ;;
esac
@ -107,9 +107,10 @@ rpc_services_up ()
export FAKE_RPCINFO_SERVICES="$_out"
}
nfs_setup_fake_threads ()
nfs_setup_fake_threads()
{
_prog="$1" ; shift
_prog="$1"
shift
case "$_prog" in
nfsd)
@ -125,7 +126,7 @@ nfs_setup_fake_threads ()
esac
}
guess_output ()
guess_output()
{
case "$1" in
$CTDB_NFS_CALLOUT\ start\ nlockmgr)
@ -226,6 +227,7 @@ EOF
;;
*)
: # Nothing
;;
esac
}
@ -237,14 +239,14 @@ EOF
# if it is incomplete and hacky. So, if the 60.nfs eventscript
# changes and the tests start to fail then it may be due to this
# function being incomplete.
rpc_set_service_failure_response ()
rpc_set_service_failure_response()
{
_rpc_service="$1"
_numfails="${2:-1}" # default 1
# Default
ok_null
if [ $_numfails -eq 0 ] ; then
if [ $_numfails -eq 0 ]; then
return
fi
@ -257,7 +259,7 @@ rpc_set_service_failure_response ()
_dir="${CTDB_NFS_CHECKS_DIR:-${CTDB_BASE}/nfs-checks.d}"
_file=$(ls "$_dir"/[0-9][0-9]."${_rpc_service}.check")
[ -r "$_file" ] || \
[ -r "$_file" ] ||
die "RPC check file \"$_file\" does not exist or is not unique"
_out="${CTDB_TEST_TMP_DIR}/rpc_failure_output"
@ -283,12 +285,12 @@ rpc_set_service_failure_response ()
# Just use the first version, or use default. This is
# dumb but handles all the cases that we care about
# now...
if [ -n "$version" ] ; then
if [ -n "$version" ]; then
_ver="${version%% *}"
else
case "$_rpc_service" in
portmapper) _ver="" ;;
*) _ver=1 ;;
*) _ver=1 ;;
esac
fi
_rpc_check_out="\
@ -297,7 +299,7 @@ rpcinfo: RPC: Program not registered
program $_rpc_service${_ver:+ version }${_ver} is not available"
if [ $unhealthy_after -gt 0 -a \
$_numfails -ge $unhealthy_after ] ; then
$_numfails -ge $unhealthy_after ]; then
_unhealthy=true
echo 1 >"$_rc_file"
echo "ERROR: ${_rpc_check_out}" >>"$_out"
@ -306,18 +308,18 @@ program $_rpc_service${_ver:+ version }${_ver} is not available"
echo 0 >"$_rc_file"
fi
if [ $restart_every -gt 0 ] && \
[ $(($_numfails % $restart_every)) -eq 0 ] ; then
if ! $_unhealthy ; then
if [ $restart_every -gt 0 ] &&
[ $(($_numfails % $restart_every)) -eq 0 ]; then
if ! $_unhealthy; then
echo "WARNING: ${_rpc_check_out}" >>"$_out"
fi
echo "Trying to restart service \"${_rpc_service}\"..."\
>>"$_out"
echo "Trying to restart service \"${_rpc_service}\"..." \
>>"$_out"
guess_output "$service_stop_cmd" >>"$_out"
if [ -n "$service_debug_cmd" ] ; then
if [ -n "$service_debug_cmd" ]; then
$service_debug_cmd 2>&1 >>"$_out"
fi
@ -331,18 +333,18 @@ program $_rpc_service${_ver:+ version }${_ver} is not available"
rm -f "$_out" "$_rc_file"
}
program_stack_traces ()
program_stack_traces()
{
_prog="$1"
_max="${2:-1}"
_count=1
if [ "$_prog" = "nfsd" ] ; then
if [ "$_prog" = "nfsd" ]; then
_pids="$FAKE_NFSD_THREAD_PIDS"
else
_pids="$FAKE_RPC_THREAD_PIDS"
fi
for _pid in $_pids ; do
for _pid in $_pids; do
[ $_count -le $_max ] || break
program_stack_trace "$_prog" "$_pid"
@ -373,11 +375,11 @@ program_stack_traces ()
# These arguments can allow a service to be started or stopped
# before a particular iteration.
#
nfs_iterate_test ()
nfs_iterate_test()
{
_repeats="$1"
_rpc_service="$2"
if [ -n "$2" ] ; then
if [ -n "$2" ]; then
shift 2
else
shift
@ -386,10 +388,10 @@ nfs_iterate_test ()
echo "Running $_repeats iterations of \"$script $event\" $args"
_iterate_failcount=0
for _iteration in $(seq 1 $_repeats) ; do
for _iteration in $(seq 1 $_repeats); do
# This is not a numerical comparison because $1 will
# often not be set.
if [ "$_iteration" = "$1" ] ; then
if [ "$_iteration" = "$1" ]; then
debug <<EOF
##################################################
EOF
@ -399,20 +401,20 @@ EOF
EOF
shift 2
fi
if [ -n "$_rpc_service" ] ; then
if [ -n "$_rpc_service" ]; then
_ok=false
if [ -n "$service_check_cmd" ] ; then
if eval "$service_check_cmd" ; then
if [ -n "$service_check_cmd" ]; then
if eval "$service_check_cmd"; then
_ok=true
fi
else
if rpcinfo -T tcp localhost "$_rpc_service" \
>/dev/null 2>&1 ; then
>/dev/null 2>&1; then
_ok=true
fi
fi
if $_ok ; then
if $_ok; then
_iterate_failcount=0
else
_iterate_failcount=$(($_iterate_failcount + 1))
@ -422,14 +424,14 @@ EOF
fi
_out=$(simple_test 2>&1)
_ret=$?
if "$CTDB_TEST_VERBOSE" || [ $_ret -ne 0 ] ; then
if "$CTDB_TEST_VERBOSE" || [ $_ret -ne 0 ]; then
cat <<EOF
##################################################
Iteration ${_iteration}:
$_out
EOF
fi
if [ $_ret -ne 0 ] ; then
if [ $_ret -ne 0 ]; then
exit $_ret
fi
done

View File

@ -1,4 +1,4 @@
setup ()
setup()
{
_ip="$1"
_iface="$2"
@ -21,7 +21,7 @@ EOF
# Read from stdin
_pnn=0
while read _ip _opts ; do
while read _ip _opts; do
case "$_opts" in
leader)
FAKE_CTDB_LVS_LEADER="$_pnn"
@ -38,9 +38,9 @@ EOF
done >"$CTDB_LVS_NODES"
}
check_ipvsadm ()
check_ipvsadm()
{
if [ "$1" = "NULL" ] ; then
if [ "$1" = "NULL" ]; then
required_result 0 <<EOF
$lvs_header
EOF
@ -54,11 +54,11 @@ EOF
simple_test_command ipvsadm -l -n
}
check_lvs_ip ()
check_lvs_ip()
{
_scope="$1"
if [ "$_scope" = "NULL" ] ; then
if [ "$_scope" = "NULL" ]; then
required_result 0 <<EOF
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

View File

@ -1,4 +1,4 @@
setup ()
setup()
{
setup_dbdir
}
@ -8,20 +8,20 @@ result_filter()
sed -e 's|\( of debug locks PID=\)[0-9]*|\1PID|'
}
tdb_path ()
tdb_path()
{
echo "${CTDB_DBDIR}/${1}.${FAKE_CTDB_PNN}"
}
fake_file_id ()
fake_file_id()
{
_path="$1"
echo "$FAKE_FILE_ID_MAP" |
awk -v path="$_path" '$1 == path { print $2 }'
awk -v path="$_path" '$1 == path { print $2 }'
}
fake_stack_trace ()
fake_stack_trace()
{
_pid="$1"
_command="${2:-smbd}"
@ -47,7 +47,7 @@ EOF
esac
}
do_test ()
do_test()
{
_holder_scope="$1"
_holder_state="$2"
@ -56,26 +56,28 @@ do_test ()
_lock_helper_pid="4132032"
FAKE_PS_MAP=$(cat <<EOF
FAKE_PS_MAP=$(
cat <<EOF
1234567 ctdbd S
2345678 smbd S
4131931 smbd ${_holder_state}
${_lock_helper_pid} ctdb_lock_helpe S+
EOF
)
)
export FAKE_PS_MAP
FAKE_FILE_ID_MAP=""
_tdbs="locking.tdb brlock.tdb test.tdb foo.tdb"
_n=1
for _t in $_tdbs ; do
for _t in $_tdbs; do
_path=$(tdb_path "$_t")
_inode=$((19690818 + _n))
FAKE_FILE_ID_MAP=$(cat <<EOF
FAKE_FILE_ID_MAP=$(
cat <<EOF
${FAKE_FILE_ID_MAP}
${_path} 103:04:${_inode}
EOF
)
)
rm -f "$_path"
touch "$_path"
_n=$((_n + 1))
@ -85,7 +87,8 @@ EOF
_path=$(tdb_path "locking.tdb")
_locking_tdb_id=$(fake_file_id "$_path")
_t=$(cat <<EOF
_t=$(
cat <<EOF
POSIX ADVISORY WRITE 3769740 103:04:24380821 1073741826 1073742335
FLOCK ADVISORY WRITE 3632524 103:02:1059266 0 EOF
FLOCK ADVISORY WRITE 4060231 00:17:17184 0 EOF
@ -95,73 +98,83 @@ POSIX ADVISORY READ 4427 103:04:22152234 1073741826 1073742335
POSIX ADVISORY WRITE 4427 103:04:22152494 0 EOF
POSIX ADVISORY READ 4427 103:04:22152702 1073741826 1073742335
EOF
)
)
_holder_lock=""
if [ "$_holder_scope" = "DB" ] ; then
if [ "$_lock_type" = "FCNTL" ] ; then
_holder_lock=$(cat <<EOF
if [ "$_holder_scope" = "DB" ]; then
if [ "$_lock_type" = "FCNTL" ]; then
_holder_lock=$(
cat <<EOF
POSIX ADVISORY WRITE 4131931 ${_locking_tdb_id} 168 EOF
EOF
)
elif [ "$_lock_type" = "MUTEX" ] ; then
_holder_lock=$(cat <<EOF
)
elif [ "$_lock_type" = "MUTEX" ]; then
_holder_lock=$(
cat <<EOF
POSIX ADVISORY WRITE 4131931 ${_locking_tdb_id} 400172 EOF
EOF
)
)
fi
elif [ "$_holder_scope" = "RECORD" ] && \
[ "$_lock_type" = "FCNTL" ] ; then
_holder_lock=$(cat <<EOF
elif [ "$_holder_scope" = "RECORD" ] &&
[ "$_lock_type" = "FCNTL" ]; then
_holder_lock=$(
cat <<EOF
POSIX ADVISORY WRITE 2345678 ${_locking_tdb_id} 112736 112736
POSIX ADVISORY WRITE 4131931 ${_locking_tdb_id} 225472 225472
EOF
)
)
fi
_t=$(cat <<EOF
_t=$(
cat <<EOF
$_t
$_holder_lock
EOF
)
)
_helper_lock=""
if [ "$_helper_scope" = "DB" ] && \
[ "$_lock_type" = "FCNTL" ] ; then
_helper_lock=$(cat <<EOF
if [ "$_helper_scope" = "DB" ] &&
[ "$_lock_type" = "FCNTL" ]; then
_helper_lock=$(
cat <<EOF
-> POSIX ADVISORY WRITE ${_lock_helper_pid} ${_locking_tdb_id} 168 170
EOF
)
elif [ "$_helper_scope" = "RECORD" ] && \
[ "$_lock_type" = "FCNTL" ] ; then
_helper_lock=$(cat <<EOF
)
elif [ "$_helper_scope" = "RECORD" ] &&
[ "$_lock_type" = "FCNTL" ]; then
_helper_lock=$(
cat <<EOF
-> POSIX ADVISORY WRITE ${_lock_helper_pid} ${_locking_tdb_id} 112736 112736
EOF
)
)
fi
_t=$(cat <<EOF
_t=$(
cat <<EOF
$_t
$_helper_lock
EOF
)
)
if [ "$_holder_scope" = "DB" ] ; then
_t=$(cat <<EOF
if [ "$_holder_scope" = "DB" ]; then
_t=$(
cat <<EOF
$_t
POSIX ADVISORY READ 4131931 ${_locking_tdb_id} 4 4
EOF
)
elif [ "$_holder_scope" = "RECORD" ] && \
[ "$_lock_type" = "FCNTL" ] ; then
_t=$(cat <<EOF
)
elif [ "$_holder_scope" = "RECORD" ] &&
[ "$_lock_type" = "FCNTL" ]; then
_t=$(
cat <<EOF
$_t
POSIX ADVISORY READ 2345678 ${_locking_tdb_id} 4 4
POSIX ADVISORY READ 4131931 ${_locking_tdb_id} 4 4
EOF
)
)
fi
_t=$(cat <<EOF
_t=$(
cat <<EOF
$_t
POSIX ADVISORY READ 3769740 103:04:24390149 1073741826 1073742335
POSIX ADVISORY WRITE 3769740 103:04:24380839 1073741826 1073742335
@ -170,19 +183,20 @@ FLOCK ADVISORY WRITE 3769302 103:02:1177487 0 EOF
FLOCK ADVISORY WRITE 3769302 103:02:1180308 0 EOF
OFDLCK ADVISORY READ -1 00:05:6 0 EOF
EOF
)
)
FAKE_PROC_LOCKS=$(echo "$_t" | awk '{ printf "%d: %s\n", NR, $0 }')
export FAKE_PROC_LOCKS
_holder_mutex_lock=""
if [ "$_lock_type" = "MUTEX" ] ; then
if [ "$_holder_scope" = "RECORD" ] ; then
_holder_mutex_lock=$(cat <<EOF
if [ "$_lock_type" = "MUTEX" ]; then
if [ "$_holder_scope" = "RECORD" ]; then
_holder_mutex_lock=$(
cat <<EOF
2345678 28142
4131931 56284
EOF
)
)
fi
fi
@ -194,7 +208,7 @@ EOF
'
_db="locking.tdb.${FAKE_CTDB_PNN}"
if [ -n "$_helper_lock" ] ; then
if [ -n "$_helper_lock" ]; then
read -r _ _ _ _ _pid _ _start _end <<EOF
$_helper_lock
EOF
@ -205,8 +219,8 @@ EOF
# fake lock info
_pids=''
_out="${_out:+${_out}${_nl}}Lock holders:"
if [ -n "$_holder_mutex_lock" ] ; then
while read -r _pid _chain ; do
if [ -n "$_holder_mutex_lock" ]; then
while read -r _pid _chain; do
_comm="smbd"
_out="${_out}${_nl}"
_out="${_out}${_pid} smbd ${_db} ${_chain}"
@ -215,7 +229,7 @@ EOF
$_holder_mutex_lock
EOF
else
while read -r _ _ _ _pid _ _start _end ; do
while read -r _ _ _ _pid _ _start _end; do
_comm="smbd"
_out="${_out}${_nl}"
_out="${_out}${_pid} smbd ${_db} ${_start} ${_end}"
@ -226,18 +240,19 @@ EOF
fi
# fake stack traces
for _pid in $_pids ; do
for _pid in $_pids; do
_comm="smbd"
if [ "$_pid" = "4131931" ] ; then
if [ "$_pid" = "4131931" ]; then
_state="$_holder_state"
else
_state="S"
fi
_out=$(cat <<EOF
_out=$(
cat <<EOF
$_out
$(fake_stack_trace "$_pid" "$_comm" "$_state")
EOF
)
)
done
ok <<EOF
@ -247,9 +262,9 @@ $_out
EOF
script_test "${script_dir}/${script}" \
"$_lock_helper_pid" \
"$_helper_scope" \
"$_path" \
"$_lock_type"
"$_lock_helper_pid" \
"$_helper_scope" \
"$_path" \
"$_lock_type"
}

View File

@ -18,29 +18,28 @@ export CTDB_HELPER_BINDIR="$stubs_dir"
PATH="${stubs_dir}:${PATH}"
export CTDB="ctdb"
# Force this to be absolute - event scripts can change directory
CTDB_TEST_TMP_DIR=$(cd "$CTDB_TEST_TMP_DIR" && echo "$PWD")
export CTDB_LOGGING="file:${CTDB_TEST_TMP_DIR}/log.ctdb"
touch "${CTDB_LOGGING#file:}" || \
die "Unable to setup logging for \"$CTDB_LOGGING\""
touch "${CTDB_LOGGING#file:}" ||
die "Unable to setup logging for \"$CTDB_LOGGING\""
if [ -d "${CTDB_TEST_SUITE_DIR}/etc" ] ; then
cp -a "${CTDB_TEST_SUITE_DIR}/etc" "$CTDB_TEST_TMP_DIR"
export CTDB_SYS_ETCDIR="${CTDB_TEST_TMP_DIR}/etc"
if [ -d "${CTDB_TEST_SUITE_DIR}/etc" ]; then
cp -a "${CTDB_TEST_SUITE_DIR}/etc" "$CTDB_TEST_TMP_DIR"
export CTDB_SYS_ETCDIR="${CTDB_TEST_TMP_DIR}/etc"
else
die "Unable to setup \$CTDB_SYS_ETCDIR"
die "Unable to setup \$CTDB_SYS_ETCDIR"
fi
setup_ctdb_base "$CTDB_TEST_TMP_DIR" "etc-ctdb" \
debug_locks.sh \
functions \
nfs-checks.d \
nfs-linux-kernel-callout \
statd-callout
debug_locks.sh \
functions \
nfs-checks.d \
nfs-linux-kernel-callout \
statd-callout
export FAKE_CTDB_STATE="${CTDB_TEST_TMP_DIR}/fake-ctdb"
mkdir -p "$FAKE_CTDB_STATE"
@ -50,17 +49,20 @@ mkdir -p "$FAKE_NETWORK_STATE"
######################################################################
if "$CTDB_TEST_VERBOSE" ; then
debug ()
if "$CTDB_TEST_VERBOSE"; then
debug()
{
if [ -n "$1" ] ; then
if [ -n "$1" ]; then
echo "$@" >&2
else
cat >&2
fi
}
else
debug () { : ; }
debug()
{
:
}
fi
######################################################################
@ -70,17 +72,17 @@ fi
# Default is to use script name with ".options" appended. With
# arguments, this can specify an alternate script name (and
# component).
setup_script_options ()
setup_script_options()
{
if [ $# -eq 2 ] ; then
if [ $# -eq 2 ]; then
_script="$2"
elif [ $# -eq 0 ] ; then
elif [ $# -eq 0 ]; then
_script=""
else
die "usage: setup_script_options [ component script ]"
fi
if [ -n "$_script" ] ; then
if [ -n "$_script" ]; then
_options="${CTDB_BASE}/events/legacy/${_script}.options"
else
_options="${script_dir}/${script%.script}.options"
@ -92,7 +94,7 @@ setup_script_options ()
. "$_options"
}
setup_dbdir ()
setup_dbdir()
{
export CTDB_DBDIR_BASE="${CTDB_TEST_TMP_DIR}/db"
CTDB_DBDIR="${CTDB_DBDIR_BASE}/volatile"
@ -109,31 +111,31 @@ EOF
mkdir -p "$CTDB_DBDIR_STATE"
}
setup_date ()
setup_date()
{
export FAKE_DATE_OUTPUT="$1"
}
setup_tcp_listen ()
setup_tcp_listen()
{
export FAKE_TCP_LISTEN="$*"
}
tcp_port_listening ()
tcp_port_listening()
{
for _i ; do
FAKE_TCP_LISTEN="${FAKE_TCP_LISTEN} ${_i}"
for _i; do
FAKE_TCP_LISTEN="${FAKE_TCP_LISTEN} ${_i}"
done
}
tcp_port_down ()
tcp_port_down()
{
_port="$1"
debug "Marking TCP port \"${_port}\" as not listening"
_t=""
for _i in $FAKE_TCP_LISTEN ; do
if [ "$_i" = "$_port" ] ; then
for _i in $FAKE_TCP_LISTEN; do
if [ "$_i" = "$_port" ]; then
continue
fi
_t="${_t} ${_i}"
@ -142,43 +144,44 @@ tcp_port_down ()
FAKE_TCP_LISTEN="$_t"
}
setup_unix_listen ()
setup_unix_listen()
{
export FAKE_NETSTAT_UNIX_LISTEN="$*"
}
unix_socket_listening ()
unix_socket_listening()
{
_s="$1"
FAKE_NETSTAT_UNIX_LISTEN="${FAKE_NETSTAT_UNIX_LISTEN} ${_s}"
}
setup_shares ()
setup_shares()
{
debug "Setting up shares (3 existing shares)"
# Create 3 fake shares/exports.
export FAKE_SHARES=""
for i in $(seq 1 3) ; do
for i in $(seq 1 3); do
_s="${CTDB_TEST_TMP_DIR}/shares/share${i}"
mkdir -p "$_s"
FAKE_SHARES="${FAKE_SHARES}${FAKE_SHARES:+ }${_s}"
done
}
shares_missing ()
shares_missing()
{
# Mark some shares as non-existent
_fmt="$1" ; shift
_fmt="$1"
shift
_out=""
_nl="
"
_n=1
for _i in $FAKE_SHARES ; do
for _j ; do
if [ $_n -ne "$_j" ] ; then
for _i in $FAKE_SHARES; do
for _j; do
if [ $_n -ne "$_j" ]; then
continue
fi
@ -193,82 +196,85 @@ shares_missing ()
echo "$_out"
}
_ethtool_setup ()
_ethtool_setup()
{
FAKE_ETHTOOL_LINK_DOWN="${FAKE_NETWORK_STATE}/ethtool-link-down"
export FAKE_ETHTOOL_LINK_DOWN
mkdir -p "$FAKE_ETHTOOL_LINK_DOWN"
}
ethtool_interfaces_down ()
ethtool_interfaces_down()
{
_ethtool_setup
for _i ; do
for _i; do
echo "Marking interface $_i DOWN for ethtool"
touch "${FAKE_ETHTOOL_LINK_DOWN}/${_i}"
done
}
ethtool_interfaces_up ()
ethtool_interfaces_up()
{
_ethtool_setup
for _i ; do
for _i; do
echo "Marking interface $_i UP for ethtool"
rm -f "${FAKE_ETHTOOL_LINK_DOWN}/${_i}"
done
}
dump_routes ()
dump_routes()
{
echo "# ip rule show"
ip rule show
echo "# ip rule show"
ip rule show
ip rule show |
while read _p _x _i _x _t ; do
# Remove trailing colon after priority/preference.
_p="${_p%:}"
# Only remove rules that match our priority/preference.
[ "$CTDB_PER_IP_ROUTING_RULE_PREF" = "$_p" ] || continue
ip rule show |
while read _p _x _i _x _t; do
# Remove trailing colon after priority/preference.
_p="${_p%:}"
# Only remove rules that match our priority/preference.
[ "$CTDB_PER_IP_ROUTING_RULE_PREF" = "$_p" ] || continue
echo "# ip route show table $_t"
ip route show table "$_t"
done
echo "# ip route show table $_t"
ip route show table "$_t"
done
}
# Copied from 13.per_ip_routing for now... so this is lazy testing :-(
ipv4_host_addr_to_net ()
ipv4_host_addr_to_net()
{
_host="$1"
_maskbits="$2"
_host="$1"
_maskbits="$2"
# Convert the host address to an unsigned long by splitting out
# the octets and doing the math.
_host_ul=0
for _o in $(export IFS="." ; echo $_host) ; do
_host_ul=$(( ($_host_ul << 8) + $_o)) # work around Emacs color bug
done
# Convert the host address to an unsigned long by splitting out
# the octets and doing the math.
_host_ul=0
for _o in $(
export IFS="."
echo $_host
); do
_host_ul=$((($_host_ul << 8) + $_o)) # work around Emacs color bug
done
# Calculate the mask and apply it.
_mask_ul=$(( 0xffffffff << (32 - $_maskbits) ))
_net_ul=$(( $_host_ul & $_mask_ul ))
# Calculate the mask and apply it.
_mask_ul=$((0xffffffff << (32 - $_maskbits)))
_net_ul=$(($_host_ul & $_mask_ul))
# Now convert to a network address one byte at a time.
_net=""
for _o in $(seq 1 4) ; do
_net="$(($_net_ul & 255))${_net:+.}${_net}"
_net_ul=$(($_net_ul >> 8))
done
# Now convert to a network address one byte at a time.
_net=""
for _o in $(seq 1 4); do
_net="$(($_net_ul & 255))${_net:+.}${_net}"
_net_ul=$(($_net_ul >> 8))
done
echo "${_net}/${_maskbits}"
echo "${_net}/${_maskbits}"
}
######################################################################
# CTDB fakery
setup_numnodes ()
setup_numnodes()
{
export FAKE_CTDB_NUMNODES="${1:-3}"
echo "Setting up CTDB with ${FAKE_CTDB_NUMNODES} fake nodes"
@ -276,7 +282,7 @@ setup_numnodes ()
# For now this creates the same public addresses each time. However,
# it could be made more flexible.
setup_public_addresses ()
setup_public_addresses()
{
_f="${CTDB_BASE}/public_addresses"
@ -294,117 +300,122 @@ setup_public_addresses ()
10.0.1.3/24 dev456
EOF
# Needed for IP allocation
setup_numnodes
# Needed for IP allocation
setup_numnodes
}
# Need to cope with ctdb_get_pnn(). If a test changes PNN then it
# needs to be using a different state directory, otherwise the wrong
# PNN can already be cached in the state directory.
ctdb_set_pnn ()
ctdb_set_pnn()
{
export FAKE_CTDB_PNN="$1"
echo "Setting up PNN ${FAKE_CTDB_PNN}"
export FAKE_CTDB_PNN="$1"
echo "Setting up PNN ${FAKE_CTDB_PNN}"
CTDB_SCRIPT_VARDIR="${CTDB_TEST_TMP_DIR}/scripts/${FAKE_CTDB_PNN}"
export CTDB_SCRIPT_VARDIR
mkdir -p "$CTDB_SCRIPT_VARDIR"
CTDB_SCRIPT_VARDIR="${CTDB_TEST_TMP_DIR}/scripts/${FAKE_CTDB_PNN}"
export CTDB_SCRIPT_VARDIR
mkdir -p "$CTDB_SCRIPT_VARDIR"
}
ctdb_get_interfaces ()
ctdb_get_interfaces()
{
# The echo/subshell forces all the output onto 1 line.
echo $(ctdb ifaces -X | awk -F'|' 'FNR > 1 {print $2}')
# The echo/subshell forces all the output onto 1 line.
echo $(ctdb ifaces -X | awk -F'|' 'FNR > 1 {print $2}')
}
ctdb_get_1_interface ()
ctdb_get_1_interface()
{
_t=$(ctdb_get_interfaces)
echo ${_t%% *}
_t=$(ctdb_get_interfaces)
echo ${_t%% *}
}
# Print public addresses on this node as: interface IP maskbits
# Each line is suitable for passing to takeip/releaseip
ctdb_get_my_public_addresses ()
ctdb_get_my_public_addresses()
{
ctdb ip -v -X | {
read _x # skip header line
ctdb ip -v -X | {
read _x # skip header line
while IFS="|" read _x _ip _x _iface _x ; do
[ -n "$_iface" ] || continue
while IFS="/$IFS" read _i _maskbits _x ; do
if [ "$_ip" = "$_i" ] ; then
echo $_iface $_ip $_maskbits
break
fi
done <"${CTDB_BASE}/public_addresses"
done
}
while IFS="|" read _x _ip _x _iface _x; do
[ -n "$_iface" ] || continue
while IFS="/$IFS" read _i _maskbits _x; do
if [ "$_ip" = "$_i" ]; then
echo $_iface $_ip $_maskbits
break
fi
done <"${CTDB_BASE}/public_addresses"
done
}
}
# Prints the 1st public address as: interface IP maskbits
# This is suitable for passing to takeip/releaseip
ctdb_get_1_public_address ()
ctdb_get_1_public_address()
{
ctdb_get_my_public_addresses | { head -n 1 ; cat >/dev/null ; }
ctdb_get_my_public_addresses | {
head -n 1
cat >/dev/null
}
}
# Check the routes against those that are expected. $1 is the number
# of assigned IPs to use (<num>, all), defaulting to 1. If $2 is
# "default" then expect default routes to have been added.
check_routes ()
check_routes()
{
_num_ips="${1:-1}"
_should_add_default="$2"
_num_ips="${1:-1}"
_should_add_default="$2"
_policy_rules=""
_policy_routes=""
_policy_rules=""
_policy_routes=""
ctdb_get_my_public_addresses |
if [ "$_num_ips" = "all" ] ; then
cat
else
{ head -n "$_num_ips" ; cat >/dev/null ; }
fi | {
while read _dev _ip _bits ; do
_net=$(ipv4_host_addr_to_net "$_ip" "$_bits")
_gw="${_net%.*}.254" # a dumb, calculated default
ctdb_get_my_public_addresses |
if [ "$_num_ips" = "all" ]; then
cat
else
{
head -n "$_num_ips"
cat >/dev/null
}
fi | {
while read _dev _ip _bits; do
_net=$(ipv4_host_addr_to_net "$_ip" "$_bits")
_gw="${_net%.*}.254" # a dumb, calculated default
_policy_rules="${_policy_rules}
_policy_rules="${_policy_rules}
${CTDB_PER_IP_ROUTING_RULE_PREF}: from $_ip lookup ctdb.$_ip "
_policy_routes="${_policy_routes}
_policy_routes="${_policy_routes}
# ip route show table ctdb.$_ip
$_net dev $_dev scope link "
if [ "$_should_add_default" = "default" ] ; then
_policy_routes="${_policy_routes}
if [ "$_should_add_default" = "default" ]; then
_policy_routes="${_policy_routes}
default via $_gw dev $_dev "
fi
done
fi
done
ok <<EOF
ok <<EOF
# ip rule show
0: from all lookup local ${_policy_rules}
32766: from all lookup main
32767: from all lookup default ${_policy_routes}
EOF
simple_test_command dump_routes
} || test_fail
simple_test_command dump_routes
} || test_fail
}
######################################################################
nfs_load_config ()
nfs_load_config()
{
_etc="$CTDB_SYS_ETCDIR" # shortcut for readability
for _c in "$_etc/sysconfig/nfs" "$_etc/default/nfs" "$_etc/ctdb/sysconfig/nfs" ; do
if [ -r "$_c" ] ; then
. "$_c"
break
fi
done
_etc="$CTDB_SYS_ETCDIR" # shortcut for readability
for _c in "$_etc/sysconfig/nfs" "$_etc/default/nfs" "$_etc/ctdb/sysconfig/nfs"; do
if [ -r "$_c" ]; then
. "$_c"
break
fi
done
}
setup_nfs_callout()
@ -413,7 +424,7 @@ setup_nfs_callout()
export NFS_FAKE_CALLOUT_MAGIC="$1"
}
program_stack_trace ()
program_stack_trace()
{
_prog="$1"
_pid="$2"
@ -428,16 +439,15 @@ EOF
# Result and test functions
############################################################
setup ()
setup()
{
die "setup() is not defined"
}
# Set some globals and print the summary.
define_test ()
define_test()
{
desc="$1"
@ -466,7 +476,7 @@ define_test ()
# Symlink target needs to be absolute
case "$CTDB_SCRIPTS_DATA_DIR" in
/*) _data_dir="${CTDB_SCRIPTS_DATA_DIR}/${_subdir}" ;;
*) _data_dir="${PWD}/${CTDB_SCRIPTS_DATA_DIR}/${_subdir}"
*) _data_dir="${PWD}/${CTDB_SCRIPTS_DATA_DIR}/${_subdir}" ;;
esac
mkdir -p "$script_dir"
ln -s "${_data_dir}/${script}" "$script_dir"
@ -476,10 +486,11 @@ define_test ()
script="$_f"
unset event
script_dir="${CTDB_BASE}"
;;
esac
_s="${script_dir}/${script}"
[ -r "$_s" ] || \
[ -r "$_s" ] ||
die "Internal error - unable to find script \"${_s}\""
case "$script" in
@ -489,10 +500,10 @@ define_test ()
esac
printf "%-17s %-10s %-4s - %s\n\n" \
"$script_short" "$event" "$_num" "$desc"
"$script_short" "$event" "$_num" "$desc"
_f="${CTDB_TEST_SUITE_DIR}/scripts/${script_short}.sh"
if [ -r "$_f" ] ; then
if [ -r "$_f" ]; then
. "$_f"
fi
@ -504,20 +515,20 @@ define_test ()
# Any args are passed to the eventscript.
simple_test ()
simple_test()
{
[ -n "$event" ] || die 'simple_test: $event not set'
[ -n "$event" ] || die 'simple_test: $event not set'
args="$@"
args="$@"
test_header ()
{
echo "Running script \"$script $event${args:+ }$args\""
}
test_header()
{
echo "Running script \"$script $event${args:+ }$args\""
}
extra_header ()
{
cat <<EOF
extra_header()
{
cat <<EOF
##################################################
CTDB_BASE="$CTDB_BASE"
@ -525,26 +536,27 @@ CTDB_SYS_ETCDIR="$CTDB_SYS_ETCDIR"
ctdb client is "$(which ctdb)"
ip command is "$(which ip)"
EOF
}
}
script_test "${script_dir}/${script}" "$event" "$@"
script_test "${script_dir}/${script}" "$event" "$@"
reset_test_header
reset_extra_header
reset_test_header
reset_extra_header
}
simple_test_event ()
simple_test_event()
{
# If something has previously failed then don't continue.
: ${_passed:=true}
$_passed || return 1
# If something has previously failed then don't continue.
: ${_passed:=true}
$_passed || return 1
event="$1" ; shift
echo "=================================================="
simple_test "$@"
event="$1"
shift
echo "=================================================="
simple_test "$@"
}
simple_test_command ()
simple_test_command()
{
unit_test_notrace "$@"
unit_test_notrace "$@"
}

View File

@ -1,15 +1,15 @@
setup ()
setup()
{
ctdb_set_pnn
setup_public_addresses
setup_date "123456789"
}
ctdb_catdb_format_pairs ()
ctdb_catdb_format_pairs()
{
_count=0
while read _k _v ; do
while read _k _v; do
_kn=$(echo -n "$_k" | wc -c)
_vn=$(echo -n "$_v" | wc -c)
cat <<EOF
@ -25,11 +25,11 @@ EOF
echo "Dumped ${_count} records"
}
check_ctdb_tdb_statd_state ()
check_ctdb_tdb_statd_state()
{
ctdb_get_my_public_addresses |
while read _x _sip _x ; do
for _cip ; do
while read _x _sip _x; do
for _cip; do
cat <<EOF
statd-state@${_sip}@${_cip} $(date)
EOF
@ -41,7 +41,7 @@ EOF
} || exit $?
}
check_statd_callout_smnotify ()
check_statd_callout_smnotify()
{
_state_even=$(( $(date '+%s') / 2 * 2))
_state_odd=$(($_state_even + 1))
@ -49,8 +49,8 @@ check_statd_callout_smnotify ()
nfs_load_config
ctdb_get_my_public_addresses |
while read _x _sip _x ; do
for _cip ; do
while read _x _sip _x; do
for _cip; do
cat <<EOF
SM_NOTIFY: ${_sip} -> ${_cip}, MON_NAME=${_sip}, STATE=${_state_even}
SM_NOTIFY: ${_sip} -> ${_cip}, MON_NAME=${NFS_HOSTNAME}, STATE=${_state_even}