So callers have access to stderr, return code and more. This causes some churn in the test, but the changes are mechanical.
81 lines
3.2 KiB
Python
81 lines
3.2 KiB
Python
#
|
|
# Copyright 2023-present ScyllaDB
|
|
#
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
#
|
|
|
|
from rest_api_mock import expected_request
|
|
import utils
|
|
|
|
|
|
def test_decommission(nodetool):
|
|
nodetool("decommission", expected_requests=[
|
|
expected_request("POST", "/storage_service/decommission")])
|
|
|
|
|
|
def test_rebuild(nodetool):
|
|
nodetool("rebuild", expected_requests=[
|
|
expected_request("POST", "/storage_service/rebuild")])
|
|
|
|
|
|
def test_rebuild_with_dc(nodetool):
|
|
nodetool("rebuild", "DC1", expected_requests=[
|
|
expected_request("POST", "/storage_service/rebuild", params={"source_dc": "DC1"})])
|
|
|
|
|
|
def test_removenode(nodetool):
|
|
nodetool("removenode", "675ed9f4-6564-6dbd-can8-43fddce952gy", expected_requests=[
|
|
expected_request("POST", "/storage_service/remove_node",
|
|
params={"host_id": "675ed9f4-6564-6dbd-can8-43fddce952gy"})])
|
|
|
|
|
|
def test_removenode_ignore_nodes_one_node(nodetool):
|
|
nodetool("removenode",
|
|
"675ed9f4-6564-6dbd-can8-43fddce952gy",
|
|
"--ignore-dead-nodes",
|
|
"88eed9f4-6564-6dbd-can8-43fddce952gy",
|
|
expected_requests=[
|
|
expected_request("POST", "/storage_service/remove_node", params={
|
|
"host_id": "675ed9f4-6564-6dbd-can8-43fddce952gy",
|
|
"ignore_nodes": "88eed9f4-6564-6dbd-can8-43fddce952gy"})])
|
|
|
|
|
|
def test_removenode_ignore_nodes_two_nodes(nodetool):
|
|
nodetool("removenode",
|
|
"675ed9f4-6564-6dbd-can8-43fddce952gy",
|
|
"--ignore-dead-nodes",
|
|
"88eed9f4-6564-6dbd-can8-43fddce952gy,99eed9f4-6564-6dbd-can8-43fddce952gy",
|
|
expected_requests=[
|
|
expected_request("POST", "/storage_service/remove_node", params={
|
|
"host_id": "675ed9f4-6564-6dbd-can8-43fddce952gy",
|
|
"ignore_nodes": "88eed9f4-6564-6dbd-can8-43fddce952gy,99eed9f4-6564-6dbd-can8-43fddce952gy"})])
|
|
|
|
|
|
def test_removenode_status(nodetool):
|
|
res = nodetool("removenode", "status", expected_requests=[
|
|
expected_request("GET", "/storage_service/removal_status", response="SOME STATUS")])
|
|
assert res.stdout == "RemovalStatus: SOME STATUS\n"
|
|
|
|
|
|
def test_removenode_force(nodetool):
|
|
res = nodetool("removenode", "force", expected_requests=[
|
|
expected_request("GET", "/storage_service/removal_status", response="SOME STATUS"),
|
|
expected_request("POST", "/storage_service/force_remove_completion")])
|
|
assert res.stdout == "RemovalStatus: SOME STATUS\n"
|
|
|
|
|
|
def test_removenode_status_with_ignore_dead_nodes(nodetool, scylla_only):
|
|
utils.check_nodetool_fails_with(
|
|
nodetool,
|
|
("removenode", "status", "--ignore-dead-nodes", "675ed9f4-6564-6dbd-can8-43fddce952gy"),
|
|
{"expected_requests": []},
|
|
["error processing arguments: cannot use --ignore-dead-nodes with status or force"])
|
|
|
|
|
|
def test_removenode_force_with_ignore_dead_nodes(nodetool, scylla_only):
|
|
utils.check_nodetool_fails_with(
|
|
nodetool,
|
|
("removenode", "force", "--ignore-dead-nodes", "675ed9f4-6564-6dbd-can8-43fddce952gy"),
|
|
{"expected_requests": []},
|
|
["error processing arguments: cannot use --ignore-dead-nodes with status or force"])
|