mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
80b2c990d0
Merge of master-melb:xfs-cmds:30992a by kenmcd. export the language that all tests will run under to prevent language settings from affecting test output and giving spurious failures when comparing against golden output.
259 lines
8.0 KiB
Plaintext
259 lines
8.0 KiB
Plaintext
##/bin/sh
|
|
#
|
|
# Copyright (c) 2000-2003,2006 Silicon Graphics, Inc. All Rights Reserved.
|
|
#
|
|
# setup and check for config parameters, and in particular
|
|
#
|
|
# EMAIL - email of the script runner.
|
|
# TEST_DIR - scratch test directory that is in an already
|
|
# mounted XFS file system, needs to be be world
|
|
# writeable
|
|
# TEST_DEV - device for file system containing TEST_DIR
|
|
# SCRATCH_DEV - device you can make a scratch file system on
|
|
# SCRATCH_MNT - mount point for scratch file system
|
|
#
|
|
# and optionally:
|
|
# SCRATCH_LOGDEV - scratch log device for external log testing
|
|
# SCRATCH_RTDEV - scratch rt dev
|
|
# TEST_LOGDEV - test log device for external log testing
|
|
# TEST_RTDEV - test rt dev
|
|
# TAPE_DEV - the tape device for the xfsdump tests
|
|
# RMT_TAPE_DEV - the remote tape device for the xfsdump tests
|
|
# RMT_IRIXTAPE_DEV- the IRIX remote tape device for the xfsdump tests
|
|
# RMT_TAPE_USER - remote user for tape device
|
|
#
|
|
# - These can be added to $HOST_CONFIG_DIR (witch default to ./config)
|
|
# below or a separate local configuration file can be used (using
|
|
# the HOST_OPTIONS variable).
|
|
# - This script is shared by the stress test system and the auto-qa
|
|
# system (includes both regression test and benchmark components).
|
|
# - TEST_DEV & TEST_DIR must be assigned.
|
|
# - this script shouldn't make any assertions about filesystem
|
|
# validity or mountedness.
|
|
#
|
|
|
|
# all tests should use a common language setting to prevent golden
|
|
# output mismatches.
|
|
export LANG=C
|
|
|
|
# Warning: don't put freeware before /usr/bsd on IRIX coz you'll
|
|
# get the wrong hostname and set your system name to -s :)
|
|
[ -d /usr/bsd ] && PATH=$PATH:/usr/bsd
|
|
[ -d /usr/freeware/bin ] && PATH=$PATH:/usr/freeware/bin
|
|
PATH=".:$PATH"
|
|
|
|
HOST=`hostname -s`
|
|
HOSTOS=`uname -s`
|
|
[ "$HOSTOS" = "IRIX64" ] && HOSTOS="IRIX"
|
|
|
|
MODULAR=0 # using XFS as a module or not
|
|
BOOT="/boot" # install target for kernels
|
|
export EXTRA=${EXTRA:=xfs-qa}
|
|
|
|
# general parameters (mainly for auto-qa)
|
|
SOAK_PROC=3 # -p option to fsstress
|
|
SOAK_STRESS=10000 # -n option to fsstress
|
|
SOAK_PASSES=-1 # count of repetitions of fsstress (while soaking)
|
|
EMAIL=root@localhost # where auto-qa will send its status messages
|
|
export HOST_OPTIONS=${HOST_OPTIONS:=local.config}
|
|
export CHECK_OPTIONS=${CHECK_OPTIONS:="-g auto"}
|
|
export BENCH_PASSES=${BENCH_PASSES:=5}
|
|
export XFS_MKFS_OPTIONS=${XFS_MKFS_OPTIONS:=-bsize=4096}
|
|
|
|
export PWD=`pwd`
|
|
#export DEBUG=${DEBUG:=...} # arbitrary CFLAGS really.
|
|
export MALLOCLIB=${MALLOCLIB:=/usr/lib/libefence.a}
|
|
export LOCAL_CONFIGURE_OPTIONS=${LOCAL_CONFIGURE_OPTIONS:=--enable-readline=yes}
|
|
|
|
# $1 = prog to look for, $2* = default pathnames if not found in $PATH
|
|
set_prog_path()
|
|
{
|
|
p=`which $1 2> /dev/null`
|
|
if [ -n "$p" -a -x "$p" ]; then
|
|
echo $p
|
|
return 0
|
|
fi
|
|
p=$1
|
|
|
|
shift
|
|
for f; do
|
|
if [ -x $f ]; then
|
|
echo $f
|
|
return 0
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
return 1
|
|
}
|
|
|
|
_fatal()
|
|
{
|
|
echo "$*"
|
|
status=1
|
|
exit 1
|
|
}
|
|
|
|
export MKFS_PROG="`set_prog_path mkfs`"
|
|
[ "$MKFS_PROG" = "" ] && _fatal "mkfs not found"
|
|
|
|
export MOUNT_PROG="`set_prog_path mount`"
|
|
[ "$MOUNT_PROG" = "" ] && _fatal "mount not found"
|
|
|
|
export UMOUNT_PROG="`set_prog_path umount`"
|
|
[ "$UMOUNT_PROG" = "" ] && _fatal "umount not found"
|
|
|
|
export FSSTRESS_PROG="`set_prog_path fsstress $PWD/ltp/fsstress`"
|
|
[ "$FSSTRESS_PROG" = "" ] && _fatal "fsstress not found"
|
|
|
|
export NSLOOKUP_PROG="`set_prog_path nslookup`"
|
|
[ "$NSLOOKUP_PROG" = "" ] && _fatal "nslookup not found"
|
|
|
|
export PERL_PROG="`set_prog_path perl`"
|
|
[ "$PERL_PROG" = "" ] && _fatal "perl not found"
|
|
|
|
export AWK_PROG="`set_prog_path awk`"
|
|
[ "$AWK_PROG" = "" ] && _fatal "awk not found"
|
|
|
|
export SED_PROG="`set_prog_path sed`"
|
|
[ "$SED_PROG" = "" ] && _fatal "sed not found"
|
|
|
|
export BC_PROG="`set_prog_path bc`"
|
|
[ "$BC_PROG" = "" ] && _fatal "bc not found"
|
|
|
|
export PS_ALL_FLAGS="-ef"
|
|
|
|
export DF_PROG="`set_prog_path df`"
|
|
[ "$DF_PROG" = "" ] && _fatal "df not found"
|
|
[ "$HOSTOS" = "Linux" ] && export DF_PROG="$DF_PROG -T"
|
|
|
|
export XFS_LOGPRINT_PROG="`set_prog_path xfs_logprint`"
|
|
export XFS_REPAIR_PROG="`set_prog_path xfs_repair`"
|
|
export XFS_CHECK_PROG="`set_prog_path xfs_check`"
|
|
export XFS_DB_PROG="`set_prog_path xfs_db`"
|
|
export XFS_GROWFS_PROG=`set_prog_path xfs_growfs`
|
|
export XFS_IO_PROG="`set_prog_path xfs_io`"
|
|
export XFS_PARALLEL_REPAIR_PROG="`set_prog_path xfs_prepair`"
|
|
export XFS_PARALLEL_REPAIR64_PROG="`set_prog_path xfs_prepair64`"
|
|
export XFSDUMP_PROG="`set_prog_path xfsdump`"
|
|
export XFSRESTORE_PROG="`set_prog_path xfsrestore`"
|
|
export XFSINVUTIL_PROG="`set_prog_path xfsinvutil`"
|
|
|
|
# Generate a comparable xfsprogs version number in the form of
|
|
# major * 10000 + minor * 100 + release
|
|
#
|
|
# $ xfs_db -V
|
|
# xfs_db version 2.9.7
|
|
#
|
|
# so, 2.9.7 = 20907
|
|
_version=`$XFS_DB_PROG -V | $AWK_PROG '
|
|
/version/ {
|
|
if (split($3,ver,".") == 3)
|
|
print (ver[1] * 10000) + (ver[2] * 100) + ver[3];
|
|
}'`
|
|
[ -z "$_version" ] && _fatal "xfsprogs version cannot be found"
|
|
export XFSPROGS_VERSION="$_version"
|
|
|
|
case "$HOSTOS" in
|
|
IRIX*)
|
|
export MKFS_XFS_PROG="`set_prog_path mkfs_xfs`"
|
|
export MKFS_UDF_PROG="`set_prog_path mkfs_udf`"
|
|
export XFS_FSR_PROG="`set_prog_path /usr/etc/fsr_xfs`"
|
|
export MKFS_NFS_PROG="false"
|
|
;;
|
|
Linux)
|
|
export MKFS_XFS_PROG="`set_prog_path mkfs.xfs`"
|
|
export MKFS_UDF_PROG="`set_prog_path mkudffs`"
|
|
export XFS_FSR_PROG="`set_prog_path xfs_fsr`"
|
|
export MKFS_NFS_PROG="false"
|
|
;;
|
|
esac
|
|
|
|
known_hosts()
|
|
{
|
|
[ "$HOST_CONFIG_DIR" ] || HOST_CONFIG_DIR=`pwd`/configs
|
|
|
|
[ -f /etc/xfsqa.config ] && . /etc/xfsqa.config
|
|
[ -f $HOST_CONFIG_DIR/$HOST ] && . $HOST_CONFIG_DIR/$HOST
|
|
[ -f $HOST_CONFIG_DIR/$HOST.config ] && . $HOST_CONFIG_DIR/$HOST.config
|
|
|
|
MC=""
|
|
# Non-Mandatory Config values.
|
|
# [ -z "$MODULAR" ] && MC="$MC MODULAR"
|
|
# [ -z "$TEST_LOGDEV" ] && MC="$MC TEST_LOGDEV"
|
|
# [ -z "$SCRATCH_LOGDEV" ] && MC="$MC SCRATCH_LOGDEV"
|
|
# [ -z "$SCRATCH_RTDEV" ] && MC="$MC SCRATCH_RTDEV"
|
|
|
|
[ -z "$EMAIL" ] && MC="$MC EMAIL"
|
|
[ -z "$TEST_DIR" ] && MC="$MC TEST_DIR"
|
|
[ -z "$TEST_DEV" ] && MC="$MC TEST_DEV"
|
|
|
|
[ -z "$SCRATCH_MNT" ] && MC="$MC SCRATCH_MNT"
|
|
[ -z "$SCRATCH_DEV" ] && MC="$MC SCRATCH_DEV"
|
|
|
|
[ "$MC" ] && (echo "Warning: need to define parameters for host $HOST";\
|
|
echo " or set variables:"; \
|
|
echo " $MC")
|
|
# if [ -e configs/$HOST.config ]
|
|
# then echo "Not carring, we have a configfile ($HOST_CONFIG_DIR/$HOST)"
|
|
# else
|
|
[ "$MC" ] && exit 1
|
|
# fi
|
|
}
|
|
|
|
if [ -f "$HOST_OPTIONS" ]; then
|
|
. "$HOST_OPTIONS"
|
|
else
|
|
known_hosts
|
|
fi
|
|
|
|
echo $TEST_DEV | grep -q ":" > /dev/null 2>&1
|
|
if [ ! -b "$TEST_DEV" -a "$?" != "0" ]; then
|
|
echo "common.config: Error: \$TEST_DEV ($TEST_DEV) is not a block device or a NFS filesystem"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d "$TEST_DIR" ]; then
|
|
echo "common.config: Error: \$TEST_DIR ($TEST_DIR) is not a directory"
|
|
exit 1
|
|
fi
|
|
|
|
echo $SCRATCH_DEV | grep -q ":" > /dev/null 2>&1
|
|
if [ ! -z "$SCRATCH_DEV" -a ! -b "$SCRATCH_DEV" -a "$?" != "0" ]; then
|
|
echo "common.config: Error: \$SCRATCH_DEV ($SCRATCH_DEV) is not a block device or a NFS filesystem"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -z "$SCRATCH_MNT" -a ! -d "$SCRATCH_MNT" ]; then
|
|
echo "common.config: Error: \$SCRATCH_MNT ($SCRATCH_MNT) is not a directory"
|
|
exit 1
|
|
fi
|
|
|
|
_readlink()
|
|
{
|
|
if [ $# -ne 1 ]; then
|
|
echo "Usage: _readlink filename" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
perl -e "\$in=\"$1\";" -e '
|
|
$lnk = readlink($in);
|
|
if ($lnk =~ m!^/.*!) {
|
|
print "$lnk\n";
|
|
}
|
|
else {
|
|
chomp($dir = `dirname $in`);
|
|
print "$dir/$lnk\n";
|
|
}'
|
|
}
|
|
|
|
# if devfs is running expand the full /dev/.. pathname - this is what will be
|
|
# returned by utilities such as mount
|
|
[ -L "$TEST_DEV" ] && TEST_DEV=`_readlink $TEST_DEV`
|
|
[ -L "$SCRATCH_DEV" ] && SCRATCH_DEV=`_readlink $SCRATCH_DEV`
|
|
[ -L "$SCRATCH_LOGDEV" ] && SCRATCH_LOGDEV=`_readlink $SCRATCH_LOGDEV`
|
|
[ -L "$SCRATCH_RTDEV" ] && SCRATCH_RTDEV=`_readlink $SCRATCH_LOGDEV`
|
|
|
|
# make sure this script returns success
|
|
/bin/true
|