Fixed test logs metrics

This commit is contained in:
Ilyas Niyazov 2024-09-10 15:19:48 +03:00
parent 96d7488f6d
commit 3d49c2c6fa
2 changed files with 20 additions and 36 deletions

View file

@ -392,12 +392,12 @@ def session_start_time(configure_testlib):
return start_time
@allure.title("[Autouse/Session] After deploy healthcheck")
@pytest.fixture(scope="session", autouse=True)
@run_optionally(optionals.OPTIONAL_AUTOUSE_FIXTURES_ENABLED)
def after_deploy_healthcheck(cluster: Cluster):
with reporter.step("Wait for cluster readiness after deploy"):
parallel(readiness_on_node, cluster.cluster_nodes)
# @allure.title("[Autouse/Session] After deploy healthcheck")
# @pytest.fixture(scope="session", autouse=True)
# @run_optionally(optionals.OPTIONAL_AUTOUSE_FIXTURES_ENABLED)
# def after_deploy_healthcheck(cluster: Cluster):
# with reporter.step("Wait for cluster readiness after deploy"):
# parallel(readiness_on_node, cluster.cluster_nodes)
@wait_for_success(60 * SERVICE_ACTIVE_TIME * 3, 60, title="Wait for {cluster_node} readiness")

View file

@ -1,12 +1,11 @@
import random
import re
import time
from datetime import datetime, timezone
import allure
import pytest
from frostfs_testlib import reporter
from frostfs_testlib.steps.metrics import get_metrics_value
from frostfs_testlib.storage.cluster import Cluster, ClusterNode
from frostfs_testlib.storage.cluster import ClusterNode
from frostfs_testlib.storage.controllers.cluster_state_controller import ClusterStateController
from frostfs_testlib.storage.controllers.state_managers.config_state_manager import ConfigStateManager
from frostfs_testlib.storage.dataclasses.frostfs_services import StorageNode
@ -23,21 +22,19 @@ class TestLogsMetrics(ClusterTestBase):
def restart_storage_service(self, cluster_state_controller: ClusterStateController) -> datetime:
config_manager = cluster_state_controller.manager(ConfigStateManager)
config_manager.csc.stop_services_of_type(StorageNode)
restart_time = datetime.now(timezone.utc)
config_manager.csc.start_services_of_type(StorageNode)
return restart_time
@wait_for_success(interval=10)
def check_metrics_in_node(self, cluster_node: ClusterNode, restart_time: datetime, log_priority: str = None, **metrics_greps):
current_time = datetime.now(timezone.utc)
counter_metrics = get_metrics_value(cluster_node, **metrics_greps)
# counter_logs = self.get_count_logs_by_level(cluster_node, metrics_greps.get("level"), restart_time, current_time, log_priority)
counter_logs = self.get_logs_count_by_level(cluster_node, metrics_greps.get("level"), restart_time, current_time, log_priority)
if counter_metrics + counter_logs < 1000:
if (counter_metrics + counter_logs) < 1000:
assert (
counter_logs == counter_metrics
), f"counter_logs: {counter_logs}, counter_metrics: {counter_metrics} in node: {cluster_node}"
else:
# for big values check permissible deviation
assert self.are_numbers_similar(
counter_logs, counter_metrics
), f"counter_logs: {counter_logs}, counter_metrics: {counter_metrics} in node: {cluster_node}"
@ -65,28 +62,18 @@ class TestLogsMetrics(ClusterTestBase):
except Exception as e:
return e
# @staticmethod
# def get_count_logs_by_level(cluster_node: ClusterNode, log_level: str, after_time: datetime, until_time: datetime, log_priority: str):
# count_logs = 0
# try:
# logs = cluster_node.host.get_filtered_logs(
# log_level, unit="frostfs-storage", since=after_time, until=until_time, priority=log_priority
# )
# result = re.findall(rf"Z\s+{log_level}\s+", logs)
# count_logs += len(result)
# except RuntimeError as e:
# ...
# return count_logs
@allure.title("Metrics for the log counter")
def test_log_counter_metrics(self, cluster_state_controller: ClusterStateController, revert_all):
restart_time = self.restart_storage_service(cluster_state_controller)
with reporter.step("Select random node"):
node = random.choice(self.cluster.cluster_nodes)
def test_log_counter_metrics(self, cluster_state_controller: ClusterStateController, node_under_test: ClusterNode, revert_all):
with reporter.step("Restart frostfs-node for reset logs metrics"):
self.restart_storage_service(cluster_state_controller)
with reporter.step("wait until the number of logs in frostfs-storage stabilizes"):
restart_time = datetime.now(timezone.utc)
time.sleep(10)
with reporter.step(f"Check metrics count logs with level 'info'"):
self.check_metrics_in_node(
node,
node_under_test,
restart_time=restart_time,
log_priority="6..6",
command="frostfs_node_logger_entry_count",
@ -96,13 +83,10 @@ class TestLogsMetrics(ClusterTestBase):
with reporter.step(f"Check metrics count logs with level 'error'"):
self.check_metrics_in_node(
node,
node_under_test,
restart_time=restart_time,
log_priority="3..3",
# log_priority="3..3", TODO: add filter log_priority after https://j.yadro.com/browse/OBJECT-8581
command="frostfs_node_logger_entry_count",
level="error",
dropped="false",
)
with reporter.step(f"Check metrics count logs with level 'error'"):
self.check_metrics_in_node(node, restart_time, command="frostfs_node_logger_entry_count", level="error", dropped="false")