Skip to content
Snippets Groups Projects
Commit 6e31f69e authored by Pierre-Yves David's avatar Pierre-Yves David :octopus:
Browse files

result-compare: have a first version that does things

This is basic but a good step toward usefulness.
parent 7282d1b8
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python3
#
# compare many result together, use it with `result-search --content-as-json`
import argparse
import collections
import json
import os
import sys
poulpe_root = os.path.dirname(os.path.dirname(sys.argv[0]))
sys.path.insert(0, os.path.join(poulpe_root, 'python-libs'))
import poulpe
HEADERS_KEYS = [
('data-env-vars', 'name'),
('benchmark', 'name'),
('bin-env-vars', 'hg', 'flavor'),
]
def key_result(result):
headers = []
for key in HEADERS_KEYS:
treck = list(key[::-1])
current = result
while treck and current is not None:
k = treck.pop()
current = current.get(k)
if current is not None:
headers.append((".".join(key), current))
return tuple(headers)
def _rank(result):
return result['bin-env-vars']['hg']['changeset']['rank']
def dispatch_results(results):
dispatched = collections.defaultdict(list)
for r in results:
headers = key_result(r)
dispatched[headers].append(r)
for some_results in dispatched.values():
some_results.sort(key=_rank)
return dispatched
def display_results(results):
for headers, some_results in results.items():
key_size = max(len(k) for k, v in headers)
prefix = "###"
for k, v in headers:
k = k.ljust(key_size)
print(f'{prefix} {k} = {v}')
prefix = " #"
# display the result now
for r in some_results:
key = r['bin-env-vars']['hg']['changeset']['node'][:12]
median = r['result']['time']['median']
print(f"{key}: {median:6.6f}")
def _parsers():
cmd_parser = argparse.ArgumentParser(prog='result-search')
return cmd_parser
def main(args):
parser = _parsers()
param = parser.parse_args(args)
all_results = json.load(sys.stdin)
results = dispatch_results(all_results)
display_results(results)
return 0
if __name__ == "__main__":
ret = main(sys.argv[1:])
assert ret is not None
sys.exit(ret)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment