ZTS: Remove bashisms from zfs-tests.sh
Bring zfs-tests.sh in to compliance with the other scripts by converting it /bin/sh for to avoid a dependency on bash. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Ryan Moeller <ryan@iXsystems.com> Closes #10640
This commit is contained in:
parent
0cab7970f9
commit
d4e6e9597d
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env bash
|
||||
#!/bin/sh
|
||||
#
|
||||
# CDDL HEADER START
|
||||
#
|
||||
|
@ -41,7 +41,7 @@ DEFAULT_RUNFILES="common.run,$(uname | tr '[:upper:]' '[:lower:]').run"
|
|||
RUNFILES=${RUNFILES:-$DEFAULT_RUNFILES}
|
||||
FILEDIR=${FILEDIR:-/var/tmp}
|
||||
DISKS=${DISKS:-""}
|
||||
SINGLETEST=()
|
||||
SINGLETEST=""
|
||||
SINGLETESTUSER="root"
|
||||
TAGS=""
|
||||
ITERATIONS=1
|
||||
|
@ -74,7 +74,7 @@ msg() {
|
|||
# Log a failure message, cleanup, and return an error.
|
||||
#
|
||||
fail() {
|
||||
echo -e "$PROG: $1" >&2
|
||||
echo "$PROG: $1" >&2
|
||||
cleanup
|
||||
exit 1
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ cleanup() {
|
|||
fi
|
||||
|
||||
for TEST_FILE in ${FILES}; do
|
||||
rm -f "${TEST_FILE}" &>/dev/null
|
||||
rm -f "${TEST_FILE}" >/dev/null 2>&1
|
||||
done
|
||||
|
||||
if [ "$STF_PATH_REMOVE" = "yes" ] && [ -d "$STF_PATH" ]; then
|
||||
|
@ -142,15 +142,15 @@ trap cleanup EXIT
|
|||
# be dangerous and should only be used in a dedicated test environment.
|
||||
#
|
||||
cleanup_all() {
|
||||
local TEST_POOLS
|
||||
TEST_POOLS
|
||||
TEST_POOLS=$(sudo "$ZPOOL" list -H -o name | grep testpool)
|
||||
local TEST_LOOPBACKS
|
||||
TEST_LOOPBACKS
|
||||
if [ "$UNAME" = "FreeBSD" ] ; then
|
||||
TEST_LOOPBACKS=$(sudo "${LOSETUP}" -l)
|
||||
else
|
||||
TEST_LOOPBACKS=$(sudo "${LOSETUP}" -a|grep file-vdev|cut -f1 -d:)
|
||||
fi
|
||||
local TEST_FILES
|
||||
TEST_FILES
|
||||
TEST_FILES=$(ls /var/tmp/file-vdev* 2>/dev/null)
|
||||
|
||||
msg
|
||||
|
@ -191,8 +191,8 @@ cleanup_all() {
|
|||
# <name>.run
|
||||
#
|
||||
find_runfile() {
|
||||
local NAME=$1
|
||||
local RESULT=""
|
||||
NAME=$1
|
||||
RESULT=""
|
||||
|
||||
if [ -f "$RUNFILE_DIR/$NAME" ]; then
|
||||
RESULT="$RUNFILE_DIR/$NAME"
|
||||
|
@ -211,8 +211,8 @@ find_runfile() {
|
|||
# Symlink file if it appears under any of the given paths.
|
||||
#
|
||||
create_links() {
|
||||
local dir_list="$1"
|
||||
local file_list="$2"
|
||||
dir_list="$1"
|
||||
file_list="$2"
|
||||
|
||||
[ -n "$STF_PATH" ] || fail "STF_PATH wasn't correctly set"
|
||||
|
||||
|
@ -227,8 +227,10 @@ create_links() {
|
|||
fi
|
||||
done
|
||||
|
||||
[ ! -e "$STF_PATH/$i" ] && STF_MISSING_BIN="$STF_MISSING_BIN$i "
|
||||
[ ! -e "$STF_PATH/$i" ] && \
|
||||
STF_MISSING_BIN="$STF_MISSING_BIN $i"
|
||||
done
|
||||
STF_MISSING_BIN=${STF_MISSING_BIN# }
|
||||
}
|
||||
|
||||
#
|
||||
|
@ -243,7 +245,7 @@ constrain_path() {
|
|||
# install to /usr/local/sbin. To avoid testing the wrong utils we
|
||||
# need /usr/local to come before / in the path search order.
|
||||
SYSTEM_DIRS="/usr/local/bin /usr/local/sbin"
|
||||
SYSTEM_DIRS+=" /usr/bin /usr/sbin /bin /sbin"
|
||||
SYSTEM_DIRS="$SYSTEM_DIRS /usr/bin /usr/sbin /bin /sbin"
|
||||
|
||||
if [ "$INTREE" = "yes" ]; then
|
||||
# Constrained path set to ./zfs/bin/
|
||||
|
@ -283,9 +285,9 @@ constrain_path() {
|
|||
# Standard system utilities
|
||||
SYSTEM_FILES="$SYSTEM_FILES_COMMON"
|
||||
if [ "$UNAME" = "FreeBSD" ] ; then
|
||||
SYSTEM_FILES+=" $SYSTEM_FILES_FREEBSD"
|
||||
SYSTEM_FILES="$SYSTEM_FILES $SYSTEM_FILES_FREEBSD"
|
||||
else
|
||||
SYSTEM_FILES+=" $SYSTEM_FILES_LINUX"
|
||||
SYSTEM_FILES="$SYSTEM_FILES $SYSTEM_FILES_LINUX"
|
||||
fi
|
||||
create_links "$SYSTEM_DIRS" "$SYSTEM_FILES"
|
||||
|
||||
|
@ -380,7 +382,7 @@ while getopts 'hvqxkfScn:d:s:r:?t:T:u:I:' OPTION; do
|
|||
;;
|
||||
n)
|
||||
nfsfile=$OPTARG
|
||||
[[ -f $nfsfile ]] || fail "Cannot read file: $nfsfile"
|
||||
[ -f "$nfsfile" ] || fail "Cannot read file: $nfsfile"
|
||||
export NFS=1
|
||||
. "$nfsfile"
|
||||
;;
|
||||
|
@ -400,10 +402,10 @@ while getopts 'hvqxkfScn:d:s:r:?t:T:u:I:' OPTION; do
|
|||
RUNFILES="$OPTARG"
|
||||
;;
|
||||
t)
|
||||
if [ ${#SINGLETEST[@]} -ne 0 ]; then
|
||||
if [ -n "$SINGLETEST" ]; then
|
||||
fail "-t can only be provided once."
|
||||
fi
|
||||
SINGLETEST+=("$OPTARG")
|
||||
SINGLETEST="$OPTARG"
|
||||
;;
|
||||
T)
|
||||
TAGS="$OPTARG"
|
||||
|
@ -423,7 +425,7 @@ shift $((OPTIND-1))
|
|||
FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 $FILEDIR/file-vdev2"}
|
||||
LOOPBACKS=${LOOPBACKS:-""}
|
||||
|
||||
if [ ${#SINGLETEST[@]} -ne 0 ]; then
|
||||
if [ -n "$SINGLETEST" ]; then
|
||||
if [ -n "$TAGS" ]; then
|
||||
fail "-t and -T are mutually exclusive."
|
||||
fi
|
||||
|
@ -446,22 +448,20 @@ post_user = root
|
|||
post =
|
||||
outputdir = /var/tmp/test_results
|
||||
EOF
|
||||
for t in "${SINGLETEST[@]}"
|
||||
do
|
||||
SINGLETESTDIR=$(dirname "$t")
|
||||
SINGLETESTFILE=$(basename "$t")
|
||||
SETUPSCRIPT=
|
||||
CLEANUPSCRIPT=
|
||||
SINGLETESTDIR=$(dirname "$SINGLETEST")
|
||||
SINGLETESTFILE=$(basename "$SINGLETEST")
|
||||
SETUPSCRIPT=
|
||||
CLEANUPSCRIPT=
|
||||
|
||||
if [ -f "$STF_SUITE/$SINGLETESTDIR/setup.ksh" ]; then
|
||||
SETUPSCRIPT="setup"
|
||||
fi
|
||||
if [ -f "$STF_SUITE/$SINGLETESTDIR/setup.ksh" ]; then
|
||||
SETUPSCRIPT="setup"
|
||||
fi
|
||||
|
||||
if [ -f "$STF_SUITE/$SINGLETESTDIR/cleanup.ksh" ]; then
|
||||
CLEANUPSCRIPT="cleanup"
|
||||
fi
|
||||
if [ -f "$STF_SUITE/$SINGLETESTDIR/cleanup.ksh" ]; then
|
||||
CLEANUPSCRIPT="cleanup"
|
||||
fi
|
||||
|
||||
cat >>$RUNFILE_DIR/$RUNFILES << EOF
|
||||
cat >>$RUNFILE_DIR/$RUNFILES << EOF
|
||||
|
||||
[$SINGLETESTDIR]
|
||||
tests = ['$SINGLETESTFILE']
|
||||
|
@ -469,7 +469,6 @@ pre = $SETUPSCRIPT
|
|||
post = $CLEANUPSCRIPT
|
||||
tags = ['functional']
|
||||
EOF
|
||||
done
|
||||
fi
|
||||
|
||||
#
|
||||
|
@ -487,7 +486,7 @@ for RUNFILE in $RUNFILES; do
|
|||
SAVED_RUNFILE="$RUNFILE"
|
||||
RUNFILE=$(find_runfile "$RUNFILE")
|
||||
[ -z "$RUNFILE" ] && fail "Cannot find runfile: $SAVED_RUNFILE"
|
||||
R+="${R:+,}${RUNFILE}"
|
||||
R="$R,$RUNFILE"
|
||||
fi
|
||||
|
||||
if [ ! -r "$RUNFILE" ]; then
|
||||
|
@ -495,7 +494,7 @@ for RUNFILE in $RUNFILES; do
|
|||
fi
|
||||
done
|
||||
unset IFS
|
||||
RUNFILES=$R
|
||||
RUNFILES=${R#,}
|
||||
|
||||
#
|
||||
# This script should not be run as root. Instead the test user, which may
|
||||
|
@ -529,9 +528,9 @@ fi
|
|||
# Verify the ZFS module stack is loaded.
|
||||
#
|
||||
if [ "$STACK_TRACER" = "yes" ]; then
|
||||
sudo "${ZFS_SH}" -S &>/dev/null
|
||||
sudo "${ZFS_SH}" -S >/dev/null 2>&1
|
||||
else
|
||||
sudo "${ZFS_SH}" &>/dev/null
|
||||
sudo "${ZFS_SH}" >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
#
|
||||
|
@ -552,7 +551,7 @@ if [ -z "${KEEP}" ]; then
|
|||
KEEP="rpool"
|
||||
fi
|
||||
else
|
||||
KEEP="$(echo -e "${KEEP//[[:blank:]]/\n}")"
|
||||
KEEP="$(echo "$KEEP" | tr '[:blank:]' '\n')"
|
||||
fi
|
||||
|
||||
#
|
||||
|
@ -592,19 +591,12 @@ if [ -z "${DISKS}" ]; then
|
|||
[ -f "$TEST_FILE" ] && fail "Failed file exists: ${TEST_FILE}"
|
||||
truncate -s "${FILESIZE}" "${TEST_FILE}" ||
|
||||
fail "Failed creating: ${TEST_FILE} ($?)"
|
||||
if [[ "$DISKS" ]]; then
|
||||
DISKS="$DISKS $TEST_FILE"
|
||||
else
|
||||
DISKS="$TEST_FILE"
|
||||
fi
|
||||
done
|
||||
|
||||
#
|
||||
# If requested setup loopback devices backed by the sparse files.
|
||||
#
|
||||
if [ "$LOOPBACK" = "yes" ]; then
|
||||
DISKS=""
|
||||
|
||||
test -x "$LOSETUP" || fail "$LOSETUP utility must be installed"
|
||||
|
||||
for TEST_FILE in ${FILES}; do
|
||||
|
@ -613,25 +605,21 @@ if [ -z "${DISKS}" ]; then
|
|||
if [ -z "$MDDEVICE" ] ; then
|
||||
fail "Failed: ${TEST_FILE} -> loopback"
|
||||
fi
|
||||
LOOPBACKS="${LOOPBACKS}${MDDEVICE} "
|
||||
if [[ "$DISKS" ]]; then
|
||||
DISKS="$DISKS $MDDEVICE"
|
||||
else
|
||||
DISKS="$MDDEVICE"
|
||||
fi
|
||||
DISKS="$DISKS $MDDEVICE"
|
||||
LOOPBACKS="$LOOPBACKS $MDDEVICE"
|
||||
else
|
||||
TEST_LOOPBACK=$(sudo "${LOSETUP}" -f)
|
||||
sudo "${LOSETUP}" "${TEST_LOOPBACK}" "${TEST_FILE}" ||
|
||||
fail "Failed: ${TEST_FILE} -> ${TEST_LOOPBACK}"
|
||||
LOOPBACKS="${LOOPBACKS}${TEST_LOOPBACK} "
|
||||
BASELOOPBACKS=$(basename "$TEST_LOOPBACK")
|
||||
if [[ "$DISKS" ]]; then
|
||||
DISKS="$DISKS $BASELOOPBACKS"
|
||||
else
|
||||
DISKS="$BASELOOPBACKS"
|
||||
fi
|
||||
BASELOOPBACK=$(basename "$TEST_LOOPBACK")
|
||||
DISKS="$DISKS $BASELOOPBACK"
|
||||
LOOPBACKS="$LOOPBACKS $TEST_LOOPBACK"
|
||||
fi
|
||||
done
|
||||
DISKS=${DISKS# }
|
||||
LOOPBACKS=${LOOPBACKS# }
|
||||
else
|
||||
DISKS="$FILES"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -642,7 +630,7 @@ NUM_DISKS=$(echo "${DISKS}" | awk '{print NF}')
|
|||
# Disable SELinux until the ZFS Test Suite has been updated accordingly.
|
||||
#
|
||||
if [ -x "$STF_PATH/setenforce" ]; then
|
||||
sudo setenforce permissive &>/dev/null
|
||||
sudo setenforce permissive >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
#
|
||||
|
@ -703,10 +691,9 @@ ${TEST_RUNNER} ${QUIET:+-q} \
|
|||
#
|
||||
# Analyze the results.
|
||||
#
|
||||
set -o pipefail
|
||||
${ZTS_REPORT} "$RESULTS_FILE" | tee "$REPORT_FILE"
|
||||
${ZTS_REPORT} "$RESULTS_FILE" >"$REPORT_FILE"
|
||||
RESULT=$?
|
||||
set +o pipefail
|
||||
cat "$REPORT_FILE"
|
||||
|
||||
RESULTS_DIR=$(awk '/^Log directory/ { print $3 }' "$RESULTS_FILE")
|
||||
if [ -d "$RESULTS_DIR" ]; then
|
||||
|
@ -715,8 +702,8 @@ fi
|
|||
|
||||
rm -f "$RESULTS_FILE" "$REPORT_FILE"
|
||||
|
||||
if [ ${#SINGLETEST[@]} -ne 0 ]; then
|
||||
rm -f "$RUNFILES" &>/dev/null
|
||||
if [ -n "$SINGLETEST" ]; then
|
||||
rm -f "$RUNFILES" >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
exit ${RESULT}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
#
|
||||
# CDDL HEADER START
|
||||
#
|
||||
|
@ -30,7 +32,6 @@
|
|||
#
|
||||
|
||||
. $STF_SUITE/include/commands.cfg
|
||||
. $STF_SUITE/include/libtest.shlib
|
||||
|
||||
# ZFS Directories
|
||||
export ZEDLET_ETC_DIR=${ZEDLET_ETC_DIR:-@sysconfdir@/zfs/zed.d}
|
||||
|
@ -143,17 +144,6 @@ export SPA_MINDEVSIZE=$((64 * 1024 * 1024))
|
|||
# For iscsi target support
|
||||
export ISCSITGTFILE=/tmp/iscsitgt_file
|
||||
export ISCSITGT_FMRI=svc:/system/iscsitgt:default
|
||||
if is_illumos; then
|
||||
export AUTO_SNAP=$(svcs -a | grep auto-snapshot | grep online | awk \
|
||||
'{print $3}')
|
||||
fi
|
||||
|
||||
#
|
||||
# finally, if we're running in a local zone
|
||||
# we take some additional actions
|
||||
if ! is_global_zone; then
|
||||
reexport_pool
|
||||
fi
|
||||
|
||||
export ZFS_VERSION=5
|
||||
export ZFS_ALL_VERSIONS="1 2 3 4 5"
|
||||
|
@ -164,7 +154,8 @@ done
|
|||
|
||||
export MAX_PARTITIONS=8
|
||||
|
||||
if is_linux; then
|
||||
case $(uname -o) in
|
||||
GNU/Linux)
|
||||
unpack_opts="--sparse -xf"
|
||||
pack_opts="--sparse -cf"
|
||||
verbose=" -v"
|
||||
|
@ -185,7 +176,8 @@ if is_linux; then
|
|||
|
||||
NEWFS_DEFAULT_FS="ext2"
|
||||
SLICE_PREFIX=""
|
||||
elif is_freebsd; then
|
||||
;;
|
||||
FreeBSD)
|
||||
unpack_opts="xv"
|
||||
pack_opts="cf"
|
||||
verbose="v"
|
||||
|
@ -200,7 +192,16 @@ elif is_freebsd; then
|
|||
|
||||
NEWFS_DEFAULT_FS="ufs"
|
||||
SLICE_PREFIX="p"
|
||||
else
|
||||
;;
|
||||
illumos)
|
||||
export AUTO_SNAP=$(svcs -a | \
|
||||
awk '/auto-snapshot/ && /online/ { print $3 }')
|
||||
# finally, if we're running in a local zone
|
||||
# we take some additional actions
|
||||
if [ "$(zonename 2>/dev/null)" != "global" ]; then
|
||||
reexport_pool
|
||||
fi
|
||||
|
||||
unpack_opts="xv"
|
||||
pack_opts="cf"
|
||||
verbose="v"
|
||||
|
@ -214,7 +215,8 @@ else
|
|||
|
||||
NEWFS_DEFAULT_FS="ufs"
|
||||
SLICE_PREFIX="s"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
export unpack_opts pack_opts verbose unpack_preserve pack_preserve \
|
||||
ZVOL_DEVDIR ZVOL_RDEVDIR DEV_DSKDIR DEV_RDSKDIR DEV_MPATHDIR \
|
||||
ZEDLET_DIR ZED_LOG ZED_DEBUG_LOG VDEVID_CONF VDEVID_CONF_ETC \
|
||||
|
|
Loading…
Reference in New Issue