• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python
2# Copyright 2015 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import argparse
7import sys
8
9
10def _ExtractQueuedTestName(line):
11  _, test_name, _ = line.split(' ')
12  return test_name
13
14
15def _ExtractPassedTestName(line):
16  _, test_name, _, _ = line.split(' ')
17  return test_name
18
19
20def _IsQueued(line):
21  return line.endswith(' queued')
22
23
24def _IsPassed(line):
25  return 'passed' in line.split(' ')
26
27
28def _ProcessLogFile(file_path):
29  passed_unittests = []
30  queued_unittests = []
31  with open(file_path, 'r') as f:
32    for line in f:
33      line = line.strip()
34      if not line.startswith('['):
35        continue
36      if _IsQueued(line):
37        queued_unittests.append(_ExtractQueuedTestName(line))
38      elif _IsPassed(line):
39        passed_unittests.append(_ExtractPassedTestName(line))
40  queued_unittests.sort()
41  passed_unittests.sort()
42  return queued_unittests, passed_unittests
43
44
45def main(args):
46  parser = argparse.ArgumentParser(
47      description=('Process telemetry unittests log to print out passed '
48                   'or queued tests.'))
49  parser.add_argument(
50      'filepath', help='path to log file of telemetry unittest')
51  parser.add_argument(
52      '-p', '--list-passed-tests', action='store_true',
53      help='List all the passed telemetry unittests')
54  parser.add_argument(
55      '-q', '--list-queued-tests', action='store_true',
56      help='List all the queued telemetry unittests')
57  options = parser.parse_args(args)
58  queued_unittests, passed_unittests = _ProcessLogFile(options.filepath)
59  if options.list_passed_tests:
60    print 'All passed telemetry unittests:\n'
61    print '\n'.join(passed_unittests)
62  if options.list_queued_tests:
63    print 'All queued telemetry unittests:\n'
64    print '\n'.join(queued_unittests)
65  return 0
66
67
68if __name__ == '__main__':
69  sys.exit(main(sys.argv[1:]))
70