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

« back to all changes in this revision

Viewing changes to t/pt-table-sync/compare_conflict_col.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 tests => 27;
 
13
 
 
14
use MaatkitTest;
 
15
use Sandbox;
 
16
require "$trunk/bin/pt-table-sync";
 
17
 
 
18
# Just for brevity.
 
19
sub _cmp {
 
20
   return mk_table_sync::cmp_conflict_col(@_);
 
21
}
 
22
 
 
23
# These constants are from mk-table-sync, defined just
 
24
# before sub cmp_conflict_col().
 
25
use constant UPDATE_LEFT      => -1;
 
26
use constant UPDATE_RIGHT     =>  1;
 
27
use constant UPDATE_NEITHER   =>  0;  # neither value equals/matches
 
28
use constant FAILED_THRESHOLD =>  2;  # failed to exceed threshold
 
29
 
 
30
# #############################################################################
 
31
# Sanity checks.
 
32
# #############################################################################
 
33
throws_ok(
 
34
   sub { mk_table_sync::cmp_conflict_col(1, 2, 'bad') },
 
35
   qr/Invalid comparison: bad/,
 
36
   'Dies on invalid comparison'
 
37
);
 
38
 
 
39
# ###########################################################################
 
40
# newest/oldest
 
41
# ###########################################################################
 
42
is(
 
43
   _cmp('2009-12-01 12:00:00', '2009-12-01 12:00:00', 'newest'),
 
44
   UPDATE_NEITHER,
 
45
   'same datetime'
 
46
);
 
47
 
 
48
is(
 
49
   _cmp('2009-12-01 12:00:00', '2009-12-01 12:00:011', 'newest'),
 
50
   UPDATE_LEFT,
 
51
   'newest datetime'
 
52
);
 
53
 
 
54
is(
 
55
   _cmp('2009-12-01 12:00:00', '2009-12-01 12:00:011', 'oldest'),
 
56
   UPDATE_RIGHT,
 
57
   'oldest datetime'
 
58
);
 
59
 
 
60
is(
 
61
   _cmp('2009-12-01 13:00:00', '2009-12-01 12:00:011', 'newest'),
 
62
   UPDATE_RIGHT,
 
63
   'newest datetime (reversed)'
 
64
);
 
65
 
 
66
is(
 
67
   _cmp('2009-12-01 13:00:00', '2009-12-01 12:00:011', 'oldest'),
 
68
   UPDATE_LEFT,
 
69
   'oldest datetime (reversed)'
 
70
);
 
71
 
 
72
is(
 
73
   _cmp('2009-12-01', '2009-12-02', 'newest'),
 
74
   UPDATE_LEFT,
 
75
   'newest date'
 
76
);
 
77
 
 
78
is(
 
79
   _cmp('2009-12-01', '2009-12-02', 'oldest'),
 
80
   UPDATE_RIGHT,
 
81
   'oldest date'
 
82
);
 
83
 
 
84
is(
 
85
   _cmp('12:00:00', '12:00:011', 'newest'),
 
86
   UPDATE_LEFT,
 
87
   'newest time'
 
88
);
 
89
 
 
90
is(
 
91
   _cmp('12:00:00', '12:00:011', 'oldest'),
 
92
   UPDATE_RIGHT,
 
93
   'oldest time'
 
94
);
 
95
 
 
96
is(
 
97
   _cmp('2009-12-01 12:00:00', '2009-12-01 12:05:00', 'newest', undef,
 
98
      '5m'),
 
99
   UPDATE_LEFT,
 
100
   'newest datetime, threshold ok'
 
101
);
 
102
 
 
103
is(
 
104
   _cmp('2009-12-01 12:00:00', '2009-12-01 12:05:00', 'newest', undef,
 
105
      '6m'),
 
106
   FAILED_THRESHOLD,
 
107
   'newest datetime, failed threshold'
 
108
);
 
109
 
 
110
is(
 
111
   _cmp('2009-12-01 12:00:00', '2009-12-01 12:05:00', 'oldest', undef,
 
112
      '5m'),
 
113
   UPDATE_RIGHT,
 
114
   'oldest datetime, threshold ok'
 
115
);
 
116
 
 
117
is(
 
118
   _cmp('2009-12-01 12:00:00', '2009-12-01 12:05:00', 'oldest', undef,
 
119
      '6m'),
 
120
   FAILED_THRESHOLD,
 
121
   'oldest datetime, failed threshold'
 
122
);
 
123
 
 
124
is(
 
125
   _cmp('2009-12-01', '2009-12-03', 'newest', undef,
 
126
      '2d'),
 
127
   UPDATE_LEFT,
 
128
   'newest date, threshold ok'
 
129
);
 
130
 
 
131
is(
 
132
   _cmp('2009-12-01', '2009-12-03', 'newest', undef,
 
133
      '3d'),
 
134
   FAILED_THRESHOLD,
 
135
   'newest date, failed threshold'
 
136
);
 
137
 
 
138
# ###########################################################################
 
139
# greatest/least
 
140
# ###########################################################################
 
141
is(
 
142
   _cmp(11, 11, 'greatest'),
 
143
   UPDATE_NEITHER,
 
144
   'same number'
 
145
);
 
146
 
 
147
is(
 
148
   _cmp(11, 10, 'greatest'),
 
149
   UPDATE_RIGHT,
 
150
   'greatest'
 
151
);
 
152
 
 
153
is(
 
154
   _cmp(11, 10, 'least'),
 
155
   UPDATE_LEFT,
 
156
   'least'
 
157
);
 
158
 
 
159
is(
 
160
   _cmp(20, 10, 'least', undef, 10),
 
161
   UPDATE_LEFT,
 
162
   'least, threshold ok'
 
163
);
 
164
 
 
165
is(
 
166
   _cmp(20, 10, 'least', undef, 11),
 
167
   FAILED_THRESHOLD,
 
168
   'least, failed threshold'
 
169
);
 
170
 
 
171
# #############################################################################
 
172
# equals
 
173
# #############################################################################
 
174
is(
 
175
   _cmp('foo', 'bar', 'equals', 'foo'),
 
176
   UPDATE_RIGHT,
 
177
   'equals left, update right'
 
178
);
 
179
 
 
180
is(
 
181
   _cmp('foo', 'bar', 'equals', 'bar'),
 
182
   UPDATE_LEFT,
 
183
   'equals right, update left'
 
184
);
 
185
 
 
186
is(
 
187
   _cmp('foo', 'bar', 'equals', 'banana'),
 
188
   UPDATE_NEITHER,
 
189
   'equals neither'
 
190
);
 
191
 
 
192
# #############################################################################
 
193
# matches
 
194
# #############################################################################
 
195
is(
 
196
   _cmp('foo', 'bar', 'matches', '^f..'),
 
197
   UPDATE_RIGHT,
 
198
   'matches left, update right'
 
199
);
 
200
 
 
201
is(
 
202
   _cmp('foo', 'bar', 'matches', '.[ar]+$'),
 
203
   UPDATE_LEFT,
 
204
   'matches right, update left'
 
205
);
 
206
 
 
207
is(
 
208
   _cmp('foo', 'bar', 'matches', '^foo.$'),
 
209
   UPDATE_NEITHER,
 
210
   'matches neither'
 
211
);
 
212
 
 
213
# #############################################################################
 
214
# Done.
 
215
# #############################################################################
 
216
exit;