def test_consistency(self): uuid = str('10000') vb = 42 seq = 101 ixname = 'ix' mutinfo = (vb, uuid, seq, 'dummy-bucket-name') ms = MutationState() ms._add_scanvec(mutinfo) params = cbft.Params() params.consistent_with(ms) got = cbft.make_search_body('ix', cbft.MatchNoneQuery(), params) exp = { 'indexName': ixname, 'query': { 'match_none': None }, 'ctl': { 'consistency': { 'level': 'at_plus', 'vectors': { ixname: { '{0}/{1}'.format(vb, uuid): seq } } } } } self.assertEqual(exp, got)
def test_encode_scanvec(self): # The value is a vbucket's sequence number, # and guard is a vbucket's UUID. q = N1QLQuery('SELECT * FROM default') ms = MutationState() ms._add_scanvec((42, 3004, 3, 'default')) q.consistent_with(ms) dval = json.loads(q.encoded) sv_exp = {'default': {'42': [3, '3004']}} self.assertEqual('at_plus', dval['scan_consistency']) self.assertEqual(sv_exp, dval['scan_vectors']) # Ensure the vb field gets updated. No duplicates! ms._add_scanvec((42, 3004, 4, 'default')) sv_exp['default']['42'] = [4, '3004'] dval = json.loads(q.encoded) self.assertEqual(sv_exp, dval['scan_vectors']) ms._add_scanvec((91, 7779, 23, 'default')) dval = json.loads(q.encoded) sv_exp['default']['91'] = [23, '7779'] self.assertEqual(sv_exp, dval['scan_vectors']) # Try with a second bucket sv_exp['other'] = {'666': [99, '5551212']} ms._add_scanvec((666, 5551212, 99, 'other')) dval = json.loads(q.encoded) self.assertEqual(sv_exp, dval['scan_vectors'])
def test_encode_scanvec(self): # The value is a vbucket's sequence number, # and guard is a vbucket's UUID. q = N1QLQuery('SELECT * FROM default') ms = MutationState() ms._add_scanvec((42, 3004, 3, 'default')) q.consistent_with(ms) dval = json.loads(q.encoded) sv_exp = { 'default': {'42': [3, '3004']} } self.assertEqual('at_plus', dval['scan_consistency']) self.assertEqual(sv_exp, dval['scan_vectors']) # Ensure the vb field gets updated. No duplicates! ms._add_scanvec((42, 3004, 4, 'default')) sv_exp['default']['42'] = [4, '3004'] dval = json.loads(q.encoded) self.assertEqual(sv_exp, dval['scan_vectors']) ms._add_scanvec((91, 7779, 23, 'default')) dval = json.loads(q.encoded) sv_exp['default']['91'] = [23, '7779'] self.assertEqual(sv_exp, dval['scan_vectors']) # Try with a second bucket sv_exp['other'] = {'666': [99, '5551212']} ms._add_scanvec((666, 5551212, 99, 'other')) dval = json.loads(q.encoded) self.assertEqual(sv_exp, dval['scan_vectors'])