From d4d4f82060fffded3672125c5cceb2caf3eec4f9 Mon Sep 17 00:00:00 2001 From: Ivo van Dongen Date: Wed, 24 May 2017 17:43:56 +0300 Subject: [core] require scheduler in default file source --- include/mbgl/storage/default_file_source.hpp | 8 +++-- platform/default/default_file_source.cpp | 8 +++-- test/api/custom_layer.test.cpp | 2 +- test/api/render_missing.test.cpp | 2 +- test/api/repeated_render.test.cpp | 2 +- test/map/map.test.cpp | 6 ++-- test/storage/default_file_source.test.cpp | 46 +++++++++++++++++++--------- 7 files changed, 48 insertions(+), 26 deletions(-) diff --git a/include/mbgl/storage/default_file_source.hpp b/include/mbgl/storage/default_file_source.hpp index f929334f28..01b8a3698d 100644 --- a/include/mbgl/storage/default_file_source.hpp +++ b/include/mbgl/storage/default_file_source.hpp @@ -9,6 +9,8 @@ namespace mbgl { +class Scheduler; + namespace util { template class Thread; } // namespace util @@ -22,10 +24,12 @@ public: * regions, we want the database to remain fairly small (order tens or low hundreds * of megabytes). */ - DefaultFileSource(const std::string& cachePath, + DefaultFileSource(Scheduler&, + const std::string& cachePath, const std::string& assetRoot, uint64_t maximumCacheSize = util::DEFAULT_MAX_CACHE_SIZE); - DefaultFileSource(const std::string& cachePath, + DefaultFileSource(Scheduler&, + const std::string& cachePath, std::unique_ptr&& assetFileSource, uint64_t maximumCacheSize = util::DEFAULT_MAX_CACHE_SIZE); ~DefaultFileSource() override; diff --git a/platform/default/default_file_source.cpp b/platform/default/default_file_source.cpp index adb3f6a83d..7d0a393ce5 100644 --- a/platform/default/default_file_source.cpp +++ b/platform/default/default_file_source.cpp @@ -179,13 +179,15 @@ private: std::unordered_map> downloads; }; -DefaultFileSource::DefaultFileSource(const std::string& cachePath, +DefaultFileSource::DefaultFileSource(Scheduler& scheduler, + const std::string& cachePath, const std::string& assetRoot, uint64_t maximumCacheSize) - : DefaultFileSource(cachePath, std::make_unique(assetRoot), maximumCacheSize) { + : DefaultFileSource(scheduler, cachePath, std::make_unique(assetRoot), maximumCacheSize) { } -DefaultFileSource::DefaultFileSource(const std::string& cachePath, +DefaultFileSource::DefaultFileSource(Scheduler&, + const std::string& cachePath, std::unique_ptr&& assetFileSource_, uint64_t maximumCacheSize) : assetFileSource(std::move(assetFileSource_)) diff --git a/test/api/custom_layer.test.cpp b/test/api/custom_layer.test.cpp index 5a30220cd7..9d134f5982 100644 --- a/test/api/custom_layer.test.cpp +++ b/test/api/custom_layer.test.cpp @@ -89,8 +89,8 @@ TEST(CustomLayer, Basic) { HeadlessBackend backend { test::sharedDisplay() }; BackendScope scope { backend }; OffscreenView view { backend.getContext() }; - DefaultFileSource fileSource(":memory:", "test/fixtures/api/assets"); ThreadPool threadPool(4); + DefaultFileSource fileSource(threadPool, ":memory:", "test/fixtures/api/assets"); Map map(backend, view.getSize(), 1, fileSource, threadPool, MapMode::Still); map.setStyleJSON(util::read_file("test/fixtures/api/water.json")); diff --git a/test/api/render_missing.test.cpp b/test/api/render_missing.test.cpp index 6e99501708..7ddb1059a4 100644 --- a/test/api/render_missing.test.cpp +++ b/test/api/render_missing.test.cpp @@ -29,8 +29,8 @@ TEST(API, TEST_REQUIRES_SERVER(RenderMissingTile)) { HeadlessBackend backend { test::sharedDisplay() }; BackendScope scope { backend }; OffscreenView view { backend.getContext(), { 256, 512 } }; - DefaultFileSource fileSource(":memory:", "test/fixtures/api/assets"); ThreadPool threadPool(4); + DefaultFileSource fileSource(threadPool, ":memory:", "test/fixtures/api/assets"); Log::setObserver(std::make_unique()); diff --git a/test/api/repeated_render.test.cpp b/test/api/repeated_render.test.cpp index 0b9726d3fa..0aa552328a 100644 --- a/test/api/repeated_render.test.cpp +++ b/test/api/repeated_render.test.cpp @@ -25,8 +25,8 @@ TEST(API, RepeatedRender) { HeadlessBackend backend { test::sharedDisplay() }; BackendScope scope { backend }; OffscreenView view { backend.getContext(), { 256, 512 } }; - DefaultFileSource fileSource(":memory:", "test/fixtures/api/assets"); ThreadPool threadPool(4); + DefaultFileSource fileSource(threadPool, ":memory:", "test/fixtures/api/assets"); Log::setObserver(std::make_unique()); diff --git a/test/map/map.test.cpp b/test/map/map.test.cpp index be78c8714b..518964c10c 100644 --- a/test/map/map.test.cpp +++ b/test/map/map.test.cpp @@ -104,7 +104,7 @@ TEST(Map, CameraToLatLngBounds) { TEST(Map, Offline) { MapTest test; - DefaultFileSource fileSource(":memory:", "."); + DefaultFileSource fileSource(test.threadPool, ":memory:", "."); auto expiredItem = [] (const std::string& path) { Response response; @@ -356,7 +356,7 @@ TEST(Map, WithoutVAOExtension) { test.backend.getContext().disableVAOExtension = true; - DefaultFileSource fileSource(":memory:", "test/fixtures/api/assets"); + DefaultFileSource fileSource(test.threadPool, ":memory:", "test/fixtures/api/assets"); Map map(test.backend, test.view.getSize(), 1, fileSource, test.threadPool, MapMode::Still); map.setStyleJSON(util::read_file("test/fixtures/api/water.json")); @@ -550,7 +550,7 @@ TEST(Map, TEST_DISABLED_ON_CI(ContinuousRendering)) { BackendScope scope { backend }; OffscreenView view { backend.getContext() }; ThreadPool threadPool { 4 }; - DefaultFileSource fileSource(":memory:", "test/fixtures/api/assets"); + DefaultFileSource fileSource(threadPool, ":memory:", "test/fixtures/api/assets"); Map map(backend, view.getSize(), 1, fileSource, threadPool, MapMode::Continuous); using namespace std::chrono_literals; diff --git a/test/storage/default_file_source.test.cpp b/test/storage/default_file_source.test.cpp index 03f1076559..171f32f14b 100644 --- a/test/storage/default_file_source.test.cpp +++ b/test/storage/default_file_source.test.cpp @@ -1,12 +1,14 @@ #include #include #include +#include using namespace mbgl; TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheResponse)) { util::RunLoop loop; - DefaultFileSource fs(":memory:", "."); + ThreadPool threadPool {4}; + DefaultFileSource fs(threadPool, ":memory:", "."); const Resource resource { Resource::Unknown, "http://127.0.0.1:3000/cache" }; Response response; @@ -44,7 +46,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheResponse)) { TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateSame)) { util::RunLoop loop; - DefaultFileSource fs(":memory:", "."); + ThreadPool threadPool {4}; + DefaultFileSource fs(threadPool, ":memory:", "."); const Resource revalidateSame { Resource::Unknown, "http://127.0.0.1:3000/revalidate-same" }; std::unique_ptr req1; @@ -88,7 +91,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateSame)) { TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateModified)) { util::RunLoop loop; - DefaultFileSource fs(":memory:", "."); + ThreadPool threadPool {4}; + DefaultFileSource fs(threadPool, ":memory:", "."); const Resource revalidateModified{ Resource::Unknown, "http://127.0.0.1:3000/revalidate-modified" }; @@ -132,7 +136,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateModified)) { TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateEtag)) { util::RunLoop loop; - DefaultFileSource fs(":memory:", "."); + ThreadPool threadPool {4}; + DefaultFileSource fs(threadPool, ":memory:", "."); const Resource revalidateEtag { Resource::Unknown, "http://127.0.0.1:3000/revalidate-etag" }; std::unique_ptr req1; @@ -187,7 +192,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(CacheRevalidateEtag)) { TEST(DefaultFileSource, TEST_REQUIRES_SERVER(HTTPIssue1369)) { util::RunLoop loop; - DefaultFileSource fs(":memory:", "."); + ThreadPool threadPool {4}; + DefaultFileSource fs(threadPool, ":memory:", "."); const Resource resource { Resource::Unknown, "http://127.0.0.1:3000/test" }; @@ -211,7 +217,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(HTTPIssue1369)) { TEST(DefaultFileSource, OptionalNonExpired) { util::RunLoop loop; - DefaultFileSource fs(":memory:", "."); + ThreadPool threadPool {4}; + DefaultFileSource fs(threadPool, ":memory:", "."); const Resource optionalResource { Resource::Unknown, "http://127.0.0.1:3000/test", {}, Resource::Optional }; @@ -240,7 +247,8 @@ TEST(DefaultFileSource, OptionalNonExpired) { TEST(DefaultFileSource, OptionalExpired) { util::RunLoop loop; - DefaultFileSource fs(":memory:", "."); + ThreadPool threadPool {4}; + DefaultFileSource fs(threadPool, ":memory:", "."); const Resource optionalResource { Resource::Unknown, "http://127.0.0.1:3000/test", {}, Resource::Optional }; @@ -269,7 +277,8 @@ TEST(DefaultFileSource, OptionalExpired) { TEST(DefaultFileSource, GetBaseURLAndAccessTokenWhilePaused) { util::RunLoop loop; - DefaultFileSource fs(":memory:", "."); + ThreadPool threadPool {4}; + DefaultFileSource fs(threadPool, ":memory:", "."); fs.pause(); @@ -285,7 +294,8 @@ TEST(DefaultFileSource, GetBaseURLAndAccessTokenWhilePaused) { TEST(DefaultFileSource, OptionalNotFound) { util::RunLoop loop; - DefaultFileSource fs(":memory:", "."); + ThreadPool threadPool {4}; + DefaultFileSource fs(threadPool, ":memory:", "."); const Resource optionalResource { Resource::Unknown, "http://127.0.0.1:3000/test", {}, Resource::Optional }; @@ -311,7 +321,8 @@ TEST(DefaultFileSource, OptionalNotFound) { // from cache like a regular request TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshEtagNotModified)) { util::RunLoop loop; - DefaultFileSource fs(":memory:", "."); + ThreadPool threadPool {4}; + DefaultFileSource fs(threadPool, ":memory:", "."); Resource resource { Resource::Unknown, "http://127.0.0.1:3000/revalidate-same" }; resource.priorEtag.emplace("snowfall"); @@ -345,7 +356,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshEtagNotModified)) { // from cache like a regular request TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshEtagModified)) { util::RunLoop loop; - DefaultFileSource fs(":memory:", "."); + ThreadPool threadPool {4}; + DefaultFileSource fs(threadPool, ":memory:", "."); Resource resource { Resource::Unknown, "http://127.0.0.1:3000/revalidate-same" }; resource.priorEtag.emplace("sunshine"); @@ -379,7 +391,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshEtagModified)) { // from cache like a regular request. TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheFull)) { util::RunLoop loop; - DefaultFileSource fs(":memory:", "."); + ThreadPool threadPool {4}; + DefaultFileSource fs(threadPool, ":memory:", "."); Resource resource { Resource::Unknown, "http://127.0.0.1:3000/revalidate-same" }; // Setting any prior field results in skipping the cache. @@ -414,7 +427,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheFull)) { // from cache like a regular request TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshModifiedNotModified)) { util::RunLoop loop; - DefaultFileSource fs(":memory:", "."); + ThreadPool threadPool {4}; + DefaultFileSource fs(threadPool, ":memory:", "."); Resource resource { Resource::Unknown, "http://127.0.0.1:3000/revalidate-modified" }; resource.priorModified.emplace(Seconds(1420070400)); // January 1, 2015 @@ -448,7 +462,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshModifiedNotModified)) // from cache like a regular request TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshModifiedModified)) { util::RunLoop loop; - DefaultFileSource fs(":memory:", "."); + ThreadPool threadPool {4}; + DefaultFileSource fs(threadPool, ":memory:", "."); Resource resource { Resource::Unknown, "http://127.0.0.1:3000/revalidate-modified" }; resource.priorModified.emplace(Seconds(1417392000)); // December 1, 2014 @@ -479,7 +494,8 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(NoCacheRefreshModifiedModified)) { TEST(DefaultFileSource, TEST_REQUIRES_SERVER(SetResourceTransform)) { util::RunLoop loop; - DefaultFileSource fs(":memory:", "."); + ThreadPool threadPool {4}; + DefaultFileSource fs(threadPool, ":memory:", "."); // Translates the URL "localhost://test to http://127.0.0.1:3000/test fs.setResourceTransform([](Resource::Kind, std::string&& url) -> std::string { -- cgit v1.2.1