diff options
author | Scott Lobdell <slobdell@google.com> | 2021-03-11 19:08:54 +0000 |
---|---|---|
committer | Scott Lobdell <slobdell@google.com> | 2021-03-11 19:08:54 +0000 |
commit | a4bc4d3a2b36280f54cdad53b0bb0de8b4223d55 (patch) | |
tree | 0c8d19a6d8d901cb20498399ab3e3f8434aa1fcd /biometrics/fingerprint/aidl/default/tests/WorkerThreadTest.cpp | |
parent | 86bfa300dfbcf500ad04bede19a2b5f0e6d418b9 (diff) | |
parent | f4b38dd9acd9e6e5803ceda6c6a467c97512216e (diff) |
Merge SP1A.210311.001
Change-Id: Icc232e4382ad1df43912307e19aa40f579396b6b
Diffstat (limited to 'biometrics/fingerprint/aidl/default/tests/WorkerThreadTest.cpp')
-rw-r--r-- | biometrics/fingerprint/aidl/default/tests/WorkerThreadTest.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/biometrics/fingerprint/aidl/default/tests/WorkerThreadTest.cpp b/biometrics/fingerprint/aidl/default/tests/WorkerThreadTest.cpp index ba901ad5ca..0d5014bb84 100644 --- a/biometrics/fingerprint/aidl/default/tests/WorkerThreadTest.cpp +++ b/biometrics/fingerprint/aidl/default/tests/WorkerThreadTest.cpp @@ -25,13 +25,14 @@ namespace { +using aidl::android::hardware::biometrics::fingerprint::Callable; using aidl::android::hardware::biometrics::fingerprint::WorkerThread; using namespace std::chrono_literals; TEST(WorkerThreadTest, ScheduleReturnsTrueWhenQueueHasSpace) { WorkerThread worker(1 /*maxQueueSize*/); for (int i = 0; i < 100; ++i) { - EXPECT_TRUE(worker.schedule([] {})); + EXPECT_TRUE(worker.schedule(Callable::from([] {}))); // Allow enough time for the previous task to be processed. std::this_thread::sleep_for(2ms); } @@ -40,16 +41,16 @@ TEST(WorkerThreadTest, ScheduleReturnsTrueWhenQueueHasSpace) { TEST(WorkerThreadTest, ScheduleReturnsFalseWhenQueueIsFull) { WorkerThread worker(2 /*maxQueueSize*/); // Add a long-running task. - worker.schedule([] { std::this_thread::sleep_for(1s); }); + worker.schedule(Callable::from([] { std::this_thread::sleep_for(1s); })); // Allow enough time for the worker to start working on the previous task. std::this_thread::sleep_for(2ms); // Fill the worker's queue to the maximum. - worker.schedule([] {}); - worker.schedule([] {}); + worker.schedule(Callable::from([] {})); + worker.schedule(Callable::from([] {})); - EXPECT_FALSE(worker.schedule([] {})); + EXPECT_FALSE(worker.schedule(Callable::from([] {}))); } TEST(WorkerThreadTest, TasksExecuteInOrder) { @@ -58,19 +59,19 @@ TEST(WorkerThreadTest, TasksExecuteInOrder) { std::vector<int> results; for (int i = 0; i < NUM_TASKS; ++i) { - worker.schedule([&results, i] { + worker.schedule(Callable::from([&results, i] { // Delay tasks differently to provoke races. std::this_thread::sleep_for(std::chrono::nanoseconds(100 - i % 100)); // Unguarded write to results to provoke races. results.push_back(i); - }); + })); } std::promise<void> promise; auto future = promise.get_future(); // Schedule a special task to signal when all of the tasks are finished. - worker.schedule([&promise] { promise.set_value(); }); + worker.schedule(Callable::from([&promise] { promise.set_value(); })); auto status = future.wait_for(1s); ASSERT_EQ(status, std::future_status::ready); @@ -86,11 +87,11 @@ TEST(WorkerThreadTest, ExecutionStopsAfterWorkerIsDestroyed) { { WorkerThread worker(2 /*maxQueueSize*/); - worker.schedule([&promise1] { + worker.schedule(Callable::from([&promise1] { promise1.set_value(); std::this_thread::sleep_for(200ms); - }); - worker.schedule([&promise2] { promise2.set_value(); }); + })); + worker.schedule(Callable::from([&promise2] { promise2.set_value(); })); // Make sure the first task is executing. auto status1 = future1.wait_for(1s); |