| # Gawk script that takes the output of a relative_times report test |
| # that was generated with a startcount and startdelay flood scenario |
| # and breaks down the times to show how the performance during each |
| # startdelay period for which there is data. |
| # |
| # This should serve as an advanced example of how to process data from |
| # flood with awk. And, probably as an example of how Justin codes |
| # at 12AM falling asleep on his keyboard. |
| |
| BEGIN { |
| currentperiod = 0 |
| # Should be passed in now |
| #users = 5 |
| #delay = 180 |
| duration = delay * 1000000 |
| periods = 0 |
| } |
| |
| /OK.*https?/ { |
| split($8, urlarray, /\?/) |
| if (currentperiod == 0) |
| { |
| currentperiod = $1 + duration |
| } |
| else if (currentperiod < $1) |
| { |
| currentperiod += duration |
| periods++ |
| } |
| url = urlarray[1] |
| ht[url, periods] = url |
| co[url, periods] += ($2/1000000) |
| wr[url, periods] += ($3/1000000) |
| re[url, periods] += ($4/1000000) |
| cl[url, periods] += ($5/1000000) |
| # These two are used to refer back... |
| pd[url, periods] = periods |
| urls[url] = url |
| cou[url, periods]++ |
| } |
| |
| END { |
| for (p = 0; p < periods; p++) { |
| printf(" Average times (sec) - Period %d (%d users)\n", p, (p+1)*users) |
| printf("connect\twrite\tread\tclose\thits\tURL\n") |
| for (u in urls) { |
| if (cou[u, p] != 0) { |
| printf("%.4f\t%.4f\t%.4f\t%.4f\t%d\t%s\n", co[u, p]/cou[u, p], wr[u,p]/cou[u,p], re[u,p]/cou[u,p], cl[u,p]/cou[u,p], cou[u,p], ht[u,p]) | "sort -rn +3 | head -5" |
| } |
| } |
| close("sort -rn +3 | head -5") |
| } |
| } |