Title: [252616] trunk/Tools
Revision
252616
Author
[email protected]
Date
2019-11-18 17:51:17 -0800 (Mon, 18 Nov 2019)

Log Message

Python 3: Support run-api-tests
https://bugs.webkit.org/show_bug.cgi?id=204252

Rubber-stamped by Aakash Jain.

* Scripts/webkitpy/api_tests/manager.py:
(Manager._collect_tests): Use items over iteritems.
(Manager._print_tests_result_with_status): Use compatible iteritems.
(Manager.run): Use range over xrange, use compatible iteritems.
* Scripts/webkitpy/api_tests/runner.py:
(Runner.run): Use compatible iteritems.
(Runner.result_map_by_status): Ditto.
(_Worker._run_single_test): Server process returns byte arrays, not strings.
(_Worker.handle): Use items over iteritems, use range over xrange.
* Scripts/webkitpy/common/message_pool.py:
(_MessagePool.run): Use range over xrange.
(_MessagePool._start_workers): Ditto.
* Scripts/webkitpy/common/multiprocessing_bootstrap.py: Remove version check.
* Scripts/webkitpy/port/base.py:
(Port.check_api_test_build):Use items over iteritems.
(Port.commits_for_upload): Ditto.
* Scripts/webkitpy/port/server_process.py:
(ServerProcess._reset): Use byte array over string.
(ServerProcess._pop_stdout_line_if_ready): Check for bytes newline.
(ServerProcess._pop_stderr_line_if_ready): Ditto.

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (252615 => 252616)


--- trunk/Tools/ChangeLog	2019-11-19 01:35:29 UTC (rev 252615)
+++ trunk/Tools/ChangeLog	2019-11-19 01:51:17 UTC (rev 252616)
@@ -1,3 +1,31 @@
+2019-11-18  Jonathan Bedard  <[email protected]>
+
+        Python 3: Support run-api-tests
+        https://bugs.webkit.org/show_bug.cgi?id=204252
+
+        Rubber-stamped by Aakash Jain.
+
+        * Scripts/webkitpy/api_tests/manager.py:
+        (Manager._collect_tests): Use items over iteritems.
+        (Manager._print_tests_result_with_status): Use compatible iteritems.
+        (Manager.run): Use range over xrange, use compatible iteritems.
+        * Scripts/webkitpy/api_tests/runner.py:
+        (Runner.run): Use compatible iteritems.
+        (Runner.result_map_by_status): Ditto.
+        (_Worker._run_single_test): Server process returns byte arrays, not strings.
+        (_Worker.handle): Use items over iteritems, use range over xrange.
+        * Scripts/webkitpy/common/message_pool.py:
+        (_MessagePool.run): Use range over xrange.
+        (_MessagePool._start_workers): Ditto.
+        * Scripts/webkitpy/common/multiprocessing_bootstrap.py: Remove version check.
+        * Scripts/webkitpy/port/base.py:
+        (Port.check_api_test_build):Use items over iteritems.
+        (Port.commits_for_upload): Ditto.
+        * Scripts/webkitpy/port/server_process.py:
+        (ServerProcess._reset): Use byte array over string.
+        (ServerProcess._pop_stdout_line_if_ready): Check for bytes newline.
+        (ServerProcess._pop_stderr_line_if_ready): Ditto.
+
 2019-11-18  Andres Gonzalez  <[email protected]>
 
         Run AccessibilityController::rootElement on secondary thread to simulate HIServices during LayoutTests.

Modified: trunk/Tools/Scripts/webkitpy/api_tests/manager.py (252615 => 252616)


--- trunk/Tools/Scripts/webkitpy/api_tests/manager.py	2019-11-19 01:35:29 UTC (rev 252615)
+++ trunk/Tools/Scripts/webkitpy/api_tests/manager.py	2019-11-19 01:51:17 UTC (rev 252616)
@@ -25,9 +25,9 @@
 import time
 
 from webkitpy.api_tests.runner import Runner
+from webkitpy.common.iteration_compatibility import iteritems
 from webkitpy.common.system.executive import ScriptError
 from webkitpy.results.upload import Upload
-
 from webkitpy.xcode.simulated_device import DeviceRequest, SimulatedDeviceManager
 
 _log = logging.getLogger(__name__)
@@ -91,7 +91,7 @@
     def _collect_tests(self, args):
         available_tests = []
         specified_binaries = self._binaries_for_arguments(args)
-        for canonicalized_binary, path in self._port.path_to_api_test_binaries().iteritems():
+        for canonicalized_binary, path in self._port.path_to_api_test_binaries().items():
             if canonicalized_binary not in specified_binaries:
                 continue
             try:
