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

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

Issue 341143002: Port the json_results_generator code over from Blink. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more linting Created 6 years, 6 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
« no previous file with comments | « no previous file | build/android/pylib/utils/json_results_generator.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 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 """Uploads the results to the flakiness dashboard server.""" 5 """Uploads the results to the flakiness dashboard server."""
6 # pylint: disable=E1002,R0201 6 # pylint: disable=E1002,R0201
7 7
8 import logging 8 import logging
9 import os 9 import os
10 import shutil 10 import shutil
11 import sys
12 import tempfile 11 import tempfile
13 import xml 12 import xml
14 13
15 14
16 # Include path when ran from a Chromium checkout.
17 sys.path.append(
18 os.path.abspath(os.path.join(os.path.dirname(__file__),
19 os.pardir, os.pardir, os.pardir, os.pardir,
20 'third_party', 'WebKit', 'Tools', 'Scripts')))
21
22 # Include path when ran from a WebKit checkout.
23 sys.path.append(
24 os.path.abspath(os.path.join(os.path.dirname(__file__),
25 os.pardir, os.pardir, os.pardir, os.pardir,
26 os.pardir, os.pardir, os.pardir,
27 'Tools', 'Scripts')))
28
29 # pylint: disable=F0401
30 from webkitpy.common.system import executive, filesystem
31 from webkitpy.layout_tests.layout_package import json_results_generator
32 # pylint: enable=F0401
33
34 #TODO(craigdh): pylib/utils/ should not depend on pylib/. 15 #TODO(craigdh): pylib/utils/ should not depend on pylib/.
35 from pylib import cmd_helper 16 from pylib import cmd_helper
36 from pylib import constants 17 from pylib import constants
18 from pylib.utils import json_results_generator
37 from pylib.utils import repo_utils 19 from pylib.utils import repo_utils
38 20
39 21
40 # The JSONResultsGenerator gets the filesystem.join operation from the Port
41 # object. Creating a Port object requires specifying information that only
42 # makes sense for running WebKit layout tests, so we provide a dummy object
43 # that contains the fields required by the generator.
44 class PortDummy(object):
45 def __init__(self):
46 self._executive = executive.Executive()
47 self._filesystem = filesystem.FileSystem()
48
49 22
50 class JSONResultsGenerator(json_results_generator.JSONResultsGeneratorBase): 23 class JSONResultsGenerator(json_results_generator.JSONResultsGeneratorBase):
51 """Writes test results to a JSON file and handles uploading that file to 24 """Writes test results to a JSON file and handles uploading that file to
52 the test results server. 25 the test results server.
53 """ 26 """
54 def __init__(self, port, builder_name, build_name, build_number, tmp_folder, 27 def __init__(self, builder_name, build_name, build_number, tmp_folder,
55 test_results_map, test_results_server, test_type, master_name): 28 test_results_map, test_results_server, test_type, master_name):
56 super(JSONResultsGenerator, self).__init__( 29 super(JSONResultsGenerator, self).__init__(
57 port=port,
58 builder_name=builder_name, 30 builder_name=builder_name,
59 build_name=build_name, 31 build_name=build_name,
60 build_number=build_number, 32 build_number=build_number,
61 results_file_base_path=tmp_folder, 33 results_file_base_path=tmp_folder,
62 builder_base_url=None, 34 builder_base_url=None,
63 test_results_map=test_results_map, 35 test_results_map=test_results_map,
64 svn_repositories=(('webkit', 'third_party/WebKit'), 36 svn_repositories=(('webkit', 'third_party/WebKit'),
65 ('chrome', '.')), 37 ('chrome', '.')),
66 test_results_server=test_results_server, 38 test_results_server=test_results_server,
67 test_type=test_type, 39 test_type=test_type,
68 master_name=master_name) 40 master_name=master_name)
69 41
70 #override 42 #override
71 def _get_modifier_char(self, test_name): 43 def _GetModifierChar(self, test_name):
72 if test_name not in self._test_results_map: 44 if test_name not in self._test_results_map:
73 return self.__class__.NO_DATA_RESULT 45 return self.__class__.NO_DATA_RESULT
74 46
75 return self._test_results_map[test_name].modifier 47 return self._test_results_map[test_name].modifier
76 48
77 #override 49 #override
78 def _get_svn_revision(self, in_directory): 50 def _GetSVNRevision(self, in_directory):
79 """Returns the git/svn revision for the given directory. 51 """Returns the git/svn revision for the given directory.
80 52
81 Args: 53 Args:
82 in_directory: The directory relative to src. 54 in_directory: The directory relative to src.
83 """ 55 """
84 def _is_git_directory(in_directory): 56 def _is_git_directory(in_directory):
85 """Returns true if the given directory is in a git repository. 57 """Returns true if the given directory is in a git repository.
86 58
87 Args: 59 Args:
88 in_directory: The directory path to be tested. 60 in_directory: The directory path to be tested.
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 self._test_results_map[single_test_result.GetName()] = test_result 140 self._test_results_map[single_test_result.GetName()] = test_result
169 141
170 def Upload(self, test_results_server): 142 def Upload(self, test_results_server):
171 if not self._test_results_map: 143 if not self._test_results_map:
172 return 144 return
173 145
174 tmp_folder = tempfile.mkdtemp() 146 tmp_folder = tempfile.mkdtemp()
175 147
176 try: 148 try:
177 results_generator = JSONResultsGenerator( 149 results_generator = JSONResultsGenerator(
178 port=PortDummy(),
179 builder_name=self._builder_name, 150 builder_name=self._builder_name,
180 build_name=self._build_name, 151 build_name=self._build_name,
181 build_number=self._build_number, 152 build_number=self._build_number,
182 tmp_folder=tmp_folder, 153 tmp_folder=tmp_folder,
183 test_results_map=self._test_results_map, 154 test_results_map=self._test_results_map,
184 test_results_server=test_results_server, 155 test_results_server=test_results_server,
185 test_type=self._tests_type, 156 test_type=self._tests_type,
186 master_name=self._master_name) 157 master_name=self._master_name)
187 158
188 json_files = ["incremental_results.json", "times_ms.json"] 159 json_files = ["incremental_results.json", "times_ms.json"]
189 results_generator.generate_json_output() 160 results_generator.GenerateJSONOutput()
190 results_generator.generate_times_ms_file() 161 results_generator.GenerateTimesMSFile()
191 results_generator.upload_json_files(json_files) 162 results_generator.UploadJSONFiles(json_files)
192 except Exception as e: 163 except Exception as e:
193 logging.error("Uploading results to test server failed: %s." % e) 164 logging.error("Uploading results to test server failed: %s." % e)
194 finally: 165 finally:
195 shutil.rmtree(tmp_folder) 166 shutil.rmtree(tmp_folder)
196 167
197 168
198 def Upload(results, flakiness_dashboard_server, test_type): 169 def Upload(results, flakiness_dashboard_server, test_type):
199 """Reports test results to the flakiness dashboard for Chrome for Android. 170 """Reports test results to the flakiness dashboard for Chrome for Android.
200 171
201 Args: 172 Args:
202 results: test results. 173 results: test results.
203 flakiness_dashboard_server: the server to upload the results to. 174 flakiness_dashboard_server: the server to upload the results to.
204 test_type: the type of the tests (as displayed by the flakiness dashboard). 175 test_type: the type of the tests (as displayed by the flakiness dashboard).
205 """ 176 """
206 uploader = ResultsUploader(test_type) 177 uploader = ResultsUploader(test_type)
207 uploader.AddResults(results) 178 uploader.AddResults(results)
208 uploader.Upload(flakiness_dashboard_server) 179 uploader.Upload(flakiness_dashboard_server)
OLDNEW
« no previous file with comments | « no previous file | build/android/pylib/utils/json_results_generator.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698