diff --git a/test_runner/fixtures/neon_fixtures.py b/test_runner/fixtures/neon_fixtures.py index 770d192fb7..969929fd30 100644 --- a/test_runner/fixtures/neon_fixtures.py +++ b/test_runner/fixtures/neon_fixtures.py @@ -746,20 +746,12 @@ class NeonEnvBuilder: # Stop all the nodes. if self.env: log.info("Cleaning up all storage and compute nodes") - self.env.endpoints.stop_all() - for sk in self.env.safekeepers: - sk.stop(immediate=True) - - for pageserver in self.env.pageservers: + self.env.stop( + immediate=True, # if the test threw an exception, don't check for errors # as a failing assertion would cause the cleanup below to fail - if exc_type is not None: - pageserver.assert_no_metric_errors() - - pageserver.stop(immediate=True) - - self.env.attachment_service.stop(immediate=True) - + ps_assert_metric_no_errors=(exc_type is not None), + ) cleanup_error = None if self.scrub_on_exit: @@ -942,6 +934,17 @@ class NeonEnv: for safekeeper in self.safekeepers: safekeeper.start() + def stop(self, immediate=False, ps_assert_metric_no_errors=False): + self.endpoints.stop_all() + for sk in self.safekeepers: + sk.stop(immediate=immediate) + for pageserver in self.pageservers: + if ps_assert_metric_no_errors: + pageserver.assert_no_metric_errors() + pageserver.stop(immediate=immediate) + self.attachment_service.stop(immediate=immediate) + self.broker.stop() + @property def pageserver(self) -> NeonPageserver: """