You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-10 01:22:48 +03:00
43 lines
1.9 KiB
Python
43 lines
1.9 KiB
Python
from integration_tests.ssh import ClusterConfig
|
|
from integration_tests.utils import assert_dict_includes, drop_timestamp
|
|
|
|
|
|
class TestRemoveNode:
|
|
def test_remove_node(self, cluster_config: ClusterConfig, complete_cluster):
|
|
"""Test removing hosts from the cluster"""
|
|
# Remove replicas
|
|
remove_cmd = "cluster node remove "
|
|
for replica in cluster_config.replicas:
|
|
remove_cmd += f"--node {replica.private_ip} "
|
|
remove_out = cluster_config.primary.exec_mcs(remove_cmd)
|
|
assert len(remove_out) == len(cluster_config.replicas)
|
|
removed_node_ids = {node["node_id"] for node in remove_out}
|
|
expected_node_ids = {str(replica.private_ip) for replica in cluster_config.replicas}
|
|
assert removed_node_ids == expected_node_ids
|
|
|
|
status_out = cluster_config.primary.exec_mcs("cluster status")
|
|
assert status_out["num_nodes"] == 1
|
|
assert str(cluster_config.primary.private_ip) in status_out
|
|
|
|
primary_status = drop_timestamp(status_out[str(cluster_config.primary.private_ip)])
|
|
assert_dict_includes(
|
|
primary_status,
|
|
{
|
|
"dbrm_mode": "master",
|
|
"cluster_mode": "readwrite",
|
|
"dbroots": ['1', '2', '3'], # All the dbroots are rebalanced to the last host
|
|
"module_id": 1,
|
|
},
|
|
)
|
|
|
|
# Remove primary node
|
|
print(f"Removing primary node ({cluster_config.primary}) from the cluster")
|
|
remove_out = cluster_config.primary.exec_mcs(f"cluster node remove --node {cluster_config.primary.private_ip}")
|
|
assert len(remove_out) == 1
|
|
assert remove_out[0]["node_id"] == str(cluster_config.primary.private_ip)
|
|
|
|
status_out = cluster_config.primary.exec_mcs("cluster status")
|
|
print(status_out)
|
|
assert status_out["num_nodes"] == 0
|
|
assert str(cluster_config.primary.private_ip) not in status_out
|