commit 3f6e3e00aeac9d5dab634436750b13888704f891
parent 41bc0d5009b2b57bc61cd02688efca9498bdedb9
Author: Kyle Milz <kyle@0x30.net>
Date: Fri, 1 Jul 2016 13:49:09 -0600
tt: factor out report generation into Test::Report
Diffstat:
M | Test/Package.pm | | | 6 | ++++++ |
A | Test/Report.pm | | | 61 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
M | tt/libressl.t | | | 57 | ++++++++++++++++----------------------------------------- |
M | tt/mutt.t | | | 52 | ++++++++++++---------------------------------------- |
M | tt/vim.t | | | 59 | ++++++++++++++++++----------------------------------------- |
5 files changed, 113 insertions(+), 122 deletions(-)
diff --git a/Test/Package.pm b/Test/Package.pm
@@ -12,6 +12,7 @@ sub new {
bless($self, $class);
return $self if (! defined ($dist_name));
+ $self->{dist_name} = $dist_name;
# Create temporary directory for the contents of this package.
my $dir = tempdir( CLEANUP => 1 );
@@ -32,6 +33,11 @@ sub new {
return $self;
}
+sub dist_name {
+ my ($self) = @_;
+ return $self->{dist_name};
+}
+
sub set_srcdir {
my ($self, $srcdir) = @_;
$self->{srcdir} = $self->{dir} . $srcdir;
diff --git a/Test/Report.pm b/Test/Report.pm
@@ -0,0 +1,61 @@
+package Test::Report;
+use strict;
+
+use List::MoreUtils qw( each_array );
+
+sub new {
+ my ($class, $name) = @_;
+
+ my $self = {};
+ bless($self, $class);
+
+ $self->{name} = $name;
+ $self->{desc} = [];
+ $self->{vanilla} = [];
+ $self->{citrun} = [];
+
+ return $self;
+}
+
+sub add {
+ my ($self, $field, $desc) = @_;
+
+ push @{ $self->{$field} }, ($desc);
+}
+
+sub DESTROY {
+ my ($self) = @_;
+
+ my @diff;
+ my @desc = @{ $self->{desc} };
+ my @vanilla = @{ $self->{vanilla} };
+ my @citrun = @{ $self->{citrun} };
+
+ my $it = each_array( @vanilla, @citrun );
+ while ( my ($x, $y) = $it->() ) {
+ push @diff, $y * 100.0 / $x - 100.0;
+ }
+
+ open (E2E_REPORT, ">>", "e2e_report.txt") or die "$!";
+
+ format E2E_REPORT =
+@>>>>>>>>>>>>>>>>>>>>
+$self->{name}
+======================
+# @<<<<<<<<<<<<<<<<<<< @##.##
+# "60 data calls (s):", $data_call_dur
+# @<<<<<<<<<<<<<<<<<<< @#####
+# "tests ok:", $num_tests
+ @>>>>>>>>> @>>>>>>>>> @>>>>>>>
+"vanilla", "citrun", "diff (%)"
+ ---------------------------------------------------------------------
+ @<<<<<<<<<<<<<<<<<<<<<<<<<< @>>>>>>>>> @>>>>>>>>> @>>>> ~~
+shift(@desc), shift(@vanilla), shift(@citrun), shift(@diff)
+
+.
+
+ write E2E_REPORT;
+ close E2E_REPORT;
+}
+
+1;
diff --git a/tt/libressl.t b/tt/libressl.t
@@ -2,45 +2,46 @@ use strict;
use warnings;
use Expect;
-use List::MoreUtils qw ( each_array );
use Test::More;
-use Time::HiRes qw( time );
my $num_tests = 2550;
$num_tests = 2530 if ($^O eq "darwin");
plan tests => $num_tests;
use Test::Package;
+use Test::Report;
use Test::Viewer;
# Download: LibreSSL 2.4.1 from ftp.openbsd.org.
my $libressl_url = "http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/";
my $package = Test::Package->new("libressl-2.4.1.tar.gz", $libressl_url, "tar xzf");
-
-# Dependencies.
$package->dependencies("citrun");
-my (@vanilla, @citrun);
-my @desc = ("configure time (sec)", "compile time (sec)", "openssl size (b)",
- "libcrypto.a size (b)");
+
+# New end to end report.
+my $report = Test::Report->new($package->dist_name());
+$report->add("desc", "configure time (sec)");
+$report->add("desc", "compile time (sec)");
+$report->add("desc", "openssl size (b)");
+$report->add("desc", "libcrypto.a size (b)");
my $srcdir = $package->set_srcdir("/libressl-2.4.1");
# Vanilla configure and compile.
-$vanilla[0] = $package->configure("./configure");
-$vanilla[1] = $package->compile("make -j8");
+$report->add("vanilla", $package->configure("./configure"));
+$report->add("vanilla", $package->compile("make -j8"));
-$vanilla[2] = $package->get_file_size("/apps/openssl/.libs/openssl");
-$vanilla[3] = $package->get_file_size("/crypto/.libs/libcrypto.a");
+$report->add("vanilla", $package->get_file_size("/apps/openssl/.libs/openssl"));
+$report->add("vanilla", $package->get_file_size("/crypto/.libs/libcrypto.a"));
# Reset.
$package->clean("make distclean" );
# Instrumented configure and compile.
-$citrun[0] = $package->inst_configure();
-$citrun[1] = $package->inst_compile();
+$report->add("citrun", $package->inst_configure());
+$report->add("citrun", $package->inst_compile());
-$citrun[2] = $package->get_file_size("/apps/openssl/.libs/openssl");
-$citrun[3] = $package->get_file_size("/crypto/.libs/libcrypto.a");
+$report->add("citrun", $package->get_file_size("/apps/openssl/.libs/openssl"));
+$report->add("citrun", $package->get_file_size("/crypto/.libs/libcrypto.a"));
# Verify: 'openssl' binary has working instrumentation.
my $viewer = Test::Viewer->new();
@@ -705,29 +706,3 @@ for (1..60) {
}
$exp->hard_close();
-
-my @diff;
-my $it = each_array( @vanilla, @citrun );
-while ( my ($x, $y) = $it->() ) {
- push @diff, $y * 100.0 / $x - 100.0;
-}
-
-# Write report.
-#
-format STDOUT =
-
-LIBRESSL E2E REPORT
-===================
-
-SCALAR COMPARISONS
- @>>>>>>>>> @>>>>>>>>> @>>>>>>>
-"vanilla", "citrun", "diff (%)"
- ---------------------------------------------------------------------
-~~ @<<<<<<<<<<<<<<<<<<<<<<<<<< @>>>>>>>>> @>>>>>>>>> @>>>>>>>
-shift(@desc), shift(@vanilla), shift(@citrun), shift(@diff)
-
-DIFF COMPARISONS
-
-.
-
-write;
diff --git a/tt/mutt.t b/tt/mutt.t
@@ -2,7 +2,6 @@ use strict;
use warnings;
use Expect;
-use List::MoreUtils qw( each_array );
use Test::More;
use Time::HiRes qw( time );
@@ -11,6 +10,7 @@ $num_tests = 342 if ($^O ne "darwin");
plan tests => $num_tests;
use Test::Package;
+use Test::Report;
use Test::Viewer;
# Download: Mutt 1.6.1, depends on nothing (?).
@@ -18,25 +18,28 @@ my $mutt_url = "ftp://ftp.mutt.org/pub/mutt/";
my $package = Test::Package->new("mutt-1.6.1.tar.gz", $mutt_url, "tar xzf");
$package->dependencies("citrun");
-my @desc = ("configure time (sec)", "compile time (sec)", "mutt size (b)");
-my (@vanilla, @citrun);
+# New end to end report.
+my $report = Test::Report->new($package->dist_name());
+$report->add("desc", "configure time (sec)");
+$report->add("desc", "compile time (sec)");
+$report->add("desc", "mutt size (b)");
my $srcdir = $package->set_srcdir("/mutt-1.6.1");
# Vanilla configure and compile.
-$vanilla[0] = $package->configure("./configure --disable-pgp --disable-smime --disable-nls --disable-iconv");
-$vanilla[1] = $package->compile("make -j8 all");
+$report->add("vanilla", $package->configure("./configure --disable-pgp --disable-smime --disable-nls --disable-iconv"));
+$report->add("vanilla", $package->compile("make -j8 all"));
-$vanilla[2] = $package->get_file_size("/mutt");
+$report->add("vanilla", $package->get_file_size("/mutt"));
# Clean up before rebuild.
$package->clean("make distclean");
# Instrumented configure and compile.
-$citrun[0] = $package->inst_configure();
-$citrun[1] = $package->inst_compile();
+$report->add("citrun", $package->inst_configure());
+$report->add("citrun", $package->inst_compile());
-$citrun[2] = $package->get_file_size("/mutt");
+$report->add("citrun", $package->get_file_size("/mutt"));
# Verify: instrumented data structures are consistent.
my $viewer = Test::Viewer->new();
@@ -140,34 +143,3 @@ for (1..60) {
my $data_call_dur = time - $start;
$exp->hard_close();
-
-
-# Write report.
-#
-
-my @diff;
-my $it = each_array( @vanilla, @citrun );
-while ( my ($x, $y) = $it->() ) {
- push @diff, $y * 100.0 / $x - 100.0;
-}
-
-format STDOUT =
-
-MUTT E2E REPORT
-===============
-
- @<<<<<<<<<<<<<< @##.## sec
-"60 data calls:", $data_call_dur
-
-SCALAR COMPARISONS
- @>>>>>>>>> @>>>>>>>>> @>>>>>>>
-"vanilla", "citrun", "diff (%)"
- ---------------------------------------------------------------------
-~~ @<<<<<<<<<<<<<<<<<<<<<<<<<< @>>>>>>>>> @>>>>>>>>> @>>>>>>>
-shift(@desc), shift(@vanilla), shift(@citrun), shift(@diff)
-
-DIFF COMPARISONS
-
-.
-
-write;
diff --git a/tt/vim.t b/tt/vim.t
@@ -3,7 +3,6 @@ use warnings;
use Cwd;
use Expect;
-use List::MoreUtils qw( each_array );
use Test::More;
use Time::HiRes qw( time );
@@ -12,6 +11,7 @@ $num_tests = 333 if ($^O eq "darwin");
plan tests => $num_tests;
use Test::Package;
+use Test::Report;
use Test::Viewer;
# Download: Vim 7.4.
@@ -27,10 +27,13 @@ sub time_expect {
return time - $start;
}
-my @scalar_desc = ("configure time (sec)", "compile time (sec)", "vim size (b)",
- "xxd size (b)", "test time (sec)");
-my @scalar_vanilla;
-my @scalar_citrun;
+# New end to end report.
+my $report = Test::Report->new($package->dist_name());
+$report->add("desc", "configure time (sec)");
+$report->add("desc", "compile time (sec)");
+$report->add("desc", "vim size (b)");
+$report->add("desc", "xxd size (b)");
+$report->add("desc", "test time (sec)");
my $srcdir = $package->set_srcdir("/vim74/src");
@@ -39,28 +42,28 @@ my $cwd = getcwd;
$package->patch("patch -p2 < $cwd/tt/patches/vim_osx.diff") if ($^O eq "darwin");
# Vanilla configure and compile.
-$scalar_vanilla[0] = $package->configure("./configure --enable-gui=no");
-$scalar_vanilla[1] = $package->compile("make -j8 all");
+$report->add("vanilla", $package->configure("./configure --enable-gui=no"));
+$report->add("vanilla", $package->compile("make -j8 all"));
-$scalar_vanilla[2] = $package->get_file_size("/vim");
-$scalar_vanilla[3] = $package->get_file_size("/xxd/xxd");
+$report->add("vanilla", $package->get_file_size("/vim"));
+$report->add("vanilla", $package->get_file_size("/xxd/xxd"));
#$package->copy_file("auto/config.log", "config.log.vanilla");
# Vanilla test.
-$scalar_vanilla[4] = time_expect("make", "-C", "$srcdir/testdir");
+$report->add("vanilla", time_expect("make", "-C", "$srcdir/testdir"));
# Clean up before rebuild.
$package->clean("make distclean");
# Instrumented configure and compile.
-$scalar_citrun[0] = $package->inst_configure();
-$scalar_citrun[1] = $package->inst_compile();
+$report->add("citrun", $package->inst_configure());
+$report->add("citrun", $package->inst_compile());
-$scalar_citrun[2] = $package->get_file_size("/vim");
-$scalar_citrun[3] = $package->get_file_size("/xxd/xxd");
+$report->add("citrun", $package->get_file_size("/vim"));
+$report->add("citrun", $package->get_file_size("/xxd/xxd"));
# Instrumented test.
-$scalar_citrun[4] = time_expect("make", "-C", "$srcdir/testdir");
+$report->add("citrun", time_expect("make", "-C", "$srcdir/testdir"));
# Verify: instrumented data structures are consistent.
my $viewer = Test::Viewer->new();
@@ -166,29 +169,3 @@ for (1..60) {
}
$exp->hard_close();
-
-my @scalar_diff;
-my $it = each_array( @scalar_vanilla, @scalar_citrun );
-while ( my ($x, $y) = $it->() ) {
- push @scalar_diff, $y * 100.0 / $x - 100.0;
-}
-
-# Write report.
-#
-format STDOUT =
-
-VIM E2E REPORT
-==============
-
-SCALAR COMPARISONS
- @>>>>>>>>> @>>>>>>>>> @>>>>>>>
-"vanilla", "citrun", "diff (%)"
- ---------------------------------------------------------------------
-~~ @<<<<<<<<<<<<<<<<<<<<<<<<<< @>>>>>>>>> @>>>>>>>>> @>>>>
-shift(@scalar_desc), shift(@scalar_vanilla), shift(@scalar_citrun), shift(@scalar_diff)
-
-DIFF COMPARISONS
-
-.
-
-write;