X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=tests%2Futils%2Flttngtest%2Fenvironment.py;h=73d18874b293f1fa23e7c7e2dd267b33e81dd149;hb=HEAD;hp=e51f5eb66da533cc36c6dde3ec2d8e235c7636fd;hpb=45ce5eede99b4bd47067cd235629291540182fb8;p=lttng-tools.git diff --git a/tests/utils/lttngtest/environment.py b/tests/utils/lttngtest/environment.py index e51f5eb66..73d18874b 100644 --- a/tests/utils/lttngtest/environment.py +++ b/tests/utils/lttngtest/environment.py @@ -93,6 +93,7 @@ class _WaitTraceTestApplication: wait_before_exit=False, # type: bool wait_before_exit_file_path=None, # type: Optional[pathlib.Path] ): + self._process = None self._environment = environment # type: Environment self._iteration_count = event_count # File that the application will wait to see before tracing its events. @@ -223,7 +224,7 @@ class _WaitTraceTestApplication: return str(path) def __del__(self): - if not self._has_returned: + if self._process is not None and not self._has_returned: # This is potentially racy if the pid has been recycled. However, # we can't use pidfd_open since it is only available in python >= 3.9. self._process.kill() @@ -315,6 +316,7 @@ class _TraceTestApplication: def __init__(self, binary_path, environment): # type: (pathlib.Path, Environment) + self._process = None self._environment = environment # type: Environment self._has_returned = False @@ -341,7 +343,7 @@ class _TraceTestApplication: self._has_returned = True def __del__(self): - if not self._has_returned: + if self._process is not None and not self._has_returned: # This is potentially racy if the pid has been recycled. However, # we can't use pidfd_open since it is only available in python >= 3.9. self._process.kill() @@ -610,21 +612,26 @@ class _Environment(logger._Logger): wait_before_exit_file_path, ) - def launch_trace_test_constructor_application(self): + def launch_test_application(self, subpath): # type () -> TraceTestApplication """ Launch an application that will trace from within constructors. """ return _TraceTestApplication( - self._project_root - / "tests" - / "utils" - / "testapp" - / "gen-ust-events-constructor" - / "gen-ust-events-constructor", + self._project_root / "tests" / "utils" / "testapp" / subpath, self, ) + def _terminate_relayd(self): + if self._relayd and self._relayd.poll() is None: + self._relayd.terminate() + self._relayd.wait() + if self._relayd_output_consumer: + self._relayd_output_consumer.join() + self._relayd_output_consumer = None + self._log("Relayd killed") + self._relayd = None + # Clean-up managed processes def _cleanup(self): # type: () -> None @@ -645,14 +652,7 @@ class _Environment(logger._Logger): self._log("Session daemon killed") self._sessiond = None - if self._relayd and self._relayd.poll() is None: - self._relayd.terminate() - self._relayd.wait() - if self._relayd_output_consumer: - self._relayd_output_consumer.join() - self._relayd_output_consumer = None - self._log("Relayd killed") - self._relayd = None + self._terminate_relayd() self._lttng_home = None