commit 1fbff381f2fdb9c571e4e2d118cc05180c620963
parent f78c1ee54aeb36dca01f00ca7947831c17364943
Author: Kyle Milz <kyle@0x30.net>
Date: Tue, 28 Jun 2016 18:01:43 -0600
tt: check we're making forward progress in vim
Diffstat:
2 files changed, 39 insertions(+), 16 deletions(-)
diff --git a/Test/Viewer.pm b/Test/Viewer.pm
@@ -111,6 +111,29 @@ sub cmp_static_data {
}
}
+sub cmp_dynamic_data {
+ my ($self, $old_data) = @_;
+
+ my $data = $self->get_dynamic_data();
+
+ # Don't compare if given nothing to compare to.
+ return $data unless (defined $old_data);
+
+ my $bad = 0;
+ for my $key (sort keys %$data) {
+ my $old_data_tmp = $old_data->{$key};
+ my $data_tmp = $data->{$key};
+
+ my $it = each_array( @$old_data_tmp, @$data_tmp );
+ while ( my ($x, $y) = $it->() ) {
+ $bad = 1 if ($x > $y);
+ }
+ }
+ is( $bad, 0, "forward progress" );
+
+ return $data;
+}
+
sub read_all {
my ($sock, $bytes_total) = @_;
diff --git a/tt/vim.t b/tt/vim.t
@@ -4,7 +4,7 @@ use warnings;
use Cwd;
use Expect;
use List::MoreUtils qw( each_array );
-use Test::More tests => 238;
+use Test::More tests => 333;
use Time::HiRes qw( time );
use Test::Package;
@@ -34,15 +34,13 @@ my $srcdir = $package->set_srcdir("/vim74/src");
my $cwd = getcwd;
$package->patch("patch -p2 < $cwd/tt/patches/vim_osx.diff") if ($^O eq "darwin");
-# Vanilla configure.
+# Vanilla configure and compile.
$scalar_vanilla[0] = $package->configure("./configure --enable-gui=no");
-#$package->copy_file("auto/config.log", "config.log.vanilla");
-
-# Vanilla compile.
$scalar_vanilla[1] = $package->compile("make -j8 all");
$scalar_vanilla[2] = $package->get_file_size("/vim");
$scalar_vanilla[3] = $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");
@@ -50,10 +48,8 @@ $scalar_vanilla[4] = time_expect("make", "-C", "$srcdir/testdir");
# Clean up before rebuild.
$package->clean("make distclean");
-# Instrumented configure.
+# Instrumented configure and compile.
$scalar_citrun[0] = $package->inst_configure();
-
-# Instrumented compile.
$scalar_citrun[1] = $package->inst_compile();
$scalar_citrun[2] = $package->get_file_size("/vim");
@@ -123,9 +119,11 @@ my @known_good = (
);
$viewer->cmp_static_data(\@known_good);
-my $start = time;
-$viewer->get_dynamic_data() for (1..60);
-my $data_call_dur = time - $start;
+my ($data, $old_data) = (undef, undef);
+for (1..60) {
+ $old_data = $data;
+ $data = $viewer->cmp_dynamic_data($old_data);
+}
$exp->hard_close();
$viewer->close();
@@ -134,7 +132,7 @@ $viewer->close();
# xxd
#
-$exp = Expect->spawn("$srcdir/xxd/xxd");
+$exp = Expect->spawn("$srcdir/xxd/xxd", "distfiles/vim-7.4.tar.bz2");
$viewer->accept();
is( $viewer->{num_tus}, 1, "xxd translation unit count" );
@@ -145,6 +143,11 @@ is( $viewer->{num_tus}, 1, "xxd translation unit count" );
);
$viewer->cmp_static_data(\@known_good);
+for (1..60) {
+ $old_data = $data;
+ $data = $viewer->cmp_dynamic_data($old_data);
+}
+
$exp->hard_close();
my @scalar_diff;
@@ -160,14 +163,11 @@ format STDOUT =
VIM E2E REPORT
==============
- @<<<<<<<<<<<<<< @##.## sec
-"60 data calls:", $data_call_dur
-
SCALAR COMPARISONS
@>>>>>>>>> @>>>>>>>>> @>>>>>>>
"vanilla", "citrun", "diff (%)"
---------------------------------------------------------------------
-~~ @<<<<<<<<<<<<<<<<<<<<<<<<<< @>>>>>>>>> @>>>>>>>>> @>>>>>>>
+~~ @<<<<<<<<<<<<<<<<<<<<<<<<<< @>>>>>>>>> @>>>>>>>>> @>>>>
shift(@scalar_desc), shift(@scalar_vanilla), shift(@scalar_citrun), shift(@scalar_diff)
DIFF COMPARISONS