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