blob: 29759ba36d9af546c6a972b41b32f428b1861ebc [file] [log] [blame]
#!/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 _ExtractSkippedTestName(line):
return line.split(' ')[1]
def _IsQueued(line):
return line.endswith(' queued')
def _IsPassed(line):
return 'passed' in line.split(' ')
def _IsSkipped(line):
return ' was skipped ' in line.strip()
def _ProcessLogFile(file_path):
passed_unittests = []
queued_unittests = []
skipped_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))
elif _IsSkipped(line):
skipped_unittests.append(_ExtractSkippedTestName(line))
queued_unittests.sort()
passed_unittests.sort(key=lambda v: -v[1])
skipped_unittests.sort()
return queued_unittests, passed_unittests, skipped_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')
options = parser.parse_args(args)
queued_unittests, passed_unittests, skipped_unittests = (
_ProcessLogFile(options.filepath))
print '********** All passed telemetry unittests:\n'
for test, time in passed_unittests:
print test, time
print
print '******** All skipped telemetry unittests:\n'
print '\n'.join(skipped_unittests)
unfinished_tests = []
passed_unittests_names = [t[0] for t in passed_unittests]
for t in queued_unittests:
if t not in skipped_unittests and t not in passed_unittests_names:
unfinished_tests.append(t)
print
print '******* Unfinished telemetry unittests:\n'
print '\n'.join(unfinished_tests)
return 0
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))