- Revision
- 188244
- Author
- commit-qu...@webkit.org
- Date
- 2015-08-10 20:15:00 -0700 (Mon, 10 Aug 2015)
Log Message
Update ReadMe and correct the way to use abstract abstract class.
https://bugs.webkit.org/show_bug.cgi?id=147860
Patch by Dewei Zhu <dewei_...@apple.com> on 2015-08-10
Reviewed by Ryosuke Niwa.
Update ReadMe according to recent changes. And set ABCMeta to be the __metaclass__ of BrowserDriver and HTTPServerDriver,
so that all methods annotated by 'abstractmethod' will check whether they are implememnt by subclasses.
* Scripts/webkitpy/benchmark_runner/README.md:
* Scripts/webkitpy/benchmark_runner/browser_driver/browser_driver.py:
(BrowserDriver):
* Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py:
(OSXBrowserDriver.restore_env):
* Scripts/webkitpy/benchmark_runner/http_server_driver/http_server_driver.py:
(HTTPServerDriver):
(HTTPServerDriver.set_device_id):
* Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py:
(SimpleHTTPServerDriver.get_return_code):
(SimpleHTTPServerDriver):
(SimpleHTTPServerDriver.set_device_id):
Modified Paths
Diff
Modified: trunk/Tools/ChangeLog (188243 => 188244)
--- trunk/Tools/ChangeLog 2015-08-11 02:49:35 UTC (rev 188243)
+++ trunk/Tools/ChangeLog 2015-08-11 03:15:00 UTC (rev 188244)
@@ -1,3 +1,26 @@
+2015-08-10 Dewei Zhu <dewei_...@apple.com>
+
+ Update ReadMe and correct the way to use abstract abstract class.
+ https://bugs.webkit.org/show_bug.cgi?id=147860
+
+ Reviewed by Ryosuke Niwa.
+
+ Update ReadMe according to recent changes. And set ABCMeta to be the __metaclass__ of BrowserDriver and HTTPServerDriver,
+ so that all methods annotated by 'abstractmethod' will check whether they are implememnt by subclasses.
+
+ * Scripts/webkitpy/benchmark_runner/README.md:
+ * Scripts/webkitpy/benchmark_runner/browser_driver/browser_driver.py:
+ (BrowserDriver):
+ * Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py:
+ (OSXBrowserDriver.restore_env):
+ * Scripts/webkitpy/benchmark_runner/http_server_driver/http_server_driver.py:
+ (HTTPServerDriver):
+ (HTTPServerDriver.set_device_id):
+ * Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py:
+ (SimpleHTTPServerDriver.get_return_code):
+ (SimpleHTTPServerDriver):
+ (SimpleHTTPServerDriver.set_device_id):
+
2015-08-10 Alex Christensen <achristen...@webkit.org>
Build TestWebKitAPI with CMake on Windows
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/README.md (188243 => 188244)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/README.md 2015-08-11 02:49:35 UTC (rev 188243)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/README.md 2015-08-11 03:15:00 UTC (rev 188244)
@@ -5,27 +5,37 @@
benchmark_runner
├── README.md
├── __init__.py
-├── benchmark_builder
-│ ├── __init__.py
-│ ├── benchmark_builder_factory.py
-│ ├── benchmark_builders.json
-│ ├── generic_benchmark_builder.py
-│ └── jetstream_benchmark_builder.py
+├── benchmark_builder.py
+├── benchmark_results.py
+├── benchmark_results_unittest.py
├── benchmark_runner.py
├── browser_driver
│ ├── __init__.py
│ ├── browser_driver.py
│ ├── browser_driver_factory.py
-│ ├── browser_drivers.json
+│ ├── osx_browser_driver.py
│ ├── osx_chrome_driver.py
+│ ├── osx_firefox_driver.py
│ └── osx_safari_driver.py
├── data
│ ├── patches
+│ │ ├── Dromaeo.patch
+│ │ ├── JSBench.patch
│ │ ├── JetStream.patch
-│ │ └── Speedometer.patch
+│ │ ├── Kraken.patch
+│ │ ├── Octane.patch
+│ │ ├── Speedometer.patch
+│ │ └── SunSpider.patch
│ └── plans
+│ ├── dromaeo-cssquery.plan
+│ ├── dromaeo-dom.plan
+│ ├── dromaeo-jslib.plan
│ ├── jetstream.plan
-│ └── speedometer.plan
+│ ├── jsbench.plan
+│ ├── kraken.plan
+│ ├── octane.plan
+│ ├── speedometer.plan
+│ └── sunspider.plan
├── generic_factory.py
├── http_server_driver
│ ├── __init__.py
@@ -33,8 +43,8 @@
│ │ └── twisted_http_server.py
│ ├── http_server_driver.py
│ ├── http_server_driver_factory.py
-│ ├── http_server_drivers.json
│ └── simple_http_server_driver.py
+├── run_benchmark.py
└── utils.py
```
## Requirements
@@ -54,10 +64,8 @@
To create a plan, you may refer to Plans/jetstream.plan.
```json
{
- "http_server_driver": "SimpleHTTPServerDriver",
"timeout" : 600,
"count": 5,
- "benchmark_builder": "JetStreamBenchmarkBuilder",
"local_copy": "../../../../PerformanceTests/JetStream",
"benchmark_patch": "data/patches/JetStream.patch",
"entry_point": "JetStream/JetStream-1.0.1/index.html",
@@ -65,11 +73,9 @@
}
```
Plan is a json-formatted dictionary which contains following keys
-* **http_server_driver**: (**case-sensitive**) the http server module you want to host the resources. Current available option is "SimpleHTTPServerHandle" which is based on python twisted framework.
* **timeout**: time limit for **EACH RUN** of the benchmark. This can avoid program getting stuck in the extreme circumstances. The time limit is suggested to be 1.5-2x the time spent in a normal run.
* **count**: the number of times you want to run benchmark
-* **benchmark_builder**: builder of the benchmark which is responsible for arranging benchmark before the web server serving the directory. In most case, 'GenericBenchmarkHandler' is sufficient. It copies the benchmark to a temporary directory and applies patch to benchmark. If you have special requirement, you could design your own benchmark handle, just like the 'JetStreamBenchmarkHandle' in this example.
-* **local_copy**: path of benchmark, a relative path to the root of this project ('benchmark_runner' directory)
+* **local_copy**: (**OPTIONAL**) Path of benchmark, a relative path to the root of this project ('benchmark_runner' directory)
* **remote_archive**: (**OPTIONAL**) URL of the remote (http/https) ZIP file that contains the benchmark.
* **benchmark_path**: (**OPTIONAL**) path of patch, a relative path to the root of this project ('benchmark_runner' directory)
* **entry_point**: the relative url you want browser to launch (a relative path to the benchmark directory)
@@ -103,4 +109,3 @@
* Do following instruction **ONLY IF NEEDED**. In most case, you do not have to.
* If you want to customize BrowserDriver for specific browser/platform, you need to extend browser_driver/browser_driver.py and register your module in browser_driver/browser_driversjson.
* If you want to customize HTTPServerDriver, you need to extend http_server_drirver/http_server_driver and register your module in http_server_driver/http_server_drivers.json.
- * If you want to customize BenchmarkBuilder, you need to extend benchmark_builder/generic_benchmark_builder register you module in benchmark_builder/benchmark_builders.json
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/browser_driver.py (188243 => 188244)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/browser_driver.py 2015-08-11 02:49:35 UTC (rev 188243)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/browser_driver.py 2015-08-11 03:15:00 UTC (rev 188244)
@@ -1,24 +1,25 @@
#!/usr/bin/env python
-import abc
+from abc import ABCMeta, abstractmethod
-
class BrowserDriver(object):
platform = None
browser_name = None
- @abc.abstractmethod
+ ___metaclass___ = ABCMeta
+
+ @abstractmethod
def prepare_env(self, device_id):
pass
- @abc.abstractmethod
+ @abstractmethod
def launch_url(self, url, browser_build_path=None):
pass
- @abc.abstractmethod
+ @abstractmethod
def close_browsers(self):
pass
- @abc.abstractmethod
+ @abstractmethod
def restore_env(self):
pass
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py (188243 => 188244)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py 2015-08-11 02:49:35 UTC (rev 188243)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py 2015-08-11 03:15:00 UTC (rev 188244)
@@ -18,6 +18,9 @@
from Quartz import CGWarpMouseCursorPosition
CGWarpMouseCursorPosition((10, 0))
+ def restore_env(self):
+ pass
+
def close_browsers(self):
self._terminiate_processes(self.process_name)
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/http_server_driver.py (188243 => 188244)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/http_server_driver.py 2015-08-11 02:49:35 UTC (rev 188243)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/http_server_driver.py 2015-08-11 03:15:00 UTC (rev 188244)
@@ -1,11 +1,13 @@
#!/usr/bin/env python
-from abc import abstractmethod
+from abc import abstractmethod, ABCMeta
class HTTPServerDriver(object):
platforms = []
+ __metaclass__ = ABCMeta
+
@abstractmethod
def serve(self, webRoot):
pass
@@ -23,5 +25,5 @@
pass
@abstractmethod
- def set_device_id(self, deviceID):
+ def set_device_id(self, device_id):
pass
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py (188243 => 188244)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py 2015-08-11 02:49:35 UTC (rev 188243)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py 2015-08-11 03:15:00 UTC (rev 188244)
@@ -91,3 +91,6 @@
def get_return_code(self):
return self._server_process.returncode
+
+ def set_device_id(self, device_id):
+ pass