@@ -124,7 +124,7 @@
             self._stream.writeln(runner.NAME_FOR_STATUS[status])
             self._stream.writeln('')
             need_newline = False
-            for test, output in mapping.iteritems():
+            for test, output in iteritems(mapping):
                 need_newline = Manager._print_test_result(self._stream, test, output)
             if need_newline:
                 self._stream.writeln('')
@@ -182,7 +182,7 @@
                 self._stream.writeln(test)
             return Manager.SUCCESS
 
-        test_names = [test for test in test_names for _ in xrange(self._options.repeat_each)]
+        test_names = [test for test in test_names for _ in range(self._options.repeat_each)]
         if self._options.repeat_each != 1:
             _log.debug('Repeating each test {} times'.format(self._options.iterations))
 
@@ -189,7 +189,7 @@
         try:
             _log.info('Running tests')
             runner = Runner(self._port, self._stream)
-            for i in xrange(self._options.iterations):
+            for i in range(self._options.iterations):
                 _log.debug('\nIteration {}'.format(i + 1))
                 runner.run(test_names, int(self._options.child_processes) if self._options.child_processes else self._port.default_child_processes())
         except KeyboardInterrupt:
@@ -235,7 +235,7 @@
             self._print_tests_result_with_status(runner.STATUS_CRASHED, runner)
             self._print_tests_result_with_status(runner.STATUS_TIMEOUT, runner)
 
-            for test, result in runner.results.iteritems():
+            for test, result in iteritems(runner.results):
                 status_to_string = {
                     runner.STATUS_FAILED: 'Failed',
                     runner.STATUS_CRASHED: 'Crashed',
@@ -271,7 +271,7 @@
                     tests_skipped=len(result_dictionary['Skipped']),
                 ),
                 results={test: Upload.create_test_result(actual=status_to_test_result[result[0]])
-                         for test, result in runner.results.iteritems() if result[0] in status_to_test_result},
+                         for test, result in iteritems(runner.results) if result[0] in status_to_test_result},
             )
             for url in self._options.report_urls:
                 self._stream.write_update('Uploading to {} ...'.format(url))

Modified: trunk/Tools/Scripts/webkitpy/api_tests/runner.py (252615 => 252616)


--- trunk/Tools/Scripts/webkitpy/api_tests/runner.py	2019-11-19 01:35:29 UTC (rev 252615)
+++ trunk/Tools/Scripts/webkitpy/api_tests/runner.py	2019-11-19 01:51:17 UTC (rev 252616)
@@ -25,8 +25,10 @@
 import time
 
 from webkitpy.common import message_pool
+from webkitpy.common.iteration_compatibility import iteritems
 from webkitpy.port.server_process import ServerProcess, _log as server_process_logger
 from webkitpy.xcode.simulated_device import SimulatedDeviceManager
+from webkitpy.common.unicode_compatibility import decode_for
 
 
 class Runner(object):
@@ -90,7 +92,7 @@
         try:
             self._num_workers = min(num_workers, len(shards))
             with message_pool.get(self, lambda caller: _Worker(caller, self.port, shards), self._num_workers) as pool:
-                pool.run(('test', shard) for shard, _ in shards.iteritems())
+                pool.run(('test', shard) for shard, _ in iteritems(shards))
         finally:
             server_process_logger.setLevel(original_level)
 
@@ -129,7 +131,7 @@
 
     def result_map_by_status(self, status=None):
         map = {}
-        for test_name, result in self.results.iteritems():
+        for test_name, result in iteritems(self.results):
             if result[0] == status:
                 map[test_name] = result[1]
         return map
@@ -177,9 +179,11 @@
                     break
 
                 if stderr_line:
+                    stderr_line = decode_for(stderr_line, str)
                     stderr_buffer += stderr_line
                     self.post('log', output=stderr_line[:-1])
                 if stdout_line:
+                    stdout_line = decode_for(stdout_line, str)
                     if '**PASS**' in stdout_line:
                         status = Runner.STATUS_PASSED
                     elif '**FAIL**' in stdout_line:
@@ -198,8 +202,8 @@
                 status = Runner.STATUS_FAILED
 
         finally:
-            remaining_stderr = server_process.pop_all_buffered_stderr()
-            remaining_stdout = server_process.pop_all_buffered_stdout()
+            remaining_stderr = decode_for(server_process.pop_all_buffered_stderr(), str)
+            remaining_stdout = decode_for(server_process.pop_all_buffered_stdout(), str)
             self.post('log', output=remaining_stderr + remaining_stdout)
             output_buffer = stderr_buffer + stdout_buffer + remaining_stderr + remaining_stdout
             server_process.stop()
