scripts/stats
changeset 27 6045d5e2f590
equal deleted inserted replaced
26:cee1b738fa67 27:6045d5e2f590
       
     1 #! /usr/bin/perl
       
     2 use 5.14.0;
       
     3 use strict;
       
     4 use warnings;
       
     5 use Template;
       
     6 use List::Util qw(max);
       
     7 
       
     8 my %fail;
       
     9 
       
    10 foreach my $file (glob "out*/log.*") {
       
    11     my ($name, $platform) = $file =~ /out-?(.*?)\/log\.(.*)/;
       
    12     my ($os) = $platform =~ /(^.*?)-/;
       
    13     $_ = do { local @ARGV = $file; local $/ = undef; <> };
       
    14     s/
       
    15 /\n/g;
       
    16     my ($version) = /^Exim version (\S+)/mi;
       
    17     my ($ssl) =
       
    18         /^Support for: .*\bGnuTLS/mi    ? 'GnuTLS'
       
    19       : /^Support for: .*\bOpenSSL\b/mi ? 'OpenSSL'
       
    20       :                                   'No SSL';
       
    21 
       
    22     $fail{$os}{$ssl}{$version} = {};
       
    23 
       
    24     foreach (/^\*{2}.*\/(\d+)\s+failed.*?=+/mg) {
       
    25         $fail{$os}{$ssl}{$version}{_failed}{$_} = 1;
       
    26         $fail{$os}{$ssl}{_failed}{$_} = 1;
       
    27     }
       
    28 }
       
    29 
       
    30 my $os_len = max map { length } keys %fail;
       
    31 my $ssl_len = max map { length } map { keys %$_ } values %fail;
       
    32 my $version_len =
       
    33   max map { length } map { keys %$_ } map { values %$_ } values %fail;
       
    34 
       
    35 foreach my $os (sort keys %fail) {
       
    36     foreach my $ssl (sort keys %{ $fail{$os} }) {
       
    37         foreach my $version (grep { !/^_/ } sort keys %{ $fail{$os}{$ssl} }) {
       
    38             printf "%*s %*s %*s: ",
       
    39               -$os_len      => $os,
       
    40               -$ssl_len     => $ssl,
       
    41               -$version_len => $version;
       
    42 
       
    43             foreach my $failed (sort { $a <=> $b }
       
    44                 keys %{ $fail{$os}{$ssl}{_failed} })
       
    45             {
       
    46                 printf "%4s ",
       
    47                   $fail{$os}{$ssl}{$version}{_failed}{$failed} ? $failed : '-';
       
    48             }
       
    49 
       
    50             print "\n";
       
    51         }
       
    52         print "\n";
       
    53     }
       
    54 }
       
    55