~percona-toolkit-dev/percona-toolkit/release-2.2.2

« back to all changes in this revision

Viewing changes to t/lib/TableSyncStream.t

  • Committer: Daniel Nichter
  • Date: 2011-06-24 17:22:06 UTC
  • Revision ID: daniel@percona.com-20110624172206-c7q4s4ad6r260zz6
Add lib/, t/lib/, and sandbox/.  All modules are updated and passing on MySQL 5.1.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/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 tests => 5;
 
13
 
 
14
use TableSyncStream;
 
15
use Quoter;
 
16
use MockSth;
 
17
use RowDiff;
 
18
use ChangeHandler;
 
19
use MaatkitTest;
 
20
 
 
21
my $q = new Quoter();
 
22
my @rows;
 
23
 
 
24
throws_ok(
 
25
   sub { new TableSyncStream() },
 
26
   qr/I need a Quoter/,
 
27
   'Quoter required'
 
28
);
 
29
my $t = new TableSyncStream(
 
30
   Quoter => $q,
 
31
);
 
32
 
 
33
my $ch = new ChangeHandler(
 
34
   Quoter    => $q,
 
35
   right_db  => 'test',
 
36
   right_tbl => 'foo',
 
37
   left_db   => 'test',
 
38
   left_tbl  => 'foo',
 
39
   replace   => 0,
 
40
   actions   => [ sub { push @rows, $_[0] }, ],
 
41
   queue     => 0,
 
42
);
 
43
 
 
44
$t->prepare_to_sync(
 
45
   ChangeHandler   => $ch,
 
46
   cols            => [qw(a b c)],
 
47
   buffer_in_mysql => 1,
 
48
);
 
49
is(
 
50
   $t->get_sql(
 
51
      where    => 'foo=1',
 
52
      database => 'test',
 
53
      table    => 'foo',
 
54
   ),
 
55
   "SELECT SQL_BUFFER_RESULT `a`, `b`, `c` FROM `test`.`foo` WHERE foo=1",
 
56
   'Got SQL with SQL_BUFFER_RESULT OK',
 
57
);
 
58
 
 
59
 
 
60
$t->prepare_to_sync(
 
61
   ChangeHandler   => $ch,
 
62
   cols            => [qw(a b c)],
 
63
);
 
64
is(
 
65
   $t->get_sql(
 
66
      where    => 'foo=1',
 
67
      database => 'test',
 
68
      table    => 'foo',
 
69
   ),
 
70
   "SELECT `a`, `b`, `c` FROM `test`.`foo` WHERE foo=1",
 
71
   'Got SQL OK',
 
72
);
 
73
 
 
74
# Changed from undef to 0 due to r4802.
 
75
is( $t->done, 0, 'Not done yet' );
 
76
 
 
77
my $d = new RowDiff( dbh => 1 );
 
78
$d->compare_sets(
 
79
   left_sth => new MockSth(
 
80
      { a => 1, b => 2, c => 3 },
 
81
      { a => 2, b => 2, c => 3 },
 
82
      { a => 3, b => 2, c => 3 },
 
83
      # { a => 4, b => 2, c => 3 },
 
84
   ),
 
85
   right_sth => new MockSth(
 
86
      # { a => 1, b => 2, c => 3 },
 
87
      { a => 2, b => 2, c => 3 },
 
88
      { a => 3, b => 2, c => 3 },
 
89
      { a => 4, b => 2, c => 3 },
 
90
   ),
 
91
   syncer     => $t,
 
92
   tbl_struct => {},
 
93
);
 
94
 
 
95
is_deeply(
 
96
   \@rows,
 
97
   [
 
98
   "INSERT INTO `test`.`foo`(`a`, `b`, `c`) VALUES ('1', '2', '3')",
 
99
   "DELETE FROM `test`.`foo` WHERE `a`='4' AND `b`='2' AND `c`='3' LIMIT 1",
 
100
   ],
 
101
   'rows from handler',
 
102
);