Find critical pattern in system logs
Signed-off-by: Vladimir Avdeev <v.avdeev@yadro.com>
This commit is contained in:
parent
2b08a932ac
commit
2159982dbd
1 changed files with 19 additions and 0 deletions
|
@ -1,5 +1,6 @@
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
@ -110,6 +111,24 @@ def collect_logs(prepare_tmp_dir, hosting: Hosting):
|
||||||
logs_zip_file_path = shutil.make_archive(logs_dir, "zip", logs_dir)
|
logs_zip_file_path = shutil.make_archive(logs_dir, "zip", logs_dir)
|
||||||
allure.attach.file(logs_zip_file_path, name="logs.zip", extension="zip")
|
allure.attach.file(logs_zip_file_path, name="logs.zip", extension="zip")
|
||||||
|
|
||||||
|
problem_pattern = r"\Wpanic\W|\Woom\W"
|
||||||
|
|
||||||
|
log_file_paths = []
|
||||||
|
for directory_path, _, file_names in os.walk(logs_dir):
|
||||||
|
log_file_paths += [
|
||||||
|
os.path.join(directory_path, file_name)
|
||||||
|
for file_name in file_names
|
||||||
|
if re.match(r"\.(txt|log)", os.path.splitext(file_name)[-1], flags=re.IGNORECASE)
|
||||||
|
]
|
||||||
|
|
||||||
|
logs_with_problem = []
|
||||||
|
for file_path in log_file_paths:
|
||||||
|
with open(file_path, "r") as log_file:
|
||||||
|
if re.search(problem_pattern, log_file.read(), flags=re.IGNORECASE):
|
||||||
|
logs_with_problem.append(file_path)
|
||||||
|
if logs_with_problem:
|
||||||
|
raise RuntimeError(f"System logs {', '.join(logs_with_problem)} contain critical errors")
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="session", autouse=True)
|
@pytest.fixture(scope="session", autouse=True)
|
||||||
@allure.title("Run health check for all storage nodes")
|
@allure.title("Run health check for all storage nodes")
|
||||||
|
|
Loading…
Reference in a new issue