ChangeLog

 12012-02-03 Ryosuke Niwa <rniwa@webkit.org>
 2
 3 perf-o-matic should store chromium svn revision
 4 https://bugs.webkit.org/show_bug.cgi?id=77725
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Store both WebKit and Chromium revisions when both are reported.
 9
 10 * Websites/webkit-perf.appspot.com/models.py:
 11 (Build):
 12 * Websites/webkit-perf.appspot.com/report_handler.py:
 13 (ReportHandler.post):
 14 (ReportHandler._create_build_if_possible):
 15 (ReportHandler._create_build_if_possible.execute):
 16 * Websites/webkit-perf.appspot.com/static/manual-submit.html:
 17
1182012-02-03 Shinya Kawanaka <shinyak@google.com>
219
320 Stop calling Element::ensureShadowRoot in Internals.
106639

Tools/ChangeLog

 12012-02-03 Ryosuke Niwa <rniwa@webkit.org>
 2
 3 perf-o-matic should store chromium svn revision
 4 https://bugs.webkit.org/show_bug.cgi?id=77725
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Report both WebKit and Chromium revisions to the graph server. Renamed test_repository_paths to
 9 repository_paths since it's nothing to do with tests. Also refactored scm so that head_svn_revision
 10 is implemented in terms of newly added svn_revision.
 11
 12 * Scripts/webkitpy/common/checkout/scm/git.py:
 13 (Git.svn_revision):
 14 * Scripts/webkitpy/common/checkout/scm/scm.py:
 15 (SCM.head_svn_revision):
 16 (SCM):
 17 (SCM.svn_revision):
 18 * Scripts/webkitpy/common/checkout/scm/scm_mock.py:
 19 (MockSCM.svn_revision):
 20 * Scripts/webkitpy/common/checkout/scm/svn.py:
 21 (SVN.svn_revision):
 22 * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
 23 (JSONLayoutResultsGenerator.__init__):
 24 * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
 25 (JSONResultsGeneratorBase._insert_generic_metadata):
 26 * Scripts/webkitpy/layout_tests/port/base.py:
 27 (Port.repository_paths):
 28 * Scripts/webkitpy/layout_tests/port/chromium.py:
 29 (ChromiumPort.repository_paths):
 30 * Scripts/webkitpy/performance_tests/perftestsrunner.py:
 31 (PerfTestsRunner._generate_json):
 32 * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
 33 (test_run_test_set_with_json_output):
 34 (test_run_test_set_with_json_source):
 35 (test_run_test_set_with_multiple_repositories):
 36
1372012-02-02 Jochen Eisinger <jochen@chromium.org>
238
339 [chromium] add support for --makeargs to the ninja-based build
106639

Tools/Scripts/webkitpy/common/checkout/scm/git.py

@@class Git(SCM, SVNRepository):
229229 def display_name(self):
230230 return "git"
231231
232  def head_svn_revision(self):
 232 def svn_revision(self, path):
233233 _log.debug('Running git.head_svn_revision... (Temporary logging message)')
234  git_log = self.run(['git', 'log', '-25'])
 234 git_log = self.run(['git', 'log', '-25', path])
235235 match = re.search("^\s*git-svn-id:.*@(?P<svn_revision>\d+)\ ", git_log, re.MULTILINE)
236236 if not match:
237237 return ""
106624

Tools/Scripts/webkitpy/common/checkout/scm/scm.py

@@class SCM:
182182 self._subclass_must_implement()
183183
184184 def head_svn_revision(self):
 185 return self.svn_revision(self.checkout_root)
 186
 187 def svn_revision(self, path):
185188 self._subclass_must_implement()
186189
187190 def create_patch(self, git_commit=None, changed_files=None):
106624

Tools/Scripts/webkitpy/common/checkout/scm/scm_mock.py

@@class MockSCM(object):
6868 def head_svn_revision(self):
6969 return 1234
7070
 71 def svn_revision(self, path):
 72 return 5678
 73
7174 def create_patch(self, git_commit, changed_files=None):
7275 return "Patch1"
7376
106624

Tools/Scripts/webkitpy/common/checkout/scm/svn.py