@@ -290,5 +294,5 @@
             if split_test_name[0] not in binary_map:
                 binary_map[split_test_name[0]] = []
             binary_map[split_test_name[0]].append('.'.join(split_test_name[1:]))
-        for binary_name, test_list in binary_map.iteritems():
+        for binary_name, test_list in binary_map.items():
             self._run_shard_with_binary(binary_name, test_list)

Modified: trunk/Tools/Scripts/webkitpy/common/message_pool.py (252615 => 252616)


--- trunk/Tools/Scripts/webkitpy/common/message_pool.py	2019-11-19 01:35:29 UTC (rev 252615)
+++ trunk/Tools/Scripts/webkitpy/common/message_pool.py	2019-11-19 01:51:17 UTC (rev 252616)
@@ -98,7 +98,7 @@
         for message in shards:
             self._messages_to_worker.put(_Message(self._name, message[0], message[1:], from_user=True, logs=()))
 
-        for _ in xrange(self._num_workers):
+        for _ in range(self._num_workers):
             self._messages_to_worker.put(_Message(self._name, 'stop', message_args=(), from_user=False, logs=()))
 
         self.wait()
@@ -110,7 +110,7 @@
         if self._running_inline or self._can_pickle(self._host):
             host = self._host
 
-        for worker_number in xrange(self._num_workers):
+        for worker_number in range(self._num_workers):
             worker = _Worker(host, self._messages_to_manager, self._messages_to_worker, self._worker_factory, worker_number, self._running_inline, self if self._running_inline else None, self._worker_log_level())
             self._workers.append(worker)
             worker.start()

Modified: trunk/Tools/Scripts/webkitpy/common/multiprocessing_bootstrap.py (252615 => 252616)


--- trunk/Tools/Scripts/webkitpy/common/multiprocessing_bootstrap.py	2019-11-19 01:35:29 UTC (rev 252615)
+++ trunk/Tools/Scripts/webkitpy/common/multiprocessing_bootstrap.py	2019-11-19 01:51:17 UTC (rev 252616)
@@ -38,9 +38,7 @@
 import subprocess
 import sys
 
-from webkitpy.common import version_check   # 'unused import' pylint: disable=W0611
 
-
 def run(*parts):
     up = os.path.dirname
     script_dir = up(up(up(os.path.abspath(__file__))))

Modified: trunk/Tools/Scripts/webkitpy/port/base.py (252615 => 252616)


--- trunk/Tools/Scripts/webkitpy/port/base.py	2019-11-19 01:35:29 UTC (rev 252615)
+++ trunk/Tools/Scripts/webkitpy/port/base.py	2019-11-19 01:51:17 UTC (rev 252616)
@@ -251,7 +251,7 @@
         if not self._root_was_set and self.get_option('build') and not self._build_api_tests(wtf_only=(canonicalized_binaries == ['TestWTF'])):
             return False
 
-        for binary, path in self.path_to_api_test_binaries().iteritems():
+        for binary, path in self.path_to_api_test_binaries().items():
             if binary not in canonicalized_binaries:
                 continue
             if not self._filesystem.exists(path):
@@ -1605,7 +1605,7 @@
         repos['webkit'] = up(up(up(up(up(os.path.abspath(__file__))))))
 
         commits = []
-        for repo_id, path in repos.iteritems():
+        for repo_id, path in repos.items():
             scm = SCMDetector(self._filesystem, self._executive).detect_scm_system(path)
             commits.append(Upload.create_commit(
                 repository_id=repo_id,

Modified: trunk/Tools/Scripts/webkitpy/port/server_process.py (252615 => 252616)


--- trunk/Tools/Scripts/webkitpy/port/server_process.py	2019-11-19 01:35:29 UTC (rev 252615)
+++ trunk/Tools/Scripts/webkitpy/port/server_process.py	2019-11-19 01:51:17 UTC (rev 252616)
@@ -110,8 +110,8 @@
                 self._proc.stderr = None
 
         self._proc = None
-        self._output = str()  # bytesarray() once we require Python 2.6
-        self._error = str()  # bytesarray() once we require Python 2.6
+        self._output = b''
+        self._error = b''
         self._crashed = False
         self.timed_out = False
 
@@ -188,13 +188,13 @@
                 self._crashed = True
 
     def _pop_stdout_line_if_ready(self):
-        index_after_newline = self._output.find('\n') + 1
+        index_after_newline = self._output.find(b'\n') + 1
         if index_after_newline > 0:
             return self._pop_output_bytes(index_after_newline)
         return None
 
     def _pop_stderr_line_if_ready(self):
-        index_after_newline = self._error.find('\n') + 1
+        index_after_newline = self._error.find(b'\n') + 1
         if index_after_newline > 0:
             return self._pop_error_bytes(index_after_newline)
         return None
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to