diff options
Diffstat (limited to 'script/show_testsuite_time')
-rwxr-xr-x | script/show_testsuite_time | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/script/show_testsuite_time b/script/show_testsuite_time new file mode 100755 index 0000000..6e5808a --- /dev/null +++ b/script/show_testsuite_time @@ -0,0 +1,51 @@ +#!/usr/bin/env perl +use Time::Local ('timegm'); +my $in = STDIN; +use strict; + +my $intest=0; +my $name; +my $start=0; +my $end=0; +my %hash; +my $fh; +my $max=0; +if ($#ARGV >= 0) { + open($fh, "<", $ARGV[0]) || die "can't open ".$ARGV[0]; +} else { + $fh = $in; +} +if ($#ARGV >= 1) { + $max = $ARGV[1]; + if ($max =~ /\D/) { + die "not a decimal number: '$max'"; + } +} + +print "TOP $max slowest tests\n"; + +while(<$fh>) +{ + if (m/^testsuite: (.*)/) { + $intest = 1; + $name = $1; + } + if (m/testsuite-\w+:/) { + $hash{"$name -> ".($end - $start)} = $end - $start; + $intest = 0; + $start = 0; + } + if (m/^time: (\d\d\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)/ && $intest) { + my $ts=timegm($6,$5,$4,$3,$2 - 1,$1 - 1900); + if ($start == 0) { + $start = $ts; + } else { + $end = $ts; + } + } +} +my @sorted = sort { $hash{$b}<=>$hash{$a} } keys(%hash); +$max = @sorted if (($max <= 0) or ($max > @sorted)); +for my $l (@sorted[0..($max - 1)]) { + print $l."\n"; +} |