From: Dave Chinner <david@fromorbit.com>
To: xfs@oss.sgi.com
Subject: [PATCH 05/25] xfstests: fold common into check
Date: Fri, 15 Mar 2013 23:27:49 +1100 [thread overview]
Message-ID: <1363350489-22257-6-git-send-email-david@fromorbit.com> (raw)
In-Reply-To: <1363350489-22257-1-git-send-email-david@fromorbit.com>
From: Dave Chinner <dchinner@redhat.com>
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>
---
check | 313 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
common | 334 ----------------------------------------------------------------
2 files changed, 311 insertions(+), 336 deletions(-)
delete mode 100644 common
diff --git a/check b/check
index 9a5b256..57c143a 100755
--- a/check
+++ b/check
@@ -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
diff --git a/common b/common
deleted file mode 100644
index 78ac654..0000000
--- a/common
+++ /dev/null
@@ -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
--
1.7.10.4
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2013-03-15 12:28 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-15 12:27 [PATCH 00/25] xfstests: xfstests: move tests out of top level Dave Chinner
2013-03-15 12:27 ` [PATCH 01/25] xfstests: remove remake script Dave Chinner
2013-03-22 16:51 ` Phil White
2013-03-15 12:27 ` [PATCH 02/25] xfstests: remove bench infrastructure Dave Chinner
2013-03-15 19:36 ` Phil White
2013-03-19 22:31 ` Dave Chinner
2013-03-21 23:52 ` Phil White
2013-03-22 7:37 ` Dave Chinner
2013-03-22 16:22 ` Troy McCorkell
2013-03-26 20:26 ` Troy McCorkell
2013-03-22 16:53 ` Phil White
2013-03-15 12:27 ` [PATCH 03/25] xfstests: kill useless test owner fields Dave Chinner
2013-03-22 16:57 ` Phil White
2013-03-15 12:27 ` [PATCH 04/25] xfstests: remove stale machine configs Dave Chinner
2013-03-22 17:02 ` Phil White
2013-03-15 12:27 ` Dave Chinner [this message]
2013-03-23 10:18 ` [PATCH 05/25] xfstests: fold common into check Phil White
2013-03-15 12:27 ` [PATCH 06/25] xfstests: clean up and simply check CLI option parsing Dave Chinner
2013-03-23 10:19 ` Phil White
2013-03-15 12:27 ` [PATCH 07/25] xfstests: kill hangcheck stuff from check Dave Chinner
2013-03-23 10:19 ` Phil White
2013-03-15 12:27 ` [PATCH 08/25] xfstests: remove test expunge file support Dave Chinner
2013-03-23 10:19 ` Phil White
2013-03-15 12:27 ` [PATCH 09/25] xfstests: remove undocumented TESTS_REMAINING_LOG Dave Chinner
2013-03-23 10:20 ` Phil White
2013-03-15 12:27 ` [PATCH 10/25] xfstests: include test subdirectory support Dave Chinner
2013-03-23 10:20 ` Phil White
2013-03-15 12:27 ` [PATCH 11/25] xfstests: remove 285.full and 286.full Dave Chinner
2013-03-23 10:20 ` Phil White
2013-03-15 12:27 ` [PATCH 12/25] xfstests: move generic tests out of top level dir Dave Chinner
2013-03-23 10:22 ` Phil White
2013-03-15 12:27 ` [PATCH 13/25] xfstests: move xfs specific tests out of top directory Dave Chinner
2013-03-23 10:22 ` Phil White
2013-03-15 12:27 ` [PATCH 14/25] xfstests: move remaining tests out of top level directory Dave Chinner
2013-03-23 10:23 ` Phil White
2013-03-15 12:27 ` [PATCH 15/25] xfstests: rework CLI individual test specification Dave Chinner
2013-03-23 10:23 ` Phil White
2013-03-15 12:28 ` [PATCH 16/25] xfstests: make exclude groups aware of multiple subdirectories Dave Chinner
2013-03-23 10:23 ` Phil White
2013-03-15 12:28 ` [PATCH 17/25] xfstests: Introduce a results directory Dave Chinner
2013-03-23 10:23 ` Phil White
2013-03-15 12:28 ` [PATCH 18/25] xfstests: convert tests to use new " Dave Chinner
2013-03-23 10:24 ` Phil White
2013-03-15 12:28 ` [PATCH 19/25] xfstests: fix _link_out_file callers Dave Chinner
2013-03-23 10:24 ` Phil White
2013-03-15 12:28 ` [PATCH 20/25] xfstests: introduce a common directory Dave Chinner
2013-03-23 10:24 ` Phil White
2013-03-15 12:28 ` [PATCH 21/25] xfstests: Reintroduce configurable test expunging Dave Chinner
2013-03-23 10:24 ` Phil White
2013-03-15 12:28 ` [PATCH 22/25] xfstests: RESULTS_DIR needs to be an absolute path Dave Chinner
2013-03-23 10:24 ` Phil White
2013-03-15 12:28 ` [PATCH 23/25] xfstests: Decomplicate quota setup in 050 Dave Chinner
2013-03-23 10:24 ` Phil White
2013-03-15 12:28 ` [PATCH 24/25] xfstests: clean up test 262 output file use Dave Chinner
2013-03-23 10:24 ` Phil White
2013-03-15 12:28 ` [PATCH 25/25] xfstests: use _notrun for tape checks Dave Chinner
2013-03-23 10:24 ` Phil White
2013-03-27 10:51 ` [PATCH 00/25] xfstests: xfstests: move tests out of top level Rich Johnston
2013-03-27 10:51 ` Rich Johnston
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1363350489-22257-6-git-send-email-david@fromorbit.com \
--to=david@fromorbit.com \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox