Re: [PATCH 05/25] xfstests: fold common into check

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Looks OK by me.

Reviewed-by: Phil White <pwhite@xxxxxxx>

On Fri, Mar 15, 2013 at 11:27:49PM +1100, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> 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@xxxxxxxxxx>
> ---
>  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@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs




[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux