xfs: test regression in xfs_bmap_validate_extent
[xfstests-dev.git] / tools / auto-qa
index f13dd8ec0328d0daa1b87fcb1dce72b0ae60d5e6..1beb2835916504bf08fb49910fb5ec1f03265c94 100755 (executable)
@@ -1,39 +1,13 @@
 #!/bin/sh
-#
+# SPDX-License-Identifier: GPL-2.0
 # Copyright (c) 2000-2003 Silicon Graphics, Inc.  All Rights Reserved.
-# 
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of version 2 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.
-# 
-# Further, this software is distributed without any warranty that it is
-# free of the rightful claim of any third person regarding infringement
-# or the like.  Any license provided herein, whether implied or
-# otherwise, applies only to this software file.  Patent licenses, if
-# any, provided herein do not apply to combinations of this program with
-# other software, or any other product whatsoever.
-# 
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write the Free Software Foundation, Inc., 59
-# Temple Place - Suite 330, Boston MA 02111-1307, USA.
-# 
-# Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
-# Mountain View, CA  94043, or:
-# 
-# http://www.sgi.com 
-# 
-# For further information regarding this notice, see: 
-# 
-# http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
 #
-
 # automatic qa system. 31/08/00 dxm@sgi.com
-
-# configuration (you could tune this)
+#
+# Usage: auto_qa start-state [stop-state]
+# Do auto_qa from start-state up to stop-state inclusive
+# or if no stop-state given then do it until reach "done" state.
+#
 
 _log()
 {
@@ -98,7 +72,7 @@ STATE=$ROOT/qa.state
 QADIR="$WORKAREA/xfstests"
 SUDO="su -c"
 CONFIG="$ROOT/$HOST.config"
-COMMON_CONFIG="$WORKAREA/xfstests/common.config"
+COMMON_CONFIG="$QADIR/common/config"
 SH="/bin/sh"
 LOG="$ROOT/qa.log"
 
@@ -139,6 +113,8 @@ _set_state()
 _change_state()
 {
     new=$1
+
+    # if have state XXXX-state then preserve XXXX-newstate
     
     case $state
     in
@@ -169,18 +145,6 @@ _restart()
     exec $ROOT/su -c "(shutdown -r now \"auto-qa rebooting\" )&" < /dev/null
 }
 
-_update_autoqa_file()
-{
-    SELF="$ROOT/auto-qa"
-    SELF_UPDATE="xfstests/tools/auto-qa"
-    if [ -z "$CVSROOT" ]; then
-           cmd="p_tupdate $SELF_UPDATE"
-    else
-           cmd="cvs -z3 update $SELF_UPDATE"
-    fi
-    exec $SH -c "cd $WORKAREA ; $cmd; chmod +x $SELF_UPDATE ; exec $SELF"
-}
-
 _update_workarea()
 {
     if [ -z "$CVSROOT" ]; then
@@ -189,11 +153,6 @@ _update_workarea()
        WORKAREA="$1" p_tupdate 2>&1 \
                        || _fail "          !!! p_tupdate failed"
 
-       _log "  *** p_check/p_purge"
-       cd "$1"
-       WORKAREA="$1" p_check -s | p_purge -yiu 2>&1 \
-                       || _fail "          !!! p_check/p_purge failed"
-
        _log "  *** non-trunk files"
        cd "$1"
        WORKAREA="$1" p_list -c 2>&1 \
@@ -228,7 +187,7 @@ _test_mount()
         TEST_OPTIONS="$TEST_OPTIONS -ortdev=$TEST_RTDEV"
     [ "$USE_EXTERNAL" = yes -a ! -z "$TEST_LOGDEV" ] && \
         TEST_OPTIONS="$TEST_OPTIONS -ologdev=$TEST_LOGDEV"
-    _sudo mount -t xfs $TEST_OPTIONS $* $TEST_DEV $TEST_DIR
+    _sudo mount -t xfs $TEST_OPTIONS $MOUNT_OPTIONS $* $TEST_DEV $TEST_DIR
 }
 
 _i386_install()
@@ -242,6 +201,7 @@ _i386_install()
                || _fail "          !!! install modules failed"
     fi
 
+
     if [ -z "$KINSTALL" -o "$KINSTALL" = lilo ]; then
        _log "  *** reinit lilo"
        _sudo /sbin/lilo 2>&1 \
@@ -267,6 +227,12 @@ _ia64_restart()
     echo not yet implemented
 }
 
+_check_kernel()
+{
+    [ -d "$KWORKAREA" ]        || _fail "    !!! QA kernel workarea \"$KWORKAREA\" not found"
+    [ -r "$CONFIG" ]   || _fail "    !!! Can't read config file $CONFIG"
+}
+
 
 _log "*** XFS QA (`date`)"
 
@@ -295,15 +261,13 @@ in
        ;;
 esac
 
