OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 import logging | 4 import logging |
5 import os | 5 import os |
6 import sys | |
7 | 6 |
8 from telemetry.unittest_util import gtest_progress_reporter | |
9 from telemetry.unittest_util import run_tests | 7 from telemetry.unittest_util import run_tests |
10 from telemetry.core import util | 8 from telemetry.core import util |
11 | 9 |
12 | 10 |
13 def RunTestsForChromeOS(browser_type, unit_tests, perf_tests): | 11 def RunTestsForChromeOS(browser_type, unit_tests, perf_tests): |
14 stream = _LoggingOutputStream() | 12 stream = _LoggingOutputStream() |
15 error_string = '' | 13 error_string = '' |
16 | 14 |
17 logging.info('Running telemetry unit tests with browser_type "%s".' % | 15 if unit_tests: |
18 browser_type) | 16 logging.info('Running telemetry unit tests with browser_type "%s".' % |
19 ret = _RunOneSetOfTests(browser_type, 'telemetry', | 17 browser_type) |
20 os.path.join('telemetry', 'telemetry'), | 18 ret = _RunOneSetOfTests(browser_type, 'telemetry', unit_tests, stream) |
21 unit_tests, stream) | 19 if ret: |
22 if ret: | 20 error_string += 'The unit tests failed.\n' |
23 error_string += 'The unit tests failed.\n' | |
24 | 21 |
25 logging.info('Running telemetry perf tests with browser_type "%s".' % | 22 if perf_tests: |
26 browser_type) | 23 logging.info('Running telemetry perf tests with browser_type "%s".' % |
27 ret = _RunOneSetOfTests(browser_type, 'perf', 'perf', perf_tests, stream) | 24 browser_type) |
28 if ret: | 25 ret = _RunOneSetOfTests(browser_type, 'perf', perf_tests, stream) |
29 error_string = 'The perf tests failed.\n' | 26 if ret: |
| 27 error_string = 'The perf tests failed.\n' |
30 | 28 |
31 return error_string | 29 return error_string |
32 | 30 |
33 | 31 |
34 def _RunOneSetOfTests(browser_type, root_dir, sub_dir, tests, stream): | 32 def _RunOneSetOfTests(browser_type, dir_name, tests, stream): |
35 if not tests: | 33 top_level_dir = os.path.join(util.GetChromiumSrcDir(), 'tools', dir_name) |
36 return | 34 args = ['--browser', browser_type, |
37 top_level_dir = os.path.join(util.GetChromiumSrcDir(), 'tools', root_dir) | 35 '--top-level-dir', top_level_dir, |
38 sub_dir = os.path.join(util.GetChromiumSrcDir(), 'tools', sub_dir) | 36 '--jobs', '1'] + tests |
39 | 37 return run_tests.RunTestsCommand.main(args, stream=stream) |
40 sys.path.append(top_level_dir) | |
41 | |
42 output_formatters = [gtest_progress_reporter.GTestProgressReporter(stream)] | |
43 run_tests.config = run_tests.Config(top_level_dir, [sub_dir], | |
44 output_formatters) | |
45 return run_tests.RunTestsCommand.main(['--browser', browser_type] + tests) | |
46 | 38 |
47 | 39 |
48 class _LoggingOutputStream(object): | 40 class _LoggingOutputStream(object): |
49 | 41 |
50 def __init__(self): | 42 def __init__(self): |
51 self._buffer = [] | 43 self._buffer = [] |
52 | 44 |
53 def write(self, s): | 45 def write(self, s): |
54 """Buffer a string write. Log it when we encounter a newline.""" | 46 """Buffer a string write. Log it when we encounter a newline.""" |
55 if '\n' in s: | 47 if '\n' in s: |
56 segments = s.split('\n') | 48 segments = s.split('\n') |
57 segments[0] = ''.join(self._buffer + [segments[0]]) | 49 segments[0] = ''.join(self._buffer + [segments[0]]) |
58 log_level = logging.getLogger().getEffectiveLevel() | 50 log_level = logging.getLogger().getEffectiveLevel() |
59 try: # TODO(dtu): We need this because of crbug.com/394571 | 51 try: # TODO(dtu): We need this because of crbug.com/394571 |
60 logging.getLogger().setLevel(logging.INFO) | 52 logging.getLogger().setLevel(logging.INFO) |
61 for line in segments[:-1]: | 53 for line in segments[:-1]: |
62 logging.info(line) | 54 logging.info(line) |
63 finally: | 55 finally: |
64 logging.getLogger().setLevel(log_level) | 56 logging.getLogger().setLevel(log_level) |
65 self._buffer = [segments[-1]] | 57 self._buffer = [segments[-1]] |
66 else: | 58 else: |
67 self._buffer.append(s) | 59 self._buffer.append(s) |
68 | 60 |
69 def flush(self): # pylint: disable=W0612 | 61 def flush(self): # pylint: disable=W0612 |
70 pass | 62 pass |
OLD | NEW |