Skip to content

Commit

Permalink
dt/admin_uuid: Integration test for CLI options
Browse files Browse the repository at this point in the history
Signed-off-by: Oren Leiman <[email protected]>
  • Loading branch information
oleiman committed Sep 11, 2024
1 parent afe076d commit ace0d61
Showing 1 changed file with 41 additions and 11 deletions.
52 changes: 41 additions & 11 deletions tests/rptest/tests/admin_uuid_operations_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
class TestMode(IntEnum):
CFG_OVERRIDE = 1
NO_OVERRIDE = 2
CLI_OVERRIDE = 3


class AdminUUIDOperationsTest(RedpandaTest):
Expand Down Expand Up @@ -124,6 +125,7 @@ def scrape_uuid(self, node: ClusterNode) -> str | None:
def _restart_node(self,
node: ClusterNode,
overrides: dict | None = None,
extra_cli: list[str] = [],
drop_disk: bool = False):
self.redpanda.stop_node(node)
if drop_disk:
Expand All @@ -136,6 +138,7 @@ def _restart_node(self,
auto_assign_node_id=True,
omit_seeds_on_idx_one=False,
override_cfg_params=overrides,
extra_cli=extra_cli,
)

def _decommission(self, node_id, node=None):
Expand Down Expand Up @@ -183,6 +186,7 @@ def wait_until_cluster_healthy(self, timeout_sec=30):
@cluster(num_nodes=3)
@parametrize(mode=TestMode.CFG_OVERRIDE)
@parametrize(mode=TestMode.NO_OVERRIDE)
@parametrize(mode=TestMode.CLI_OVERRIDE)
def test_force_uuid_override(self, mode):
to_stop = self.redpanda.nodes[0]
initial_to_stop_id = self.redpanda.node_id(to_stop)
Expand Down Expand Up @@ -234,6 +238,18 @@ def test_force_uuid_override(self, mode):
], ),
drop_disk=False,
)
elif mode == TestMode.CLI_OVERRIDE:
self.logger.debug(
f"Override with known-good uuid/id via command line options: {THE_OVERRIDE}"
)
self._restart_node(
to_stop,
extra_cli=[
"--node-id-overrides",
f"{current_uuid}:{old_uuid}:{initial_to_stop_id}",
],
drop_disk=False,
)
elif mode == TestMode.NO_OVERRIDE:
self.logger.debug(
"Omit the override to confirm that we're still stuck in that case"
Expand Down Expand Up @@ -294,7 +310,9 @@ def expect_ids(node: ClusterNode, uuid: str, id: int):
retry_on_exc=True)

@cluster(num_nodes=3)
def test_force_uuid_override_multinode(self):
@parametrize(mode=TestMode.CFG_OVERRIDE)
@parametrize(mode=TestMode.CLI_OVERRIDE)
def test_force_uuid_override_multinode(self, mode):
to_stop = self.redpanda.nodes[1:]
initial_to_stop_ids = [self.redpanda.node_id(n) for n in to_stop]

Expand Down Expand Up @@ -332,16 +350,28 @@ def test_force_uuid_override_multinode(self):
self.logger.debug(
"Restart both nodes again, with overrides. Keep both disks")

self.redpanda.restart_nodes(
to_stop,
override_cfg_params=dict(node_id_overrides=[
dict(current_uuid=current_uuids[n],
new_uuid=old_uuids[initial_to_stop_ids[n]],
new_id=initial_to_stop_ids[n])
for n in range(0, len(to_stop))
]),
auto_assign_node_id=True,
)
if mode == TestMode.CFG_OVERRIDE:
self.redpanda.restart_nodes(
to_stop,
override_cfg_params=dict(node_id_overrides=[
dict(current_uuid=current_uuids[n],
new_uuid=old_uuids[initial_to_stop_ids[n]],
new_id=initial_to_stop_ids[n])
for n in range(0, len(to_stop))
]),
auto_assign_node_id=True,
)
elif mode == TestMode.CLI_OVERRIDE:
self.redpanda.restart_nodes(
to_stop,
extra_cli=[
"--node-id-overrides",
] + [
f"{current_uuids[n]}:{old_uuids[initial_to_stop_ids[n]]}:{initial_to_stop_ids[n]}"
for n in range(0, len(to_stop))
],
auto_assign_node_id=True,
)

self.logger.debug("Wait for the cluster to become healthy...")

Expand Down

0 comments on commit ace0d61

Please sign in to comment.