1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #!/usr/bin/python
- import json
- import optparse
- import os
- import sys
- def main(argv):
- parser = optparse.OptionParser(usage='%prog worker_number [path-to-stats.json]')
- _, args = parser.parse_args(argv)
- worker_number = int(args.pop(0))
- if args:
- if os.path.exists(args[0]):
- with open(args[0], 'r') as fp:
- trie = json.load(fp)
- else:
- print >> sys.stderr, "file not found: %s" % args[0]
- sys.exit(1)
- else:
- trie = json.load(sys.stdin)
- results = convert_trie_to_flat_paths(trie)
- tests_run = []
- for (test, result) in results.iteritems():
- # Each result is a dict containing
- # { 'results': [worker #, test # in worker, driver pid,
- # test time in msecs, test + compare time in msecs]}
- if result['results'][0] == worker_number:
- tests_run.append((test, result['results'][1]))
- print "\n".join(t[0] for t in sorted(tests_run, key=lambda t: t[1]))
- def convert_trie_to_flat_paths(trie, prefix=None):
- # Cloned from webkitpy.layout_tests.layout_package.json_results_generator
- # so that this code can stand alone.
- result = {}
- for name, data in trie.iteritems():
- if prefix:
- name = prefix + "/" + name
- if len(data) and not "results" in data:
- result.update(convert_trie_to_flat_paths(data, name))
- else:
- result[name] = data
- return result
- if __name__ == '__main__':
- main(sys.argv[1:])
|