⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 105650 in webkit


Ignore:
Timestamp:
Jan 23, 2012, 3:49:00 PM (15 years ago)
Author:
rniwa@webkit.org
Message:

run-perf-tests should report server-side errors
https://bugs.webkit.org/show_bug.cgi?id=76802

Reviewed by Tony Chang.

Report errors whenever server's response doesn't match "OK".

  • Scripts/webkitpy/common/net/file_uploader.py:

(FileUploader.upload_single_text_file):
(FileUploader.upload_as_multipart_form_data):
(FileUploader._upload_data.callback):
(FileUploader):
(FileUploader._upload_data):

  • Scripts/webkitpy/performance_tests/perftestsrunner.py:

(PerfTestsRunner._upload_json):

  • Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:

(test_upload_json):
(test_upload_json.MockFileUploader.upload_single_text_file):

Location:
trunk/Tools
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r105644 r105650  
     12012-01-23  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        run-perf-tests should report server-side errors
     4        https://bugs.webkit.org/show_bug.cgi?id=76802
     5
     6        Reviewed by Tony Chang.
     7
     8        Report errors whenever server's response doesn't match "OK".
     9
     10        * Scripts/webkitpy/common/net/file_uploader.py:
     11        (FileUploader.upload_single_text_file):
     12        (FileUploader.upload_as_multipart_form_data):
     13        (FileUploader._upload_data.callback):
     14        (FileUploader):
     15        (FileUploader._upload_data):
     16        * Scripts/webkitpy/performance_tests/perftestsrunner.py:
     17        (PerfTestsRunner._upload_json):
     18        * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
     19        (test_upload_json):
     20        (test_upload_json.MockFileUploader.upload_single_text_file):
     21
    1222012-01-22  Ryosuke Niwa  <rniwa@webkit.org>
    223
  • trunk/Tools/Scripts/webkitpy/common/net/file_uploader.py

    r105543 r105650  
    9090
    9191    def upload_single_text_file(self, filesystem, content_type, filename):
    92         self._upload_data(content_type, filesystem.read_text_file(filename))
     92        return self._upload_data(content_type, filesystem.read_text_file(filename))
    9393
    9494    def upload_as_multipart_form_data(self, filesystem, files, params, timeout_seconds):
     
    100100        # FIXME: We should use the same variable names for the formal and actual parameters.
    101101        content_type, data = _encode_multipart_form_data(attrs, file_objs)
    102         self._upload_data(content_type, data)
     102        return self._upload_data(content_type, data)
    103103
    104104    def _upload_data(self, content_type, data):
    105105        def callback():
    106106            request = urllib2.Request(self._url, data, {"Content-Type": content_type})
    107             urllib2.urlopen(request)
     107            return urllib2.urlopen(request)
    108108
    109109        orig_timeout = socket.getdefaulttimeout()
     110        response = None
    110111        try:
    111112            # FIXME: We shouldn't mutate global static state.
    112113            socket.setdefaulttimeout(self._timeout_seconds)
    113             NetworkTransaction(timeout_seconds=self._timeout_seconds).run(callback)
     114            response = NetworkTransaction(timeout_seconds=self._timeout_seconds).run(callback)
    114115        finally:
    115116            socket.setdefaulttimeout(orig_timeout)
     117            return response
  • trunk/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py

    r105592 r105650  
    175175        uploader = file_uploader("https://%s/api/test/report" % test_results_server, 120)
    176176        try:
    177             uploader.upload_single_text_file(self._host.filesystem, 'application/json', json_path)
     177            response = uploader.upload_single_text_file(self._host.filesystem, 'application/json', json_path)
    178178        except Exception, error:
    179179            _log.error("Failed to upload JSON file in 120s: %s" % error)
     180            return False
     181
     182        response_body = [line.strip('\n') for line in response]
     183        if response_body != ['OK']:
     184            _log.error("Uploaded JSON but got a bad response:")
     185            for line in response_body:
     186                _log.error(line)
    180187            return False
    181188
  • trunk/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py

    r105543 r105650  
    3030"""Unit tests for run_perf_tests."""
    3131
     32import StringIO
    3233import json
    3334import unittest
     
    3637from webkitpy.common.host_mock import MockHost
    3738from webkitpy.common.system.filesystem_mock import MockFileSystem
     39from webkitpy.common.system.outputcapture import OutputCapture
    3840from webkitpy.layout_tests.port.driver import DriverInput, DriverOutput
    3941from webkitpy.layout_tests.port.test import TestPort
     
    241243    def test_upload_json(self):
    242244        regular_output = array_stream.ArrayStream()
    243         runner = self.create_runner(buildbot_output=regular_output)
     245        runner = self.create_runner(regular_output=regular_output)
    244246        runner._host.filesystem.files['/mock-checkout/some.json'] = 'some content'
    245247
    246248        called = []
    247249        upload_single_text_file_throws = False
     250        upload_single_text_file_return_value = StringIO.StringIO('OK')
    248251
    249252        class MockFileUploader:
     
    260263                if upload_single_text_file_throws:
    261264                    raise "Some exception"
     265                return upload_single_text_file_return_value
    262266
    263267        runner._upload_json('some.host', 'some.json', MockFileUploader)
    264268        self.assertEqual(called, ['FileUploader', 'upload_single_text_file'])
     269
     270        output = OutputCapture()
     271        output.capture_output()
     272        upload_single_text_file_return_value = StringIO.StringIO('Some error')
     273        runner._upload_json('some.host', 'some.json', MockFileUploader)
     274        _, _, logs = output.restore_output()
     275        self.assertEqual(logs, 'Uploaded JSON but got a bad response:\nSome error\n')
    265276
    266277        # Throwing an exception upload_single_text_file shouldn't blow up _upload_json
Note: See TracChangeset for help on using the changeset viewer.