mavsdk_tests: don't stall on timeout

This commit is contained in:
Julian Oes
2020-03-31 10:55:32 +02:00
parent 477092fa24
commit 0edc2aa334
2 changed files with 17 additions and 2 deletions
+12 -1
View File
@@ -415,10 +415,21 @@ class Tester:
self.verbose) self.verbose)
self.active_runners.append(mavsdk_tests_runner) self.active_runners.append(mavsdk_tests_runner)
abort = False
for runner in self.active_runners: for runner in self.active_runners:
runner.set_log_filename( runner.set_log_filename(
self.determine_logfile_path(log_dir, runner.name)) self.determine_logfile_path(log_dir, runner.name))
runner.start() try:
runner.start()
except TimeoutError:
abort = True
print("A timeout happened for runner: {}"
.format(runner.name))
break
if abort:
self.stop_runners()
sys.exit(1)
def stop_runners(self) -> None: def stop_runners(self) -> None:
for runner in self.active_runners: for runner in self.active_runners:
+5 -1
View File
@@ -8,7 +8,7 @@ import subprocess
import threading import threading
import pathlib import pathlib
import errno import errno
from typing import Dict, List, TextIO, Optional from typing import Any, Dict, List, TextIO, Optional
class Runner: class Runner:
@@ -32,6 +32,7 @@ class Runner:
self.log_dir = log_dir self.log_dir = log_dir
self.log_filename = "" self.log_filename = ""
self.wait_until_complete = False self.wait_until_complete = False
self.stop_thread: Any[threading.Event] = None
def set_log_filename(self, log_filename: str) -> None: def set_log_filename(self, log_filename: str) -> None:
self.log_filename = log_filename self.log_filename = log_filename
@@ -97,6 +98,9 @@ class Runner:
def stop(self) -> int: def stop(self) -> int:
atexit.unregister(self.stop) atexit.unregister(self.stop)
if not self.stop_thread:
return 0
self.stop_thread.set() self.stop_thread.set()
returncode = self.process.poll() returncode = self.process.poll()