@@class SVN(SCM, SVNRepository):
237237 def display_name(self):
238238 return "svn"
239239
240  def head_svn_revision(self):
241  return self.value_from_svn_info(self.checkout_root, 'Revision')
 240 def svn_revision(self, path):
 241 return self.value_from_svn_info(path, 'Revision')
242242
243243 # FIXME: This method should be on Checkout.
244244 def create_patch(self, git_commit=None, changed_files=None):
106624

Tools/Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py

@@class JSONLayoutResultsGenerator(json_re
6464 """
6565 super(JSONLayoutResultsGenerator, self).__init__(
6666 port, builder_name, build_name, build_number, results_file_base_path,
67  builder_base_url, {}, port.test_repository_paths(),
 67 builder_base_url, {}, port.repository_paths(),
6868 test_results_server, test_type, master_name)
6969
7070 self._expectations = expectations
106624

Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py

@@class JSONResultsGeneratorBase(object):
528528
529529 # Include SVN revisions for the given repositories.
530530 for (name, path) in self._svn_repositories:
 531 # Note: for JSON file's backward-compatibility we use 'chrome' rather
 532 # than 'chromium' here.
 533 if name == 'chromium':
 534 name = 'chrome'
531535 self._insert_item_into_raw_list(results_for_builder,
532536 self._get_svn_revision(path),
533537 name + 'Revision')
106624

Tools/Scripts/webkitpy/layout_tests/port/base.py

@@class Port(object):
900900 sync up the two repos."""
901901 return None
902902
903  def test_repository_paths(self):
904  """Returns a list of (repository_name, repository_path) tuples
905  of its depending code base. By default it returns a list that only
906  contains a ('webkit', <webkitRepossitoryPath>) tuple.
907  """
908  return [('webkit', self.layout_tests_dir())]
 903 def repository_paths(self):
 904 """Returns a list of (repository_name, repository_path) tuples of its depending code base.
 905 By default it returns a list that only contains a ('webkit', <webkitRepossitoryPath>) tuple."""
 906 return [('webkit', self.webkit_base())]
909907
910908
911909 _WDIFF_DEL = '##WDIFF_DEL##'
106624

Tools/Scripts/webkitpy/layout_tests/port/chromium.py

@@class ChromiumPort(Port):
335335 is_lint_mode=False, overrides=overrides_str)
336336 return expectations.get_tests_with_result_type(test_expectations.SKIP)
337337
338  def test_repository_paths(self):
339  # Note: for JSON file's backward-compatibility we use 'chrome' rather
340  # than 'chromium' here.
341  repos = super(ChromiumPort, self).test_repository_paths()
342  repos.append(('chrome', self.path_from_chromium_base()))
 338 def repository_paths(self):
 339 repos = super(ChromiumPort, self).repository_paths()
 340 repos.append(('chromium', self.path_from_chromium_base()))
343341 return repos
344342
345343 #
106624

Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py

@@class PerfTestsRunner(object):
145145 return unexpected
146146
147147 def _generate_json(self, timestamp, output_json_path, source_json_path, branch, platform, builder_name, build_number):
148  revision = self._host.scm().head_svn_revision()
149  contents = {'timestamp': int(timestamp), 'revision': revision, 'results': self._results}
 148 contents = {'timestamp': int(timestamp), 'results': self._results}
 149 for (name, path) in self._port.repository_paths():
 150 contents[name + '-revision'] = self._host.scm().svn_revision(path)
150151
151152 for key, value in {'branch': branch, 'platform': platform, 'builder-name': builder_name, 'build-number': build_number}.items():
152153 if value:
106624

Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py

@@max 1120
200200 "timestamp": 123456789, "results":
201201 {"Bindings/event-target-wrapper": {"max": 1510, "avg": 1489.05, "median": 1487, "min": 1471, "stdev": 14.46},
202202 "group_name:test_name": 42},
203  "revision": 1234})
 203 "webkit-revision": 5678})
204204
205205 def test_run_test_set_with_json_source(self):
206206 buildbot_output = array_stream.ArrayStream()

@@max 1120
220220 "timestamp": 123456789, "results":
221221 {"Bindings/event-target-wrapper": {"max": 1510, "avg": 1489.05, "median": 1487, "min": 1471, "stdev": 14.46},
222222 "group_name:test_name": 42},
223  "revision": 1234,
 223 "webkit-revision": 5678,
