Changeset 106687 in webkit


Ignore:
Timestamp:
Feb 3, 2012 1:10:22 PM (12 years ago)
Author:
rniwa@webkit.org
Message:

perf-o-matic should store chromium svn revision
https://bugs.webkit.org/show_bug.cgi?id=77725

Reviewed by Dirk Pranke.

.:

Store both WebKit and Chromium revisions when both are reported.

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

(Build):

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

(ReportHandler.post):
(ReportHandler._create_build_if_possible):
(ReportHandler._create_build_if_possible.execute):

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

Tools:

Report both WebKit and Chromium revisions to the graph server. Renamed test_repository_paths to
repository_paths since it's nothing to do with tests. Also refactored scm so that head_svn_revision
is implemented in terms of newly added svn_revision.

  • Scripts/webkitpy/common/checkout/scm/git.py:

(Git.svn_revision):

  • Scripts/webkitpy/common/checkout/scm/scm.py:

(SCM.head_svn_revision):
(SCM):
(SCM.svn_revision):

  • Scripts/webkitpy/common/checkout/scm/scm_mock.py:

(MockSCM.svn_revision):

  • Scripts/webkitpy/common/checkout/scm/svn.py:

(SVN.svn_revision):

  • Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:

(JSONLayoutResultsGenerator.init):

  • Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:

(JSONResultsGeneratorBase._insert_generic_metadata):

  • Scripts/webkitpy/layout_tests/port/base.py:

(Port.repository_paths):

  • Scripts/webkitpy/layout_tests/port/chromium.py:

(ChromiumPort.repository_paths):

  • Scripts/webkitpy/performance_tests/perftestsrunner.py:

(PerfTestsRunner._generate_json):

  • Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:

(test_run_test_set_with_json_output):
(test_run_test_set_with_json_source):
(test_run_test_set_with_multiple_repositories):

Location:
trunk
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r106650 r106687  
     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 Dirk Pranke.
     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  Simon Hausmann  <simon.hausmann@nokia.com>
    219
  • trunk/Tools/ChangeLog

    r106658 r106687  
     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 Dirk Pranke.
     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-03  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
    238
  • trunk/Tools/Scripts/webkitpy/common/checkout/scm/git.py

    r104998 r106687  
    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:
  • trunk/Tools/Scripts/webkitpy/common/checkout/scm/scm.py

    r104998 r106687  
    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
  • trunk/Tools/Scripts/webkitpy/common/checkout/scm/scm_mock.py

    r99140 r106687  
    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"
  • trunk/Tools/Scripts/webkitpy/common/checkout/scm/svn.py

    r104998 r106687  
    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.
  • trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py

    r103357 r106687  
    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
  • trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py

    r105543 r106687  
    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),
  • trunk/Tools/Scripts/webkitpy/layout_tests/port/base.py

    r106293 r106687  
    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
  • trunk/Tools/Scripts/webkitpy/layout_tests/port/chromium.py

    r106442 r106687  
    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('build')))
    343341        return repos
    344342
  • trunk/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py

    r106584 r106687  
    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():
  • trunk/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py

    r106584 r106687  
    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):
     
    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"})
     225
     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})
    225236
    226237    def test_run_with_upload_json(self):
  • trunk/Websites/webkit-perf.appspot.com/models.py

    r106321 r106687  
    9191    buildNumber = db.IntegerProperty(required=True)
    9292    revision = db.IntegerProperty(required=True)
     93    chromiumRevision = db.IntegerProperty()
    9394    timestamp = db.DateTimeProperty(required=True)
    9495
  • trunk/Websites/webkit-perf.appspot.com/report_handler.py

    r106436 r106687  
    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
     
    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
     
    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
     
    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
  • trunk/Websites/webkit-perf.appspot.com/static/manual-submit.html

    r106292 r106687  
    5656    'build-number': '123',
    5757    'timestamp': parseInt(Date.now() / 1000),
    58     'revision': 104856,
     58    'webkit-revision': 104856,
    5959    'results':
    6060        {
Note: See TracChangeset for help on using the changeset viewer.