| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #!/usr/bin/env python
- # Copyright 2015 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- import argparse
- import sys
- def _ExtractQueuedTestName(line):
- _, test_name, _ = line.split(' ')
- return test_name
- def _ExtractPassedTestNameAndTime(line):
- _, test_name, _, test_time_string = line.split(' ')
- if test_time_string.endswith(':'):
- test_time = float(test_time_string[:-2])
- else:
- test_time = float(test_time_string[:-1])
- return test_name, test_time
- def _IsQueued(line):
- return line.endswith(' queued')
- def _IsPassed(line):
- return 'passed' in line.split(' ')
- def _ProcessLogFile(file_path):
- passed_unittests = []
- queued_unittests = []
- with open(file_path, 'r') as f:
- for line in f:
- line = line.strip()
- if not line.startswith('['):
- continue
- if _IsQueued(line):
- queued_unittests.append(_ExtractQueuedTestName(line))
- elif _IsPassed(line):
- passed_unittests.append(_ExtractPassedTestNameAndTime(line))
- queued_unittests.sort()
- passed_unittests.sort(key=lambda v: -v[1])
- return queued_unittests, passed_unittests
- def main(args):
- parser = argparse.ArgumentParser(
- description=('Process telemetry unittests log to print out passed '
- 'or queued tests.'))
- parser.add_argument(
- 'filepath', help='path to log file of telemetry unittest')
- parser.add_argument(
- '-q', '--list-queued-tests', action='store_true',
- help='Also list all the queued telemetry unittests')
- options = parser.parse_args(args)
- queued_unittests, passed_unittests = _ProcessLogFile(options.filepath)
- print 'All passed telemetry unittests:\n'
- for test, time in passed_unittests:
- print test, time
- if options.list_queued_tests:
- print 'All queued telemetry unittests:\n'
- print '\n'.join(queued_unittests)
- return 0
- if __name__ == '__main__':
- sys.exit(main(sys.argv[1:]))
|