Merge lp:~thisfred/u1db/remove-defaults into lp:u1db
- remove-defaults
- Merge into trunk
Proposed by
Eric Casteleijn
Status: | Merged |
---|---|
Approved by: | Eric Casteleijn |
Approved revision: | 349 |
Merged at revision: | 349 |
Proposed branch: | lp:~thisfred/u1db/remove-defaults |
Merge into: | lp:u1db |
Diff against target: |
497 lines (+141/-55) 4 files modified
u1db/__init__.py (+2/-2) u1db/backends/__init__.py (+3/-5) u1db/tests/commandline/test_client.py (+15/-5) u1db/tests/test_backends.py (+121/-43) |
To merge this branch: | bzr merge lp:~thisfred/u1db/remove-defaults |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
John O'Brien (community) | Approve | ||
Review via email: mp+114289@code.launchpad.net |
Commit message
Removed the None default values for replica_uid, replica_gen and replica_trans_id
Description of the change
Removed the None default values for replica_uid, replica_gen and replica_trans_id
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'u1db/__init__.py' |
2 | --- u1db/__init__.py 2012-07-10 17:55:45 +0000 |
3 | +++ u1db/__init__.py 2012-07-10 22:29:17 +0000 |
4 | @@ -320,8 +320,8 @@ |
5 | """ |
6 | raise NotImplementedError(self._set_replica_gen_and_trans_id) |
7 | |
8 | - def _put_doc_if_newer(self, doc, save_conflict, replica_uid=None, |
9 | - replica_gen=None, replica_trans_id=None): |
10 | + def _put_doc_if_newer(self, doc, save_conflict, replica_uid, replica_gen, |
11 | + replica_trans_id=''): |
12 | """Insert/update document into the database with a given revision. |
13 | |
14 | This api is used during synchronization operations. |
15 | |
16 | === modified file 'u1db/backends/__init__.py' |
17 | --- u1db/backends/__init__.py 2012-07-10 17:15:22 +0000 |
18 | +++ u1db/backends/__init__.py 2012-07-10 22:29:17 +0000 |
19 | @@ -150,17 +150,15 @@ |
20 | return |
21 | raise errors.InvalidTransactionId |
22 | |
23 | - def _put_doc_if_newer(self, doc, save_conflict, replica_uid=None, |
24 | - replica_gen=None, replica_trans_id=None): |
25 | + def _put_doc_if_newer(self, doc, save_conflict, replica_uid, replica_gen, |
26 | + replica_trans_id=''): |
27 | cur_doc = self._get_doc(doc.doc_id) |
28 | doc_vcr = VectorClockRev(doc.rev) |
29 | if cur_doc is None: |
30 | cur_vcr = VectorClockRev(None) |
31 | else: |
32 | cur_vcr = VectorClockRev(cur_doc.rev) |
33 | - if replica_uid is not None and replica_gen is not None: |
34 | - self._validate_source( |
35 | - replica_uid, replica_gen, replica_trans_id) |
36 | + self._validate_source(replica_uid, replica_gen, replica_trans_id) |
37 | if doc_vcr.is_newer(cur_vcr): |
38 | rev = doc.rev |
39 | self._prune_conflicts(doc, doc_vcr) |
40 | |
41 | === modified file 'u1db/tests/commandline/test_client.py' |
42 | --- u1db/tests/commandline/test_client.py 2012-06-06 13:28:10 +0000 |
43 | +++ u1db/tests/commandline/test_client.py 2012-07-10 22:29:17 +0000 |
44 | @@ -264,7 +264,9 @@ |
45 | |
46 | def test_get_conflict(self): |
47 | doc = self.make_document('my-test-doc', 'other:1', '{}', False) |
48 | - self.db._put_doc_if_newer(doc, save_conflict=True) |
49 | + self.db._put_doc_if_newer( |
50 | + doc, save_conflict=True, replica_uid='r', replica_gen=1, |
51 | + replica_trans_id='foo') |
52 | cmd = self.make_command(client.CmdGet) |
53 | cmd.run(self.db_path, 'my-test-doc', None) |
54 | self.assertEqual('{}\n', cmd.stdout.getvalue()) |
55 | @@ -292,7 +294,9 @@ |
56 | super(TestCmdGetDocConflicts, self).setUp() |
57 | self.doc1 = self.db.create_doc(tests.simple_doc, doc_id='my-doc') |
58 | self.doc2 = self.make_document('my-doc', 'other:1', '{}', False) |
59 | - self.db._put_doc_if_newer(self.doc2, save_conflict=True) |
60 | + self.db._put_doc_if_newer( |
61 | + self.doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
62 | + replica_trans_id='foo') |
63 | |
64 | def test_get_doc_conflicts_none(self): |
65 | self.db.create_doc(tests.simple_doc, doc_id='a-doc') |
66 | @@ -395,7 +399,9 @@ |
67 | |
68 | def test_put_doc_w_conflicts(self): |
69 | doc = self.make_document('my-test-doc', 'other:1', '{}', False) |
70 | - self.db._put_doc_if_newer(doc, save_conflict=True) |
71 | + self.db._put_doc_if_newer( |
72 | + doc, save_conflict=True, replica_uid='r', replica_gen=1, |
73 | + replica_trans_id='foo') |
74 | cmd = self.make_command(client.CmdPut) |
75 | inf = cStringIO.StringIO(tests.nested_doc) |
76 | retval = cmd.run(self.db_path, 'my-test-doc', 'other:1', inf) |
77 | @@ -412,7 +418,9 @@ |
78 | super(TestCmdResolve, self).setUp() |
79 | self.doc1 = self.db.create_doc(tests.simple_doc, doc_id='my-doc') |
80 | self.doc2 = self.make_document('my-doc', 'other:1', '{}', False) |
81 | - self.db._put_doc_if_newer(self.doc2, save_conflict=True) |
82 | + self.db._put_doc_if_newer( |
83 | + self.doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
84 | + replica_trans_id='foo') |
85 | |
86 | def test_resolve_simple(self): |
87 | self.assertTrue(self.db.get_doc('my-doc').has_conflicts) |
88 | @@ -433,7 +441,9 @@ |
89 | def test_resolve_double(self): |
90 | moar = '{"x": 42}' |
91 | doc3 = self.make_document('my-doc', 'third:1', moar, False) |
92 | - self.db._put_doc_if_newer(doc3, save_conflict=True) |
93 | + self.db._put_doc_if_newer( |
94 | + doc3, save_conflict=True, replica_uid='r', replica_gen=1, |
95 | + replica_trans_id='foo') |
96 | cmd = self.make_command(client.CmdResolve) |
97 | inf = cStringIO.StringIO(tests.nested_doc) |
98 | cmd.run(self.db_path, 'my-doc', [self.doc1.rev, self.doc2.rev], inf) |
99 | |
100 | === modified file 'u1db/tests/test_backends.py' |
101 | --- u1db/tests/test_backends.py 2012-07-10 17:15:22 +0000 |
102 | +++ u1db/tests/test_backends.py 2012-07-10 22:29:17 +0000 |
103 | @@ -39,7 +39,7 @@ |
104 | try: |
105 | from u1db.tests import c_backend_wrapper |
106 | except ImportError: |
107 | - c_backend_wrapper = None |
108 | + c_backend_wrapper = None # noqa |
109 | |
110 | |
111 | def make_http_database_for_test(test, replica_uid, path='test'): |
112 | @@ -360,14 +360,18 @@ |
113 | |
114 | def test_simple_put_doc_if_newer(self): |
115 | doc = self.make_document('my-doc-id', 'test:1', simple_doc) |
116 | - state_at_gen = self.db._put_doc_if_newer(doc, save_conflict=False) |
117 | + state_at_gen = self.db._put_doc_if_newer( |
118 | + doc, save_conflict=False, replica_uid='r', replica_gen=1, |
119 | + replica_trans_id='foo') |
120 | self.assertEqual(('inserted', 1), state_at_gen) |
121 | self.assertGetDoc(self.db, 'my-doc-id', 'test:1', simple_doc, False) |
122 | |
123 | def test_simple_put_doc_if_newer_deleted(self): |
124 | self.db.create_doc('{}', doc_id='my-doc-id') |
125 | doc = self.make_document('my-doc-id', 'test:2', None) |
126 | - state_at_gen = self.db._put_doc_if_newer(doc, save_conflict=False) |
127 | + state_at_gen = self.db._put_doc_if_newer( |
128 | + doc, save_conflict=False, replica_uid='r', replica_gen=1, |
129 | + replica_trans_id='foo') |
130 | self.assertEqual(('inserted', 2), state_at_gen) |
131 | self.assertGetDocIncludeDeleted( |
132 | self.db, 'my-doc-id', 'test:2', None, False) |
133 | @@ -381,7 +385,9 @@ |
134 | doc1_rev2 = doc1.rev |
135 | # Nothing is inserted, because the document is already superseded |
136 | doc = self.make_document(doc1.doc_id, doc1_rev1, orig_doc) |
137 | - state, _ = self.db._put_doc_if_newer(doc, save_conflict=False) |
138 | + state, _ = self.db._put_doc_if_newer( |
139 | + doc, save_conflict=False, replica_uid='r', replica_gen=1, |
140 | + replica_trans_id='foo') |
141 | self.assertEqual('superseded', state) |
142 | self.assertGetDoc(self.db, doc1.doc_id, doc1_rev2, simple_doc, False) |
143 | |
144 | @@ -389,7 +395,9 @@ |
145 | doc1 = self.db.create_doc(simple_doc) |
146 | rev = doc1.rev |
147 | doc = self.make_document(doc1.doc_id, "whatever:1", doc1.get_json()) |
148 | - state, _ = self.db._put_doc_if_newer(doc, save_conflict=False) |
149 | + state, _ = self.db._put_doc_if_newer( |
150 | + doc, save_conflict=False, replica_uid='r', replica_gen=1, |
151 | + replica_trans_id='foo') |
152 | self.assertEqual('superseded', state) |
153 | doc2 = self.db.get_doc(doc1.doc_id) |
154 | v2 = vectorclock.VectorClockRev(doc2.rev) |
155 | @@ -399,14 +407,18 @@ |
156 | def test_put_doc_if_newer_already_converged(self): |
157 | orig_doc = '{"new": "doc"}' |
158 | doc1 = self.db.create_doc(orig_doc) |
159 | - state_at_gen = self.db._put_doc_if_newer(doc1, save_conflict=False) |
160 | + state_at_gen = self.db._put_doc_if_newer( |
161 | + doc1, save_conflict=False, replica_uid='r', replica_gen=1, |
162 | + replica_trans_id='foo') |
163 | self.assertEqual(('converged', 1), state_at_gen) |
164 | |
165 | def test_put_doc_if_newer_conflicted(self): |
166 | doc1 = self.db.create_doc(simple_doc) |
167 | # Nothing is inserted, the document id is returned as would-conflict |
168 | alt_doc = self.make_document(doc1.doc_id, 'alternate:1', nested_doc) |
169 | - state, _ = self.db._put_doc_if_newer(alt_doc, save_conflict=False) |
170 | + state, _ = self.db._put_doc_if_newer( |
171 | + alt_doc, save_conflict=False, replica_uid='r', replica_gen=1, |
172 | + replica_trans_id='foo') |
173 | self.assertEqual('conflicted', state) |
174 | # The database wasn't altered |
175 | self.assertGetDoc(self.db, doc1.doc_id, doc1.rev, simple_doc, False) |
176 | @@ -422,7 +434,7 @@ |
177 | def test_put_doc_if_newer_same_generation_same_txid(self): |
178 | self.db._set_replica_gen_and_trans_id('other', 1, 'T-sid') |
179 | doc = self.db.create_doc(simple_doc) |
180 | - doc2 = self.make_document(doc.doc_id, 'other:1', simple_doc) |
181 | + self.make_document(doc.doc_id, 'other:1', simple_doc) |
182 | state, _ = self.db._put_doc_if_newer( |
183 | doc, save_conflict=False, replica_uid='other', replica_gen=1, |
184 | replica_trans_id='T-sid') |
185 | @@ -598,14 +610,18 @@ |
186 | def test_get_docs_conflicted(self): |
187 | doc1 = self.db.create_doc(simple_doc) |
188 | doc2 = self.make_document(doc1.doc_id, 'alternate:1', nested_doc) |
189 | - self.db._put_doc_if_newer(doc2, save_conflict=True) |
190 | + self.db._put_doc_if_newer( |
191 | + doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
192 | + replica_trans_id='foo') |
193 | self.assertEqual([doc2], self.db.get_docs([doc1.doc_id])) |
194 | |
195 | def test_get_docs_conflicts_ignored(self): |
196 | doc1 = self.db.create_doc(simple_doc) |
197 | doc2 = self.db.create_doc(nested_doc) |
198 | alt_doc = self.make_document(doc1.doc_id, 'alternate:1', nested_doc) |
199 | - self.db._put_doc_if_newer(alt_doc, save_conflict=True) |
200 | + self.db._put_doc_if_newer( |
201 | + alt_doc, save_conflict=True, replica_uid='r', replica_gen=1, |
202 | + replica_trans_id='foo') |
203 | no_conflict_doc = self.make_document(doc1.doc_id, 'alternate:1', |
204 | nested_doc) |
205 | self.assertEqual([no_conflict_doc, doc2], |
206 | @@ -615,7 +631,9 @@ |
207 | def test_get_doc_conflicts(self): |
208 | doc = self.db.create_doc(simple_doc) |
209 | alt_doc = self.make_document(doc.doc_id, 'alternate:1', nested_doc) |
210 | - self.db._put_doc_if_newer(alt_doc, save_conflict=True) |
211 | + self.db._put_doc_if_newer( |
212 | + alt_doc, save_conflict=True, replica_uid='r', replica_gen=1, |
213 | + replica_trans_id='foo') |
214 | self.assertEqual([alt_doc, doc], |
215 | self.db.get_doc_conflicts(doc.doc_id)) |
216 | |
217 | @@ -629,7 +647,9 @@ |
218 | def test_resolve_doc(self): |
219 | doc = self.db.create_doc(simple_doc) |
220 | alt_doc = self.make_document(doc.doc_id, 'alternate:1', nested_doc) |
221 | - self.db._put_doc_if_newer(alt_doc, save_conflict=True) |
222 | + self.db._put_doc_if_newer( |
223 | + alt_doc, save_conflict=True, replica_uid='r', replica_gen=1, |
224 | + replica_trans_id='foo') |
225 | self.assertGetDocConflicts(self.db, doc.doc_id, |
226 | [('alternate:1', nested_doc), (doc.rev, simple_doc)]) |
227 | orig_rev = doc.rev |
228 | @@ -642,7 +662,9 @@ |
229 | def test_resolve_doc_picks_biggest_vcr(self): |
230 | doc1 = self.db.create_doc(simple_doc) |
231 | doc2 = self.make_document(doc1.doc_id, 'alternate:1', nested_doc) |
232 | - self.db._put_doc_if_newer(doc2, save_conflict=True) |
233 | + self.db._put_doc_if_newer( |
234 | + doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
235 | + replica_trans_id='foo') |
236 | self.assertGetDocConflicts(self.db, doc1.doc_id, |
237 | [(doc2.rev, nested_doc), |
238 | (doc1.rev, simple_doc)]) |
239 | @@ -661,13 +683,17 @@ |
240 | def test_resolve_doc_partial_not_winning(self): |
241 | doc1 = self.db.create_doc(simple_doc) |
242 | doc2 = self.make_document(doc1.doc_id, 'alternate:1', nested_doc) |
243 | - self.db._put_doc_if_newer(doc2, save_conflict=True) |
244 | + self.db._put_doc_if_newer( |
245 | + doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
246 | + replica_trans_id='foo') |
247 | self.assertGetDocConflicts(self.db, doc1.doc_id, |
248 | [(doc2.rev, nested_doc), |
249 | (doc1.rev, simple_doc)]) |
250 | content3 = '{"key": "valin3"}' |
251 | doc3 = self.make_document(doc1.doc_id, 'third:1', content3) |
252 | - self.db._put_doc_if_newer(doc3, save_conflict=True) |
253 | + self.db._put_doc_if_newer( |
254 | + doc3, save_conflict=True, replica_uid='r', replica_gen=2, |
255 | + replica_trans_id='bar') |
256 | self.assertGetDocConflicts(self.db, doc1.doc_id, |
257 | [(doc3.rev, content3), |
258 | (doc1.rev, simple_doc), |
259 | @@ -682,10 +708,14 @@ |
260 | def test_resolve_doc_partial_winning(self): |
261 | doc1 = self.db.create_doc(simple_doc) |
262 | doc2 = self.make_document(doc1.doc_id, 'alternate:1', nested_doc) |
263 | - self.db._put_doc_if_newer(doc2, save_conflict=True) |
264 | + self.db._put_doc_if_newer( |
265 | + doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
266 | + replica_trans_id='foo') |
267 | content3 = '{"key": "valin3"}' |
268 | doc3 = self.make_document(doc1.doc_id, 'third:1', content3) |
269 | - self.db._put_doc_if_newer(doc3, save_conflict=True) |
270 | + self.db._put_doc_if_newer( |
271 | + doc3, save_conflict=True, replica_uid='r', replica_gen=2, |
272 | + replica_trans_id='bar') |
273 | self.assertGetDocConflicts(self.db, doc1.doc_id, |
274 | [(doc3.rev, content3), |
275 | (doc1.rev, simple_doc), |
276 | @@ -700,7 +730,9 @@ |
277 | doc1 = self.db.create_doc(simple_doc) |
278 | self.db.delete_doc(doc1) |
279 | doc2 = self.make_document(doc1.doc_id, 'alternate:1', nested_doc) |
280 | - self.db._put_doc_if_newer(doc2, save_conflict=True) |
281 | + self.db._put_doc_if_newer( |
282 | + doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
283 | + replica_trans_id='foo') |
284 | self.assertGetDocConflicts(self.db, doc1.doc_id, |
285 | [(doc2.rev, nested_doc), |
286 | (doc1.rev, None)]) |
287 | @@ -712,7 +744,9 @@ |
288 | doc1 = self.db.create_doc(simple_doc) |
289 | self.db.delete_doc(doc1) |
290 | doc2 = self.make_document(doc1.doc_id, 'alternate:1', nested_doc) |
291 | - self.db._put_doc_if_newer(doc2, save_conflict=True) |
292 | + self.db._put_doc_if_newer( |
293 | + doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
294 | + replica_trans_id='foo') |
295 | self.assertGetDocConflicts(self.db, doc1.doc_id, |
296 | [(doc2.rev, nested_doc), |
297 | (doc1.rev, None)]) |
298 | @@ -725,7 +759,9 @@ |
299 | doc1 = self.db.create_doc(simple_doc) |
300 | # Document is inserted as a conflict |
301 | doc2 = self.make_document(doc1.doc_id, 'alternate:1', nested_doc) |
302 | - state, _ = self.db._put_doc_if_newer(doc2, save_conflict=True) |
303 | + state, _ = self.db._put_doc_if_newer( |
304 | + doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
305 | + replica_trans_id='foo') |
306 | self.assertEqual('conflicted', state) |
307 | # The database was updated |
308 | self.assertGetDoc(self.db, doc1.doc_id, doc2.rev, nested_doc, True) |
309 | @@ -733,11 +769,17 @@ |
310 | def test_force_doc_conflict_supersedes_properly(self): |
311 | doc1 = self.db.create_doc(simple_doc) |
312 | doc2 = self.make_document(doc1.doc_id, 'alternate:1', '{"b": 1}') |
313 | - self.db._put_doc_if_newer(doc2, save_conflict=True) |
314 | + self.db._put_doc_if_newer( |
315 | + doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
316 | + replica_trans_id='foo') |
317 | doc3 = self.make_document(doc1.doc_id, 'altalt:1', '{"c": 1}') |
318 | - self.db._put_doc_if_newer(doc3, save_conflict=True) |
319 | + self.db._put_doc_if_newer( |
320 | + doc3, save_conflict=True, replica_uid='r', replica_gen=2, |
321 | + replica_trans_id='bar') |
322 | doc22 = self.make_document(doc1.doc_id, 'alternate:2', '{"b": 2}') |
323 | - self.db._put_doc_if_newer(doc22, save_conflict=True) |
324 | + self.db._put_doc_if_newer( |
325 | + doc22, save_conflict=True, replica_uid='r', replica_gen=3, |
326 | + replica_trans_id='zed') |
327 | self.assertGetDocConflicts(self.db, doc1.doc_id, |
328 | [('alternate:2', doc22.get_json()), |
329 | ('altalt:1', doc3.get_json()), |
330 | @@ -747,7 +789,9 @@ |
331 | doc1 = self.db.create_doc(simple_doc) |
332 | self.db.delete_doc(doc1) |
333 | doc2 = self.make_document(doc1.doc_id, 'alternate:1', nested_doc) |
334 | - self.db._put_doc_if_newer(doc2, save_conflict=True) |
335 | + self.db._put_doc_if_newer( |
336 | + doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
337 | + replica_trans_id='foo') |
338 | self.assertTrue(doc2.has_conflicts) |
339 | self.assertGetDoc( |
340 | self.db, doc1.doc_id, 'alternate:1', nested_doc, True) |
341 | @@ -757,14 +801,18 @@ |
342 | def test_put_doc_if_newer_propagates_full_resolution(self): |
343 | doc1 = self.db.create_doc(simple_doc) |
344 | doc2 = self.make_document(doc1.doc_id, 'alternate:1', nested_doc) |
345 | - self.db._put_doc_if_newer(doc2, save_conflict=True) |
346 | + self.db._put_doc_if_newer( |
347 | + doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
348 | + replica_trans_id='foo') |
349 | resolved_vcr = vectorclock.VectorClockRev(doc1.rev) |
350 | vcr_2 = vectorclock.VectorClockRev(doc2.rev) |
351 | resolved_vcr.maximize(vcr_2) |
352 | resolved_vcr.increment('alternate') |
353 | doc_resolved = self.make_document(doc1.doc_id, resolved_vcr.as_str(), |
354 | '{"good": 1}') |
355 | - state, _ = self.db._put_doc_if_newer(doc_resolved, save_conflict=True) |
356 | + state, _ = self.db._put_doc_if_newer( |
357 | + doc_resolved, save_conflict=True, replica_uid='r', replica_gen=2, |
358 | + replica_trans_id='foo2') |
359 | self.assertEqual('inserted', state) |
360 | self.assertFalse(doc_resolved.has_conflicts) |
361 | self.assertGetDocConflicts(self.db, doc1.doc_id, []) |
362 | @@ -774,9 +822,13 @@ |
363 | def test_put_doc_if_newer_propagates_partial_resolution(self): |
364 | doc1 = self.db.create_doc(simple_doc) |
365 | doc2 = self.make_document(doc1.doc_id, 'altalt:1', '{}') |
366 | - self.db._put_doc_if_newer(doc2, save_conflict=True) |
367 | + self.db._put_doc_if_newer( |
368 | + doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
369 | + replica_trans_id='foo') |
370 | doc3 = self.make_document(doc1.doc_id, 'alternate:1', nested_doc) |
371 | - self.db._put_doc_if_newer(doc3, save_conflict=True) |
372 | + self.db._put_doc_if_newer( |
373 | + doc3, save_conflict=True, replica_uid='r', replica_gen=2, |
374 | + replica_trans_id='foo2') |
375 | self.assertGetDocConflicts(self.db, doc1.doc_id, |
376 | [('alternate:1', nested_doc), ('test:1', simple_doc), |
377 | ('altalt:1', '{}')]) |
378 | @@ -786,7 +838,9 @@ |
379 | resolved_vcr.increment('alternate') |
380 | doc_resolved = self.make_document(doc1.doc_id, resolved_vcr.as_str(), |
381 | '{"good": 1}') |
382 | - state, _ = self.db._put_doc_if_newer(doc_resolved, save_conflict=True) |
383 | + state, _ = self.db._put_doc_if_newer( |
384 | + doc_resolved, save_conflict=True, replica_uid='r', replica_gen=3, |
385 | + replica_trans_id='foo3') |
386 | self.assertEqual('inserted', state) |
387 | self.assertTrue(doc_resolved.has_conflicts) |
388 | doc4 = self.db.get_doc(doc1.doc_id) |
389 | @@ -820,11 +874,17 @@ |
390 | doc_a1b1 = self.make_document(doc_a1.doc_id, 'test:1|other:1', |
391 | '{"a":"42"}') |
392 | doc_a3 = self.make_document(doc_a1.doc_id, 'test:2|other:1', "{}") |
393 | - state, _ = self.db._put_doc_if_newer(doc_a2, save_conflict=True) |
394 | + state, _ = self.db._put_doc_if_newer( |
395 | + doc_a2, save_conflict=True, replica_uid='r', replica_gen=1, |
396 | + replica_trans_id='foo') |
397 | self.assertEqual(state, 'inserted') |
398 | - state, _ = self.db._put_doc_if_newer(doc_a1b1, save_conflict=True) |
399 | + state, _ = self.db._put_doc_if_newer( |
400 | + doc_a1b1, save_conflict=True, replica_uid='r', replica_gen=2, |
401 | + replica_trans_id='foo2') |
402 | self.assertEqual(state, 'conflicted') |
403 | - state, _ = self.db._put_doc_if_newer(doc_a3, save_conflict=True) |
404 | + state, _ = self.db._put_doc_if_newer( |
405 | + doc_a3, save_conflict=True, replica_uid='r', replica_gen=3, |
406 | + replica_trans_id='foo3') |
407 | self.assertEqual(state, 'inserted') |
408 | self.assertFalse(self.db.get_doc(doc_a1.doc_id).has_conflicts) |
409 | |
410 | @@ -833,11 +893,17 @@ |
411 | doc_a1b1 = self.make_document(doc_a1.doc_id, 'test:1|other:1', "{}") |
412 | doc_a2 = self.make_document(doc_a1.doc_id, 'test:2', '{"a":"42"}') |
413 | doc_a3 = self.make_document(doc_a1.doc_id, 'test:3', "{}") |
414 | - state, _ = self.db._put_doc_if_newer(doc_a1b1, save_conflict=True) |
415 | + state, _ = self.db._put_doc_if_newer( |
416 | + doc_a1b1, save_conflict=True, replica_uid='r', replica_gen=1, |
417 | + replica_trans_id='foo') |
418 | self.assertEqual(state, 'inserted') |
419 | - state, _ = self.db._put_doc_if_newer(doc_a2, save_conflict=True) |
420 | + state, _ = self.db._put_doc_if_newer( |
421 | + doc_a2, save_conflict=True, replica_uid='r', replica_gen=2, |
422 | + replica_trans_id='foo2') |
423 | self.assertEqual(state, 'conflicted') |
424 | - state, _ = self.db._put_doc_if_newer(doc_a3, save_conflict=True) |
425 | + state, _ = self.db._put_doc_if_newer( |
426 | + doc_a3, save_conflict=True, replica_uid='r', replica_gen=3, |
427 | + replica_trans_id='foo3') |
428 | self.assertEqual(state, 'superseded') |
429 | doc = self.db.get_doc(doc_a1.doc_id, True) |
430 | self.assertFalse(doc.has_conflicts) |
431 | @@ -852,11 +918,17 @@ |
432 | doc_a1b1 = self.make_document(doc_a1.doc_id, 'test:1|other:1', None) |
433 | doc_a2 = self.make_document(doc_a1.doc_id, 'test:2', '{"a":"42"}') |
434 | doc_a3 = self.make_document(doc_a1.doc_id, 'test:3', None) |
435 | - state, _ = self.db._put_doc_if_newer(doc_a1b1, save_conflict=True) |
436 | + state, _ = self.db._put_doc_if_newer( |
437 | + doc_a1b1, save_conflict=True, replica_uid='r', replica_gen=1, |
438 | + replica_trans_id='foo') |
439 | self.assertEqual(state, 'inserted') |
440 | - state, _ = self.db._put_doc_if_newer(doc_a2, save_conflict=True) |
441 | + state, _ = self.db._put_doc_if_newer( |
442 | + doc_a2, save_conflict=True, replica_uid='r', replica_gen=2, |
443 | + replica_trans_id='foo2') |
444 | self.assertEqual(state, 'conflicted') |
445 | - state, _ = self.db._put_doc_if_newer(doc_a3, save_conflict=True) |
446 | + state, _ = self.db._put_doc_if_newer( |
447 | + doc_a3, save_conflict=True, replica_uid='r', replica_gen=3, |
448 | + replica_trans_id='foo3') |
449 | self.assertEqual(state, 'superseded') |
450 | doc = self.db.get_doc(doc_a1.doc_id, True) |
451 | self.assertFalse(doc.has_conflicts) |
452 | @@ -870,7 +942,9 @@ |
453 | doc1 = self.db.create_doc(simple_doc) |
454 | content2 = '{"key": "altval"}' |
455 | doc2 = self.make_document(doc1.doc_id, 'altrev:1', content2) |
456 | - self.db._put_doc_if_newer(doc2, save_conflict=True) |
457 | + self.db._put_doc_if_newer( |
458 | + doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
459 | + replica_trans_id='foo') |
460 | self.assertGetDoc(self.db, doc1.doc_id, doc2.rev, content2, True) |
461 | content3 = '{"key": "local"}' |
462 | doc2.set_json(content3) |
463 | @@ -879,7 +953,9 @@ |
464 | def test_delete_refuses_for_conflicted(self): |
465 | doc1 = self.db.create_doc(simple_doc) |
466 | doc2 = self.make_document(doc1.doc_id, 'altrev:1', nested_doc) |
467 | - self.db._put_doc_if_newer(doc2, save_conflict=True) |
468 | + self.db._put_doc_if_newer( |
469 | + doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
470 | + replica_trans_id='foo') |
471 | self.assertGetDoc(self.db, doc2.doc_id, doc2.rev, nested_doc, True) |
472 | self.assertRaises(errors.ConflictedDoc, self.db.delete_doc, doc2) |
473 | |
474 | @@ -1037,10 +1113,10 @@ |
475 | |
476 | def test_get_wildcard_range_from_index_start_end(self): |
477 | self.db.create_doc('{"key": "a"}') |
478 | - doc2 = self.db.create_doc('{"key": "boo3"}') |
479 | + self.db.create_doc('{"key": "boo3"}') |
480 | doc3 = self.db.create_doc('{"key": "catalyst"}') |
481 | doc4 = self.db.create_doc('{"key": "whaever"}') |
482 | - doc5 = self.db.create_doc('{"key": "zerg"}') |
483 | + self.db.create_doc('{"key": "zerg"}') |
484 | self.db.create_index('test-idx', 'key') |
485 | self.assertEqual( |
486 | [doc3, doc4], |
487 | @@ -1520,7 +1596,9 @@ |
488 | self.db.set_document_factory(TestAlternativeDocument) |
489 | doc1 = self.db.create_doc(simple_doc) |
490 | doc2 = self.make_document(doc1.doc_id, 'alternate:1', nested_doc) |
491 | - self.db._put_doc_if_newer(doc2, save_conflict=True) |
492 | + self.db._put_doc_if_newer( |
493 | + doc2, save_conflict=True, replica_uid='r', replica_gen=1, |
494 | + replica_trans_id='foo') |
495 | self.assertTrue( |
496 | isinstance( |
497 | self.db.get_docs([doc1.doc_id])[0], TestAlternativeDocument)) |
+1