55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/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"
 |