def test_scaled_tiles(self, name, file_cache, tile_locker, rescale_tiles, tiles, store, expected_load, output): res = [ 1.40625, # 0 0.703125, # 1 0.3515625, # 2 0.17578125, # 3 0.087890625, # 4 0.0439453125, # 5 0.02197265625, # 6 0.010986328125, # 7 0.007, # 8 additional resolution to test unregular grids 0.0054931640625, # 9 0.00274658203125, # 10 ] grid = TileGrid(SRS(4326), origin='sw', bbox=[-180, -90, 180, 90], res=res) image_opts = ImageOptions(format='image/png', resampling='nearest') tm = TileManager( grid, file_cache, [], 'png', locker=tile_locker, image_opts=image_opts, rescale_tiles=rescale_tiles, ) if store: colors = set() if output == "partial": colors.add((255, 255, 255)) for i, t in enumerate(store): color = (150+i*35, 5+i*35, 5+i*35) colors.add(color) tile = Tile(t, ImageSource(create_tmp_image_buf((256, 256), color=color))) file_cache.store_tile(tile) loaded_tiles = tm.load_tile_coords(tiles) assert not is_blank(loaded_tiles) assert len(loaded_tiles) == len(tiles) got_colors = set() for t in loaded_tiles: got_colors.update([c for _, c in t.source.as_image().getcolors()]) assert got_colors == colors else: loaded_tiles = tm.load_tile_coords(tiles) assert is_blank(loaded_tiles) == (output == "blank") assert len(loaded_tiles.tiles) == len(tiles) assert file_cache.stored_tiles == set(store) assert file_cache.loaded_tiles == counting_set(expected_load)
from io import BytesIO from PIL import Image from mapproxy.cache.tile import Tile from mapproxy.cache.file import FileCache from mapproxy.cache.mbtiles import MBTilesCache, MBTilesLevelCache from mapproxy.cache.base import CacheBackendError from mapproxy.image import ImageSource from mapproxy.image.opts import ImageOptions from mapproxy.test.image import create_tmp_image_buf, is_png from nose.tools import eq_, assert_raises tile_image = create_tmp_image_buf((256, 256), color='blue') tile_image2 = create_tmp_image_buf((256, 256), color='red') def timestamp_is_now(timestamp, delta=5): return abs(timestamp - time.time()) <= delta class TileCacheTestBase(object): always_loads_metadata = False def setup(self): self.cache_dir = tempfile.mkdtemp() def teardown(self): if hasattr(self, 'cache_dir') and os.path.exists(self.cache_dir): shutil.rmtree(self.cache_dir)
expected_req = ({'path': r'/service?LAYERS=foo&SERVICE=WMS&FORMAT=image%2Fpng' '&REQUEST=GetMap&VERSION=1.1.1&bbox=-180.0,-90.0,180.0,90.0' '&width=256&height=128&srs=EPSG:4326'}, {'body': img_data, 'headers': {'content-type': 'image/png'}}) with mock_httpd(('localhost', 42423), [expected_req]): seed_conf = load_seed_tasks_conf(self.seed_conf_file, self.mapproxy_conf) tasks, cleanup_tasks = seed_conf.seeds(), seed_conf.cleanups() seed(tasks, dry_run=False) cleanup(cleanup_tasks, verbose=False, dry_run=False) assert os.path.exists(t000) assert os.path.getmtime(t000) - 5 < time.time() < os.path.getmtime(t000) + 5 assert not os.path.exists(t001) tile_image_buf = create_tmp_image_buf((256, 256), color='blue') tile_image = create_tmp_image((256, 256), color='blue') class TestSeed(SeedTestBase): seed_conf_name = 'seed.yaml' mapproxy_conf_name = 'seed_mapproxy.yaml' def test_cleanup_levels(self): seed_conf = load_seed_tasks_conf(self.seed_conf_file, self.mapproxy_conf) cleanup_tasks = seed_conf.cleanups(['cleanup']) self.make_tile((0, 0, 0)) self.make_tile((0, 0, 1)) self.make_tile((0, 0, 2)) self.make_tile((0, 0, 3))
} }) with mock_httpd(('localhost', 42423), [expected_req]): seed_conf = load_seed_tasks_conf(self.seed_conf_file, self.mapproxy_conf) tasks, cleanup_tasks = seed_conf.seeds(), seed_conf.cleanups() seed(tasks, dry_run=False) cleanup(cleanup_tasks, verbose=False, dry_run=False) assert os.path.exists(t000) assert os.path.getmtime(t000) - 5 < time.time( ) < os.path.getmtime(t000) + 5 assert not os.path.exists(t001) tile_image_buf = create_tmp_image_buf((256, 256), color='blue') tile_image = create_tmp_image((256, 256), color='blue') class TestSeed(SeedTestBase): seed_conf_name = 'seed.yaml' mapproxy_conf_name = 'seed_mapproxy.yaml' empty_ogrdata = 'empty_ogrdata.geojson' def test_cleanup_levels(self): seed_conf = load_seed_tasks_conf(self.seed_conf_file, self.mapproxy_conf) cleanup_tasks = seed_conf.cleanups(['cleanup']) self.make_tile((0, 0, 0)) self.make_tile((0, 0, 1))
# See the License for the specific language governing permissions and # limitations under the License. from __future__ import with_statement import os import random from nose.plugins.skip import SkipTest from mapproxy.cache.riak import RiakCache from mapproxy.grid import tile_grid from mapproxy.test.image import create_tmp_image_buf from mapproxy.test.unit.test_cache_tile import TileCacheTestBase tile_image = create_tmp_image_buf((256, 256), color="blue") tile_image2 = create_tmp_image_buf((256, 256), color="red") class RiakCacheTestBase(TileCacheTestBase): always_loads_metadata = True def setup(self): if not os.environ.get(self.riak_url_env): raise SkipTest() riak_url = os.environ[self.riak_url_env] db_name = "mapproxy_test_%d" % random.randint(0, 100000) TileCacheTestBase.setup(self)