Loading cmds/dumpstate/DumpPool.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -64,8 +64,8 @@ void DumpPool::shutdown() { if (shutdown_ || threads_.empty()) { return; } while (!tasks_.empty()) tasks_.pop(); futures_map_.clear(); while (!tasks_.empty()) tasks_.pop(); shutdown_ = true; condition_variable_.notify_all(); Loading cmds/dumpstate/tests/dumpstate_test.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -1762,6 +1762,27 @@ TEST_F(DumpPoolTest, EnqueueTask_withDurationLog) { EXPECT_THAT(getTempFileCounts(kTestDataPath), Eq(0)); } TEST_F(DumpPoolTest, Shutdown_withoutCrash) { bool run_1 = false; auto dump_func_1 = [&]() { run_1 = true; }; auto dump_func = []() { sleep(1); }; dump_pool_->start(/* thread_counts = */1); dump_pool_->enqueueTask(/* task_name = */"1", dump_func_1); dump_pool_->enqueueTask(/* task_name = */"2", dump_func); dump_pool_->enqueueTask(/* task_name = */"3", dump_func); dump_pool_->enqueueTask(/* task_name = */"4", dump_func); dump_pool_->waitForTask("1", "", out_fd_.get()); dump_pool_->shutdown(); EXPECT_TRUE(run_1); EXPECT_THAT(getTempFileCounts(kTestDataPath), Eq(0)); } class TaskQueueTest : public DumpstateBaseTest { public: void SetUp() { Loading Loading
cmds/dumpstate/DumpPool.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -64,8 +64,8 @@ void DumpPool::shutdown() { if (shutdown_ || threads_.empty()) { return; } while (!tasks_.empty()) tasks_.pop(); futures_map_.clear(); while (!tasks_.empty()) tasks_.pop(); shutdown_ = true; condition_variable_.notify_all(); Loading
cmds/dumpstate/tests/dumpstate_test.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -1762,6 +1762,27 @@ TEST_F(DumpPoolTest, EnqueueTask_withDurationLog) { EXPECT_THAT(getTempFileCounts(kTestDataPath), Eq(0)); } TEST_F(DumpPoolTest, Shutdown_withoutCrash) { bool run_1 = false; auto dump_func_1 = [&]() { run_1 = true; }; auto dump_func = []() { sleep(1); }; dump_pool_->start(/* thread_counts = */1); dump_pool_->enqueueTask(/* task_name = */"1", dump_func_1); dump_pool_->enqueueTask(/* task_name = */"2", dump_func); dump_pool_->enqueueTask(/* task_name = */"3", dump_func); dump_pool_->enqueueTask(/* task_name = */"4", dump_func); dump_pool_->waitForTask("1", "", out_fd_.get()); dump_pool_->shutdown(); EXPECT_TRUE(run_1); EXPECT_THAT(getTempFileCounts(kTestDataPath), Eq(0)); } class TaskQueueTest : public DumpstateBaseTest { public: void SetUp() { Loading