cosmetic change to the status email subject line.
[xfstests-dev.git] / tools / auto-qa
index 06851e584d9e7a7f319a15a9f0d2727a9dded209..b51b58145529bae0acdc4b4a021c47fd88d5a6d7 100755 (executable)
 
 # automatic qa system. 31/08/00 dxm@sgi.com
 
+# configuration (you could tune this)
+
+EXTRA="-xfs-qa"
+BOOT="/boot"
+SOAK_PASSES="-1"
+SOAK_STRESS="10000"
+SOAK_PROC="3"
+export MKFS_OPTIONS=${MKFS_OPTIONS:=-bsize=4096}
+export MOUNT_OPTIONS=${MOUNT_OPTIONS:=-ologbufs=2}
+
 _log()
 {
     echo "$*" >&2
@@ -53,7 +63,7 @@ _fail()
     case $state
     in
         cron*)
-            mail -s "xfs qa status report" $ADMINEMAIL \
+            mail -s "XFS QA status report" $ADMINEMAIL \
                 < $LOG 2>&1
        ;;
     esac
@@ -62,14 +72,24 @@ _fail()
     exit 1
 }
 
-# configuration (you could tune this)
-
-EXTRA="-xfs-qa"
-VERSION="2.4.0"
-BOOT="/boot"
-SOAK_PASSES="-1"
-SOAK_STRESS="10000"
-SOAK_PROC="3"
+_get_kernel_version()
+{
+    [ -x "$WORKAREA" ] \
+        || _fail "can't access workarea $WORKAREA"
+    [ -r "$WORKAREA/linux/Makefile" ] \
+        || _fail "can't read makefile $WORKAREA/linux/Makefile"
+
+    eval `awk '
+        BEGIN { FS = "[ \t=]+" }
+        /^VERSION =/ { a=$2 }
+        /^PATCHLEVEL =/ { b=$2 }
+        /^SUBLEVEL =/ { c=$2 }
+        /^EXTRAVERSION =/ { d=$2 }
+       END { 
+           print "VERSION=" a "." b "." c d " ; SVERSION=" a "." b "." c
+        }
+   ' < $WORKAREA/linux/Makefile`
+}
 
 # this should be constant
 
@@ -82,14 +102,12 @@ else
 fi
 export WORKAREA
 
+
 export PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin/ptools:/usr/local/bin"
 STATE=$ROOT/qa.state
 QADIR="$WORKAREA/cmd/xfstests"
 SUDO="su -c"
-IMAGE="$BOOT/vmlinuz-$VERSION$EXTRA"
-SYSTEMMAP="$BOOT/System.map-$VERSION$EXTRA"
-CONFIG="$ROOT/$HOST-$VERSION$EXTRA.config"
-MODULES="/lib/modules/$VERSION$EXTRA"
+CONFIG="$ROOT/$HOST.config"
 COMMON_CONFIG="$WORKAREA/cmd/xfstests/common.config"
 SH="/bin/sh"
 LOG="$ROOT/qa.log"
@@ -98,30 +116,25 @@ LOG="$ROOT/qa.log"
 
 case $HOST
 in
-    fuzzy)
-        EMAIL="dxm@larry"
-        ADMINEMAIL="dxm@larry"
-        MODULAR=1
-        ;;
     bruce)
-        EMAIL="dxm@larry"
-        ADMINEMAIL="dxm@larry"
-        MODULAR=1
+        EMAIL="nathans@larry"
+        ADMINEMAIL="nathans@larry"
+        MODULAR=0
         ;;
     sagan)
-        EMAIL="dxm@larry"
-        ADMINEMAIL="dxm@larry"
-        MODULAR=0
+        EMAIL="tes@larry"
+        ADMINEMAIL="tes@larry"
+        MODULAR=1
         ;;
     troppo)
-       EMAIL="nathans@larry"
-       ADMINEMAIL="nathans@larry"
+       EMAIL="kaos@larry"
+       ADMINEMAIL="kaos@larry"
        MODULAR=0
        ;;
-    goldfish)
+    frodo)
        EMAIL="nathans@larry"
        ADMINEMAIL="nathans@larry"
-       MODULAR=1
+       MODULAR=0
        ;;
     *)
         _fail "auto-qa: no configuration information for host '$HOST'"
@@ -192,7 +205,7 @@ _sudo()
 
 _restart()
 {
-    exec $ROOT/su -c "shutdown -r 2 \"auto-qa rebooting\" &" < /dev/null
+    exec $ROOT/su -c "(shutdown -r now \"auto-qa rebooting\" )&" < /dev/null
 }
 
 _update_autoqa_file()
@@ -252,7 +265,7 @@ in
     cron-restarted)
         # we don't auto restart after reboot, but cron the restart
         # to happen a bit later - it's much easier and safer that way
-        if [ $state != "cron-restarted" ]
+        if [ "$state" != "cron-restarted" ]
         then
             _fail "    !!! cron-restarted while not in \"cron-restarted\" state"
         fi
@@ -264,11 +277,16 @@ then
     _set_state $1
 fi
 
