summaryrefslogtreecommitdiffstats
path: root/script/show_testsuite_time
diff options
context:
space:
mode:
Diffstat (limited to 'script/show_testsuite_time')
-rwxr-xr-xscript/show_testsuite_time51
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";
+}