#!/bin/bash
#
# usage: suite_times [ status.log ]
#
# Parses a "status.log" file for a suite job, and for each test that
# ran, report these timeline data from the log:
#   1. hostname of the DUT that the test ran on
#   2. time_t value of the time that the test started running
#   3. total run time of the test on the DUT
#   4. number of seconds between this test's start time and the
#       start time of the last prior test on the same DUT
#   5. name of the test
#
# This script is meant as a simple building block.  Below are
# some sample uses.
#
# Print average inter-test time:
#   suite_times | awk '{if ($4) {sum += $4; cnt++}} END {print sum / cnt}'
#
# Print average test run time:
#   suite_times | awk '{sum += $3} END {print sum / NR}'
#
# Print time line for a host:
#   suite_times | grep $HOST


PROCESS_SUITE='
  $1 == "START" && $2 != "----" {
    host = gensub(".*/(.*)/.*", "\\1", 1, $2)
    test = $3
    start_ts = gensub(".*=", "", 1, $4)
    old_ts = hosttimes[host]
    if (!old_ts) { old_ts = start_ts }
    start_rel = start_ts - old_ts
    hosttimes[host] = start_ts
  }

  $1 == "GOOD" {
    end_ts = gensub(".*=", "", 1, $4)
    runtime = end_ts - start_ts
    printf "%s %d %4d %4d %s\n", host, start_ts, runtime, start_rel, test
  }
'

if [ $# -eq 0 ]; then
  STATUS_LOG=status.log
elif [ $# -eq 1 ]; then
  STATUS_LOG="$1"
else
  echo "usage: $(basename $0) [ status.log ]" >&2
  exit 1
fi

awk "$PROCESS_SUITE" "$STATUS_LOG"
