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

« back to all changes in this revision

Viewing changes to t/pt-archiver/issue_1225.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-archiver";
 
17
 
 
18
my $dp  = new DSNParser(opts=>$dsn_opts);
 
19
my $sb  = new Sandbox(basedir => '/tmp', DSNParser => $dp);
 
20
my $dbh = $sb->get_dbh_for('master');
 
21
 
 
22
if ( !$dbh ) {
 
23
   plan skip_all => 'Cannot connect to sandbox master';
 
24
}
 
25
else {
 
26
   plan tests => 4;
 
27
}
 
28
 
 
29
my $output;
 
30
my $rows;
 
31
my $cnf = "/tmp/12345/my.sandbox.cnf";
 
32
 
 
33
# #############################################################################
 
34
# Issue 1152: mk-archiver columns option resulting in null archived table data
 
35
# #############################################################################
 
36
 
 
37
$sb->load_file('master', 't/pt-archiver/samples/issue_1225.sql');
 
38
$dbh->do('set names "utf8"');
 
39
my $original_rows = $dbh->selectall_arrayref('select * from issue_1225.t where i in (1, 2)');
 
40
is_deeply(
 
41
   $original_rows,
 
42
   [  [ 1, 'が'],  # Your terminal must be UTF8 to see this Japanese character.
 
43
      [ 2, 'が'],
 
44
   ],
 
45
   "Inserted UTF8 data"
 
46
);
 
47
 
 
48
throws_ok(
 
49
   sub { mk_archiver::main(
 
50
      '--source',  'h=127.1,P=12345,D=issue_1225,t=t,u=msandbox,p=msandbox',
 
51
      '--dest',    't=a',
 
52
      qw(--where 1=1 --purge))
 
53
   },
 
54
   qr/Character set mismatch/,
 
55
   "--check-charset"
 
56
);
 
57
 
 
58
$output = output(
 
59
   sub { mk_archiver::main(
 
60
      '--source',  'h=127.1,P=12345,D=issue_1225,t=t,u=msandbox,p=msandbox',
 
61
      '--dest',    't=a',
 
62
      qw(--no-check-charset --where 1=1 --purge))
 
63
   },
 
64
);
 
65
 
 
66
my $archived_rows = $dbh->selectall_arrayref('select * from issue_1225.a where i in (1, 2)');
 
67
 
 
68
ok(
 
69
   $original_rows->[0]->[1] ne $archived_rows->[0]->[1],
 
70
   "UTF8 characters lost when cxn isn't also UTF8"
 
71
);
 
72
 
 
73
$sb->load_file('master', 't/pt-archiver/samples/issue_1225.sql');
 
74
 
 
75
$output = output(
 
76
   sub { mk_archiver::main(
 
77
      '--source',  'h=127.1,P=12345,D=issue_1225,t=t,u=msandbox,p=msandbox',
 
78
      '--dest',    't=a',
 
79
      qw(--where 1=1 --purge -A utf8)) # -A utf8 makes it work
 
80
   },
 
81
);
 
82
 
 
83
$archived_rows = $dbh->selectall_arrayref('select * from issue_1225.a where i in (1, 2)');
 
84
 
 
85
is_deeply(
 
86
   $original_rows,
 
87
   $archived_rows,
 
88
   "UTF8 characters preserved when cxn is also UTF8"
 
89
);
 
90
 
 
91
# #############################################################################
 
92
# Done.
 
93
# #############################################################################
 
94
$sb->wipe_clean($dbh);
 
95
exit;