Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b2bd1730 authored by William Escande's avatar William Escande Committed by Cherrypicker Worker
Browse files

Fix flaky test register_enqueue_with_half_empty_queue

The TestQueue was deleted while still running a task.
This is because Handler.cc is not looking for running task when being
deleted

Fix: 264602833
Test: atest bluetooth_test_gd_unit64
Change-Id: I2131c14226cc2b086e8d1c6eeacaf1f9d6876da2
(cherry picked from commit 60ca3cfd)
Merged-In: I2131c14226cc2b086e8d1c6eeacaf1f9d6876da2
parent eab45bd0
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <sys/eventfd.h>

#include <atomic>
#include <chrono>
#include <future>
#include <unordered_map>

@@ -26,6 +27,8 @@
#include "gtest/gtest.h"
#include "os/reactor.h"

using namespace std::chrono_literals;

namespace bluetooth {
namespace os {
namespace {
@@ -60,6 +63,11 @@ class QueueTest : public ::testing::Test {
  Handler* enqueue_handler_;
  Thread* dequeue_thread_;
  Handler* dequeue_handler_;

  void sync_enqueue_handler() {
    ASSERT(enqueue_thread_ != nullptr);
    ASSERT(enqueue_thread_->GetReactor()->WaitForIdle(2s));
  }
};

class TestEnqueueEnd {
@@ -338,6 +346,7 @@ TEST_F(QueueTest, register_enqueue_with_half_empty_queue) {
  test_enqueue_end.RegisterEnqueue(&enqueue_promise_map);
  enqueue_future.wait();
  EXPECT_EQ(enqueue_future.get(), 0);
  sync_enqueue_handler();
}

// Enqueue end level : 1