def test_query(self): api.create_realm('dummy-realm', 'some_field', 'dummy_collection', 'cluster-1/%s' % test_settings.CONN1['db_name']) api.set_shard_at_rest('dummy-realm', 1, 'dest1/some_db') expected_metadata = { 'shard_key': 1, 'location': 'dest1/some_db', 'realm': 'dummy-realm' } def _trim_results(docs): return [{ 'shard_key': doc['shard_key'], 'location': doc['location'], 'realm': doc['realm'] } for doc in docs] store = metadata.ShardMetadataStore({'name': 'dummy-realm'}) results = _trim_results(store._query_shards_collection()) self.assertEquals([expected_metadata], results) results = _trim_results(store._query_shards_collection(1)) self.assertEquals([expected_metadata], results) results = _trim_results(store._query_shards_collection(2)) self.assertEquals([], results) store = metadata.ShardMetadataStore({'name': 'some-other-realm'}) results = _trim_results(store._query_shards_collection()) self.assertEquals([], results) results = _trim_results(store._query_shards_collection(1)) self.assertEquals([], results)
def test_empty_list_when_shard_is_missing(self): api.create_realm('dummy-realm', 'some_field', 'dummy_collection', 'cluster-1/%s' % test_settings.CONN1['db_name']) entries = list(metadata.ShardMetadataStore('dummy-realm') \ ._query_shards_collection(1)) self.assertEquals(entries, [])
def test_raise_if_changing_shard_location_once_set(self): default_dest = 'cluster-2/%s' % test_settings.CONN2['db_name'] api.create_realm('dummy-realm', 'some_field', 'dummy_collection', default_dest) api.set_shard_at_rest('dummy-realm', 1, 'dest2/some_db') with self.assertRaises(Exception): api.set_shard_at_rest('dummy-realm', 1, 'dest1/some_db')
def test_query(self): api.create_realm("dummy-realm", "some_field", "dummy_collection") api.set_shard_at_rest("dummy-realm", 1, "dest1/some_db") expected_metadata = {"shard_key": 1, "location": "dest1/some_db", "realm": "dummy-realm"} def _trim_results(docs): return [{"shard_key": doc["shard_key"], "location": doc["location"], "realm": doc["realm"]} for doc in docs] store = metadata.ShardMetadataStore({"name": "dummy-realm"}) results = _trim_results(store._query_shards_collection()) self.assertEquals([expected_metadata], results) results = _trim_results(store._query_shards_collection(1)) self.assertEquals([expected_metadata], results) results = _trim_results(store._query_shards_collection(2)) self.assertEquals([], results) store = metadata.ShardMetadataStore({"name": "some-other-realm"}) results = _trim_results(store._query_shards_collection()) self.assertEquals([], results) results = _trim_results(store._query_shards_collection(1)) self.assertEquals([], results)
def test_shard_location_does_not_change_even_when_forced(self): default_dest = 'cluster-2/%s' % test_settings.CONN2['db_name'] api.create_realm('dummy-realm', 'some_field', 'dummy_collection', default_dest) api.set_shard_at_rest('dummy-realm', 1, 'dest2/some_db') api.set_shard_at_rest('dummy-realm', 1, 'dest1/some_db', force=True) entries = metadata.ShardMetadataStore('dummy-realm') \ ._query_shards_collection() self.assertEquals(entries[0]['location'], 'dest1/some_db')
def test_fetch_all_shards_from_metadata(self): api.create_realm('dummy-realm', 'some_field', 'dummy_collection', 'cluster-1/%s' % test_settings.CONN1['db_name']) api.set_shard_at_rest('dummy-realm', 1, 'dest1/some_db') entries = metadata.ShardMetadataStore('dummy-realm') \ ._query_shards_collection() self.assertEquals(entries[0]['shard_key'], 1) self.assertEquals(entries[0]['location'], 'dest1/some_db') self.assertEquals(entries[0]['realm'], 'dummy-realm')
def test_get_location_ordering(self): # Exposes a bug that was found in caching and default locations api.create_realm('dummy-realm', 'some_field', 'dummy_collection', 'cluster-1/some_db') api.set_shard_at_rest('dummy-realm', 1, 'dest2/some_db') realm = metadata._get_realm_for_collection('dummy_collection') meta = metadata._get_metadata_for_shard(realm, 2) expected_meta = { 'status': metadata.ShardStatus.AT_REST, 'realm': 'dummy-realm', 'location': 'cluster-1/some_db' } self.assertEquals(meta, expected_meta) all_locations = metadata._get_all_locations_for_realm(realm) self.assertEquals([], all_locations['cluster-1/some_db'].contains) self.assertEquals([], all_locations['cluster-1/some_db'].excludes) self.assertEquals([1], all_locations['dest2/some_db'].contains) self.assertEquals([], all_locations['dest2/some_db'].excludes)
def test_get_location_ordering(self): # Exposes a bug that was found in caching and default locations api.create_realm( 'dummy-realm', 'some_field', 'dummy_collection', 'cluster-1/some_db') api.set_shard_at_rest('dummy-realm', 1, 'dest2/some_db') realm = metadata._get_realm_for_collection('dummy_collection') meta = metadata._get_metadata_for_shard(realm, 2) expected_meta = { 'status': metadata.ShardStatus.AT_REST, 'realm': 'dummy-realm', 'location': 'cluster-1/some_db' } self.assertEquals(meta, expected_meta) all_locations = metadata._get_all_locations_for_realm(realm) self.assertEquals([], all_locations['cluster-1/some_db'].contains) self.assertEquals([], all_locations['cluster-1/some_db'].excludes) self.assertEquals([1], all_locations['dest2/some_db'].contains) self.assertEquals([], all_locations['dest2/some_db'].excludes)
def test_query(self): api.create_realm( 'dummy-realm', 'some_field', 'dummy_collection', 'cluster-1/%s' % test_settings.CONN1['db_name']) api.set_shard_at_rest('dummy-realm', 1, 'localhost:27017') expected_metadata = { 'shard_key': 1, 'location': 'localhost:27017', 'realm': 'dummy-realm' } def _trim_results(docs): return [{ 'shard_key': doc['shard_key'], 'location': doc['location'], 'realm': doc['realm'] } for doc in docs] store = metadata.ShardMetadataStore({'name': 'dummy-realm'}) results = _trim_results(store._query_shards_collection()) self.assertEquals([expected_metadata], results) results = _trim_results(store._query_shards_collection(1)) self.assertEquals([expected_metadata], results) results = _trim_results(store._query_shards_collection(2)) self.assertEquals([], results) store = metadata.ShardMetadataStore({ 'name': 'some-other-realm'}) results = _trim_results(store._query_shards_collection()) self.assertEquals([], results) results = _trim_results(store._query_shards_collection(1)) self.assertEquals([], results)
def _prepare_realms(self): api.create_realm('dummy', 'account_id', 'dummy')
def _prepare_realms(self): api.create_realm('dummy', 'x', 'dummy', 'dest1/%s' % test_settings.CONN1['db_name'])
def _prepare_realms(self): api.create_realm('dummy', 'x', 'dummy')
def _prepare_realms(self): api.create_realm('dummy', 'account_id', 'dummy', 'dest1/test_sharding')
def _prepare_realms(self): api.create_realm( 'dummy', 'x', 'dummy', 'dest1/%s' % test_settings.CONN1['db_name'])