mirror of https://github.com/mongodb/mongo
48 lines
1.8 KiB
Python
48 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
"""Make SCons metrics cedar report."""
|
|
import json
|
|
import os.path
|
|
import sys
|
|
|
|
import click
|
|
|
|
from buildscripts.scons_metrics.metrics import SconsMetrics
|
|
|
|
SCONS_STDOUT_LOG = "scons_stdout.log"
|
|
SCONS_CACHE_DEBUG_LOG = "scons_cache.log"
|
|
CEDAR_REPORT_FILE = "scons_cedar_report.json"
|
|
|
|
|
|
@click.command()
|
|
@click.option("--scons-stdout-log-file", default=SCONS_STDOUT_LOG, type=str,
|
|
help="Path to the file with SCons stdout logs.")
|
|
@click.option("--scons-cache-debug-log-file", default=SCONS_CACHE_DEBUG_LOG, type=str,
|
|
help="Path to the file with SCons stdout logs.")
|
|
@click.option("--cedar-report-file", default=CEDAR_REPORT_FILE, type=str,
|
|
help="Path to cedar report json file.")
|
|
def main(scons_stdout_log_file: str, scons_cache_debug_log_file: str,
|
|
cedar_report_file: str) -> None:
|
|
"""Read SCons stdout log file and write cedar report json file."""
|
|
scons_stdout_log_file = os.path.abspath(scons_stdout_log_file)
|
|
scons_cache_debug_log_file = os.path.abspath(scons_cache_debug_log_file)
|
|
cedar_report_file = os.path.abspath(cedar_report_file)
|
|
|
|
if not os.path.exists(scons_stdout_log_file):
|
|
print(f"Could not find SCons stdout log file '{scons_stdout_log_file}'.")
|
|
sys.exit(1)
|
|
|
|
scons_metrics = SconsMetrics(scons_stdout_log_file, scons_cache_debug_log_file)
|
|
if not scons_metrics.raw_report:
|
|
print(
|
|
f"Could not find raw metrics data in SCons stdout log file '{scons_stdout_log_file}'.")
|
|
sys.exit(1)
|
|
|
|
cedar_report = scons_metrics.make_cedar_report()
|
|
with open(cedar_report_file, "w") as fh:
|
|
json.dump(cedar_report, fh)
|
|
print(f"Done dumping cedar report json to file '{cedar_report_file}'.")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main() # pylint: disable=no-value-for-parameter
|