Skip to content

Commit 532e7a3

Browse files
committed
rptest: move cluster config export to @cluster
This should be done only once, don't do it on service stop, but in the @cluster cleanup code, before we stop redpanda. This saves six seconds on every test, since the second export (due to the second stop) took six seconds. Hat tip to Stephan for noticing this.
1 parent cc0f5a5 commit 532e7a3

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

tests/rptest/services/cluster.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,8 @@ def _do_post_test_checks(
154154
redpanda.cloud_storage_diagnostics()
155155
raise
156156

157+
redpanda.export_cluster_config()
158+
157159
if isinstance(redpanda, RedpandaService):
158160
if test_failed:
159161
redpanda.cloud_storage_diagnostics()

tests/rptest/services/redpanda.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1219,6 +1219,11 @@ def __init__(self, *args, **kwargs) -> None:
12191219
self._check_attr("logger", Logger)
12201220
self._usage_stats = UsageStats()
12211221

1222+
@property
1223+
@abstractmethod
1224+
def logger(self) -> Logger:
1225+
pass
1226+
12221227
@property
12231228
def usage_stats(self) -> UsageStats:
12241229
"""
@@ -1248,6 +1253,9 @@ def kafka_client_security(self) -> KafkaClientSecurity:
12481253
on this broker."""
12491254
pass
12501255

1256+
def export_cluster_config(self) -> None:
1257+
self.logger.debug("export_cluster_config not implemented for this service")
1258+
12511259
def wait_until(
12521260
self,
12531261
fn: Callable[[], Any],
@@ -1582,7 +1590,6 @@ def __init__(
15821590
# we save the test context under both names since RedpandaService and Service
15831591
# save them under these two names, respetively
15841592
self.context = self._context = context
1585-
self.logger = context.logger
15861593

15871594
super().__init__()
15881595

@@ -1667,6 +1674,10 @@ def __init__(
16671674
f"Not enough brokers: test needs {self._min_brokers} but cluster has {node_count}"
16681675
)
16691676

1677+
@property
1678+
def logger(self) -> Logger:
1679+
return self._context.logger
1680+
16701681
@property
16711682
def kubectl(self) -> KubectlTool:
16721683
assert self.__kubectl, "kubectl accessed before cluster was started?"
@@ -2379,7 +2390,7 @@ def copy_from_pod(params):
23792390
return {}
23802391

23812392

2382-
class RedpandaService(RedpandaServiceABC, Service):
2393+
class RedpandaService(Service, RedpandaServiceABC):
23832394
PERSISTENT_ROOT = "/var/lib/redpanda"
23842395
TRIM_LOGS_KEY = "trim_logs"
23852396
DATA_DIR = os.path.join(PERSISTENT_ROOT, "data")
@@ -4449,11 +4460,11 @@ def get_version_if_not_head(self, node):
44494460
return self.get_version(node)
44504461
return None
44514462

4452-
def stop(self, **kwargs: Any) -> None:
4463+
def export_cluster_config(self) -> None:
44534464
"""
4454-
Override default stop() to execude stop_node in parallel
4465+
Export the cluster configuration of all nodes to the ducktape log
4466+
directory for later inspection.
44554467
"""
4456-
self._stop_time = time.time() # The last time stop is invoked
44574468
self.logger.info("%s: exporting cluster config" % self.who_am_i())
44584469

44594470
service_dir = os.path.join(
@@ -4477,6 +4488,12 @@ def stop(self, **kwargs: Any) -> None:
44774488
# will not be able to get it from the admin API
44784489
self.logger.info(f"{self.who_am_i()}: error getting config: {e}")
44794490

4491+
def stop(self, **kwargs: Any) -> None:
4492+
"""
4493+
Override default stop() to execude stop_node in parallel
4494+
"""
4495+
self._stop_time = time.time() # The last time stop is invoked
4496+
44804497
self.logger.info("%s: stopping service" % self.who_am_i())
44814498

44824499
self.for_nodes(self.nodes, lambda n: self.stop_node(n, **kwargs))

0 commit comments

Comments
 (0)