xfs
[Top] [All Lists]

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

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: [PATCH 05/25] xfstests: fold common into check
From: Phil White <pwhite@xxxxxxx>
Date: Sat, 23 Mar 2013 03:18:29 -0700
Cc: xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <1363350489-22257-6-git-send-email-david@xxxxxxxxxxxxx>
References: <1363350489-22257-1-git-send-email-david@xxxxxxxxxxxxx> <1363350489-22257-6-git-send-email-david@xxxxxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
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

<Prev in Thread] Current Thread [Next in Thread>