class TestMBTileCache(TileCacheTestBase): def setup(self): TileCacheTestBase.setup(self) self.cache = MBTilesCache(os.path.join(self.cache_dir, 'tmp.mbtiles')) def test_load_empty_tileset(self): assert self.cache.load_tiles([Tile(None)]) == True assert self.cache.load_tiles([Tile(None), Tile(None), Tile(None)]) == True def test_load_1001_tiles(self): assert_raises(CacheBackendError, self.cache.load_tiles, [Tile((19, 1, 1))] * 1001) def test_timeouts(self): self.cache._db_conn_cache.db = sqlite3.connect(self.cache.mbtile_file, timeout=0.05) def block(): # block database by delaying the commit db = sqlite3.connect(self.cache.mbtile_file) cur = db.cursor() stmt = "INSERT OR REPLACE INTO tiles (zoom_level, tile_column, tile_row, tile_data) VALUES (?,?,?,?)" cur.execute(stmt, (3, 1, 1, '1234')) time.sleep(0.2) db.commit() try: assert self.cache.store_tile(self.create_tile((0, 0, 1))) == True t = threading.Thread(target=block) t.start() time.sleep(0.05) assert self.cache.store_tile(self.create_tile((0, 0, 1))) == False finally: t.join() assert self.cache.store_tile(self.create_tile((0, 0, 1))) == True
def create_mbtiles_export_cache(export_filename, wmts_source, app_state): cache = MBTilesCache(export_filename) cache.locking_disabled = True cache.update_metadata( name=wmts_source.title, format=wmts_source.format, overlay=wmts_source.is_overlay, ) return cache
class TestMBTileCache(TileCacheTestBase): def setup(self): TileCacheTestBase.setup(self) self.cache = MBTilesCache(os.path.join(self.cache_dir, 'tmp.mbtiles')) def test_load_empty_tileset(self): assert self.cache.load_tiles([Tile(None)]) == True assert self.cache.load_tiles([Tile(None), Tile(None), Tile(None)]) == True def test_load_1001_tiles(self): assert_raises(CacheBackendError, self.cache.load_tiles, [Tile((19, 1, 1))] * 1001)
class TestMBTileCache(TileCacheTestBase): def setup(self): TileCacheTestBase.setup(self) self.cache = MBTilesCache(os.path.join(self.cache_dir, 'tmp.mbtiles')) def teardown(self): if self.cache: self.cache.cleanup() TileCacheTestBase.teardown(self) def test_load_empty_tileset(self): assert self.cache.load_tiles([Tile(None)]) == True assert self.cache.load_tiles([Tile(None), Tile(None), Tile(None)]) == True def test_load_more_than_2000_tiles(self): # prepare data for i in range(0, 2010): assert self.cache.store_tile( Tile((i, 0, 10), ImageSource(BytesIO(b'foo')))) tiles = [Tile((i, 0, 10)) for i in range(0, 2010)] assert self.cache.load_tiles(tiles) def test_timeouts(self): self.cache._db_conn_cache.db = sqlite3.connect(self.cache.mbtile_file, timeout=0.05) def block(): # block database by delaying the commit db = sqlite3.connect(self.cache.mbtile_file) cur = db.cursor() stmt = "INSERT OR REPLACE INTO tiles (zoom_level, tile_column, tile_row, tile_data) VALUES (?,?,?,?)" cur.execute(stmt, (3, 1, 1, '1234')) time.sleep(0.2) db.commit() try: assert self.cache.store_tile(self.create_tile((0, 0, 1))) == True t = threading.Thread(target=block) t.start() time.sleep(0.05) assert self.cache.store_tile(self.create_tile((0, 0, 1))) == False finally: t.join() assert self.cache.store_tile(self.create_tile((0, 0, 1))) == True
class TestMBTileCache(TileCacheTestBase): def setup(self): TileCacheTestBase.setup(self) self.cache = MBTilesCache(os.path.join(self.cache_dir, 'tmp.mbtiles')) def teardown(self): if self.cache: self.cache.cleanup() TileCacheTestBase.teardown(self) def test_load_empty_tileset(self): assert self.cache.load_tiles([Tile(None)]) == True assert self.cache.load_tiles([Tile(None), Tile(None), Tile(None)]) == True def test_load_more_than_2000_tiles(self): # prepare data for i in range(0, 2010): assert self.cache.store_tile(Tile((i, 0, 10), ImageSource(BytesIO(b'foo')))) tiles = [Tile((i, 0, 10)) for i in range(0, 2010)] assert self.cache.load_tiles(tiles) def test_timeouts(self): self.cache._db_conn_cache.db = sqlite3.connect(self.cache.mbtile_file, timeout=0.05) def block(): # block database by delaying the commit db = sqlite3.connect(self.cache.mbtile_file) cur = db.cursor() stmt = "INSERT OR REPLACE INTO tiles (zoom_level, tile_column, tile_row, tile_data) VALUES (?,?,?,?)" cur.execute(stmt, (3, 1, 1, '1234')) time.sleep(0.2) db.commit() try: assert self.cache.store_tile(self.create_tile((0, 0, 1))) == True t = threading.Thread(target=block) t.start() time.sleep(0.05) assert self.cache.store_tile(self.create_tile((0, 0, 1))) == False finally: t.join() assert self.cache.store_tile(self.create_tile((0, 0, 1))) == True
def setup(self): TileCacheTestBase.setup(self) self.cache = MBTilesCache(os.path.join(self.cache_dir, 'tmp.mbtiles'))