-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
63 lines (50 loc) · 2.65 KB
/
main.py
File metadata and controls
63 lines (50 loc) · 2.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env python3
"""
Основной модуль для бенчмаркинга облачных PostgreSQL
Этот модуль служит точкой входа для инструмента бенчмаркинга
облачных сервисов PostgreSQL.
"""
import logging
import sys
import os
from config import cloud_configs, benchmark_config
from preparation import verify_prerequisites
from execution import execute_benchmarks
from incremental_reporting import (
find_latest_results_file,
load_results
)
logger = logging.getLogger('pg_benchmark')
def main():
"""Основная функция выполнения."""
logger.info("Запуск бенчмаркинга облачных PostgreSQL")
try:
# Проверка предварительных требований
pgbench_version = verify_prerequisites()
logger.info(f"Используется {pgbench_version}")
# Выполнение бенчмарков
results = execute_benchmarks(cloud_configs, benchmark_config)
if not results:
logger.error("Не получено результатов бенчмаркинга")
return
# Получение имени файла результатов
results_file = find_latest_results_file()
if not results_file:
# Если файл не найден, сохраняем результаты в стандартный файл
logger.warning("Файл результатов не найден, будет создан новый")
results_file = "pg_benchmark_results.json" # Hardcoding a default value
else:
# Загружаем все сохраненные результаты из файла
all_results_saved = load_results(results_file)
# Используем загруженные результаты для отчета вместо только текущих результатов
results = all_results_saved
logger.info(f"Бенчмаркинг успешно завершен")
logger.info(f"Результаты сохранены в {results_file}")
print(f"\nБенчмаркинг успешно завершен!")
print(f"Результаты сохранены в {results_file}")
print(f"Используйте Jupyter Lab для анализа результатов")
except Exception as e:
logger.error(f"Ошибка бенчмаркинга: {e}", exc_info=True)
print(f"Ошибка бенчмаркинга: {e}")
if __name__ == "__main__":
main()