Commit f4a65655 authored by Matthias Vallentin's avatar Matthias Vallentin

Repair unit test watchdog parameterization

parent 72833346
...@@ -39,14 +39,14 @@ namespace test { ...@@ -39,14 +39,14 @@ namespace test {
class watchdog { class watchdog {
public: public:
static void start(); static void start(int secs);
static void stop(); static void stop();
private: private:
watchdog() { watchdog(int secs) {
thread_ = std::thread{[&] { thread_ = std::thread{[=] {
auto tp = auto tp =
std::chrono::high_resolution_clock::now() + std::chrono::seconds(30); std::chrono::high_resolution_clock::now() + std::chrono::seconds(secs);
std::unique_lock<std::mutex> guard{mtx_}; std::unique_lock<std::mutex> guard{mtx_};
while (! canceled_ while (! canceled_
&& cv_.wait_until(guard, tp) != std::cv_status::timeout) { && cv_.wait_until(guard, tp) != std::cv_status::timeout) {
...@@ -54,7 +54,8 @@ private: ...@@ -54,7 +54,8 @@ private:
} }
if (! canceled_) { if (! canceled_) {
logger::instance().error() logger::instance().error()
<< "WATCHDOG: unit test did finish within 10s, abort\n"; << "WATCHDOG: unit test did not finish within "
<< secs << "s, abort\n";
abort(); abort();
} }
}}; }};
...@@ -76,8 +77,8 @@ private: ...@@ -76,8 +77,8 @@ private:
namespace { watchdog* s_watchdog; } namespace { watchdog* s_watchdog; }
void watchdog::start() { void watchdog::start(int secs) {
s_watchdog = new watchdog(); s_watchdog = new watchdog(secs);
} }
void watchdog::stop() { void watchdog::stop() {
...@@ -263,7 +264,7 @@ bool engine::run(bool colorize, ...@@ -263,7 +264,7 @@ bool engine::run(bool colorize,
const std::string& log_file, const std::string& log_file,
int verbosity_console, int verbosity_console,
int verbosity_file, int verbosity_file,
int, // TODO: max runtime int max_runtime,
const std::string& suites_str, const std::string& suites_str,
const std::string& not_suites_str, const std::string& not_suites_str,
const std::string& tests_str, const std::string& tests_str,
...@@ -359,7 +360,7 @@ bool engine::run(bool colorize, ...@@ -359,7 +360,7 @@ bool engine::run(bool colorize,
log.verbose() << color(yellow) << "- " << color(reset) << t->name() log.verbose() << color(yellow) << "- " << color(reset) << t->name()
<< '\n'; << '\n';
auto start = std::chrono::high_resolution_clock::now(); auto start = std::chrono::high_resolution_clock::now();
watchdog::start(); watchdog::start(max_runtime);
try { try {
t->run(); t->run();
} catch (const detail::require_error&) { } catch (const detail::require_error&) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment