#!/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"