-if [ "$1" != "" ]
-then
-    _set_state $1
-fi
+[ -n "$1" ] && _set_state $1
+[ -n "$2" ] && stop_state=$2
 
 [ "$UID" -eq 0 ]       && _fail "    !!! QA most be run as a normal user"
 [ -d "$ROOT" ]         || _fail "    !!! QA root \"$ROOT\" not found"
 [ -d "$WORKAREA" ]     || _fail "    !!! QA workarea \"$WORKAREA\" not found"
-[ -r "$CONFIG" ]       || _fail "    !!! Can't read config file $CONFIG"
+cd $QADIR
 . "$COMMON_CONFIG"     || _fail "    !!! Couldn't source $COMMON_CONFIG"
 
 _get_kernel_version
@@ -324,6 +288,8 @@ do
     _log "     (user=$USER, host=$HOST)"
     new_state=""
 
+    start_state=$state
+
     case $state
     in
        *init)
@@ -332,28 +298,17 @@ do
            _log "******************************************************"
            _log "QA init $VERSION (`date`)"
            _log "******************************************************"
-           _log "--- kernel ($IMAGE)"
-           [ -z "$KMODULES" -o "$KMODULES" = yes ] && \
-               _log "--- modules ($MODULES)"
-
-           _change_state "inited"
-           _update_autoqa_file
-           ;;
-           
-       *inited)
-           _log "      *** QA initialized"
-           new_state="update"
+           new_state="updatetools"
            ;;
        
-       *update)
-           _update_workarea "$KWORKAREA"
+       *updatetools)
            _update_workarea "$WORKAREA"
            new_state="cleantools"
            ;;
 
        *cleantools)
            # we need to configure or else we might fail to clean
-           for pkg in attr acl xfsprogs dmapi xfsdump xfstests
+           for pkg in attr acl xfsprogs xfsdump xfstests
            do
                [ -d $WORKAREA/$pkg ] || continue
                cd $WORKAREA/$pkg
@@ -366,12 +321,11 @@ do
 
        *buildtools)
            _log "      *** build and install tools"
-           for pkg in attr acl xfsprogs dmapi xfsdump xfstests 
+           for pkg in attr acl xfsprogs xfsdump xfstests 
            do
                [ -d $WORKAREA/$pkg ] || continue
                cd $WORKAREA/$pkg
 
-               # use e-fence - but this will only take effect on configure
                make configure 2>&1 \
                        || _fail "          !!! configure $pkg failed"
                make default 2>&1 \
@@ -386,10 +340,17 @@ do
                        || _fail "          !!! install $pkg failed"
            done
 
+           new_state="updatekernel"
+           ;;
+
+       *updatekernel)
+           _check_kernel
+           _update_workarea "$KWORKAREA"
            new_state="cleankernel"
            ;;
 
        *cleankernel)
+           _check_kernel
            _log "      *** clean kernel"
            cd "$KWORKAREA"
            make mrproper 2>&1 \
@@ -407,7 +368,7 @@ do
            ;;
            
        *reconfig)
-       
+           _check_kernel
            _log "      *** reconfig kernel"
            
            # we better start from scratch if this fails
@@ -425,9 +386,13 @@ do
            ;;
            
        *buildkernel)
+           _check_kernel
            _log "      *** build kernel"
+           _log "          --- kernel ($IMAGE)"
+           [ -z "$KMODULES" -o "$KMODULES" = yes ] && \
+            _log "          --- modules ($MODULES)"
            
-           _change_state "clean" ; # we better start from scratch if this fails
+           _change_state "cleankernel" ; # we better start from scratch if this fails
            
            cd "$KWORKAREA"
            [ -z "$KTARGET" ] && KTARGET=bzImage
@@ -439,6 +404,7 @@ do
            ;;
 
        *install)
+           _check_kernel
            _log "      *** blat old modules"
            _sudo rm -rf $MODULES
            
@@ -450,11 +416,7 @@ do
                ia64)           _ia64_install ;;
            esac
 
-           if [ -z "$KRESTART" -o "$KRESTART" = yes ]; then
-               new_state="restart"
-           else
-               new_state="done"
-           fi
+           new_state="restart"
            ;;
            
        *restart)
@@ -570,7 +532,7 @@ do
            ;;
            
        *done)
-           _log "*** QA run complete"
+           _log "*** requested QA state transitions complete"
 
            _success
            ;;
@@ -587,6 +549,20 @@ do
 
     _log "    *** state $state done (`date`)"
     [ "$new_state" = "" ] && _fail "    !!! no new state set"
+
+    if [ -n "$stop_state" ]
+    then
+        # remove hyphen prefixes
+       s1=`echo $start_state | sed 's/.*-//'`
+       s2=`echo $stop_state | sed 's/.*-//'`
+
+       if [ $s1 = $s2 ]
+       then
+           # we have been requested to stop here and not go on
+           new_state="done"
+       fi
+    fi
+
     _change_state $new_state
     
 done