Admin/isatest/isatest-statistics
author wenzelm
Tue, 13 Nov 2007 16:24:03 +0100
changeset 25428 95c0b4dc600b
parent 24831 887d1b32a1a5
child 25453 80557dafd2a0
permissions -rwxr-xr-x
some more items;

#!/usr/bin/env bash
#
# $Id$
# Author: Makarius
#
# DESCRIPTION: Produce statistics from isatest session logs.

## platform settings

case $(uname) in
  SunOS)	
    ZGREP=xgrep 
    TE="png color"
    ;;
  *)	
    ZGREP=zgrep
    TE="png"
    ;;
esac


## diagnostics

PRG="$(basename "$0")"

function usage()
{
  echo
  echo "Usage: $PRG DIR PLATFORM TIMESPAN SESSIONS..."
  echo
  echo "  Produce statistics from isatest session logs, looking TIMESPAN"
  echo "  days into the past.  Outputs .png files into DIR."
  echo
  exit 1
}

function fail()
{
  echo "$1" >&2
  exit 2
}


## arguments

[ "$1" = "-?" ] && usage
[ "$#" -lt "4" ] && usage

DIR="$1"; shift
PLATFORM="$1"; shift
TIMESPAN="$1"; shift
SESSIONS="$@"

if [ "$PLATFORM" = afp ]; then
  LOG_DIR=~isatest/afp-log
  LOG_NAME="afp-test-devel*"
else
  LOG_DIR=~isatest/log
  LOG_NAME="isatest-makeall-${PLATFORM}*"
fi


## main

ALL_DATA="/tmp/isatest-all$$.dat"
SESSION_DATA="/tmp/isatest$$.dat"
mkdir -p "$DIR" || fail "Bad directory: $DIR"

$ZGREP "^Finished .*elapsed" \
  $(find "$LOG_DIR" -name "$LOG_NAME" -ctime "-${TIMESPAN}") | \
perl -e '
  while (<>) {
    if (m/(\d\d\d\d)-(\d\d)-(\d\d).*:Finished (\S+) \(.*, (\d+):(\d+):(\d+) cpu time\)/) {
        my $year = $1;
        my $month = $2;
        my $day = $3;
        my $name = $4;
        my $time = ($5 * 3600 + $6 * 60 + $7) / 60;

        printf "$name $year-$month-$day %.2f\n", $time;
    }
  }' > "$ALL_DATA"

for SESSION in $SESSIONS
do
  fgrep "$SESSION " "$ALL_DATA" > "$SESSION_DATA"
  gnuplot <<EOF
set terminal $TE
set output "$DIR/${SESSION}.png"
set xdata time
set timefmt "%Y-%m-%d"
set format x "%d-%b"
set xlabel "$SESSION"
plot [] [0:] "$SESSION_DATA" using 2:3 smooth sbezier notitle, "$SESSION_DATA" using 2:3 smooth csplines notitle
EOF
done

rm -f "$ALL_DATA" "$SESSION_DATA"