Skip to content
This repository was archived by the owner on Aug 8, 2023. It is now read-only.

Commit aaab24c

Browse files
committed
wip: clarify PauseThenResume test
1 parent dc57cc2 commit aaab24c

File tree

2 files changed

+23
-18
lines changed

2 files changed

+23
-18
lines changed

src/mbgl/util/thread.hpp

+7
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <mbgl/util/run_loop.hpp>
1010
#include <mbgl/util/thread_context.hpp>
1111
#include <mbgl/util/platform.hpp>
12+
#include <mbgl/util/util.hpp>
1213

1314
#include <cassert>
1415

@@ -57,6 +58,8 @@ class Thread {
5758
}
5859

5960
void pause() {
61+
MBGL_VERIFY_THREAD(tid);
62+
6063
assert(!paused);
6164

6265
paused = std::make_unique<std::promise<void>>();
@@ -74,6 +77,8 @@ class Thread {
7477
}
7578

7679
void resume() {
80+
MBGL_VERIFY_THREAD(tid);
81+
7782
assert(paused);
7883

7984
resumed->set_value();
@@ -83,6 +88,8 @@ class Thread {
8388
}
8489

8590
private:
91+
MBGL_STORE_THREAD(tid);
92+
8693
Thread(const Thread&) = delete;
8794
Thread(Thread&&) = delete;
8895
Thread& operator=(const Thread&) = delete;

test/util/thread.test.cpp

+16-18
Original file line numberDiff line numberDiff line change
@@ -129,32 +129,30 @@ TEST(Thread, context) {
129129
loop.run();
130130
}
131131

132-
TEST(Thread, pause) {
132+
TEST(Thread, PauseThenResume) {
133133
const std::thread::id tid = std::this_thread::get_id();
134134

135-
RunLoop loop;
135+
RunLoop loop1;
136136
std::vector<std::unique_ptr<mbgl::AsyncRequest>> requests;
137137

138-
Thread<TestObject> thread({"Test"}, tid);
139-
Thread<TestObject> unpausedThread({"UnpausedTest"}, tid);
138+
Thread<TestObject> thread1({"Test1"}, tid);
139+
Thread<TestObject> thread2({"Test2"}, tid);
140140

141-
loop.invoke([&] {
142-
thread.pause();
141+
thread1.pause();
143142

144-
requests.push_back(thread.invokeWithCallback(&TestObject::fn2, [&] (int result) {
145-
EXPECT_EQ(tid, std::this_thread::get_id());
146-
EXPECT_EQ(result, 1);
147-
loop.stop();
148-
}));
143+
requests.push_back(thread1.invokeWithCallback(&TestObject::fn2, [&] (int result) {
144+
EXPECT_EQ(tid, std::this_thread::get_id());
145+
EXPECT_EQ(result, 1);
146+
loop1.stop();
147+
}));
149148

150-
requests.push_back(unpausedThread.invokeWithCallback(&TestObject::transferOut, [&] (std::unique_ptr<int> result) {
151-
EXPECT_EQ(tid, std::this_thread::get_id());
152-
EXPECT_EQ(*result, 1);
153-
thread.resume();
154-
}));
155-
});
149+
requests.push_back(thread2.invokeWithCallback(&TestObject::transferOut, [&] (std::unique_ptr<int> result) {
150+
EXPECT_EQ(tid, std::this_thread::get_id());
151+
EXPECT_EQ(*result, 1);
152+
thread1.resume();
153+
}));
156154

157-
loop.run();
155+
loop1.run();
158156
}
159157

160158
class TestWorker {

0 commit comments

Comments
 (0)