Files
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

83 lines
2.5 KiB
Python
Executable File

#!/usr/bin/env python
"""
Summarize the information in the given coverage files.
Emits the number of rules covered or the percentage of rules covered depending
on whether --num-rules has been used to specify the total number of rules.
"""
from __future__ import print_function
import argparse
import struct
class FileFormatError(Exception):
pass
def backend_int_pair(s):
backend, sep, value = s.partition("=")
if sep is None:
raise argparse.ArgumentTypeError("'=' missing, expected name=value")
if not backend:
raise argparse.ArgumentTypeError("Expected name=value")
if not value:
raise argparse.ArgumentTypeError("Expected name=value")
return backend, int(value)
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("input", nargs="+")
parser.add_argument(
"--num-rules",
type=backend_int_pair,
action="append",
metavar="BACKEND=NUM",
help="Specify the number of rules for a backend",
)
args = parser.parse_args()
covered_rules = {}
for input_filename in args.input:
with open(input_filename, "rb") as input_fh:
data = input_fh.read()
pos = 0
while data:
backend, _, data = data.partition("\0")
pos += len(backend)
pos += 1
if len(backend) == 0:
raise FileFormatError()
(backend,) = struct.unpack("%ds" % len(backend), backend)
while data:
if len(data) < 8:
raise FileFormatError()
(rule_id,) = struct.unpack("Q", data[:8])
pos += 8
data = data[8:]
if rule_id == (2**64) - 1:
break
covered_rules[backend] = covered_rules.get(backend, {})
covered_rules[backend][rule_id] = (
covered_rules[backend].get(rule_id, 0) + 1
)
num_rules = dict(args.num_rules)
for backend, rules_for_backend in covered_rules.items():
if backend in num_rules:
print(
"%s: %3.2f%% of rules covered"
% (backend, float(len(rules_for_backend)) / num_rules[backend])
* 100
)
else:
print("%s: %d rules covered" % (backend, len(rules_for_backend)))
if __name__ == "__main__":
main()