Files
scylladb/test/nodetool/test_getendpoints.py
Taras Veretilnyk 6381c63d65 test/nodetool/test_getendpoints: add coverage for --key-components param in getendpoints
Adds a parameterized test to verify that multiple --key-components arguments
are handled correctly by nodetool's getendpoints command. Ensures the
constructed REST request includes all key_component values in the expected format.
2025-10-01 15:53:25 +02:00

49 lines
1.9 KiB
Python

#
# Copyright 2024-present ScyllaDB
#
# SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0
#
import pytest
from test.nodetool.rest_api_mock import expected_request
@pytest.mark.parametrize("num_endpoints", [1, 2])
def test_getendpoints(nodetool, num_endpoints):
keyspace = 'ks'
table = 'cf0'
key = '42'
endpoints = [f"127.0.0.{i}" for i in range(num_endpoints)]
res = nodetool("getendpoints", keyspace, table, key, expected_requests=[
expected_request("GET", f"/storage_service/natural_endpoints/{keyspace}",
params={"cf": table, "key": key},
response=endpoints),
])
actual_output = res.stdout
expected_output = ''.join(f"{endpoint}\n" for endpoint in endpoints)
assert actual_output == expected_output
@pytest.mark.parametrize("num_endpoints", [1, 2])
@pytest.mark.parametrize("key_components", [[("--key-components", "part1")],
[("--key-components", "part1"), ("--key-components", "part2")]])
def test_getendpoints_key_components_param(nodetool, num_endpoints, key_components):
keyspace = 'ks'
table = 'cf0'
endpoints = [f"127.0.0.{i}" for i in range(num_endpoints)]
key_components_values = []
args = [keyspace, table]
for arg, value in key_components:
key_components_values.append(value)
args += [arg, value]
key_component_param = key_components_values if len(key_components_values) > 1 else key_components_values[0]
res = nodetool("getendpoints", *args, expected_requests=[
expected_request("GET", f"/storage_service/natural_endpoints/v2/{keyspace}",
params={"cf": table, "key_component": key_component_param},
response=endpoints),
])
actual_output = res.stdout
expected_output = ''.join(f"{endpoint}\n" for endpoint in endpoints)
assert actual_output == expected_output