From 2cd4869c7c6d20959cd45ee39ba81a5ce3cec620 Mon Sep 17 00:00:00 2001 From: Asias He Date: Thu, 24 Oct 2024 10:32:42 +0800 Subject: [PATCH] test: Add test_node_ops_metrics.py It tests the node_ops_metrics_done metric reaches 100% when a node ops is done. Refs: #21174 (cherry picked from commit 9868ccbac02099f74b6b16f9ea811faf46e562ee) --- test/topology_custom/test_node_ops_metrics.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 test/topology_custom/test_node_ops_metrics.py diff --git a/test/topology_custom/test_node_ops_metrics.py b/test/topology_custom/test_node_ops_metrics.py new file mode 100644 index 0000000000..5c922372ac --- /dev/null +++ b/test/topology_custom/test_node_ops_metrics.py @@ -0,0 +1,35 @@ +# +# Copyright (C) 2024-present ScyllaDB +# +# SPDX-License-Identifier: AGPL-3.0-or-later +# +import asyncio +import pytest +import logging + +logger = logging.getLogger(__name__) + +@pytest.mark.asyncio +async def test_bootstrap_removenode_metrics(manager): + cfg = {'enable_repair_based_node_ops': True} + servers = [await manager.server_add(config=cfg), + await manager.server_add(config=cfg), + await manager.server_add(config=cfg)] + await manager.server_stop_gracefully(servers[2].server_id) + await manager.remove_node(servers[0].server_id, servers[2].server_id) + + def check_ops(metrics, ops): + metric_name = "scylla_node_ops_finished_percentage" + shard = 0 + while True: + cnt = metrics.get(name=metric_name, labels={'ops': ops}, shard=str(shard)) + if cnt == None: + break + logger.info(f"Checking {shard=} {cnt=}") + assert int(cnt) == 1 + shard = shard + 1 + + for s in servers[:2]: + metrics = await manager.metrics.query(s.ip_addr) + check_ops(metrics, 'bootstrap') + check_ops(metrics, 'removenode')