Title: [184109] trunk/Tools
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:
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to