mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-06-02 03:49:12 +08:00
mavsdk_tests: don't stall on timeout
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user