mirror of
https://github.com/percona/percona-toolkit.git
synced 2026-04-15 01:04:43 +08:00
Fix tests to work with new --set-vars, and change --lock-wait-timeout to --set-vars innodb_lock_wait_timeout in tests.
This commit is contained in:
@@ -448,6 +448,8 @@ sub copy {
|
|||||||
sub set_vars {
|
sub set_vars {
|
||||||
my ($self, $dbh, $vars) = @_;
|
my ($self, $dbh, $vars) = @_;
|
||||||
|
|
||||||
|
return unless $vars;
|
||||||
|
|
||||||
foreach my $var ( sort keys %$vars ) {
|
foreach my $var ( sort keys %$vars ) {
|
||||||
my $val = $vars->{$var}->{val};
|
my $val = $vars->{$var}->{val};
|
||||||
|
|
||||||
|
|||||||
@@ -29,10 +29,10 @@ if ( !$master_dbh ) {
|
|||||||
plan skip_all => 'Cannot connect to sandbox master';
|
plan skip_all => 'Cannot connect to sandbox master';
|
||||||
}
|
}
|
||||||
|
|
||||||
my $o = new OptionParser(description => 'Cxn');
|
my $o = new OptionParser(description => 'Cxn', file => "$trunk/bin/pt-table-checksum");
|
||||||
$o->get_specs("$trunk/bin/pt-table-checksum");
|
$o->get_specs("$trunk/bin/pt-table-checksum");
|
||||||
$o->get_opts();
|
$o->get_opts();
|
||||||
$dp->prop('set-vars', $o->get('set-vars'));
|
$dp->prop('set-vars', $o->set_vars());
|
||||||
|
|
||||||
sub make_cxn {
|
sub make_cxn {
|
||||||
my (%args) = @_;
|
my (%args) = @_;
|
||||||
|
|||||||
@@ -439,7 +439,7 @@ SKIP: {
|
|||||||
$dbh->disconnect();
|
$dbh->disconnect();
|
||||||
|
|
||||||
$dp = new DSNParser(opts => $opts);
|
$dp = new DSNParser(opts => $opts);
|
||||||
$dp->prop('set-vars', 'wait_timeout=1000');
|
$dp->prop('set-vars', { wait_timeout => { val => 1000, default => 1}});
|
||||||
$d = $dp->parse('h=127.0.0.1,P=12345,A=utf8,u=msandbox,p=msandbox');
|
$d = $dp->parse('h=127.0.0.1,P=12345,A=utf8,u=msandbox,p=msandbox');
|
||||||
my $dbh2 = $dp->get_dbh($dp->get_cxn_params($d), {mysql_use_result=>1});
|
my $dbh2 = $dp->get_dbh($dp->get_cxn_params($d), {mysql_use_result=>1});
|
||||||
sleep 2;
|
sleep 2;
|
||||||
@@ -560,7 +560,7 @@ like(
|
|||||||
"get_dbh dies with an unknown charset"
|
"get_dbh dies with an unknown charset"
|
||||||
);
|
);
|
||||||
|
|
||||||
$dp->prop('set-vars', "time_zoen='UTC'");
|
$dp->prop('set-vars', { time_zoen => { val => 'UTC' }});
|
||||||
($out, undef) = full_output(sub { $dp->get_dbh($dp->get_cxn_params($dsn), {}) });
|
($out, undef) = full_output(sub { $dp->get_dbh($dp->get_cxn_params($dsn), {}) });
|
||||||
|
|
||||||
like(
|
like(
|
||||||
@@ -575,7 +575,7 @@ $dp->prop('set-vars', undef);
|
|||||||
# https://bugs.launchpad.net/percona-toolkit/+bug/1078887
|
# https://bugs.launchpad.net/percona-toolkit/+bug/1078887
|
||||||
# #############################################################################
|
# #############################################################################
|
||||||
|
|
||||||
$dp->prop('set-vars', "sql_mode=ANSI_QUOTES");
|
$dp->prop('set-vars', { sql_mode => { val=>'ANSI_QUOTES' }});
|
||||||
my $sql_mode_dbh = $dp->get_dbh($dp->get_cxn_params($dsn), {});
|
my $sql_mode_dbh = $dp->get_dbh($dp->get_cxn_params($dsn), {});
|
||||||
|
|
||||||
my (undef, $sql_mode) = $sql_mode_dbh->selectrow_array(q{SHOW VARIABLES LIKE 'sql\_mode'});
|
my (undef, $sql_mode) = $sql_mode_dbh->selectrow_array(q{SHOW VARIABLES LIKE 'sql\_mode'});
|
||||||
@@ -628,4 +628,4 @@ SKIP: {
|
|||||||
# Done.
|
# Done.
|
||||||
# #############################################################################
|
# #############################################################################
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,8 @@ if ( !$dbh ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
||||||
# so we need to specify --lock-wait-timeout=3 else the tool will die.
|
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the
|
||||||
|
# tool will die.
|
||||||
my $master_dsn = 'h=127.1,P=12348,u=msandbox,p=msandbox';
|
my $master_dsn = 'h=127.1,P=12348,u=msandbox,p=msandbox';
|
||||||
my @args = (qw(--set-vars innodb_lock_wait_timeout=3));
|
my @args = (qw(--set-vars innodb_lock_wait_timeout=3));
|
||||||
my $output;
|
my $output;
|
||||||
|
|||||||
@@ -30,7 +30,8 @@ elsif ( !$slave_dbh ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
||||||
# so we need to specify --lock-wait-timeout=3 else the tool will die.
|
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the
|
||||||
|
# tool will die.
|
||||||
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
|
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
|
||||||
my @args = (qw(--set-vars innodb_lock_wait_timeout=3));
|
my @args = (qw(--set-vars innodb_lock_wait_timeout=3));
|
||||||
my $output;
|
my $output;
|
||||||
|
|||||||
@@ -30,7 +30,8 @@ elsif ( !$slave_dbh ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
||||||
# so we need to specify --lock-wait-timeout=3 else the tool will die.
|
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the
|
||||||
|
# tool will die.
|
||||||
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
|
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
|
||||||
my @args = (qw(--set-vars innodb_lock_wait_timeout=3));
|
my @args = (qw(--set-vars innodb_lock_wait_timeout=3));
|
||||||
my $output;
|
my $output;
|
||||||
|
|||||||
@@ -40,7 +40,8 @@ elsif ( !@{$master_dbh->selectall_arrayref("show databases like 'sakila'")} ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
||||||
# so we need to specify --lock-wait-timeout=3 else the tool will die.
|
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the
|
||||||
|
# tool will die.
|
||||||
my $master_dsn = 'h=127.1,P=12345,p=msandbox';
|
my $master_dsn = 'h=127.1,P=12345,p=msandbox';
|
||||||
my @args = (qw(--set-vars innodb_lock_wait_timeout=3));
|
my @args = (qw(--set-vars innodb_lock_wait_timeout=3));
|
||||||
my $row;
|
my $row;
|
||||||
|
|||||||
@@ -46,8 +46,6 @@ if ( $db_flavor !~ /XtraDB Cluster/ ) {
|
|||||||
plan skip_all => "PXC tests";
|
plan skip_all => "PXC tests";
|
||||||
}
|
}
|
||||||
|
|
||||||
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
|
||||||
# so we need to specify --lock-wait-timeout=3 else the tool will die.
|
|
||||||
my $node1_dsn = $sb->dsn_for('node1');
|
my $node1_dsn = $sb->dsn_for('node1');
|
||||||
my $output;
|
my $output;
|
||||||
my $exit;
|
my $exit;
|
||||||
|
|||||||
@@ -30,7 +30,8 @@ elsif ( !$slave_dbh ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
|
||||||
# so we need to specify --lock-wait-timeout=3 else the tool will die.
|
# so we need to specify --set-vars innodb_lock_wait_timeout-3 else the
|
||||||
|
# tool will die.
|
||||||
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
|
my $master_dsn = 'h=127.1,P=12345,u=msandbox,p=msandbox';
|
||||||
my @args = (qw(--set-vars innodb_lock_wait_timeout=3));
|
my @args = (qw(--set-vars innodb_lock_wait_timeout=3));
|
||||||
my $output;
|
my $output;
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ $ENV{PTDEBUG} = $dbg || 0;
|
|||||||
|
|
||||||
# pt-table-checksum waits for all checksums to replicate to all slaves,
|
# pt-table-checksum waits for all checksums to replicate to all slaves,
|
||||||
# so no need to call $sb->wait_for_slaves() after this.
|
# so no need to call $sb->wait_for_slaves() after this.
|
||||||
`$trunk/bin/pt-table-checksum h=127.1,P=12345,u=msandbox,p=msandbox --max-load '' --lock-wait 3 --chunk-size 50 --chunk-index idx_actor_last_name -t sakila.actor --quiet`;
|
`$trunk/bin/pt-table-checksum h=127.1,P=12345,u=msandbox,p=msandbox --max-load '' --set-vars innodb_lock_wait_timeout=3 --chunk-size 50 --chunk-index idx_actor_last_name -t sakila.actor --quiet`;
|
||||||
|
|
||||||
$slave_dbh->do("update percona.checksums set this_crc='' where db='sakila' and tbl='actor' and chunk=3");
|
$slave_dbh->do("update percona.checksums set this_crc='' where db='sakila' and tbl='actor' and chunk=3");
|
||||||
$slave_dbh->do("update sakila.actor set last_name='' where actor_id=30");
|
$slave_dbh->do("update sakila.actor set last_name='' where actor_id=30");
|
||||||
@@ -192,7 +192,7 @@ like(
|
|||||||
"--replicate with char index col (bug 911996)"
|
"--replicate with char index col (bug 911996)"
|
||||||
);
|
);
|
||||||
|
|
||||||
$output = `$trunk/bin/pt-table-checksum h=127.1,P=12345,u=msandbox,p=msandbox --max-load '' --lock-wait 3 --chunk-size 50 --chunk-index idx_actor_last_name -t sakila.actor`;
|
$output = `$trunk/bin/pt-table-checksum h=127.1,P=12345,u=msandbox,p=msandbox --max-load '' --set-vars innodb_lock_wait_timeout=3 --chunk-size 50 --chunk-index idx_actor_last_name -t sakila.actor`;
|
||||||
is(
|
is(
|
||||||
PerconaTest::count_checksum_results($output, 'diffs'),
|
PerconaTest::count_checksum_results($output, 'diffs'),
|
||||||
0,
|
0,
|
||||||
@@ -205,7 +205,7 @@ $slave_dbh->do("update test.t set c='z' where id>8");
|
|||||||
|
|
||||||
# pt-table-checksum waits for all checksums to replicate to all slaves,
|
# pt-table-checksum waits for all checksums to replicate to all slaves,
|
||||||
# so no need to call $sb->wait_for_slaves() after this.
|
# so no need to call $sb->wait_for_slaves() after this.
|
||||||
`$trunk/bin/pt-table-checksum h=127.1,P=12345,u=msandbox,p=msandbox --max-load '' --lock-wait 3 --chunk-size 2 -t test.t --quiet`;
|
`$trunk/bin/pt-table-checksum h=127.1,P=12345,u=msandbox,p=msandbox --max-load '' --set-vars innodb_lock_wait_timeout=3 --chunk-size 2 -t test.t --quiet`;
|
||||||
|
|
||||||
$output = output(
|
$output = output(
|
||||||
sub {
|
sub {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ $sb->load_file('master', "$sample/wrong-tbl-struct-bug-1003014.sql");
|
|||||||
$slave_dbh->do("DELETE FROM test.aaa WHERE STOP_ARCHIVE IN (5,6,7)");
|
$slave_dbh->do("DELETE FROM test.aaa WHERE STOP_ARCHIVE IN (5,6,7)");
|
||||||
$slave_dbh->do("UPDATE test.zzz SET c='x' WHERE id IN (44,45,46)");
|
$slave_dbh->do("UPDATE test.zzz SET c='x' WHERE id IN (44,45,46)");
|
||||||
|
|
||||||
$output = `$trunk/bin/pt-table-checksum $master_dsn --lock-wait-timeout 3 --max-load '' -d test --chunk-size 10 2>&1`;
|
$output = `$trunk/bin/pt-table-checksum $master_dsn --set-vars innodb_lock_wait_timeout=3 --max-load '' -d test --chunk-size 10 2>&1`;
|
||||||
|
|
||||||
is(
|
is(
|
||||||
PerconaTest::count_checksum_results($output, 'diffs'),
|
PerconaTest::count_checksum_results($output, 'diffs'),
|
||||||
@@ -112,7 +112,7 @@ $sb->load_file('master', "$sample/wrong-tbl-struct-bug-1003014.sql");
|
|||||||
$slave_dbh->do("DELETE FROM test.aaa WHERE STOP_ARCHIVE IN (5,6,7)");
|
$slave_dbh->do("DELETE FROM test.aaa WHERE STOP_ARCHIVE IN (5,6,7)");
|
||||||
$slave_dbh->do("UPDATE test.zzz SET c='x' WHERE id IN (44,45,46)");
|
$slave_dbh->do("UPDATE test.zzz SET c='x' WHERE id IN (44,45,46)");
|
||||||
|
|
||||||
$output = `$trunk/bin/pt-table-checksum $master_dsn --lock-wait-timeout 3 --max-load '' -d test --chunk-size 10 2>&1`;
|
$output = `$trunk/bin/pt-table-checksum $master_dsn --set-vars innodb_lock_wait_timeout=3 --max-load '' -d test --chunk-size 10 2>&1`;
|
||||||
|
|
||||||
is(
|
is(
|
||||||
PerconaTest::count_checksum_results($output, 'diffs'),
|
PerconaTest::count_checksum_results($output, 'diffs'),
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ test_filters(
|
|||||||
# Checksum the filter tables.
|
# Checksum the filter tables.
|
||||||
$master_dbh->do("DROP DATABASE IF EXISTS percona");
|
$master_dbh->do("DROP DATABASE IF EXISTS percona");
|
||||||
$sb->wait_for_slaves();
|
$sb->wait_for_slaves();
|
||||||
diag(`$trunk/bin/pt-table-checksum $master_dsn -d d1,d2,d3 --chunk-size 100 --quiet --lock-wait-timeout 3 --max-load ''`);
|
diag(`$trunk/bin/pt-table-checksum $master_dsn -d d1,d2,d3 --chunk-size 100 --quiet --set-vars innodb_lock_wait_timeout=3 --max-load ''`);
|
||||||
|
|
||||||
my $rows = $master_dbh->selectall_arrayref("SELECT CONCAT(db, '.', tbl) FROM percona.checksums ORDER BY db, tbl");
|
my $rows = $master_dbh->selectall_arrayref("SELECT CONCAT(db, '.', tbl) FROM percona.checksums ORDER BY db, tbl");
|
||||||
is_deeply(
|
is_deeply(
|
||||||
@@ -180,7 +180,7 @@ $sb->load_file("master", "t/pt-table-sync/samples/simple-tbls.sql");
|
|||||||
$slave_dbh->do("INSERT INTO test.empty_it VALUES (null,11,11,'eleven')");
|
$slave_dbh->do("INSERT INTO test.empty_it VALUES (null,11,11,'eleven')");
|
||||||
|
|
||||||
# Create the checksums.
|
# Create the checksums.
|
||||||
diag(`$trunk/bin/pt-table-checksum h=127.1,P=12345,u=msandbox,p=msandbox -d test --quiet --quiet --lock-wait-timeout 3 --max-load ''`);
|
diag(`$trunk/bin/pt-table-checksum h=127.1,P=12345,u=msandbox,p=msandbox -d test --quiet --quiet --set-vars innodb_lock_wait_timeout=3 --max-load ''`);
|
||||||
|
|
||||||
# Make sure all the tables were checksummed.
|
# Make sure all the tables were checksummed.
|
||||||
$rows = $master_dbh->selectall_arrayref("SELECT DISTINCT db, tbl FROM percona.checksums ORDER BY db, tbl");
|
$rows = $master_dbh->selectall_arrayref("SELECT DISTINCT db, tbl FROM percona.checksums ORDER BY db, tbl");
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ $sb->load_file("master", "t/pt-table-sync/samples/issue_560.sql");
|
|||||||
$slave_dbh->do('UPDATE issue_560.buddy_list SET buddy_id=0 WHERE player_id IN (333,334)');
|
$slave_dbh->do('UPDATE issue_560.buddy_list SET buddy_id=0 WHERE player_id IN (333,334)');
|
||||||
$slave_dbh->do('UPDATE issue_560.buddy_list SET buddy_id=0 WHERE player_id=486');
|
$slave_dbh->do('UPDATE issue_560.buddy_list SET buddy_id=0 WHERE player_id=486');
|
||||||
|
|
||||||
$output = `$trunk/bin/pt-table-checksum --replicate issue_560.checksum h=127.1,P=12345,u=msandbox,p=msandbox -d issue_560 --chunk-size 50 --lock-wait-time 3`;
|
$output = `$trunk/bin/pt-table-checksum --replicate issue_560.checksum h=127.1,P=12345,u=msandbox,p=msandbox -d issue_560 --chunk-size 50 --set-vars innodb_lock_wait_timeout=3`;
|
||||||
|
|
||||||
is(
|
is(
|
||||||
PerconaTest::count_checksum_results($output, 'diffs'),
|
PerconaTest::count_checksum_results($output, 'diffs'),
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ $slave_dbh->do('UPDATE issue_375.t SET foo="z" WHERE id=10');
|
|||||||
$slave_dbh->do('UPDATE issue_375.t SET foo="zz" WHERE id=100');
|
$slave_dbh->do('UPDATE issue_375.t SET foo="zz" WHERE id=100');
|
||||||
|
|
||||||
# Checksum and replicate.
|
# Checksum and replicate.
|
||||||
diag(`$trunk/bin/pt-table-checksum --create-replicate-table --replicate issue_375.checksum h=127.1,P=12345,u=msandbox,p=msandbox -d issue_375 -t t --lock-wait-time 3 > /dev/null`);
|
diag(`$trunk/bin/pt-table-checksum --create-replicate-table --replicate issue_375.checksum h=127.1,P=12345,u=msandbox,p=msandbox -d issue_375 -t t --set-vars innodb_lock_wait_timeout=3 > /dev/null`);
|
||||||
|
|
||||||
# And now sync using the replicated checksum results/differences.
|
# And now sync using the replicated checksum results/differences.
|
||||||
$output = output(
|
$output = output(
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ else {
|
|||||||
my $output;
|
my $output;
|
||||||
my @args = ('--sync-to-master', 'h=127.1,P=12346,u=msandbox,p=msandbox',
|
my @args = ('--sync-to-master', 'h=127.1,P=12346,u=msandbox,p=msandbox',
|
||||||
qw(-d issue_375 --replicate issue_375.checksums --print));
|
qw(-d issue_375 --replicate issue_375.checksums --print));
|
||||||
my $pt_table_checksum = "$trunk/bin/pt-table-checksum h=127.1,P=12345,u=msandbox,p=msandbox -d issue_375 --chunk-size 20 --chunk-size-limit 0 --lock-wait-time 3";
|
my $pt_table_checksum = "$trunk/bin/pt-table-checksum h=127.1,P=12345,u=msandbox,p=msandbox -d issue_375 --chunk-size 20 --chunk-size-limit 0 --set-vars innodb_lock_wait_timeout=3";
|
||||||
|
|
||||||
# #############################################################################
|
# #############################################################################
|
||||||
# Issue 996: might not chunk inside of mk-table-checksum's boundaries
|
# Issue 996: might not chunk inside of mk-table-checksum's boundaries
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ $sb->create_dbs($master_dbh, [qw(test)]);
|
|||||||
$sb->load_file('master', 't/pt-table-sync/samples/issue_37.sql');
|
$sb->load_file('master', 't/pt-table-sync/samples/issue_37.sql');
|
||||||
$sb->use('master', '-e "SET SQL_LOG_BIN=0; INSERT INTO test.issue_37 VALUES (1), (2);"');
|
$sb->use('master', '-e "SET SQL_LOG_BIN=0; INSERT INTO test.issue_37 VALUES (1), (2);"');
|
||||||
|
|
||||||
`$trunk/bin/pt-table-checksum h=127.0.0.1,P=12345,u=msandbox,p=msandbox --replicate test.checksum -d test --lock-wait-time 3 2>&1 > /dev/null`;
|
`$trunk/bin/pt-table-checksum h=127.0.0.1,P=12345,u=msandbox,p=msandbox --replicate test.checksum -d test --set-vars innodb_lock_wait_timeout=3 2>&1 > /dev/null`;
|
||||||
|
|
||||||
$output = `$trunk/bin/pt-table-sync --no-check-slave --execute u=msandbox,p=msandbox,h=127.0.0.1,P=12345,D=test,t=issue_37 h=127.1,P=12346 2>&1`;
|
$output = `$trunk/bin/pt-table-sync --no-check-slave --execute u=msandbox,p=msandbox,h=127.0.0.1,P=12345,D=test,t=issue_37 h=127.1,P=12346 2>&1`;
|
||||||
like($output,
|
like($output,
|
||||||
@@ -103,7 +103,7 @@ $slave_dbh->do('INSERT INTO db1.t1 VALUES (9)');
|
|||||||
$slave_dbh->do('DELETE FROM db2.t1 WHERE i > 4');
|
$slave_dbh->do('DELETE FROM db2.t1 WHERE i > 4');
|
||||||
|
|
||||||
# Replicate checksum of db2.t1.
|
# Replicate checksum of db2.t1.
|
||||||
$output = `$trunk/bin/pt-table-checksum h=127.1,P=12345,u=msandbox,p=msandbox --replicate db1.checksum --create-replicate-table --databases db1,db2 --lock-wait-time 3 2>&1`;
|
$output = `$trunk/bin/pt-table-checksum h=127.1,P=12345,u=msandbox,p=msandbox --replicate db1.checksum --create-replicate-table --databases db1,db2 --set-vars innodb_lock_wait_timeout=3 2>&1`;
|
||||||
like(
|
like(
|
||||||
$output,
|
$output,
|
||||||
qr/db2.t1/,
|
qr/db2.t1/,
|
||||||
|
|||||||
Reference in New Issue
Block a user