Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(169)

Side by Side Diff: build/android/pylib/utils/report_results.py

Issue 22933005: [android] Make build_type a singleton. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2013 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 4
5 """Module containing utility functions for reporting results.""" 5 """Module containing utility functions for reporting results."""
6 6
7 import logging 7 import logging
8 import os 8 import os
9 import re 9 import re
10 10
11 from pylib import constants 11 from pylib import constants
12 12
13 import flakiness_dashboard_results_uploader 13 import flakiness_dashboard_results_uploader
14 14
15 15
16 def _LogToFile(results, test_type, suite_name, build_type): 16 def _LogToFile(results, test_type, suite_name):
17 """Log results to local files which can be used for aggregation later.""" 17 """Log results to local files which can be used for aggregation later."""
18 log_file_path = os.path.join(constants.DIR_SOURCE_ROOT, 'out', 18 log_file_path = os.path.join(constants.DIR_SOURCE_ROOT, 'out',
19 build_type, 'test_logs') 19 constants.GetBuildType(), 'test_logs')
20 if not os.path.exists(log_file_path): 20 if not os.path.exists(log_file_path):
21 os.mkdir(log_file_path) 21 os.mkdir(log_file_path)
22 full_file_name = os.path.join( 22 full_file_name = os.path.join(
23 log_file_path, re.sub('\W', '_', test_type).lower() + '.log') 23 log_file_path, re.sub('\W', '_', test_type).lower() + '.log')
24 if not os.path.exists(full_file_name): 24 if not os.path.exists(full_file_name):
25 with open(full_file_name, 'w') as log_file: 25 with open(full_file_name, 'w') as log_file:
26 print >> log_file, '\n%s results for %s build %s:' % ( 26 print >> log_file, '\n%s results for %s build %s:' % (
27 test_type, os.environ.get('BUILDBOT_BUILDERNAME'), 27 test_type, os.environ.get('BUILDBOT_BUILDERNAME'),
28 os.environ.get('BUILDBOT_BUILDNUMBER')) 28 os.environ.get('BUILDBOT_BUILDNUMBER'))
29 logging.info('Writing results to %s.' % full_file_name) 29 logging.info('Writing results to %s.' % full_file_name)
(...skipping 27 matching lines...) Expand all
57 else: 57 else:
58 dashboard_test_type = 'Chromium_Android_Instrumentation' 58 dashboard_test_type = 'Chromium_Android_Instrumentation'
59 59
60 flakiness_dashboard_results_uploader.Upload( 60 flakiness_dashboard_results_uploader.Upload(
61 results, flakiness_server, dashboard_test_type) 61 results, flakiness_server, dashboard_test_type)
62 except Exception as e: 62 except Exception as e:
63 logging.error(e) 63 logging.error(e)
64 64
65 65
66 def LogFull(results, test_type, test_package, annotation=None, 66 def LogFull(results, test_type, test_package, annotation=None,
67 build_type='Debug', flakiness_server=None): 67 flakiness_server=None):
68 """Log the tests results for the test suite. 68 """Log the tests results for the test suite.
69 69
70 The results will be logged three different ways: 70 The results will be logged three different ways:
71 1. Log to stdout. 71 1. Log to stdout.
72 2. Log to local files for aggregating multiple test steps 72 2. Log to local files for aggregating multiple test steps
73 (on buildbots only). 73 (on buildbots only).
74 3. Log to flakiness dashboard (on buildbots only). 74 3. Log to flakiness dashboard (on buildbots only).
75 75
76 Args: 76 Args:
77 results: An instance of TestRunResults object. 77 results: An instance of TestRunResults object.
78 test_type: Type of the test (e.g. 'Instrumentation', 'Unit test', etc.). 78 test_type: Type of the test (e.g. 'Instrumentation', 'Unit test', etc.).
79 test_package: Test package name (e.g. 'ipc_tests' for gtests, 79 test_package: Test package name (e.g. 'ipc_tests' for gtests,
80 'ContentShellTest' for instrumentation tests) 80 'ContentShellTest' for instrumentation tests)
81 annotation: If instrumenation test type, this is a list of annotations 81 annotation: If instrumenation test type, this is a list of annotations
82 (e.g. ['Smoke', 'SmallTest']). 82 (e.g. ['Smoke', 'SmallTest']).
83 build_type: Release/Debug
84 flakiness_server: If provider, upload the results to flakiness dashboard 83 flakiness_server: If provider, upload the results to flakiness dashboard
85 with this URL. 84 with this URL.
86 """ 85 """
87 if not results.DidRunPass(): 86 if not results.DidRunPass():
88 logging.critical('*' * 80) 87 logging.critical('*' * 80)
89 logging.critical('Detailed Logs') 88 logging.critical('Detailed Logs')
90 logging.critical('*' * 80) 89 logging.critical('*' * 80)
91 for line in results.GetLogs().splitlines(): 90 for line in results.GetLogs().splitlines():
92 logging.critical(line) 91 logging.critical(line)
93 logging.critical('*' * 80) 92 logging.critical('*' * 80)
94 logging.critical('Summary') 93 logging.critical('Summary')
95 logging.critical('*' * 80) 94 logging.critical('*' * 80)
96 for line in results.GetLongForm().splitlines(): 95 for line in results.GetLongForm().splitlines():
97 logging.critical(line) 96 logging.critical(line)
98 logging.critical('*' * 80) 97 logging.critical('*' * 80)
99 98
100 if os.environ.get('BUILDBOT_BUILDERNAME'): 99 if os.environ.get('BUILDBOT_BUILDERNAME'):
101 # It is possible to have multiple buildbot steps for the same 100 # It is possible to have multiple buildbot steps for the same
102 # instrumenation test package using different annotations. 101 # instrumenation test package using different annotations.
103 if annotation and len(annotation) == 1: 102 if annotation and len(annotation) == 1:
104 suite_name = annotation[0] 103 suite_name = annotation[0]
105 else: 104 else:
106 suite_name = test_package 105 suite_name = test_package
107 _LogToFile(results, test_type, suite_name, build_type) 106 _LogToFile(results, test_type, suite_name, constants.GetBuildType())
108 107
109 if flakiness_server: 108 if flakiness_server:
110 _LogToFlakinessDashboard(results, test_type, test_package, 109 _LogToFlakinessDashboard(results, test_type, test_package,
111 flakiness_server) 110 flakiness_server)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698