- Revision
- 184109
- Author
- [email protected]
- Date
- 2015-05-11 11:02:57 -0700 (Mon, 11 May 2015)
Log Message
run-benchmark should support Chrome Canary and Firefox Nightly
https://bugs.webkit.org/show_bug.cgi?id=144850
Reviewed by Darin Adler.
Added the support for Chrome Canary, Firefox (release), and Firefox Nightly.
This patch also extracts OSXBrowserDriver to launch and terminate processes on OS X.
* Scripts/webkitpy/benchmark_runner/browser_driver/browser_drivers.json:
* Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py: Added.
(OSXBrowserDriver):
(OSXBrowserDriver.prepareEnv): Extracted from ChromeBrowserDriver.prepareEnv.
(OSXBrowserDriver.closeBrowsers): Ditto.
(OSXBrowserDriver.launchProcess): Ditto.
(OSXBrowserDriver.terminateProcesses): Ditto.
* Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py:
(OSXChromeDriver): Removed the unused self.chromePreferences.
(OSXChromeDriver.prepareEnv): Moved to OSXBrowserDriver.
(OSXChromeDriver.closeBrowsers): Ditto.
(OSXChromeDriver.launchUrl):
(OSXChromeCanaryDriver): Added.
(OSXChromeCanaryDriver.launchUrl):
* Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py: Added.
(OSXFirefoxDriver): Added.
(OSXFirefoxDriver.launchUrl):
(OSXFirefoxNightlyDriver): Added.
(OSXFirefoxNightlyDriver.launchUrl):
* Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py:
(OSXSafariDriver):
(OSXSafariDriver.closeBrowsers):
Modified Paths
Added Paths
Diff
Modified: trunk/Tools/ChangeLog (184108 => 184109)
--- trunk/Tools/ChangeLog 2015-05-11 17:50:25 UTC (rev 184108)
+++ trunk/Tools/ChangeLog 2015-05-11 18:02:57 UTC (rev 184109)
@@ -1,3 +1,37 @@
+2015-05-11 Ryosuke Niwa <[email protected]>
+
+ run-benchmark should support Chrome Canary and Firefox Nightly
+ https://bugs.webkit.org/show_bug.cgi?id=144850
+
+ Reviewed by Darin Adler.
+
+ Added the support for Chrome Canary, Firefox (release), and Firefox Nightly.
+
+ This patch also extracts OSXBrowserDriver to launch and terminate processes on OS X.
+
+ * Scripts/webkitpy/benchmark_runner/browser_driver/browser_drivers.json:
+ * Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py: Added.
+ (OSXBrowserDriver):
+ (OSXBrowserDriver.prepareEnv): Extracted from ChromeBrowserDriver.prepareEnv.
+ (OSXBrowserDriver.closeBrowsers): Ditto.
+ (OSXBrowserDriver.launchProcess): Ditto.
+ (OSXBrowserDriver.terminateProcesses): Ditto.
+ * Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py:
+ (OSXChromeDriver): Removed the unused self.chromePreferences.
+ (OSXChromeDriver.prepareEnv): Moved to OSXBrowserDriver.
+ (OSXChromeDriver.closeBrowsers): Ditto.
+ (OSXChromeDriver.launchUrl):
+ (OSXChromeCanaryDriver): Added.
+ (OSXChromeCanaryDriver.launchUrl):
+ * Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py: Added.
+ (OSXFirefoxDriver): Added.
+ (OSXFirefoxDriver.launchUrl):
+ (OSXFirefoxNightlyDriver): Added.
+ (OSXFirefoxNightlyDriver.launchUrl):
+ * Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py:
+ (OSXSafariDriver):
+ (OSXSafariDriver.closeBrowsers):
+
2015-05-11 Tim Horton <[email protected]>
Page overlay action context override should indicate the source of the request
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/browser_drivers.json (184108 => 184109)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/browser_drivers.json 2015-05-11 17:50:25 UTC (rev 184108)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/browser_drivers.json 2015-05-11 18:02:57 UTC (rev 184109)
@@ -3,7 +3,19 @@
"chrome": {
"moduleName": "OSXChromeDriver",
"filePath": "browser_driver.osx_chrome_driver"
- },
+ },
+ "chrome-canary": {
+ "moduleName": "OSXChromeCanaryDriver",
+ "filePath": "browser_driver.osx_chrome_driver"
+ },
+ "firefox": {
+ "moduleName": "OSXFirefoxDriver",
+ "filePath": "browser_driver.osx_firefox_driver"
+ },
+ "firefox-nightly": {
+ "moduleName": "OSXFirefoxNightlyDriver",
+ "filePath": "browser_driver.osx_firefox_driver"
+ },
"safari": {
"moduleName": "OSXSafariDriver",
"filePath": "browser_driver.osx_safari_driver"
Added: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py (0 => 184109)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py (rev 0)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py 2015-05-11 18:02:57 UTC (rev 184109)
@@ -0,0 +1,38 @@
+
+import logging
+import os
+import subprocess
+
+from AppKit import NSRunningApplication
+from browser_driver import BrowserDriver
+
+
+_log = logging.getLogger(__name__)
+
+
+class OSXBrowserDriver(BrowserDriver):
+ bundleIdentifier = None
+
+ def prepareEnv(self):
+ self.closeBrowsers()
+
+ def closeBrowsers(self):
+ self.terminateProcesses(self.bundleIdentifier)
+
+ @classmethod
+ def launchProcess(cls, buildDir, appName, url, args):
+ if not buildDir:
+ buildDir = '/Applications/'
+ appPath = os.path.join(buildDir, appName)
+
+ _log.info('Launching "%s" with url "%s"' % (appPath, url))
+
+ # FIXME: May need to be modified for a local build such as setting up DYLD libraries
+ subprocess.Popen((['open', '-a', appPath] + args)).communicate()
+
+ @classmethod
+ def terminateProcesses(cls, bundleIdentifier):
+ _log.info('Closing all terminating all processes with the bundle identifier %s' % bundleIdentifier)
+ processes = NSRunningApplication.runningApplicationsWithBundleIdentifier_(bundleIdentifier)
+ for process in processes:
+ process.terminate()
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py (184108 => 184109)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py 2015-05-11 17:50:25 UTC (rev 184108)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py 2015-05-11 18:02:57 UTC (rev 184109)
@@ -5,29 +5,21 @@
import subprocess
import time
-# We assume that this handle can only be used when the platform is OSX
-from AppKit import NSRunningApplication
-from browser_driver import BrowserDriver
+from osx_browser_driver import OSXBrowserDriver
_log = logging.getLogger(__name__)
-class OSXChromeDriver(BrowserDriver):
+class OSXChromeDriver(OSXBrowserDriver):
+ bundleIdentifier = 'com.google.Chrome'
- def prepareEnv(self):
- self.closeBrowsers()
- self.chromePreferences = []
-
def launchUrl(self, url, browserBuildPath):
- if not browserBuildPath:
- browserBuildPath = '/Applications/'
- _log.info('Launching chrome: %s with url: %s' % (os.path.join(browserBuildPath, 'Google Chrome.app'), url))
- # FIXME: May need to be modified for develop build, such as setting up libraries
- subprocess.Popen(['open', '-a', os.path.join(browserBuildPath, 'Google Chrome.app'), '--args', '--homepage', url] + self.chromePreferences).communicate()
+ self.launchProcess(buildDir=browserBuildPath, appName='Google Chrome.app', url="" args=['--args', '--homepage', url])
- def closeBrowsers(self):
- _log.info('Closing all existing chrome processes')
- chromes = NSRunningApplication.runningApplicationsWithBundleIdentifier_('com.google.Chrome')
- for chrome in chromes:
- chrome.terminate()
+
+class OSXChromeCanaryDriver(OSXBrowserDriver):
+ bundleIdentifier = 'com.google.Chrome.canary'
+
+ def launchUrl(self, url, browserBuildPath):
+ self.launchProcess(buildDir=browserBuildPath, appName='Google Chrome Canary.app', url="" args=['--args', '--homepage', url])
Added: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py (0 => 184109)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py (rev 0)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py 2015-05-11 18:02:57 UTC (rev 184109)
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+
+import logging
+import os
+import subprocess
+import time
+
+from osx_browser_driver import OSXBrowserDriver
+
+
+_log = logging.getLogger(__name__)
+
+
+class OSXFirefoxDriver(OSXBrowserDriver):
+ bundleIdentifier = 'org.mozilla.firefox'
+
+ def launchUrl(self, url, browserBuildPath):
+ self.launchProcess(buildDir=browserBuildPath, appName='Firefox.app', url="" args=[url])
+
+
+class OSXFirefoxNightlyDriver(OSXBrowserDriver):
+ bundleIdentifier = 'org.mozilla.nightly'
+
+ def launchUrl(self, url, browserBuildPath):
+ self.launchProcess(buildDir=browserBuildPath, appName='FirefoxNightly.app', url="" args=[url])
Modified: trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py (184108 => 184109)
--- trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py 2015-05-11 17:50:25 UTC (rev 184108)
+++ trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py 2015-05-11 18:02:57 UTC (rev 184109)
@@ -5,16 +5,14 @@
import subprocess
import time
-# We assume that this handle can only be used when the platform is OSX.
-from AppKit import NSRunningApplication
-from browser_driver import BrowserDriver
+from osx_browser_driver import OSXBrowserDriver
from webkitpy.benchmark_runner.utils import forceRemove
_log = logging.getLogger(__name__)
-class OSXSafariDriver(BrowserDriver):
+class OSXSafariDriver(OSXBrowserDriver):
def prepareEnv(self):
self.safariProcess = None
@@ -43,10 +41,7 @@
subprocess.Popen(['open', url])
def closeBrowsers(self):
- _log.info('Closing all existing safari processes')
- safariInstances = NSRunningApplication.runningApplicationsWithBundleIdentifier_('com.apple.Safari')
- for safariInstance in safariInstances:
- safariInstance.terminate()
+ self.terminateProcesses('com.apple.Safari')
if self.safariProcess:
_log.info('Safari process console output:\nstdout: %s\nstderr: %s' % self.safariProcess.communicate())
if self.safariProcess.returncode: