From 6352e8e3196f78388b6c771073f9e03eaa612673 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Tue, 20 Jun 2023 14:33:09 +1000 Subject: everything everywhere all at once --- source/test/worker_pool_test.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 source/test/worker_pool_test.cpp (limited to 'source/test/worker_pool_test.cpp') diff --git a/source/test/worker_pool_test.cpp b/source/test/worker_pool_test.cpp new file mode 100644 index 0000000..73b0f35 --- /dev/null +++ b/source/test/worker_pool_test.cpp @@ -0,0 +1,34 @@ +#include "StarWorkerPool.hpp" + +#include "gtest/gtest.h" + +using namespace Star; + +TEST(WorkerPoolTest, All) { + int counter = 0; + Mutex counterMutex; + + auto incCounter = [&counter, &counterMutex]() { + Thread::sleep(100); + MutexLocker locker(counterMutex); + counter += 1; + }; + + Deque handles; + + WorkerPool workerPool("WorkerPoolTest"); + for (size_t i = 0; i < 10; ++i) + handles.append(workerPool.addWork(incCounter)); + + workerPool.start(10); + + for (size_t i = 0; i < 90; ++i) + handles.append(workerPool.addWork(incCounter)); + + while (handles.size() > 20) + handles.takeFirst().finish(); + + workerPool.finish(); + + EXPECT_EQ(counter, 100); +} -- cgit v1.2.3