summaryrefslogtreecommitdiff
path: root/test/util
diff options
context:
space:
mode:
authorThiago Marcos P. Santos <tmpsantos@gmail.com>2019-02-14 16:56:17 +0200
committerThiago Marcos P. Santos <tmpsantos@gmail.com>2019-05-10 14:20:38 +0300
commit06f1dc48a2fb317979ab48ce323115be5bd48f16 (patch)
tree5ef1e78a1f98a7a26034ca519e267bda235b2817 /test/util
parent947bc75f56fae7f1e70f21b98730dc6b460b9194 (diff)
downloadqtlocation-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.cpp19
-rw-r--r--test/util/memory.test.cpp14
-rw-r--r--test/util/thread.test.cpp11
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");