Admin/isatest/isatest-statistics
author wenzelm
Wed, 03 Oct 2007 21:29:05 +0200
changeset 24825 c4f13ab78f9d
parent 22410 da313b67a04d
child 24831 887d1b32a1a5
permissions -rwxr-xr-x
avoid unnamed infixes; tuned;
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: Makarius
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: Produce statistics from isatest session logs.
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
     7
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
     8
ISATEST_LOG=~isatest/log
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
     9
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    10
## platform settings
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
case $(uname) in
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    13
	SunOS)	
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    14
		ZGREP=xgrep 
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    15
		TE="png color"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    16
	;;
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    17
	*)	
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    18
		ZGREP=zgrep
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    19
		TE="png"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    20
	;;
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    21
esac
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    22
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    23
## diagnostics
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
PRG="$(basename "$0")"
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
function usage()
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
  echo
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    30
  echo "Usage: $PRG DIR PLATFORM TIMESPAN SESSIONS..."
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 "  Produce statistics from isatest session logs, looking TIMESPAN"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    33
  echo "  days into the past.  Outputs .png files into DIR."
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    34
  echo
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    35
  exit 1
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    36
}
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    37
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    38
function fail()
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
  echo "$1" >&2
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    41
  exit 2
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
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    44
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    45
## arguments
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
[ "$1" = "-?" ] && usage
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    48
[ "$#" -lt "4" ] && usage
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    49
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    50
DIR="$1"; shift
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    51
PLATFORM="$1"; shift
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    52
TIMESPAN="$1"; shift
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    53
SESSIONS="$@"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    54
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
## main
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
ALL_DATA="/tmp/isatest-all$$.dat"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    59
SESSION_DATA="/tmp/isatest$$.dat"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    60
mkdir -p "$DIR" || fail "Bad directory: $DIR"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    61
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    62
$ZGREP "^Finished .*elapsed" \
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    63
  $(find "$ISATEST_LOG" -name "isatest-makeall-${PLATFORM}*" -ctime "-${TIMESPAN}") | \
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    64
perl -e '
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    65
  while (<>) {
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    66
    if (m/isatest-makeall-.*-(\d+)-(\d+)-(\d+)-.*:Finished (\S+) \(.*, (\d+):(\d+):(\d+) cpu time\)/) {
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    67
        my $year = $1;
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    68
        my $month = $2;
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    69
        my $day = $3;
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    70
        my $name = $4;
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    71
        my $time = ($5 * 3600 + $6 * 60 + $7) / 60;
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    72
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    73
        printf "$name $year-$month-$day %.2f\n", $time;
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
  }' > "$ALL_DATA"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    76
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    77
for SESSION in $SESSIONS
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    78
do
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    79
  fgrep "$SESSION " "$ALL_DATA" > "$SESSION_DATA"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    80
  gnuplot <<EOF
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    81
set terminal $TE
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    82
set output "$DIR/${SESSION}.png"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    83
set xdata time
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    84
set timefmt "%Y-%m-%d"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    85
set format x "%d-%b"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    86
set xlabel "$SESSION"
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    87
plot [] [0:] "$SESSION_DATA" using 2:3 smooth sbezier notitle, "$SESSION_DATA" using 2:3 smooth csplines notitle
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    88
EOF
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    89
done
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    90
da313b67a04d moved all isatest/cron job related files to own directory
kleing
parents:
diff changeset
    91
rm -f "$ALL_DATA" "$SESSION_DATA"