Example #1
0
    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)
Example #2
0
    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, [])
Example #3
0
 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')
Example #4
0
    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)
Example #5
0
 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')
Example #6
0
    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')
Example #7
0
    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)
Example #8
0
    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)
Example #9
0
    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')
Example #11
0
 def _prepare_realms(self):
     api.create_realm('dummy', 'x', 'dummy',
                      'dest1/%s' % test_settings.CONN1['db_name'])
Example #12
0
 def _prepare_realms(self):
     api.create_realm('dummy', 'x', 'dummy')
Example #13
0
 def _prepare_realms(self):
     api.create_realm('dummy', 'x', 'dummy')
 def _prepare_realms(self):
     api.create_realm('dummy', 'account_id', 'dummy', 'dest1/test_sharding')
Example #15
0
 def _prepare_realms(self):
     api.create_realm('dummy', 'account_id', 'dummy', 'dest1/test_sharding')
Example #16
0
 def _prepare_realms(self):
     api.create_realm(
         'dummy', 'x', 'dummy',
         'dest1/%s' % test_settings.CONN1['db_name'])