224224 "key": "value"})
225225
 226 def test_run_test_set_with_multiple_repositories(self):
 227 buildbot_output = array_stream.ArrayStream()
 228 runner = self.create_runner(buildbot_output, args=['--output-json-path=/mock-checkout/output.json'])
 229 runner._host.filesystem.files[runner._base_path + '/inspector/pass.html'] = True
 230 runner._timestamp = 123456789
 231 runner._port.repository_paths = lambda: [('webkit', '/mock-checkout'), ('some', '/mock-checkout/some')]
 232 self.assertEqual(runner.run(), 0)
 233
 234 self.assertEqual(json.loads(runner._host.filesystem.files['/mock-checkout/output.json']), {
 235 "timestamp": 123456789, "results": {"group_name:test_name": 42.0}, "webkit-revision": 5678, "some-revision": 5678})
 236
226237 def test_run_with_upload_json(self):
227238 runner = self.create_runner(args=['--output-json-path=/mock-checkout/output.json',
228239 '--test-results-server', 'some.host', '--platform', 'platform1', '--builder-name', 'builder1', '--build-number', '123'])
106624

Websites/webkit-perf.appspot.com/models.py

@@class Build(db.Model):
9090 builder = db.ReferenceProperty(Builder, required=True, collection_name='builder_key')
9191 buildNumber = db.IntegerProperty(required=True)
9292 revision = db.IntegerProperty(required=True)
 93 chromiumRevision = db.IntegerProperty()
9394 timestamp = db.DateTimeProperty(required=True)
9495
9596
106624

Websites/webkit-perf.appspot.com/report_handler.py

@@class ReportHandler(webapp2.RequestHandl
6767 branch = self._model_by_key_name_in_body_or_error(Branch, 'branch')
6868 platform = self._model_by_key_name_in_body_or_error(Platform, 'platform')
6969 build_number = self._integer_in_body('build-number')
70  revision = self._integer_in_body('revision')
7170 timestamp = self._timestamp_in_body()
 71 revision = self._integer_in_body('webkit-revision')
 72 chromium_revision = self._integer_in_body('webkit-revision') if 'chromium-revision' in self._body else None
7273
7374 failed = False
7475 if builder and not (self.bypass_authentication() or builder.authenticate(self._body.get('password', ''))):

@@class ReportHandler(webapp2.RequestHandl
8283 if not (builder and branch and platform and build_number and revision and timestamp) or failed:
8384 return
8485
85  build = self._create_build_if_possible(builder, build_number, branch, platform, revision, timestamp)
 86 build = self._create_build_if_possible(builder, build_number, branch, platform, timestamp, revision, chromium_revision)
8687 if not build:
8788 return
8889

@@class ReportHandler(webapp2.RequestHandl
162163
163164 return True
164165
165  def _create_build_if_possible(self, builder, build_number, branch, platform, revision, timestamp):
 166 def _create_build_if_possible(self, builder, build_number, branch, platform, timestamp, revision, chromium_revision):
166167 key_name = builder.name + ':' + str(int(time.mktime(timestamp.timetuple())))
167168
168169 def execute():

@@class ReportHandler(webapp2.RequestHandl
171172 return self._output('The build at %s already exists for %s' % (str(timestamp), builder.name))
172173
173174 return Build(branch=branch, platform=platform, builder=builder, buildNumber=build_number,
174  timestamp=timestamp, revision=revision, key_name=key_name).put()
 175 timestamp=timestamp, revision=revision, chromiumRevision=chromium_revision, key_name=key_name).put()
175176 return db.run_in_transaction(execute)
176177
177178 def _add_test_if_needed(self, test_name, branch, platform):
106624

Websites/webkit-perf.appspot.com/static/manual-submit.html

@@$('data').value = JSON.stringify({
5555 'builder-name': 'Chromium Mac Release (Perf)',
5656 'build-number': '123',
5757 'timestamp': parseInt(Date.now() / 1000),
58  'revision': 104856,
 58 'webkit-revision': 104856,
5959 'results':
6060 {
6161 'webkit_style_test': {'avg': 100, 'median': 102, 'stdev': 5, 'min': 90, 'max': 110},
106624