Admin/isatest/isatest-check
author kleing
Sun, 05 Oct 2008 13:13:48 +0200
changeset 28508 e8197ea2703b
parent 28504 7ad7d7d6df47
child 28526 a30b9cf3502e
permissions -rwxr-xr-x
needs -b option for isabelle getenv
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22410
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
     1
#!/usr/bin/env bash
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
     2
#
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
     3
# $Id$
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
     4
# Author: Gerwin Klein, TU Muenchen
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
     5
#
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
     6
# DESCRIPTION: sends email for failed tests, checks for error.log,
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
     7
#              generates development snapshot if test ok
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
     8
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
     9
## global settings
22411
1956d895a4ed adjust paths
kleing
parents: 22410
diff changeset
    10
. ~/admin/isatest/isatest-settings
22410
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    11
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    12
# produce empty list for patterns like isatest-*.log if no 
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    13
# such file exists 
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    14
shopt -s nullglob
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    15
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    16
# mail program
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    17
MAIL=$HOME/bin/pmail
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    18
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    19
# tmp file for sending mail
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    20
TMP=/tmp/isatest-makedist.$$
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    21
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    22
export DISTPREFIX
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    23
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    24
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    25
## diagnostics
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    26
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    27
PRG="$(basename "$0")"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    28
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    29
function usage()
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    30
{
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    31
  echo
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    32
  echo "Usage: $PRG"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    33
  echo
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    34
  echo "   sends email for failed tests, checks for error.log,"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    35
  echo "   generates development snapshot if test ok."
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    36
  echo "   To be called by cron."
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    37
  echo
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    38
  exit 1
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    39
}
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    40
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    41
function fail()
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    42
{
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    43
  echo "$1" >&2
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    44
  exit 2
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    45
}
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    46
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    47
## main
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    48
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    49
# check if tests are still running, wait for them a couple of hours
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    50
i=0
25912
a1a3f614dd86 make at-sml-dev experimental
isatest
parents: 22411
diff changeset
    51
while [ -n "$(ls $RUNNING)" -a $i -lt 10 ]; do 
22410
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    52
    sleep 3600
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    53
    let "i = i+1"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    54
done
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    55
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    56
FAIL=0
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    57
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    58
# still running -> give up
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    59
if [ -n "$(ls $RUNNING)" ]; then
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    60
    echo "Giving up waiting for test to finish at $(date)." > $TMP
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    61
    echo >> $TMP
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    62
    echo "Sessions still running:" >> $TMP
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    63
    echo "$(ls $RUNNING)" >> $TMP
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    64
    echo >> $TMP
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    65
    echo "Attaching all error logs collected so far." >> $TMP
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    66
    echo >> $TMP
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    67
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    68
    if [ -e $ERRORLOG ]; then
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    69
        cat $ERRORLOG >> $TMP
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    70
    fi
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    71
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    72
    echo "Have a nice day," >> $TMP
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    73
    echo "  isatest" >> $TMP
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    74
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    75
    for R in $MAILTO; do
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    76
        LOGS=$ERRORDIR/isatest*.log
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    77
        $MAIL "isabelle test taking too long" $R $TMP $LOGS
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    78
    done
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    79
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    80
    rm $TMP
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    81
    
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    82
    FAIL=1
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    83
elif [ -e $ERRORLOG ]; then
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    84
  # no tests running, check if there were errors
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    85
    cat $ERRORLOG > $TMP
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    86
    echo "Have a nice day," >> $TMP
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    87
    echo "  isatest" >> $TMP
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    88
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    89
    for R in $MAILTO; do
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    90
        LOGS=$ERRORDIR/isatest*.log
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    91
        $MAIL "isabelle test failed" $R $TMP $LOGS
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    92
    done
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    93
    
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    94
    rm $TMP
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    95
fi
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    96
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    97
# generate development snapshot page only for successful tests
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    98
# (failures in experimental sessions ok)
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    99
if [ "$FAIL"=="0" -a "$(echo $ERRORDIR/isatest*[^e].log)" == "$(echo)" ]; then
28508
e8197ea2703b needs -b option for isabelle getenv
kleing
parents: 28504
diff changeset
   100
  (cd $HOME/devel-page; env DISTNAME=`$DISTPREFIX/Isabelle/bin/isabelle getenv -b ISABELLE_IDENTIFIER` make)
22410
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
   101
  echo "$(date) $HOSTNAME $PRG: generated development snapshot web page." >> $MASTERLOG
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
   102
fi
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
   103
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
   104
exit 0
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
   105
## end