Move cursor to corner and fix safari window size before running benchmark
[WebKit-https.git] / Tools / Scripts / dump-webkit-tests-run
1 #!/usr/bin/python
2 import json
3 import optparse
4 import os
5 import sys
6
7
8 def main(argv):
9     parser = optparse.OptionParser(usage='%prog worker_number [path-to-stats.json]')
10     _, args = parser.parse_args(argv)
11
12     worker_number = int(args.pop(0))
13     if args:
14         if os.path.exists(args[0]):
15             with open(args[0], 'r') as fp:
16                 trie = json.load(fp)
17         else:
18             print >> sys.stderr, "file not found: %s" % args[0]
19             sys.exit(1)
20     else:
21         trie = json.load(sys.stdin)
22
23     results = convert_trie_to_flat_paths(trie)
24     tests_run = []
25     for (test, result) in results.iteritems():
26         # Each result is a dict containing
27         # { 'results': [worker #, test # in worker, driver pid,
28         #   test time in msecs, test + compare time in msecs]}
29         if result['results'][0] == worker_number:
30             tests_run.append((test, result['results'][1]))
31
32     print "\n".join(t[0] for t in sorted(tests_run, key=lambda t: t[1]))
33
34
35 def convert_trie_to_flat_paths(trie, prefix=None):
36     # Cloned from webkitpy.layout_tests.layout_package.json_results_generator
37     # so that this code can stand alone.
38     result = {}
39     for name, data in trie.iteritems():
40         if prefix:
41             name = prefix + "/" + name
42
43         if len(data) and not "results" in data:
44             result.update(convert_trie_to_flat_paths(data, name))
45         else:
46             result[name] = data
47
48     return result
49
50
51 if __name__ ==  '__main__':
52     main(sys.argv[1:])