-[ $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"
-. $COMMON_CONFIG       || _fail "    !!! Couldn't source $COMMON_CONFIG"
+[ "$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"
+. "$COMMON_CONFIG"     || _fail "    !!! Couldn't source $COMMON_CONFIG"
+
+_get_kernel_version
+IMAGE="$BOOT/vmlinuz$EXTRA"
+SYSTEMMAP="$BOOT/System.map-$VERSION$EXTRA"
+MODULES="/lib/modules/$SVERSION"
 
 cd $ROOT
 
@@ -288,9 +306,11 @@ do
         *init)
             echo "" > $ROOT/qa.log
             echo "" > $ROOT/qa.full
-            _log "******************************************"
-            _log "QA init (`date`)"
-            _log "******************************************"
+            _log "******************************************************"
+            _log "QA init $VERSION (`date`)"
+            _log "******************************************************"
+           _log "--- kernel ($IMAGE)"
+           _log "--- modules ($MODULES)"
 
             _change_state "inited"
             _update_autoqa_file
@@ -308,7 +328,7 @@ do
 
         *clean)
             # we need to configure or else we might fail to clean
-            for pkg in attr acl xfsprogs xfsdump xfstests
+            for pkg in attr acl xfsprogs dmapi xfsdump xfstests
            do
                 cd $WORKAREA/cmd/$pkg
                 _log "        *** clean $pkg tools"
@@ -316,11 +336,6 @@ do
                         || _fail "            !!! clean $pkg failed"
             done
 
-            _log "        *** clean quota tools"
-            cd $WORKAREA/cmd/quota
-            ( rm -f configure ; autoconf ; sh configure ; make clean ) 2>&1 \
-                        || _fail "            !!! clean quota failed"
-
             _log "        *** clean linux"
             cd $WORKAREA/linux
             make mrproper 2>&1 \
@@ -351,22 +366,12 @@ do
             make EXTRAVERSION=$EXTRA dep 2>&1 \
                         || _fail "            !!! reconfig dep failed"
 
-            new_state="build"
+            new_state="buildtools"
             ;;
             
-        *build)
-            _log "        *** build kernel"
-            
-            _change_state "clean" ; # we better start from scratch if this fails
-            
-            cd $WORKAREA/linux
-            make -j2 EXTRAVERSION=$EXTRA bzImage 2>&1 \
-                        || _fail "            !!! build bzImage failed"
-            make -j2 EXTRAVERSION=$EXTRA modules 2>&1 \
-                        || _fail "            !!! build modules failed"
-                                    
+        *buildtools)
             _log "        *** build and install tools"
-            for pkg in attr acl xfsprogs xfsdump xfstests 
+            for pkg in attr acl xfsprogs dmapi xfsdump xfstests 
             do
                 cd $WORKAREA/cmd/$pkg
 
@@ -379,21 +384,27 @@ do
 
                 _sudo make install install-dev 2>&1 \
                         || _fail "            !!! install $pkg failed"
+
+               # attr and acl now have install-lib targets as well
+               [ "$pkg" == "attr" -o "$pkg" == "acl" ] || continue
+               _sudo make install-lib 2>&1 \
+                       || _fail "            !!! install $pkg failed"
             done
 
-            _log "        *** build and install quota tools"
-            cd $WORKAREA/cmd/quota
-            
-            # use e-fence - but this will only take effect on configure
-            export MALLOCLIB=/usr/lib/libefence.a
-            ( rm -f configure ; autoconf ; sh configure ; make all ) 2>&1 \
-                        || _fail "            !!! build quota failed"
-            _sudo make install 2>&1 \
-                        || _fail "            !!! install quota failed"
+            new_state="buildkernel"
+            ;;
 
+        *buildkernel)
+            _log "        *** build kernel"
+            
+            _change_state "clean" ; # we better start from scratch if this fails
+            
+            cd $WORKAREA/linux
+            make -j4 EXTRAVERSION=$EXTRA bzImage modules 2>&1 \
+                        || _fail "            !!! build bzImage/modules failed"
             new_state="install"
             ;;
-            
+
         *install)
             _log "        *** blat old modules"
             
@@ -441,11 +452,10 @@ do
             _log "            *** kernel"
             ls -l /boot/*$EXTRA*  2>&1
             _log "            *** kernel modules"
-            ls -l /lib/modules/$VERSION$EXTRA/kernel/fs/pagebuf/* \
-                  /lib/modules/$VERSION$EXTRA/kernel/fs/xfs/*     \
-                  /lib/modules/$VERSION$EXTRA/kernel/fs/xfs/support/* 
+            ls -l /lib/modules/$SVERSION$EXTRA/kernel/fs/xfs/* \
+                  /lib/modules/$SVERSION$EXTRA/kernel/fs/xfs_support/* 
             
-            if [ $MODULAR -eq 0 ]
+            if [ "$MODULAR" -eq 0 ]
             then
                 new_state="reset"
             else
@@ -465,7 +475,7 @@ do
             
             _log "            *** removing modules"
             
-            for m in xfsidbg xfs pagebuf kdbm_pg kdbm_vm
+            for m in xfsidbg xfs kdbm_pg kdbm_vm
             do
                 _sudo rmmod $m 2> /dev/null
             done
@@ -490,7 +500,7 @@ do
             
             _log "            *** clean TEST_DEV"
             
-            _sudo mkfs -t xfs -f $TEST_DEV 2>&1 \
+            _sudo mkfs -t xfs -f $MKFS_OPTIONS $TEST_DEV 2>&1 \
                         || _fail "            !!! failed to mkfs TEST_DEV"
             
             _log "            *** mounting TEST_DEV"
@@ -520,7 +530,7 @@ do
             
             _log ""
             _log "            *** send status mail"
-            mail -s "xfs qa status report" $EMAIL < $ROOT/qa.out 2>&1
+            mail -s "XFS QA status report" $EMAIL < $ROOT/qa.out 2>&1
         
             new_state="done"
             ;;