Diff
Modified: trunk/Tools/ChangeLog (253128 => 253129)
--- trunk/Tools/ChangeLog 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/ChangeLog 2019-12-05 00:23:59 UTC (rev 253129)
@@ -1,5 +1,40 @@
2019-12-04 Jonathan Bedard <jbed...@apple.com>
+ Python 3: Add support in webkitpy.benchmark_runner
+ https://bugs.webkit.org/show_bug.cgi?id=204784
+
+ Reviewed by Stephanie Lewis.
+
+ * Scripts/test-webkitpy-python3: Add webkitpy.benchmark_runner.
+ * Scripts/webkitpy/benchmark_runner/benchmark_results.py:
+ (BenchmarkResults): Arithmetic aggregator should use integer division.
+ (BenchmarkResults._format_values): Convert map to list.
+ (BenchmarkResults._aggregate_results): Ditto.
+ (BenchmarkResults._aggregate_results_for_test): Use Python 2/3 compatible iteritems.
+ (BenchmarkResults._subtest_values_by_config_iteration): Ditto.
+ (BenchmarkResults._lint_subtest_results): Ditto.
+ (BenchmarkResults._lint_configuration): Ditto.
+ * Scripts/webkitpy/benchmark_runner/benchmark_results_unittest.py: Use explicit imports.
+ * Scripts/webkitpy/benchmark_runner/benchmark_runner.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/browser_driver/__init__.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/browser_driver/linux_browser_driver.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/browser_driver/linux_chrome_driver.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/browser_driver/linux_cog_driver.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/browser_driver/linux_epiphany_driver.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/browser_driver/linux_firefox_driver.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/browser_driver/linux_minibrowsergtk_driver.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/browser_driver/linux_minibrowserwpe_driver.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/http_server_driver/__init__.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/run_benchmark.py: Ditto.
+ * Scripts/webkitpy/benchmark_runner/webserver_benchmark_runner.py: Ditto.
+
+2019-12-04 Jonathan Bedard <jbed...@apple.com>
+
Python 3: Add support in webkitpy.tool
https://bugs.webkit.org/show_bug.cgi?id=204838
Modified: trunk/Tools/Scripts/test-webkitpy-python3 (253128 => 253129)
--- trunk/Tools/Scripts/test-webkitpy-python3 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/test-webkitpy-python3 2019-12-05 00:23:59 UTC (rev 253129)
@@ -34,6 +34,7 @@
PYTHON3_COMPATIBLE_DIRECTORIES = [
+ 'webkitpy.benchmark_runner',
'webkitpy.common',
'webkitpy.layout_tests.controllers',
'webkitpy.layout_tests.layout_package',
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_results.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_results.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_results.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -25,12 +25,14 @@
import re
import sys
+from webkitpy.common.iteration_compatibility import iteritems
+
class BenchmarkResults(object):
aggregators = {
'Total': (lambda values: sum(values)),
- 'Arithmetic': (lambda values: sum(values) / len(values)),
+ 'Arithmetic': (lambda values: sum(values) // len(values)),
'Geometric': (lambda values: math.exp(sum(map(math.log, values)) / len(values))),
}
metric_to_unit = {
@@ -79,7 +81,7 @@
@classmethod
def _format_values(cls, metric_name, values, scale_unit=True, show_iteration_values=False):
- values = map(float, values)
+ values = list(map(float, values))
total = sum(values)
mean = total / len(values)
square_sum = sum(map(lambda x: x * x, values))
@@ -104,7 +106,7 @@
if unit == 'ms':
unit = 's'
mean = float(mean) / 1000
- values = map(lambda value: float(value) / 1000, values)
+ values = list(map(lambda value: float(value) / 1000, values))
sample_stdev /= 1000
base = 1024 if unit == 'B' else 1000
@@ -135,7 +137,7 @@
@classmethod
def _aggregate_results(cls, tests):
results = {}
- for test_name, test in tests.iteritems():
+ for test_name, test in iteritems(tests):
results[test_name] = cls._aggregate_results_for_test(test)
return results
@@ -143,10 +145,10 @@
def _aggregate_results_for_test(cls, test):
subtest_results = cls._aggregate_results(test['tests']) if 'tests' in test else {}
results = {}
- for metric_name, metric in test.get('metrics', {}).iteritems():
+ for metric_name, metric in iteritems(test.get('metrics', {})):
if not isinstance(metric, list):
results[metric_name] = {None: {}}
- for config_name, values in metric.iteritems():
+ for config_name, values in iteritems(metric):
results[metric_name][None][config_name] = cls._flatten_list(values)
continue
@@ -154,7 +156,7 @@
results[metric_name] = {}
for aggregator in aggregator_list:
values_by_config_iteration = cls._subtest_values_by_config_iteration(subtest_results, metric_name, aggregator)
- for config_name, values_by_iteration in values_by_config_iteration.iteritems():
+ for config_name, values_by_iteration in iteritems(values_by_config_iteration):
results[metric_name].setdefault(aggregator, {})
results[metric_name][aggregator][config_name] = [cls._aggregate_values(aggregator, values) for values in values_by_iteration]
@@ -173,7 +175,7 @@
@classmethod
def _subtest_values_by_config_iteration(cls, subtest_results, metric_name, aggregator):
values_by_config_iteration = {}
- for subtest_name, subtest in subtest_results.iteritems():
+ for subtest_name, subtest in iteritems(subtest_results):
results_for_metric = subtest['metrics'].get(metric_name, {})
if aggregator in results_for_metric:
results_for_aggregator = results_for_metric.get(aggregator)
@@ -180,10 +182,10 @@
elif None in results_for_metric:
results_for_aggregator = results_for_metric.get(None)
elif len(results_for_metric.keys()) == 1:
- results_for_aggregator = results_for_metric.get(results_for_metric.keys()[0])
+ results_for_aggregator = results_for_metric.get(list(results_for_metric.keys())[0])
else:
results_for_aggregator = {}
- for config_name, values in results_for_aggregator.iteritems():
+ for config_name, values in iteritems(results_for_aggregator):
values_by_config_iteration.setdefault(config_name, [[] for _ in values])
for iteration, value in enumerate(values):
values_by_config_iteration[config_name][iteration].append(value)
@@ -201,7 +203,7 @@
@classmethod
def _lint_subtest_results(cls, subtests, parent_test, parent_aggregator_list):
iteration_groups_by_config = {}
- for test_name, test in subtests.iteritems():
+ for test_name, test in iteritems(subtests):
aggregator_list = None
if 'metrics' not in test and 'tests' not in test:
@@ -211,7 +213,7 @@
metrics = test['metrics']
if not isinstance(metrics, dict):
raise TypeError('The metrics in "%s" is not a dictionary' % test_name)
- for metric_name, metric in metrics.iteritems():
+ for metric_name, metric in iteritems(metrics):
if isinstance(metric, list):
cls._lint_aggregator_list(test_name, metric_name, metric, parent_test, parent_aggregator_list)
aggregator_list = metric
@@ -247,7 +249,7 @@
@classmethod
def _lint_configuration(cls, test_name, metric_name, configurations, parent_test, parent_aggregator_list, iteration_groups_by_config):
# FIXME: Check that config_name is always "current".
- for config_name, values in configurations.iteritems():
+ for config_name, values in iteritems(configurations):
nested_list_count = [isinstance(value, list) for value in values].count(True)
if nested_list_count not in [0, len(values)]:
raise TypeError('"%s" metric of "%s" had malformed values: %s' % (metric_name, test_name, json.dumps(values)))
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_results_unittest.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_results_unittest.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_results_unittest.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -22,7 +22,7 @@
import unittest
-from benchmark_results import BenchmarkResults
+from webkitpy.benchmark_runner.benchmark_results import BenchmarkResults
class BenchmarkResultsTest(unittest.TestCase):
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_runner.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_runner.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_runner.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -12,9 +12,9 @@
import os
import urlparse
-from benchmark_builder import BenchmarkBuilder
-from benchmark_results import BenchmarkResults
-from browser_driver.browser_driver_factory import BrowserDriverFactory
+from webkitpy.benchmark_runner.benchmark_builder import BenchmarkBuilder
+from webkitpy.benchmark_runner.benchmark_results import BenchmarkResults
+from webkitpy.benchmark_runner.browser_driver.browser_driver_factory import BrowserDriverFactory
_log = logging.getLogger(__name__)
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/__init__.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/__init__.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/__init__.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -14,7 +14,7 @@
import os
from webkitpy.benchmark_runner.utils import load_subclasses
-from browser_driver_factory import BrowserDriverFactory
+from webkitpy.benchmark_runner.browser_driver.browser_driver_factory import BrowserDriverFactory
def browser_driver_loader(browser_driver_class):
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_browser_driver.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_browser_driver.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_browser_driver.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -34,7 +34,7 @@
except ImportError:
pass
from webkitpy.benchmark_runner.utils import force_remove
-from browser_driver import BrowserDriver
+from webkitpy.benchmark_runner.browser_driver.browser_driver import BrowserDriver
_log = logging.getLogger(__name__)
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_chrome_driver.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_chrome_driver.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_chrome_driver.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -26,7 +26,7 @@
import os
-from linux_browser_driver import LinuxBrowserDriver
+from webkitpy.benchmark_runner.browser_driver.linux_browser_driver import LinuxBrowserDriver
class LinuxChromeDriver(LinuxBrowserDriver):
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_cog_driver.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_cog_driver.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_cog_driver.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -24,7 +24,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from linux_browser_driver import LinuxBrowserDriver
+from webkitpy.benchmark_runner.browser_driver.linux_browser_driver import LinuxBrowserDriver
class CogBrowserDriver(LinuxBrowserDriver):
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_epiphany_driver.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_epiphany_driver.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_epiphany_driver.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -24,7 +24,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from linux_browser_driver import LinuxBrowserDriver
+from webkitpy.benchmark_runner.browser_driver.linux_browser_driver import LinuxBrowserDriver
class EpiphanyBrowserDriver(LinuxBrowserDriver):
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_firefox_driver.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_firefox_driver.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_firefox_driver.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -26,7 +26,7 @@
import os
-from linux_browser_driver import LinuxBrowserDriver
+from webkitpy.benchmark_runner.browser_driver.linux_browser_driver import LinuxBrowserDriver
class LinuxFirefoxDriver(LinuxBrowserDriver):
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_minibrowsergtk_driver.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_minibrowsergtk_driver.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_minibrowsergtk_driver.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -24,7 +24,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from linux_browser_driver import LinuxBrowserDriver
+from webkitpy.benchmark_runner.browser_driver.linux_browser_driver import LinuxBrowserDriver
class GTKMiniBrowserDriver(LinuxBrowserDriver):
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_minibrowserwpe_driver.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_minibrowserwpe_driver.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_minibrowserwpe_driver.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -24,7 +24,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-from linux_browser_driver import LinuxBrowserDriver
+from webkitpy.benchmark_runner.browser_driver.linux_browser_driver import LinuxBrowserDriver
class WPEMiniBrowserDriver(LinuxBrowserDriver):
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -4,7 +4,7 @@
import subprocess
import time
-from browser_driver import BrowserDriver
+from webkitpy.benchmark_runner.browser_driver.browser_driver import BrowserDriver
from webkitpy.benchmark_runner.utils import write_defaults
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -3,7 +3,7 @@
import logging
import os
-from osx_browser_driver import OSXBrowserDriver
+from webkitpy.benchmark_runner.browser_driver.osx_browser_driver import OSXBrowserDriver
_log = logging.getLogger(__name__)
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -3,7 +3,7 @@
import logging
import os
-from osx_browser_driver import OSXBrowserDriver
+from webkitpy.benchmark_runner.browser_driver.osx_browser_driver import OSXBrowserDriver
_log = logging.getLogger(__name__)
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -6,7 +6,7 @@
import subprocess
import time
-from osx_browser_driver import OSXBrowserDriver
+from webkitpy.benchmark_runner.browser_driver.osx_browser_driver import OSXBrowserDriver
from webkitpy.benchmark_runner.utils import force_remove
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/__init__.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/__init__.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/__init__.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -15,7 +15,7 @@
import imp
from webkitpy.benchmark_runner.utils import load_subclasses
-from http_server_driver_factory import HTTPServerDriverFactory
+from webkitpy.benchmark_runner.http_server_driver.http_server_driver_factory import HTTPServerDriverFactory
def http_server_driver_loader(http_server_driver_class):
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -8,7 +8,7 @@
import sys
import time
-from http_server_driver import HTTPServerDriver
+from webkitpy.benchmark_runner.http_server_driver.http_server_driver import HTTPServerDriver
_log = logging.getLogger(__name__)
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/run_benchmark.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/run_benchmark.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/run_benchmark.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -7,10 +7,10 @@
import os
import sys
-from browser_driver.browser_driver_factory import BrowserDriverFactory
-from benchmark_runner import BenchmarkRunner
-from webdriver_benchmark_runner import WebDriverBenchmarkRunner
-from webserver_benchmark_runner import WebServerBenchmarkRunner
+from webkitpy.benchmark_runner.browser_driver.browser_driver_factory import BrowserDriverFactory
+from webkitpy.benchmark_runner.benchmark_runner import BenchmarkRunner
+from webkitpy.benchmark_runner.webdriver_benchmark_runner import WebDriverBenchmarkRunner
+from webkitpy.benchmark_runner.webserver_benchmark_runner import WebServerBenchmarkRunner
_log = logging.getLogger(__name__)
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/webserver_benchmark_runner.py (253128 => 253129)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/webserver_benchmark_runner.py 2019-12-05 00:10:42 UTC (rev 253128)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/webserver_benchmark_runner.py 2019-12-05 00:23:59 UTC (rev 253129)
@@ -4,8 +4,8 @@
import logging
import urlparse
-from benchmark_runner import BenchmarkRunner
-from http_server_driver.http_server_driver_factory import HTTPServerDriverFactory
+from webkitpy.benchmark_runner.benchmark_runner import BenchmarkRunner
+from webkitpy.benchmark_runner.http_server_driver.http_server_driver_factory import HTTPServerDriverFactory
from webkitpy.common.timeout_context import Timeout