#!/bin/sh set -e # Copyright 2009-2010 Holger Levsen (holger@layer-acht.org) # Copyright © 2013 Andreas Beckmann (anbe@debian.org) # # 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; either version 2 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will 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, see # # this scripts monitors the output of piuparts-slave # when running in screen started by ~piupartss/bin/slave_run # . @sharedir@/piuparts/lib/read_config.sh # outputs file age in seconds (or 0 if the file does not exist) file_age() { if [ -e "$1" ]; then local ctime now ctime=$(stat -c %Z "$1" 2>/dev/null || echo 0) now=$(date +%s) echo $(($now - $ctime)) else echo "0" fi } get_config_value SLAVEROOT global slave-directory get_config_value IDLE_SLEEP global idle-sleep 1800 SCREENLOG=$SLAVEROOT/screenlog.1 STATEFILE=$SLAVEROOT/slave-problems # clear the statefile daily and whine again test $(file_age $STATEFILE) -lt 86000 || rm -f $STATEFILE # Only complain if screenlog is older than $IDLE_SLEEP + 30 minutes # and the problem is new or was not reported within the previous 24 hours. if [ $(file_age $SCREENLOG) -le $(($IDLE_SLEEP + 1800)) ]; then rm -f $STATEFILE elif [ ! -f $STATEFILE ]; then { echo "Either a test is running for a very long time (more than $(( ($IDLE_SLEEP + 1800)/60 )) minutes)," echo "or piuparts-slave hangs or is not running at all or wasn't started with" echo "~piupartss/bin/slave_run - please investigate and take appropriate measures!" echo tail $SCREENLOG } | mail -s "problem with piuparts-slave detected" piupartss touch $STATEFILE fi