diff -r cee1b738fa67 -r 6045d5e2f590 scripts/stats --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/stats Wed Sep 23 22:31:26 2015 +0200 @@ -0,0 +1,54 @@ +#! /usr/bin/perl +use 5.14.0; +use strict; +use warnings; +use Template; +use List::Util qw(max); + +my %fail; + +foreach my $file (glob "out*/log.*") { + my ($name, $platform) = $file =~ /out-?(.*?)\/log\.(.*)/; + my ($os) = $platform =~ /(^.*?)-/; + $_ = do { local @ARGV = $file; local $/ = undef; <> }; + s/ /\n/g; + my ($version) = /^Exim version (\S+)/mi; + my ($ssl) = + /^Support for: .*\bGnuTLS/mi ? 'GnuTLS' + : /^Support for: .*\bOpenSSL\b/mi ? 'OpenSSL' + : 'No SSL'; + + $fail{$os}{$ssl}{$version} = {}; + + foreach (/^\*{2}.*\/(\d+)\s+failed.*?=+/mg) { + $fail{$os}{$ssl}{$version}{_failed}{$_} = 1; + $fail{$os}{$ssl}{_failed}{$_} = 1; + } +} + +my $os_len = max map { length } keys %fail; +my $ssl_len = max map { length } map { keys %$_ } values %fail; +my $version_len = + max map { length } map { keys %$_ } map { values %$_ } values %fail; + +foreach my $os (sort keys %fail) { + foreach my $ssl (sort keys %{ $fail{$os} }) { + foreach my $version (grep { !/^_/ } sort keys %{ $fail{$os}{$ssl} }) { + printf "%*s %*s %*s: ", + -$os_len => $os, + -$ssl_len => $ssl, + -$version_len => $version; + + foreach my $failed (sort { $a <=> $b } + keys %{ $fail{$os}{$ssl}{_failed} }) + { + printf "%4s ", + $fail{$os}{$ssl}{$version}{_failed}{$failed} ? $failed : '-'; + } + + print "\n"; + } + print "\n"; + } +} +