diff options
author | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2019-02-14 16:56:17 +0200 |
---|---|---|
committer | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2019-05-10 14:20:38 +0300 |
commit | 06f1dc48a2fb317979ab48ce323115be5bd48f16 (patch) | |
tree | 5ef1e78a1f98a7a26034ca519e267bda235b2817 /test/util | |
parent | 947bc75f56fae7f1e70f21b98730dc6b460b9194 (diff) | |
download | qtlocation-mapboxgl-06f1dc48a2fb317979ab48ce323115be5bd48f16.tar.gz |
[core] Make the BackgroundScheduler a singleton
- Do not carry it over everywhere as parameter, it is a shared
instance anyway and the lifecycle is pretty much the app lifecycle
from the moment we instantiate a map.
- Rename to BackgroundScheduler because it is a Scheduler that will
do tasks in the background, we don't make assumptions if it is a
thread pool or a single thread.
- Most importantly, remove the dependency from `core` on `platform`.
Diffstat (limited to 'test/util')
-rw-r--r-- | test/util/async_task.test.cpp | 19 | ||||
-rw-r--r-- | test/util/memory.test.cpp | 14 | ||||
-rw-r--r-- | test/util/thread.test.cpp | 11 |
3 files changed, 21 insertions, 23 deletions
diff --git a/test/util/async_task.test.cpp b/test/util/async_task.test.cpp index f3025e8952..682926a17d 100644 --- a/test/util/async_task.test.cpp +++ b/test/util/async_task.test.cpp @@ -1,14 +1,15 @@ #include <mbgl/util/async_task.hpp> -#include <mbgl/util/run_loop.hpp> -#include <mbgl/util/default_thread_pool.hpp> -#include <mbgl/actor/actor_ref.hpp> +#include <mbgl/actor/actor_ref.hpp> +#include <mbgl/actor/scheduler.hpp> #include <mbgl/test/util.hpp> +#include <mbgl/util/run_loop.hpp> #include <atomic> #include <future> #include <vector> +using namespace mbgl; using namespace mbgl::util; namespace { @@ -104,11 +105,11 @@ TEST(AsyncTask, RequestCoalescingMultithreaded) { unsigned count = 0, numThreads = 25; AsyncTask async([&count] { ++count; }); - mbgl::ThreadPool threads(numThreads); - auto mailbox = std::make_shared<mbgl::Mailbox>(threads); + auto retainer = Scheduler::GetBackground(); + auto mailbox = std::make_shared<Mailbox>(*retainer); TestWorker worker(&async); - mbgl::ActorRef<TestWorker> workerRef(worker, mailbox); + ActorRef<TestWorker> workerRef(worker, mailbox); for (unsigned i = 0; i < numThreads; ++i) { workerRef.invoke(&TestWorker::run); @@ -133,11 +134,11 @@ TEST(AsyncTask, ThreadSafety) { AsyncTask async([&count] { ++count; }); - mbgl::ThreadPool threads(numThreads); - auto mailbox = std::make_shared<mbgl::Mailbox>(threads); + auto retainer = Scheduler::GetBackground(); + auto mailbox = std::make_shared<Mailbox>(*retainer); TestWorker worker(&async); - mbgl::ActorRef<TestWorker> workerRef(worker, mailbox); + ActorRef<TestWorker> workerRef(worker, mailbox); for (unsigned i = 0; i < numThreads; ++i) { // The callback runs on the worker, thus the atomic type. diff --git a/test/util/memory.test.cpp b/test/util/memory.test.cpp index e3ad976432..8602e6ac5b 100644 --- a/test/util/memory.test.cpp +++ b/test/util/memory.test.cpp @@ -5,7 +5,6 @@ #include <mbgl/map/map_options.hpp> #include <mbgl/gl/headless_frontend.hpp> -#include <mbgl/util/default_thread_pool.hpp> #include <mbgl/util/io.hpp> #include <mbgl/util/run_loop.hpp> #include <mbgl/style/style.hpp> @@ -37,7 +36,6 @@ public: util::RunLoop runLoop; std::shared_ptr<StubFileSource> fileSource = std::make_shared<StubFileSource>(); - ThreadPool threadPool { 4 }; private: Response response(const std::string& path) { @@ -72,8 +70,8 @@ TEST(Memory, Vector) { MemoryTest test; float ratio { 2 }; - HeadlessFrontend frontend { { 256, 256 }, ratio, test.threadPool }; - MapAdapter map(frontend, MapObserver::nullObserver(), test.fileSource, test.threadPool, + HeadlessFrontend frontend { { 256, 256 }, ratio }; + MapAdapter map(frontend, MapObserver::nullObserver(), test.fileSource, MapOptions().withMapMode(MapMode::Static).withSize(frontend.getSize()).withPixelRatio(ratio)); map.jumpTo(CameraOptions().withZoom(16)); map.getStyle().loadURL("mapbox://streets"); @@ -85,8 +83,8 @@ TEST(Memory, Raster) { MemoryTest test; float ratio { 2 }; - HeadlessFrontend frontend { { 256, 256 }, ratio, test.threadPool }; - MapAdapter map(frontend, MapObserver::nullObserver(), test.fileSource, test.threadPool, + HeadlessFrontend frontend { { 256, 256 }, ratio }; + MapAdapter map(frontend, MapObserver::nullObserver(), test.fileSource, MapOptions().withMapMode(MapMode::Static).withSize(frontend.getSize()).withPixelRatio(ratio)); map.getStyle().loadURL("mapbox://satellite"); @@ -123,8 +121,8 @@ TEST(Memory, Footprint) { class FrontendAndMap { public: FrontendAndMap(MemoryTest& test_, const char* style) - : frontend(Size{ 256, 256 }, 2, test_.threadPool) - , map(frontend, MapObserver::nullObserver(), test_.fileSource, test_.threadPool, + : frontend(Size{ 256, 256 }, 2) + , map(frontend, MapObserver::nullObserver(), test_.fileSource, MapOptions().withMapMode(MapMode::Static).withSize(frontend.getSize()).withPixelRatio(2)) { map.jumpTo(CameraOptions().withZoom(16)); map.getStyle().loadURL(style); diff --git a/test/util/thread.test.cpp b/test/util/thread.test.cpp index 2bcb9d8959..49735585c6 100644 --- a/test/util/thread.test.cpp +++ b/test/util/thread.test.cpp @@ -1,8 +1,9 @@ +#include <mbgl/util/thread.hpp> + #include <mbgl/actor/actor_ref.hpp> +#include <mbgl/actor/scheduler.hpp> #include <mbgl/test/util.hpp> -#include <mbgl/util/default_thread_pool.hpp> #include <mbgl/util/run_loop.hpp> -#include <mbgl/util/thread.hpp> #include <mbgl/util/timer.hpp> #include <atomic> @@ -139,8 +140,7 @@ TEST(Thread, Concurrency) { unsigned numMessages = 100000; std::atomic_uint completed(numMessages); - ThreadPool threadPool(10); - Actor<TestWorker> poolWorker(threadPool); + Actor<TestWorker> poolWorker(Scheduler::GetBackground()); auto poolWorkerRef = poolWorker.self(); Thread<TestWorker> threadedObject("Test"); @@ -165,8 +165,7 @@ TEST(Thread, Concurrency) { TEST(Thread, ThreadPoolMessaging) { auto loop = std::make_shared<RunLoop>(); - ThreadPool threadPool(1); - Actor<TestWorker> poolWorker(threadPool); + Actor<TestWorker> poolWorker(Scheduler::GetBackground()); auto poolWorkerRef = poolWorker.self(); Thread<TestWorker> threadedObject("Test"); |