Start testing --save-results. Let $cmd be a file in PerconaTest.pm. Remove 'at ... line N' from EventExecutor.pm errors.

This commit is contained in:
Daniel Nichter
2013-02-20 08:27:49 -07:00
parent 4cb51140f1
commit e62a02e0d3
11 changed files with 182 additions and 14 deletions

View File

@@ -4,7 +4,6 @@ BEGIN {
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
$ENV{PERCONA_TOOLKIT_TEST_USE_DSN_NAMES} = 1;
};
use strict;
@@ -12,6 +11,8 @@ use warnings FATAL => 'all';
use English qw(-no_match_vars);
use Test::More;
use File::Basename;
$ENV{PERCONA_TOOLKIT_TEST_USE_DSN_NAMES} = 1;
use PerconaTest;
use Sandbox;
@@ -40,8 +41,9 @@ my $samples_dir = "$trunk/t/pt-upgrade/samples";
opendir(my $dh, $samples_dir) or die "Cannot open $samples_dir: $OS_ERROR";
while ( my $sampleno = readdir $dh ) {
next unless $sampleno =~ m/^\d+$/;
sub load_sample_sql_files {
my ($sampleno) = @_;
if ( -f "$samples_dir/$sampleno/tables.sql" ) {
$sb->load_file('host1', "$sample/$sampleno/tables.sql", undef, no_wait => 1);
$sb->load_file('host2', "$sample/$sampleno/tables.sql", undef, no_wait => 1);
@@ -52,10 +54,17 @@ while ( my $sampleno = readdir $dh ) {
if ( -f "$samples_dir/$sampleno/host2.sql" ) {
$sb->load_file('host2', "$sample/$sampleno/host2.sql", undef, no_wait => 1);
}
}
while ( my $sampleno = readdir $dh ) {
next unless $sampleno =~ m/^\d+$/;
my $conf = "$samples_dir/$sampleno/conf";
load_sample_sql_files($sampleno);
foreach my $log ( glob("$samples_dir/$sampleno/*.log") ) {
(my $basename = basename($log)) =~ s/\.\S+$//;
my $sed;
if ( -f "$samples_dir/$sampleno/$basename.sed" ) {
@@ -81,7 +90,8 @@ while ( my $sampleno = readdir $dh ) {
($sed ? (sed => [ $sed ]) : ()),
),
"$sampleno: $basename.txt"
) or diag("diff:\n", $test_diff, "\noutput:\n", $output);
) or diag("\n\n---- DIFF ----\n\n", $test_diff,
"\n\n---- OUTPUT ----\n\n", $output);
}
}
}

View File

@@ -0,0 +1,7 @@
$meta = {
error => undef,
query_time => '0',
warnings => {}
};
##

View File

@@ -0,0 +1,2 @@
select * from test.t order by id
##

View File

@@ -0,0 +1,34 @@
$results = [
[
'1',
'a',
'2013-01-01 00:00:01'
],
[
'2',
'b',
'2013-01-01 00:00:02'
],
[
'3',
'c',
'2013-01-01 00:00:03'
],
[
'4',
'd',
'2013-01-01 00:00:04'
],
[
'5',
'e',
'2013-01-01 00:00:05'
],
[
'6',
'f',
'2013-01-01 00:00:06'
]
];
##

101
t/pt-upgrade/save_results.t Normal file
View File

@@ -0,0 +1,101 @@
#!/usr/bin/env perl
BEGIN {
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
};
use strict;
use warnings FATAL => 'all';
use English qw(-no_match_vars);
use Test::More;
use File::Basename;
use File::Temp qw(tempdir);
$ENV{PERCONA_TOOLKIT_TEST_USE_DSN_NAMES} = 1;
$ENV{PRETTY_RESULTS} = 1;
use PerconaTest;
use Sandbox;
require "$trunk/bin/pt-upgrade";
my $dp = new DSNParser(opts=>$dsn_opts);
my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp);
my $dbh1 = $sb->get_dbh_for('host1');
if ( !$dbh1 ) {
plan skip_all => 'Cannot connect to sandbox host1';
}
my $host1_dsn = $sb->dsn_for('host1');
my $tmpdir = tempdir("/tmp/pt-upgrade.$PID.XXXXXX", CLEANUP => 1);
my $sample = "t/pt-upgrade/samples";
my $samples_dir = "$trunk/t/pt-upgrade/samples";
opendir(my $dh, $samples_dir) or die "Cannot open $samples_dir: $OS_ERROR";
sub load_sample_sql_files {
my ($sampleno) = @_;
if ( -f "$samples_dir/$sampleno/tables.sql" ) {
$sb->load_file('host1', "$sample/$sampleno/tables.sql", undef, no_wait => 1);
$sb->load_file('host2', "$sample/$sampleno/tables.sql", undef, no_wait => 1);
}
if ( -f "$samples_dir/$sampleno/host1.sql" ) {
$sb->load_file('host1', "$sample/$sampleno/host1.sql", undef, no_wait => 1);
}
if ( -f "$samples_dir/$sampleno/host2.sql" ) {
$sb->load_file('host2', "$sample/$sampleno/host2.sql", undef, no_wait => 1);
}
}
while ( my $sampleno = readdir $dh ) {
next unless $sampleno =~ m/^\d+$/;
my $conf = "$samples_dir/$sampleno/conf";
load_sample_sql_files($sampleno);
foreach my $log ( glob("$samples_dir/$sampleno/*.log") ) {
(my $basename = basename($log)) =~ s/\.\S+$//;
my $results_dir = "$samples_dir/$sampleno/${basename}_results";
if ( -d $results_dir ) {
diag(`rm -rf $tmpdir/*`);
my $output = output(
sub { pt_upgrade::main(
(-f $conf ? ('--config', $conf) : ()),
$log,
$host1_dsn,
'--save-results', $tmpdir
) },
stderr => 1,
);
foreach my $file ( glob("$results_dir/*") ) {
my $result = basename($file);
ok(
no_diff(
"$tmpdir/$result",
$file,
full_path => 1,
sed => [
q{"s/query_time => '[0-9.]*'/query_time => '0'/"},
],
),
"$sampleno: results: $result"
) or diag($test_diff);
}
}
}
}
close $dh;
# #############################################################################
# Done.
# #############################################################################
#$sb->wipe_clean($dbh1);
#ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox");
done_testing;