class TestCouchDBCache(TileCacheTestBase): always_loads_metadata = True def setup(self): if not os.environ.get('MAPPROXY_TEST_COUCHDB'): raise SkipTest() couch_address = os.environ['MAPPROXY_TEST_COUCHDB'] db_name = 'mapproxy_test_%d' % random.randint(0, 100000) TileCacheTestBase.setup(self) md_template = CouchDBMDTemplate({'row': '{{y}}', 'tile_column': '{{x}}', 'zoom': '{{level}}', 'time': '{{timestamp}}', 'coord': '{{wgs_tile_centroid}}'}) self.cache = CouchDBCache(couch_address, db_name, lock_dir=self.cache_dir, file_ext='png', tile_grid=tile_grid(3857, name='global-webmarcator'), md_template=md_template) def teardown(self): import requests requests.delete(self.cache.couch_url) TileCacheTestBase.teardown(self) def test_store_bulk_with_overwrite(self): tile = self.create_tile((0, 0, 4)) self.create_cached_tile(tile) assert self.cache.is_cached(Tile((0, 0, 4))) loaded_tile = Tile((0, 0, 4)) assert self.cache.load_tile(loaded_tile) assert loaded_tile.source_buffer().read() == tile.source_buffer().read() assert not self.cache.is_cached(Tile((1, 0, 4))) tiles = [self.create_another_tile((x, 0, 4)) for x in range(2)] assert self.cache.store_tiles(tiles) assert self.cache.is_cached(Tile((0, 0, 4))) loaded_tile = Tile((0, 0, 4)) assert self.cache.load_tile(loaded_tile) # check that tile is overwritten assert loaded_tile.source_buffer().read() != tile.source_buffer().read() assert loaded_tile.source_buffer().read() == tiles[0].source_buffer().read() def test_double_remove(self): tile = self.create_tile() self.create_cached_tile(tile) assert self.cache.remove_tile(tile) assert self.cache.remove_tile(tile) def test_lock(self): with self.cache.lock(Tile((0, 0, 0))): lockfile = glob.glob(os.path.join(self.cache_dir, 'couchdb-*-0-0-0.lck'))[0] assert re.match('.*/couchdb-[0-9a-f]+-0-0-0.lck$', lockfile)
class TestCouchDBCache(TileCacheTestBase): always_loads_metadata = True def setup(self): if not os.environ.get('MAPPROXY_TEST_COUCHDB'): raise SkipTest() couch_address = os.environ['MAPPROXY_TEST_COUCHDB'] db_name = 'mapproxy_test_%d' % random.randint(0, 100000) TileCacheTestBase.setup(self) md_template = CouchDBMDTemplate({ 'row': '{{y}}', 'tile_column': '{{x}}', 'zoom': '{{level}}', 'time': '{{timestamp}}', 'coord': '{{wgs_tile_centroid}}' }) self.cache = CouchDBCache(couch_address, db_name, lock_dir=self.cache_dir, file_ext='png', tile_grid=tile_grid( 3857, name='global-webmarcator'), md_template=md_template) def teardown(self): import requests requests.delete(self.cache.couch_url) TileCacheTestBase.teardown(self) def test_store_bulk_with_overwrite(self): tile = self.create_tile((0, 0, 4)) self.create_cached_tile(tile) assert self.cache.is_cached(Tile((0, 0, 4))) loaded_tile = Tile((0, 0, 4)) assert self.cache.load_tile(loaded_tile) assert loaded_tile.source_buffer().read() == tile.source_buffer().read( ) assert not self.cache.is_cached(Tile((1, 0, 4))) tiles = [self.create_another_tile((x, 0, 4)) for x in range(2)] assert self.cache.store_tiles(tiles) assert self.cache.is_cached(Tile((0, 0, 4))) loaded_tile = Tile((0, 0, 4)) assert self.cache.load_tile(loaded_tile) # check that tile is overwritten assert loaded_tile.source_buffer().read() != tile.source_buffer().read( ) assert loaded_tile.source_buffer().read() == tiles[0].source_buffer( ).read() def test_double_remove(self): tile = self.create_tile() self.create_cached_tile(tile) assert self.cache.remove_tile(tile) assert self.cache.remove_tile(tile) def test_lock(self): with self.cache.lock(Tile((0, 0, 0))): lockfile = glob.glob( os.path.join(self.cache_dir, 'couchdb-*-0-0-0.lck'))[0] assert re.match('.*/couchdb-[0-9a-f]+-0-0-0.lck$', lockfile)