mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
xfstests: fold common into check
There is only one user of the common file now - check. Fold the two into one file as the split of functionality is not necessary anymore. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
This commit is contained in:
committed by
Rich Johnston
parent
b9e446cbdf
commit
6b29d72898
@@ -46,9 +46,318 @@ then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# we need common
|
||||
. ./common
|
||||
# argument parsing first - currently very messy, needs cleanup.
|
||||
_setenvironment()
|
||||
{
|
||||
MSGVERB="text:action"
|
||||
export MSGVERB
|
||||
}
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 [options] [testlist]"'
|
||||
|
||||
common options
|
||||
-v verbose
|
||||
|
||||
check options
|
||||
-xfs test XFS (default)
|
||||
-udf test UDF
|
||||
-nfs test NFS
|
||||
-l line mode diff
|
||||
-xdiff graphical mode diff
|
||||
-udiff show unified diff (default)
|
||||
-n show me, do not run tests
|
||||
-q quick [deprecated]
|
||||
-T output timestamps
|
||||
-r randomize test order
|
||||
--large-fs optimise scratch device for large filesystems
|
||||
|
||||
testlist options
|
||||
-g group[,group...] include tests from these groups
|
||||
-x group[,group...] exclude tests from these groups
|
||||
NNN include test NNN
|
||||
NNN-NNN include test range (eg. 012-021)
|
||||
'
|
||||
exit 0
|
||||
}
|
||||
|
||||
here=`pwd`
|
||||
rm -f $here/$iam.out
|
||||
_setenvironment
|
||||
|
||||
check=${check-true}
|
||||
|
||||
diff="diff -u"
|
||||
verbose=false
|
||||
group=false
|
||||
xgroup=false
|
||||
showme=false
|
||||
sortme=false
|
||||
expunge=true
|
||||
have_test_arg=false
|
||||
randomize=false
|
||||
rm -f $tmp.list $tmp.tmp $tmp.sed
|
||||
|
||||
# Autodetect fs type based on what's on $TEST_DEV
|
||||
if [ "$HOSTOS" == "Linux" ]
|
||||
then
|
||||
export FSTYP=`blkid -c /dev/null -s TYPE -o value $TEST_DEV`
|
||||
else
|
||||
export FSTYP=xfs
|
||||
fi
|
||||
|
||||
for r
|
||||
do
|
||||
|
||||
if $group
|
||||
then
|
||||
# arg after -g
|
||||
group_list=$(sed -n < group \
|
||||
-e 's/#.*//' \
|
||||
-e 's/$/ /' \
|
||||
-e "/^[0-9][0-9][0-9].* $r /"'{ s/ .*//p }')
|
||||
if [ -z "$group_list" ]
|
||||
then
|
||||
echo "Group \"$r\" is empty or not defined?"
|
||||
exit 1
|
||||
fi
|
||||
[ ! -s $tmp.list ] && touch $tmp.list
|
||||
for t in $group_list
|
||||
do
|
||||
if grep -s "^$t\$" $tmp.list >/dev/null
|
||||
then
|
||||
:
|
||||
else
|
||||
echo "$t" >>$tmp.list
|
||||
fi
|
||||
done
|
||||
group=false
|
||||
continue
|
||||
|
||||
elif $xgroup
|
||||
then
|
||||
# arg after -x
|
||||
[ ! -s $tmp.list ] && ls [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] >$tmp.list 2>/dev/null
|
||||
group_list=`sed -n <group -e 's/$/ /' -e "/^[0-9][0-9][0-9].* $r /"'{
|
||||
s/ .*//p
|
||||
}'`
|
||||
if [ -z "$group_list" ]
|
||||
then
|
||||
echo "Group \"$r\" is empty or not defined?"
|
||||
exit 1
|
||||
fi
|
||||
numsed=0
|
||||
rm -f $tmp.sed
|
||||
for t in $group_list
|
||||
do
|
||||
if [ $numsed -gt 100 ]
|
||||
then
|
||||
sed -f $tmp.sed <$tmp.list >$tmp.tmp
|
||||
mv $tmp.tmp $tmp.list
|
||||
numsed=0
|
||||
rm -f $tmp.sed
|
||||
fi
|
||||
echo "/^$t\$/d" >>$tmp.sed
|
||||
numsed=`expr $numsed + 1`
|
||||
done
|
||||
sed -f $tmp.sed <$tmp.list >$tmp.tmp
|
||||
mv $tmp.tmp $tmp.list
|
||||
xgroup=false
|
||||
continue
|
||||
fi
|
||||
|
||||
xpand=true
|
||||
case "$r"
|
||||
in
|
||||
|
||||
-\? | -h | --help) # usage
|
||||
usage
|
||||
;;
|
||||
|
||||
-udf) # -udf ... set FSTYP to udf
|
||||
FSTYP=udf
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-xfs) # -xfs ... set FSTYP to xfs
|
||||
FSTYP=xfs
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-nfs) # -nfs ... set FSTYP to nfs
|
||||
FSTYP=nfs
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-g) # -g group ... pick from group file
|
||||
group=true
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-l) # line mode for diff, was default before
|
||||
diff="diff"
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-xdiff) # graphical diff mode
|
||||
xpand=false
|
||||
|
||||
if [ ! -z "$DISPLAY" ]
|
||||
then
|
||||
which xdiff >/dev/null 2>&1 && diff=xdiff
|
||||
which gdiff >/dev/null 2>&1 && diff=gdiff
|
||||
which tkdiff >/dev/null 2>&1 && diff=tkdiff
|
||||
which xxdiff >/dev/null 2>&1 && diff=xxdiff
|
||||
fi
|
||||
;;
|
||||
|
||||
-udiff) # show a unified diff, default now, keep for backward compat
|
||||
xpand=false
|
||||
diff="$diff -u"
|
||||
;;
|
||||
|
||||
-q) # "quick", no longer used - always quick :-)
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-n) # show me, don't do it
|
||||
showme=true
|
||||
xpand=false
|
||||
;;
|
||||
-r) # randomize test order
|
||||
randomize=true
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-T) # turn on timestamp output
|
||||
timestamp=true
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-v)
|
||||
verbose=true
|
||||
xpand=false
|
||||
;;
|
||||
-x) # -x group ... exclude from group file
|
||||
xgroup=true
|
||||
xpand=false
|
||||
;;
|
||||
'[0-9][0-9][0-9] [0-9][0-9][0-9][0-9]')
|
||||
echo "No tests?"
|
||||
status=1
|
||||
exit $status
|
||||
;;
|
||||
|
||||
[0-9]*-[0-9]*)
|
||||
eval `echo $r | sed -e 's/^/start=/' -e 's/-/ end=/'`
|
||||
;;
|
||||
|
||||
[0-9]*-)
|
||||
eval `echo $r | sed -e 's/^/start=/' -e 's/-//'`
|
||||
end=`echo [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] | sed -e 's/\[0-9]//g' -e 's/ *$//' -e 's/.* //'`
|
||||
if [ -z "$end" ]
|
||||
then
|
||||
echo "No tests in range \"$r\"?"
|
||||
status=1
|
||||
exit $status
|
||||
fi
|
||||
;;
|
||||
|
||||
--large-fs)
|
||||
export LARGE_SCRATCH_DEV=yes
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-*)
|
||||
usage
|
||||
;;
|
||||
|
||||
--extra-space=*)
|
||||
export SCRATCH_DEV_EMPTY_SPACE=${r#*=}
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
*)
|
||||
start=$r
|
||||
end=$r
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
# get rid of leading 0s as can be interpreted as octal
|
||||
start=`echo $start | sed 's/^0*//'`
|
||||
end=`echo $end | sed 's/^0*//'`
|
||||
|
||||
if $xpand
|
||||
then
|
||||
have_test_arg=true
|
||||
$AWK_PROG </dev/null '
|
||||
BEGIN { for (t='$start'; t<='$end'; t++) printf "%03d\n",t }' \
|
||||
| while read id
|
||||
do
|
||||
if grep -s "^$id " group >/dev/null
|
||||
then
|
||||
# in group file ... OK
|
||||
echo $id >>$tmp.list
|
||||
else
|
||||
if [ -f expunged ] && $expunge && egrep "^$id([ ]|\$)" expunged >/dev/null
|
||||
then
|
||||
# expunged ... will be reported, but not run, later
|
||||
echo $id >>$tmp.list
|
||||
else
|
||||
# oops
|
||||
echo "$id - unknown test, ignored"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
if [ -s $tmp.list ]
|
||||
then
|
||||
# found some valid test numbers ... this is good
|
||||
:
|
||||
else
|
||||
if $have_test_arg
|
||||
then
|
||||
# had test numbers, but none in group file ... do nothing
|
||||
touch $tmp.list
|
||||
else
|
||||
# no test numbers, do everything from group file
|
||||
sed -n -e '/^[0-9][0-9][0-9]*/s/[ ].*//p' <group >$tmp.list
|
||||
fi
|
||||
fi
|
||||
|
||||
# should be sort -n, but this did not work for Linux when this
|
||||
# was ported from IRIX
|
||||
#
|
||||
list=`sort $tmp.list`
|
||||
rm -f $tmp.list $tmp.tmp $tmp.sed
|
||||
|
||||
if $randomize
|
||||
then
|
||||
list=`echo $list | awk -f randomize.awk`
|
||||
fi
|
||||
|
||||
case "$FSTYP" in
|
||||
xfs)
|
||||
[ "$XFS_LOGPRINT_PROG" = "" ] && _fatal "xfs_logprint not found"
|
||||
[ "$XFS_REPAIR_PROG" = "" ] && _fatal "xfs_repair not found"
|
||||
[ "$XFS_CHECK_PROG" = "" ] && _fatal "xfs_check not found"
|
||||
[ "$XFS_DB_PROG" = "" ] && _fatal "xfs_db not found"
|
||||
[ "$MKFS_XFS_PROG" = "" ] && _fatal "mkfs_xfs not found"
|
||||
;;
|
||||
udf)
|
||||
[ "$MKFS_UDF_PROG" = "" ] && _fatal "mkfs_udf/mkudffs not found"
|
||||
;;
|
||||
btrfs)
|
||||
[ "$MKFS_BTRFS_PROG" = "" ] && _fatal "mkfs.btrfs not found"
|
||||
;;
|
||||
nfs)
|
||||
;;
|
||||
esac
|
||||
|
||||
# we need common.rc
|
||||
if ! . ./common.rc
|
||||
|
||||
@@ -1,334 +0,0 @@
|
||||
##/bin/bash
|
||||
#
|
||||
# Copyright (c) 2000-2005 Silicon Graphics, Inc. All Rights Reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it would be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
#
|
||||
# common procedures for QA scripts
|
||||
#
|
||||
# $Header: /disk7/depot/linux/pcp/dev/qa/RCS/common,v 2.52 2000/04/05 18:24:51 kenmcd Exp $
|
||||
#
|
||||
|
||||
_setenvironment()
|
||||
{
|
||||
MSGVERB="text:action"
|
||||
export MSGVERB
|
||||
}
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 [options] [testlist]"'
|
||||
|
||||
common options
|
||||
-v verbose
|
||||
|
||||
check options
|
||||
-xfs test XFS (default)
|
||||
-udf test UDF
|
||||
-nfs test NFS
|
||||
-l line mode diff
|
||||
-xdiff graphical mode diff
|
||||
-udiff show unified diff (default)
|
||||
-n show me, do not run tests
|
||||
-q quick [deprecated]
|
||||
-T output timestamps
|
||||
-r randomize test order
|
||||
--large-fs optimise scratch device for large filesystems
|
||||
|
||||
testlist options
|
||||
-g group[,group...] include tests from these groups
|
||||
-x group[,group...] exclude tests from these groups
|
||||
NNN include test NNN
|
||||
NNN-NNN include test range (eg. 012-021)
|
||||
'
|
||||
exit 0
|
||||
}
|
||||
|
||||
here=`pwd`
|
||||
rm -f $here/$iam.out
|
||||
_setenvironment
|
||||
|
||||
check=${check-true}
|
||||
|
||||
diff="diff -u"
|
||||
verbose=false
|
||||
group=false
|
||||
xgroup=false
|
||||
showme=false
|
||||
sortme=false
|
||||
expunge=true
|
||||
have_test_arg=false
|
||||
randomize=false
|
||||
rm -f $tmp.list $tmp.tmp $tmp.sed
|
||||
|
||||
# Autodetect fs type based on what's on $TEST_DEV
|
||||
if [ "$HOSTOS" == "Linux" ]
|
||||
then
|
||||
export FSTYP=`blkid -c /dev/null -s TYPE -o value $TEST_DEV`
|
||||
else
|
||||
export FSTYP=xfs
|
||||
fi
|
||||
|
||||
for r
|
||||
do
|
||||
|
||||
if $group
|
||||
then
|
||||
# arg after -g
|
||||
group_list=$(sed -n < group \
|
||||
-e 's/#.*//' \
|
||||
-e 's/$/ /' \
|
||||
-e "/^[0-9][0-9][0-9].* $r /"'{ s/ .*//p }')
|
||||
if [ -z "$group_list" ]
|
||||
then
|
||||
echo "Group \"$r\" is empty or not defined?"
|
||||
exit 1
|
||||
fi
|
||||
[ ! -s $tmp.list ] && touch $tmp.list
|
||||
for t in $group_list
|
||||
do
|
||||
if grep -s "^$t\$" $tmp.list >/dev/null
|
||||
then
|
||||
:
|
||||
else
|
||||
echo "$t" >>$tmp.list
|
||||
fi
|
||||
done
|
||||
group=false
|
||||
continue
|
||||
|
||||
elif $xgroup
|
||||
then
|
||||
# arg after -x
|
||||
[ ! -s $tmp.list ] && ls [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] >$tmp.list 2>/dev/null
|
||||
group_list=`sed -n <group -e 's/$/ /' -e "/^[0-9][0-9][0-9].* $r /"'{
|
||||
s/ .*//p
|
||||
}'`
|
||||
if [ -z "$group_list" ]
|
||||
then
|
||||
echo "Group \"$r\" is empty or not defined?"
|
||||
exit 1
|
||||
fi
|
||||
numsed=0
|
||||
rm -f $tmp.sed
|
||||
for t in $group_list
|
||||
do
|
||||
if [ $numsed -gt 100 ]
|
||||
then
|
||||
sed -f $tmp.sed <$tmp.list >$tmp.tmp
|
||||
mv $tmp.tmp $tmp.list
|
||||
numsed=0
|
||||
rm -f $tmp.sed
|
||||
fi
|
||||
echo "/^$t\$/d" >>$tmp.sed
|
||||
numsed=`expr $numsed + 1`
|
||||
done
|
||||
sed -f $tmp.sed <$tmp.list >$tmp.tmp
|
||||
mv $tmp.tmp $tmp.list
|
||||
xgroup=false
|
||||
continue
|
||||
fi
|
||||
|
||||
xpand=true
|
||||
case "$r"
|
||||
in
|
||||
|
||||
-\? | -h | --help) # usage
|
||||
usage
|
||||
;;
|
||||
|
||||
-udf) # -udf ... set FSTYP to udf
|
||||
FSTYP=udf
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-xfs) # -xfs ... set FSTYP to xfs
|
||||
FSTYP=xfs
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-nfs) # -nfs ... set FSTYP to nfs
|
||||
FSTYP=nfs
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-g) # -g group ... pick from group file
|
||||
group=true
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-l) # line mode for diff, was default before
|
||||
diff="diff"
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-xdiff) # graphical diff mode
|
||||
xpand=false
|
||||
|
||||
if [ ! -z "$DISPLAY" ]
|
||||
then
|
||||
which xdiff >/dev/null 2>&1 && diff=xdiff
|
||||
which gdiff >/dev/null 2>&1 && diff=gdiff
|
||||
which tkdiff >/dev/null 2>&1 && diff=tkdiff
|
||||
which xxdiff >/dev/null 2>&1 && diff=xxdiff
|
||||
fi
|
||||
;;
|
||||
|
||||
-udiff) # show a unified diff, default now, keep for backward compat
|
||||
xpand=false
|
||||
diff="$diff -u"
|
||||
;;
|
||||
|
||||
-q) # "quick", no longer used - always quick :-)
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-n) # show me, don't do it
|
||||
showme=true
|
||||
xpand=false
|
||||
;;
|
||||
-r) # randomize test order
|
||||
randomize=true
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-T) # turn on timestamp output
|
||||
timestamp=true
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-v)
|
||||
verbose=true
|
||||
xpand=false
|
||||
;;
|
||||
-x) # -x group ... exclude from group file
|
||||
xgroup=true
|
||||
xpand=false
|
||||
;;
|
||||
'[0-9][0-9][0-9] [0-9][0-9][0-9][0-9]')
|
||||
echo "No tests?"
|
||||
status=1
|
||||
exit $status
|
||||
;;
|
||||
|
||||
[0-9]*-[0-9]*)
|
||||
eval `echo $r | sed -e 's/^/start=/' -e 's/-/ end=/'`
|
||||
;;
|
||||
|
||||
[0-9]*-)
|
||||
eval `echo $r | sed -e 's/^/start=/' -e 's/-//'`
|
||||
end=`echo [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] | sed -e 's/\[0-9]//g' -e 's/ *$//' -e 's/.* //'`
|
||||
if [ -z "$end" ]
|
||||
then
|
||||
echo "No tests in range \"$r\"?"
|
||||
status=1
|
||||
exit $status
|
||||
fi
|
||||
;;
|
||||
|
||||
--large-fs)
|
||||
export LARGE_SCRATCH_DEV=yes
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
-*)
|
||||
usage
|
||||
;;
|
||||
|
||||
--extra-space=*)
|
||||
export SCRATCH_DEV_EMPTY_SPACE=${r#*=}
|
||||
xpand=false
|
||||
;;
|
||||
|
||||
*)
|
||||
start=$r
|
||||
end=$r
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
# get rid of leading 0s as can be interpreted as octal
|
||||
start=`echo $start | sed 's/^0*//'`
|
||||
end=`echo $end | sed 's/^0*//'`
|
||||
|
||||
if $xpand
|
||||
then
|
||||
have_test_arg=true
|
||||
$AWK_PROG </dev/null '
|
||||
BEGIN { for (t='$start'; t<='$end'; t++) printf "%03d\n",t }' \
|
||||
| while read id
|
||||
do
|
||||
if grep -s "^$id " group >/dev/null
|
||||
then
|
||||
# in group file ... OK
|
||||
echo $id >>$tmp.list
|
||||
else
|
||||
if [ -f expunged ] && $expunge && egrep "^$id([ ]|\$)" expunged >/dev/null
|
||||
then
|
||||
# expunged ... will be reported, but not run, later
|
||||
echo $id >>$tmp.list
|
||||
else
|
||||
# oops
|
||||
echo "$id - unknown test, ignored"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
if [ -s $tmp.list ]
|
||||
then
|
||||
# found some valid test numbers ... this is good
|
||||
:
|
||||
else
|
||||
if $have_test_arg
|
||||
then
|
||||
# had test numbers, but none in group file ... do nothing
|
||||
touch $tmp.list
|
||||
else
|
||||
# no test numbers, do everything from group file
|
||||
sed -n -e '/^[0-9][0-9][0-9]*/s/[ ].*//p' <group >$tmp.list
|
||||
fi
|
||||
fi
|
||||
|
||||
# should be sort -n, but this did not work for Linux when this
|
||||
# was ported from IRIX
|
||||
#
|
||||
list=`sort $tmp.list`
|
||||
rm -f $tmp.list $tmp.tmp $tmp.sed
|
||||
|
||||
if $randomize
|
||||
then
|
||||
list=`echo $list | awk -f randomize.awk`
|
||||
fi
|
||||
|
||||
case "$FSTYP" in
|
||||
xfs)
|
||||
[ "$XFS_LOGPRINT_PROG" = "" ] && _fatal "xfs_logprint not found"
|
||||
[ "$XFS_REPAIR_PROG" = "" ] && _fatal "xfs_repair not found"
|
||||
[ "$XFS_CHECK_PROG" = "" ] && _fatal "xfs_check not found"
|
||||
[ "$XFS_DB_PROG" = "" ] && _fatal "xfs_db not found"
|
||||
[ "$MKFS_XFS_PROG" = "" ] && _fatal "mkfs_xfs not found"
|
||||
;;
|
||||
udf)
|
||||
[ "$MKFS_UDF_PROG" = "" ] && _fatal "mkfs_udf/mkudffs not found"
|
||||
;;
|
||||
btrfs)
|
||||
[ "$MKFS_BTRFS_PROG" = "" ] && _fatal "mkfs.btrfs not found"
|
||||
;;
|
||||
nfs)
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user