blob: 93c0a024f1692114bf9b93ae88dce5c97dfe61ac [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef TESTING_UTIL_TASK_UTIL_H_
#define TESTING_UTIL_TASK_UTIL_H_
#include <thread>
#include "gtest/gtest.h"
#include "platform/api/time.h"
#include "util/osp_logging.h"
namespace openscreen {
template <typename Cond>
void WaitForCondition(Cond condition,
Clock::duration delay = std::chrono::milliseconds(250),
int max_attempts = 8) {
int attempts = 1;
do {
OSP_LOG_INFO << "--- Checking condition, attempt " << attempts << "/"
<< max_attempts;
if (condition()) {
break;
}
std::this_thread::sleep_for(delay);
} while (attempts++ < max_attempts);
ASSERT_TRUE(condition());
}
} // namespace openscreen
#endif // TESTING_UTIL_TASK_UTIL_H_