aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorRyan Moeller <[email protected]>2020-08-07 17:10:48 -0400
committerGitHub <[email protected]>2020-08-07 14:10:48 -0700
commitd4e6e9597d322df47a5d177ba40c86e35bfb1e05 (patch)
tree036093548b9050b1aed2480e5f1d3dd85f523924 /scripts
parent0cab7970f9c10284d2dae47de52c974101e68274 (diff)
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 <[email protected]> Signed-off-by: Ryan Moeller <[email protected]> Closes #10640
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/zfs-tests.sh117
1 files changed, 52 insertions, 65 deletions
diff --git a/scripts/zfs-tests.sh b/scripts/zfs-tests.sh
index 241346784..004d0cbf3 100755
--- a/scripts/zfs-tests.sh
+++ b/scripts/zfs-tests.sh
@@ -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=
-
- if [ -f "$STF_SUITE/$SINGLETESTDIR/setup.ksh" ]; then
- SETUPSCRIPT="setup"
- fi
+ SINGLETESTDIR=$(dirname "$SINGLETEST")
+ SINGLETESTFILE=$(basename "$SINGLETEST")
+ SETUPSCRIPT=
+ CLEANUPSCRIPT=
- if [ -f "$STF_SUITE/$SINGLETESTDIR/cleanup.ksh" ]; then
- CLEANUPSCRIPT="cleanup"
- fi
+ if [ -f "$STF_SUITE/$SINGLETESTDIR/setup.ksh" ]; then
+ SETUPSCRIPT="setup"
+ fi
- cat >>$RUNFILE_DIR/$RUNFILES << EOF
+ if [ -f "$STF_SUITE/$SINGLETESTDIR/cleanup.ksh" ]; then
+ CLEANUPSCRIPT="cleanup"
+ fi
+
+ 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}