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

Commit 113f7ab8 authored by Hansong Zhang's avatar Hansong Zhang
Browse files

Timer: Fix unstable test

* Don't use future.wait_until()
* For cancel_period_task, verify the counter won't change after
  timer is cancelled

Test: run Timer test for 5000 times
Bug: 116081383
Change-Id: Ibc99507e76180a878f417a0b4e7aba1b8adc7cb6
parent 86461142
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -250,14 +250,22 @@ TEST_F(TimerTest, cancel_periodic_task) {
  MessageLoopThread message_loop_thread(name);
  message_loop_thread.StartUp();
  uint32_t delay_ms = 5;
  uint32_t time_cancellation_ms = 3;
  int num_tasks = 5;
  auto future = promise_->get_future();

  timer_->SchedulePeriodic(
      message_loop_thread.GetWeakPtr(), FROM_HERE,
      base::Bind(&TimerTest::ShouldNotHappen, base::Unretained(this)),
      base::Bind(&TimerTest::IncreaseTaskCounter, base::Unretained(this),
                 num_tasks, promise_),
      base::TimeDelta::FromMilliseconds(delay_ms));
  std::this_thread::sleep_for(std::chrono::milliseconds(time_cancellation_ms));
  future.wait();
  timer_->CancelAndWait();
  std::this_thread::sleep_for(std::chrono::milliseconds(delay_error_ms));
  std::this_thread::sleep_for(
      std::chrono::milliseconds(delay_ms + delay_error_ms));
  int counter = counter_;
  std::this_thread::sleep_for(
      std::chrono::milliseconds(delay_ms + delay_error_ms));
  ASSERT_EQ(counter, counter_);
}

// Verify that if a task is being executed, then cancelling it is no-op
@@ -388,6 +396,6 @@ TEST_F(TimerTest, reschedule_task_when_firing_must_schedule_new_task) {
                   base::Bind(&TimerTest::GetName, base::Unretained(this),
                              &my_name, promise_),
                   base::TimeDelta::FromMilliseconds(delay_ms));
  future.wait_for(std::chrono::milliseconds(delay_ms + delay_error_ms));
  future.get();
  ASSERT_EQ(name, my_name);
}