#!/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()
{
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"
_change_state()
{
new=$1
+
+ # if have state XXXX-state then preserve XXXX-newstate
case $state
in
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
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()
|| _fail " !!! install modules failed"
fi
+
if [ -z "$KINSTALL" -o "$KINSTALL" = lilo ]; then
_log " *** reinit lilo"
_sudo /sbin/lilo 2>&1 \
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`)"
;;
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
_log " (user=$USER, host=$HOST)"
new_state=""
+ start_state=$state
+
case $state
in
*init)
_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"
;;
[ -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 \
|| _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 \
;;
*reconfig)
-
+ _check_kernel
_log " *** reconfig kernel"
# we better start from scratch if this fails
;;
*buildkernel)
+ _check_kernel
_log " *** build kernel"
+ _log " --- kernel ($IMAGE)"
+ [ -z "$KMODULES" -o "$KMODULES" = yes ] && \
+ _log " --- modules ($MODULES)"
_change_state "cleankernel" ; # we better start from scratch if this fails
;;
*install)
+ _check_kernel
_log " *** blat old modules"
_sudo rm -rf $MODULES
ia64) _ia64_install ;;
esac
- if [ -z "$KRESTART" -o "$KRESTART" = yes ]; then
- new_state="restart"
- else
- new_state="done"
- fi
+ new_state="restart"
;;
*restart)
;;
*done)
- _log "*** QA run complete"
+ _log "*** requested QA state transitions complete"
_success
;;
_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