rubyrep 1.0.5 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +6 -0
- data/Manifest.txt +6 -0
- data/lib/rubyrep/configuration.rb +14 -0
- data/lib/rubyrep/logged_change.rb +16 -195
- data/lib/rubyrep/logged_change_loader.rb +196 -0
- data/lib/rubyrep/noisy_connection.rb +80 -0
- data/lib/rubyrep/proxy_connection.rb +2 -9
- data/lib/rubyrep/replication_difference.rb +14 -9
- data/lib/rubyrep/replication_initializer.rb +9 -0
- data/lib/rubyrep/replication_run.rb +29 -6
- data/lib/rubyrep/replication_runner.rb +6 -2
- data/lib/rubyrep/session.rb +85 -43
- data/lib/rubyrep/task_sweeper.rb +77 -0
- data/lib/rubyrep/version.rb +1 -1
- data/lib/rubyrep.rb +3 -0
- data/spec/logged_change_loader_spec.rb +68 -0
- data/spec/logged_change_spec.rb +45 -55
- data/spec/noisy_connection_spec.rb +80 -0
- data/spec/proxy_connection_spec.rb +0 -11
- data/spec/replication_difference_spec.rb +10 -9
- data/spec/replication_helper_spec.rb +17 -14
- data/spec/replication_initializer_spec.rb +22 -0
- data/spec/replication_run_spec.rb +20 -9
- data/spec/session_spec.rb +23 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/task_sweeper_spec.rb +47 -0
- data/spec/two_way_replicator_spec.rb +50 -40
- data.tar.gz.sig +0 -0
- metadata +8 -2
- metadata.gz.sig +0 -0
@@ -13,14 +13,14 @@ describe Replicators::TwoWayReplicator do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "initialize should store the replication helper" do
|
16
|
-
rep_run = ReplicationRun.new(Session.new)
|
16
|
+
rep_run = ReplicationRun.new(Session.new, TaskSweeper.new(1))
|
17
17
|
helper = ReplicationHelper.new(rep_run)
|
18
18
|
replicator = Replicators::TwoWayReplicator.new(helper)
|
19
19
|
replicator.rep_helper.should == helper
|
20
20
|
end
|
21
21
|
|
22
22
|
it "verify_option should raise descriptive errors" do
|
23
|
-
rep_run = ReplicationRun.new(Session.new)
|
23
|
+
rep_run = ReplicationRun.new(Session.new, TaskSweeper.new(1))
|
24
24
|
helper = ReplicationHelper.new(rep_run)
|
25
25
|
replicator = Replicators::TwoWayReplicator.new(helper)
|
26
26
|
lambda {replicator.verify_option(nil, [:valid_value], :my_key, :my_value)}.
|
@@ -30,7 +30,7 @@ describe Replicators::TwoWayReplicator do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
it "initialize should throw an error if options are invalid" do
|
33
|
-
rep_run = ReplicationRun.new(Session.new)
|
33
|
+
rep_run = ReplicationRun.new(Session.new, TaskSweeper.new(1))
|
34
34
|
helper = ReplicationHelper.new(rep_run)
|
35
35
|
base_options = {
|
36
36
|
:replicator => :two_way,
|
@@ -71,7 +71,7 @@ describe Replicators::TwoWayReplicator do
|
|
71
71
|
it "options_for_table should return the correct options for the table" do
|
72
72
|
Initializer.configuration.options = {:a => 1, :b => 2}
|
73
73
|
Initializer.configuration.add_table_options 'scanner_records', {:b => 3}
|
74
|
-
rep_run = ReplicationRun.new(Session.new)
|
74
|
+
rep_run = ReplicationRun.new(Session.new, TaskSweeper.new(1))
|
75
75
|
helper = ReplicationHelper.new(rep_run)
|
76
76
|
replicator = Replicators::TwoWayReplicator.new(helper)
|
77
77
|
options = replicator.options_for_table('scanner_records')
|
@@ -80,7 +80,7 @@ describe Replicators::TwoWayReplicator do
|
|
80
80
|
end
|
81
81
|
|
82
82
|
it "options_for_table should merge the configured options into the default two way replicator options" do
|
83
|
-
rep_run = ReplicationRun.new(Session.new)
|
83
|
+
rep_run = ReplicationRun.new(Session.new, TaskSweeper.new(1))
|
84
84
|
helper = ReplicationHelper.new(rep_run)
|
85
85
|
replicator = Replicators::TwoWayReplicator.new(helper)
|
86
86
|
replicator.options_for_table('scanner_records').include?(:left_change_handling).should be_true
|
@@ -94,18 +94,20 @@ describe Replicators::TwoWayReplicator do
|
|
94
94
|
session.left.begin_db_transaction
|
95
95
|
session.right.begin_db_transaction
|
96
96
|
begin
|
97
|
-
rep_run = ReplicationRun.new(session)
|
97
|
+
rep_run = ReplicationRun.new(session, TaskSweeper.new(1))
|
98
98
|
helper = ReplicationHelper.new(rep_run)
|
99
99
|
replicator = Replicators::TwoWayReplicator.new(helper)
|
100
100
|
|
101
|
-
|
101
|
+
loaders = LoggedChangeLoaders.new(session)
|
102
|
+
|
103
|
+
left_change = LoggedChange.new loaders[:left]
|
102
104
|
left_change.table = 'left_table'
|
103
105
|
left_change.key = {'id' => '1'}
|
104
|
-
right_change = LoggedChange.new
|
106
|
+
right_change = LoggedChange.new loaders[:right]
|
105
107
|
right_change.table = 'right_table'
|
106
108
|
right_change.key = {'id' => '1'}
|
107
109
|
|
108
|
-
diff = ReplicationDifference.new(
|
110
|
+
diff = ReplicationDifference.new(loaders)
|
109
111
|
diff.changes[:left] = left_change
|
110
112
|
diff.changes[:right] = right_change
|
111
113
|
|
@@ -150,11 +152,13 @@ describe Replicators::TwoWayReplicator do
|
|
150
152
|
|
151
153
|
it "log_replication_outcome should log conflicts correctly" do
|
152
154
|
session = Session.new
|
153
|
-
rep_run = ReplicationRun.new(session)
|
155
|
+
rep_run = ReplicationRun.new(session, TaskSweeper.new(1))
|
154
156
|
|
155
|
-
|
157
|
+
loaders = LoggedChangeLoaders.new(session)
|
158
|
+
|
159
|
+
diff = ReplicationDifference.new loaders
|
156
160
|
diff.type = :conflict
|
157
|
-
diff.changes[:left] = LoggedChange.new
|
161
|
+
diff.changes[:left] = LoggedChange.new loaders[:left]
|
158
162
|
diff.changes[:left].table = 'scanner_records'
|
159
163
|
|
160
164
|
# should only log events if so configured
|
@@ -183,11 +187,13 @@ describe Replicators::TwoWayReplicator do
|
|
183
187
|
|
184
188
|
it "log_replication_outcome should log changes correctly" do
|
185
189
|
session = Session.new
|
186
|
-
rep_run = ReplicationRun.new(session)
|
190
|
+
rep_run = ReplicationRun.new(session, TaskSweeper.new(1))
|
191
|
+
|
192
|
+
loaders = LoggedChangeLoaders.new(session)
|
187
193
|
|
188
|
-
diff = ReplicationDifference.new
|
194
|
+
diff = ReplicationDifference.new loaders
|
189
195
|
diff.type = :left
|
190
|
-
diff.changes[:left] = LoggedChange.new
|
196
|
+
diff.changes[:left] = LoggedChange.new loaders[:left]
|
191
197
|
diff.changes[:left].table = 'scanner_records'
|
192
198
|
|
193
199
|
# should only log events if so configured
|
@@ -216,7 +222,7 @@ describe Replicators::TwoWayReplicator do
|
|
216
222
|
|
217
223
|
it "replicate_difference should not do anything if ignore option is given" do
|
218
224
|
session = Session.new
|
219
|
-
rep_run = ReplicationRun.new(session)
|
225
|
+
rep_run = ReplicationRun.new(session, TaskSweeper.new(1))
|
220
226
|
helper = ReplicationHelper.new(rep_run)
|
221
227
|
replicator = Replicators::TwoWayReplicator.new(helper)
|
222
228
|
replicator.stub!(:options_for_table).and_return(
|
@@ -228,8 +234,10 @@ describe Replicators::TwoWayReplicator do
|
|
228
234
|
}
|
229
235
|
)
|
230
236
|
|
231
|
-
|
232
|
-
|
237
|
+
loaders = LoggedChangeLoaders.new(session)
|
238
|
+
|
239
|
+
diff = ReplicationDifference.new(loaders)
|
240
|
+
diff.changes[:left] = LoggedChange.new loaders[:left]
|
233
241
|
diff.changes[:left].table = 'scanner_records'
|
234
242
|
|
235
243
|
# but logging should still happen
|
@@ -251,7 +259,7 @@ describe Replicators::TwoWayReplicator do
|
|
251
259
|
|
252
260
|
it "replicate_difference should call the provided Proc objects" do
|
253
261
|
session = Session.new
|
254
|
-
rep_run = ReplicationRun.new(session)
|
262
|
+
rep_run = ReplicationRun.new(session, TaskSweeper.new(1))
|
255
263
|
helper = ReplicationHelper.new(rep_run)
|
256
264
|
|
257
265
|
lambda_parameters = []
|
@@ -267,20 +275,22 @@ describe Replicators::TwoWayReplicator do
|
|
267
275
|
}
|
268
276
|
)
|
269
277
|
|
270
|
-
|
278
|
+
loaders = LoggedChangeLoaders.new(session)
|
279
|
+
|
280
|
+
change = LoggedChange.new loaders[:left]
|
271
281
|
change.table = 'scanner_records'
|
272
282
|
|
273
|
-
d1 = ReplicationDifference.new(
|
283
|
+
d1 = ReplicationDifference.new(loaders)
|
274
284
|
d1.type = :conflict
|
275
285
|
d1.changes[:left] = change
|
276
286
|
replicator.replicate_difference d1
|
277
287
|
|
278
|
-
d2 = ReplicationDifference.new(
|
288
|
+
d2 = ReplicationDifference.new(loaders)
|
279
289
|
d2.type = :left
|
280
290
|
d2.changes[:left] = change
|
281
291
|
replicator.replicate_difference d2
|
282
292
|
|
283
|
-
d3 = ReplicationDifference.new(
|
293
|
+
d3 = ReplicationDifference.new(loaders)
|
284
294
|
d3.type = :right
|
285
295
|
d3.changes[:left] = change
|
286
296
|
replicator.replicate_difference d3
|
@@ -294,12 +304,12 @@ describe Replicators::TwoWayReplicator do
|
|
294
304
|
|
295
305
|
it "replicate_difference should clear conflicts as per provided options" do
|
296
306
|
session = Session.new
|
297
|
-
rep_run = ReplicationRun.new(session)
|
307
|
+
rep_run = ReplicationRun.new(session, TaskSweeper.new(1))
|
298
308
|
helper = ReplicationHelper.new(rep_run)
|
299
309
|
|
300
|
-
left_change = LoggedChange.new session, :left
|
310
|
+
left_change = LoggedChange.new LoggedChangeLoader.new(session, :left)
|
301
311
|
left_change.table = 'scanner_records'
|
302
|
-
right_change = LoggedChange.new session, :right
|
312
|
+
right_change = LoggedChange.new LoggedChangeLoader.new(session, :right)
|
303
313
|
right_change.table = 'scanner_records'
|
304
314
|
diff = ReplicationDifference.new(session)
|
305
315
|
diff.type = :conflict
|
@@ -347,12 +357,12 @@ describe Replicators::TwoWayReplicator do
|
|
347
357
|
session.left.begin_db_transaction
|
348
358
|
session.right.begin_db_transaction
|
349
359
|
begin
|
350
|
-
rep_run = ReplicationRun.new(session)
|
360
|
+
rep_run = ReplicationRun.new(session, TaskSweeper.new(1))
|
351
361
|
|
352
|
-
left_change = LoggedChange.new session, :left
|
362
|
+
left_change = LoggedChange.new LoggedChangeLoader.new(session, :left)
|
353
363
|
left_change.table = 'left_table'
|
354
364
|
left_change.key = {'id' => '1'}
|
355
|
-
right_change = LoggedChange.new session, :right
|
365
|
+
right_change = LoggedChange.new LoggedChangeLoader.new(session, :right)
|
356
366
|
right_change.table = 'right_table'
|
357
367
|
right_change.key = {'id' => '1'}
|
358
368
|
|
@@ -420,11 +430,11 @@ describe Replicators::TwoWayReplicator do
|
|
420
430
|
}
|
421
431
|
|
422
432
|
|
423
|
-
rep_run = ReplicationRun.new session
|
433
|
+
rep_run = ReplicationRun.new session, TaskSweeper.new(1)
|
424
434
|
helper = ReplicationHelper.new(rep_run)
|
425
435
|
replicator = Replicators::TwoWayReplicator.new(helper)
|
426
436
|
|
427
|
-
diff = ReplicationDifference.new session
|
437
|
+
diff = ReplicationDifference.new LoggedChangeLoaders.new(session)
|
428
438
|
diff.load
|
429
439
|
|
430
440
|
session.right.insert_record 'extender_no_record', {
|
@@ -467,11 +477,11 @@ describe Replicators::TwoWayReplicator do
|
|
467
477
|
'change_time' => Time.now
|
468
478
|
}
|
469
479
|
|
470
|
-
rep_run = ReplicationRun.new session
|
480
|
+
rep_run = ReplicationRun.new session, TaskSweeper.new(1)
|
471
481
|
helper = ReplicationHelper.new(rep_run)
|
472
482
|
replicator = Replicators::TwoWayReplicator.new(helper)
|
473
483
|
|
474
|
-
diff = ReplicationDifference.new session
|
484
|
+
diff = ReplicationDifference.new LoggedChangeLoaders.new(session)
|
475
485
|
diff.load
|
476
486
|
|
477
487
|
session.left.insert_record 'rr_pending_changes', {
|
@@ -490,7 +500,7 @@ describe Replicators::TwoWayReplicator do
|
|
490
500
|
end
|
491
501
|
|
492
502
|
it "replicate_difference should raise Exception if all replication attempts have been exceeded" do
|
493
|
-
rep_run = ReplicationRun.new Session.new
|
503
|
+
rep_run = ReplicationRun.new Session.new, TaskSweeper.new(1)
|
494
504
|
helper = ReplicationHelper.new(rep_run)
|
495
505
|
replicator = Replicators::TwoWayReplicator.new(helper)
|
496
506
|
lambda {replicator.replicate_difference :dummy_diff, 0}.
|
@@ -513,11 +523,11 @@ describe Replicators::TwoWayReplicator do
|
|
513
523
|
'change_time' => Time.now
|
514
524
|
}
|
515
525
|
|
516
|
-
rep_run = ReplicationRun.new session
|
526
|
+
rep_run = ReplicationRun.new session, TaskSweeper.new(1)
|
517
527
|
helper = ReplicationHelper.new(rep_run)
|
518
528
|
replicator = Replicators::TwoWayReplicator.new(helper)
|
519
529
|
|
520
|
-
diff = ReplicationDifference.new session
|
530
|
+
diff = ReplicationDifference.new LoggedChangeLoaders.new(session)
|
521
531
|
diff.load
|
522
532
|
|
523
533
|
lambda {replicator.replicate_difference diff, 1}.should raise_error(/duplicate/i)
|
@@ -557,11 +567,11 @@ describe Replicators::TwoWayReplicator do
|
|
557
567
|
'change_time' => Time.now
|
558
568
|
}
|
559
569
|
|
560
|
-
rep_run = ReplicationRun.new session
|
570
|
+
rep_run = ReplicationRun.new session, TaskSweeper.new(1)
|
561
571
|
helper = ReplicationHelper.new(rep_run)
|
562
572
|
replicator = Replicators::TwoWayReplicator.new(helper)
|
563
573
|
|
564
|
-
diff = ReplicationDifference.new session
|
574
|
+
diff = ReplicationDifference.new LoggedChangeLoaders.new(session)
|
565
575
|
diff.load
|
566
576
|
|
567
577
|
lambda {replicator.replicate_difference diff, 1}.should raise_error(/referencing_table_fkey/)
|
@@ -607,11 +617,11 @@ describe Replicators::TwoWayReplicator do
|
|
607
617
|
'change_time' => Time.now
|
608
618
|
}
|
609
619
|
|
610
|
-
rep_run = ReplicationRun.new session
|
620
|
+
rep_run = ReplicationRun.new session, TaskSweeper.new(1)
|
611
621
|
helper = ReplicationHelper.new(rep_run)
|
612
622
|
replicator = Replicators::TwoWayReplicator.new(helper)
|
613
623
|
|
614
|
-
diff = ReplicationDifference.new session
|
624
|
+
diff = ReplicationDifference.new LoggedChangeLoaders.new(session)
|
615
625
|
diff.load
|
616
626
|
|
617
627
|
session.left.delete_record 'extender_no_record', {'id' => '2'}
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubyrep
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arndt Lehmann
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
NwT26VZnE2nr8g==
|
31
31
|
-----END CERTIFICATE-----
|
32
32
|
|
33
|
-
date: 2009-07-
|
33
|
+
date: 2009-07-25 00:00:00 +09:00
|
34
34
|
default_executable:
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
@@ -105,6 +105,8 @@ files:
|
|
105
105
|
- lib/rubyrep/initializer.rb
|
106
106
|
- lib/rubyrep/log_helper.rb
|
107
107
|
- lib/rubyrep/logged_change.rb
|
108
|
+
- lib/rubyrep/logged_change_loader.rb
|
109
|
+
- lib/rubyrep/noisy_connection.rb
|
108
110
|
- lib/rubyrep/proxied_table_scan.rb
|
109
111
|
- lib/rubyrep/proxy_block_cursor.rb
|
110
112
|
- lib/rubyrep/proxy_connection.rb
|
@@ -137,6 +139,7 @@ files:
|
|
137
139
|
- lib/rubyrep/table_sorter.rb
|
138
140
|
- lib/rubyrep/table_spec_resolver.rb
|
139
141
|
- lib/rubyrep/table_sync.rb
|
142
|
+
- lib/rubyrep/task_sweeper.rb
|
140
143
|
- lib/rubyrep/trigger_mode_switcher.rb
|
141
144
|
- lib/rubyrep/type_casting_cursor.rb
|
142
145
|
- lib/rubyrep/uninstall_runner.rb
|
@@ -166,7 +169,9 @@ files:
|
|
166
169
|
- spec/generate_runner_spec.rb
|
167
170
|
- spec/initializer_spec.rb
|
168
171
|
- spec/log_helper_spec.rb
|
172
|
+
- spec/logged_change_loader_spec.rb
|
169
173
|
- spec/logged_change_spec.rb
|
174
|
+
- spec/noisy_connection_spec.rb
|
170
175
|
- spec/postgresql_replication_spec.rb
|
171
176
|
- spec/postgresql_schema_support_spec.rb
|
172
177
|
- spec/postgresql_support_spec.rb
|
@@ -203,6 +208,7 @@ files:
|
|
203
208
|
- spec/table_sorter_spec.rb
|
204
209
|
- spec/table_spec_resolver_spec.rb
|
205
210
|
- spec/table_sync_spec.rb
|
211
|
+
- spec/task_sweeper_spec.rb
|
206
212
|
- spec/trigger_mode_switcher_spec.rb
|
207
213
|
- spec/two_way_replicator_spec.rb
|
208
214
|
- spec/two_way_syncer_spec.rb
|
metadata.gz.sig
CHANGED
Binary file
|