citrun

watch C/C++ source code execute
Log | Files | Refs | LICENSE

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:
MTest/Viewer.pm | 23+++++++++++++++++++++++
Mtt/vim.t | 32++++++++++++++++----------------
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