~percona-toolkit-dev/percona-toolkit/mysql-5.6-test-fixes

« back to all changes in this revision

Viewing changes to t/pt-table-checksum/chunk_column.t

  • Committer: Daniel Nichter
  • Date: 2011-06-24 22:02:05 UTC
  • Revision ID: daniel@percona.com-20110624220205-e779cao9hcwyly1w
Add forked Maatkit tools in bin/ and their tests in t/.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env perl
 
2
 
 
3
BEGIN {
 
4
   die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
 
5
      unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
 
6
   unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
 
7
};
 
8
 
 
9
use strict;
 
10
use warnings FATAL => 'all';
 
11
use English qw(-no_match_vars);
 
12
use Test::More;
 
13
 
 
14
use MaatkitTest;
 
15
use Sandbox;
 
16
require "$trunk/bin/pt-table-checksum";
 
17
 
 
18
my $vp  = new VersionParser();
 
19
my $dp  = new DSNParser(opts=>$dsn_opts);
 
20
my $sb  = new Sandbox(basedir => '/tmp', DSNParser => $dp);
 
21
my $dbh = $sb->get_dbh_for('master');
 
22
 
 
23
if ( !$dbh ) {
 
24
   plan skip_all => 'Cannot connect to sandbox master';
 
25
}
 
26
else {
 
27
   plan tests => 5;
 
28
}
 
29
 
 
30
my $output;
 
31
my $cnf='/tmp/12345/my.sandbox.cnf';
 
32
my @args = ('-F', $cnf, 'h=127.1', qw(-d issue_519 --explain --chunk-size 3));
 
33
 
 
34
$sb->load_file('master', "t/pt-table-checksum/samples/issue_519.sql");
 
35
 
 
36
my $default_output = "issue_519 t     SELECT /*issue_519.t:1/5*/ 0 AS chunk_num, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `i`, `y`, `t`, CONCAT(ISNULL(`t`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `issue_519`.`t` FORCE INDEX (`PRIMARY`) WHERE (`i` = 0)
 
37
issue_519 t     `i` = 0
 
38
issue_519 t     `i` > 0 AND `i` < '4'
 
39
issue_519 t     `i` >= '4' AND `i` < '7'
 
40
issue_519 t     `i` >= '7' AND `i` < '10'
 
41
issue_519 t     `i` >= '10'
 
42
";
 
43
 
 
44
$output = output(
 
45
   sub { mk_table_checksum::main(@args) },
 
46
);
 
47
 
 
48
is(
 
49
   $output,
 
50
   $default_output,
 
51
   "Chooses chunk column by default"
 
52
);
 
53
 
 
54
$output = output(
 
55
   sub { mk_table_checksum::main(@args, qw(--chunk-column batman)) },
 
56
);
 
57
 
 
58
is(
 
59
   $output,
 
60
   $default_output,
 
61
   "Chooses chunk column if --chunk-column doesn't exist"
 
62
);
 
63
 
 
64
$output = output(
 
65
   sub { mk_table_checksum::main(@args, qw(--chunk-column t)) },
 
66
);
 
67
 
 
68
is(
 
69
   $output,
 
70
   $default_output,
 
71
   "Chooses chunk column if --chunk-column isn't chunkable"
 
72
);
 
73
 
 
74
$output = output(
 
75
   sub { mk_table_checksum::main(@args, qw(--chunk-column i --chunk-index y)) },
 
76
);
 
77
 
 
78
is(
 
79
   $output,
 
80
   $default_output,
 
81
   "Chooses chunk column if it isn't chunkable with --chunk-index",
 
82
);
 
83
 
 
84
$output = output(
 
85
   sub { mk_table_checksum::main(@args, qw(--chunk-column y)) },
 
86
);
 
87
 
 
88
is(
 
89
   $output,
 
90
"issue_519 t     SELECT /*issue_519.t:1/5*/ 0 AS chunk_num, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `i`, `y`, `t`, CONCAT(ISNULL(`t`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `issue_519`.`t` FORCE INDEX (`y`) WHERE (`y` = 0)
 
91
issue_519 t     `y` = 0
 
92
issue_519 t     `y` > 0 AND `y` < '2003'
 
93
issue_519 t     `y` >= '2003' AND `y` < '2006'
 
94
issue_519 t     `y` >= '2006' AND `y` < '2009'
 
95
issue_519 t     `y` >= '2009'
 
96
",
 
97
   "Use --chunk-column"
 
98
);
 
99
 
 
100
# #############################################################################
 
101
# Done.
 
102
# #############################################################################
 
103
$sb->wipe_clean($dbh);
 
104
exit;