From 5182c68684c857cc21ace11d9cf49eaad67ae645 Mon Sep 17 00:00:00 2001 From: William Escande <wescande@google.com> Date: Sat, 7 Jan 2023 22:25:55 -0800 Subject: [PATCH] Fix flaky test Test: atest bluetooth_test_gd_unit.HandlerTest#post_task_cleared Fix: 262498289 Change-Id: I6c0b77f4f8bfc9bb3f99f0810ee0b84275dcdd80 --- system/gd/os/handler_unittest.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/system/gd/os/handler_unittest.cc b/system/gd/os/handler_unittest.cc index b8c580f4c9f..04f634765be 100644 --- a/system/gd/os/handler_unittest.cc +++ b/system/gd/os/handler_unittest.cc @@ -70,19 +70,27 @@ TEST_F(HandlerTest, post_task_cleared) { auto closure_started_future = closure_started.get_future(); std::promise<void> closure_can_continue; auto can_continue_future = closure_can_continue.get_future(); + std::promise<void> closure_finished; + auto closure_finished_future = closure_finished.get_future(); handler_->Post(common::BindOnce( - [](int* val, std::promise<void> closure_started, std::future<void> can_continue_future) { + [](int* val, + std::promise<void> closure_started, + std::future<void> can_continue_future, + std::promise<void> closure_finished) { closure_started.set_value(); *val = *val + 1; can_continue_future.wait(); + closure_finished.set_value(); }, common::Unretained(&val), std::move(closure_started), - std::move(can_continue_future))); + std::move(can_continue_future), + std::move(closure_finished))); handler_->Post(common::BindOnce([]() { ASSERT_TRUE(false); })); closure_started_future.wait(); handler_->Clear(); closure_can_continue.set_value(); + closure_finished_future.wait(); ASSERT_EQ(val, 1); } -- GitLab