0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-11-24 00:17:37 +01:00
mongodb/buildscripts/aggregate_tracefiles.py
Juan Gu 855dfadef0 SERVER-94077 Use isort in Ruff configs (#27865)
GitOrigin-RevId: e793d662774ccd3ab6c3f356c2287cf1f7ff9805
2024-10-10 19:33:49 +00:00

63 lines
1.4 KiB
Python

"""Aggregate_tracefiles module.
This script aggregates several tracefiles into one tracefile.
All but the last argument are input tracefiles or .txt files which list tracefiles.
The last argument is the tracefile to which the output will be written.
"""
import os
import subprocess
import sys
from optparse import OptionParser
def aggregate(inputs, output):
"""Aggregate the tracefiles given in inputs to a tracefile given by output."""
args = ["lcov"]
for name in inputs:
args += ["-a", name]
args += ["-o", output]
print(" ".join(args))
return subprocess.call(args)
def getfilesize(path):
"""Return file size of 'path'."""
if not os.path.isfile(path):
return 0
return os.path.getsize(path)
def main():
"""Execute Main entry."""
inputs = []
usage = "usage: %prog input1.info input2.info ... output.info"
parser = OptionParser(usage=usage)
(_, args) = parser.parse_args()
if len(args) < 2:
return "must supply input files"
for path in args[:-1]:
_, ext = os.path.splitext(path)
if ext == ".info":
if getfilesize(path) > 0:
inputs.append(path)
elif ext == ".txt":
inputs += [line.strip() for line in open(path) if getfilesize(line.strip()) > 0]
else:
return "unrecognized file type"
return aggregate(inputs, args[-1])
if __name__ == "__main__":
sys.exit(main())