script: fix display of ten slowest tests if < 10 tests are run.
[garming/samba-autobuild/.git] / script / show_testsuite_time
1 #!/usr/bin/env perl
2 use Time::Local ('timegm');
3 my $in = STDIN;
4 use strict;
5
6 my $intest=0;
7 my $name;
8 my $start=0;
9 my $end=0;
10 my %hash;
11 my $fh;
12 my $max=0;
13 if ($#ARGV >= 0) {
14         open($fh, "<", $ARGV[0]) || die "can't open ".$ARGV[0];
15 } else {
16         $fh = $in;
17 }
18 if ($#ARGV >= 1) {
19         $max = $ARGV[1];
20         if ($max =~ /\D/) {
21                 die "not a decimal number: '$max'";
22         }
23 }
24
25 while(<$fh>)
26 {
27         if (m/^testsuite: (.*)/) {
28                 $intest = 1;
29                 $name = $1;
30         }
31         if (m/testsuite-\w+:/) {
32                 $hash{"$name -> ".($end - $start)} = $end - $start;
33                 $intest = 0;
34                 $start = 0;
35         }
36         if (m/^time: (\d\d\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)/ && $intest) {
37                 my $ts=timegm($6,$5,$4,$3,$2 - 1,$1 - 1900);
38                 if ($start == 0) {
39                         $start = $ts;
40                 } else {
41                         $end = $ts;
42                 }
43         }
44 }
45 my @sorted = sort { $hash{$b}<=>$hash{$a} } keys(%hash);
46 $max = @sorted if (($max <= 0) or ($max > @sorted));
47 for my $l (@sorted[0..($max - 1)]) {
48         print $l."\n";
49 }