blob: 280427416893805fada3d5045db650969dfa660b [file] [log] [blame]
J. Richard Barnette3f0ea482014-04-22 10:09:42 -07001#!/bin/bash
2#
3# usage: suite_times [ status.log ]
4#
5# Parses a "status.log" file for a suite job, and for each test that
6# ran, report these timeline data from the log:
7# 1. hostname of the DUT that the test ran on
8# 2. time_t value of the time that the test started running
9# 3. total run time of the test on the DUT
10# 4. number of seconds between this test's start time and the
11# start time of the last prior test on the same DUT
12# 5. name of the test
13#
14# This script is meant as a simple building block. Below are
15# some sample uses.
16#
17# Print average inter-test time:
18# suite_times | awk '{if ($4) {sum += $4; cnt++}} END {print sum / cnt}'
19#
20# Print average test run time:
21# suite_times | awk '{sum += $3} END {print sum / NR}'
22#
23# Print time line for a host:
24# suite_times | grep $HOST
25
26
27PROCESS_SUITE='
28 $1 == "START" && $2 != "----" {
29 host = gensub(".*/(.*)/.*", "\\1", 1, $2)
30 test = $3
31 start_ts = gensub(".*=", "", 1, $4)
32 old_ts = hosttimes[host]
33 if (!old_ts) { old_ts = start_ts }
34 start_rel = start_ts - old_ts
35 hosttimes[host] = start_ts
36 }
37
38 $1 == "GOOD" {
39 end_ts = gensub(".*=", "", 1, $4)
40 runtime = end_ts - start_ts
41 printf "%s %d %4d %4d %s\n", host, start_ts, runtime, start_rel, test
42 }
43'
44
45if [ $# -eq 0 ]; then
46 STATUS_LOG=status.log
47elif [ $# -eq 1 ]; then
48 STATUS_LOG="$1"
49else
50 echo "usage: $(basename $0) [ status.log ]" >&2
51 exit 1
52fi
53
54awk "$PROCESS_SUITE" "$STATUS_LOG"