Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11350)

Unified Diff: chrome/test/functional/perf.py

Issue 8587019: Adding pyauto-based perf tests for WebGL demos Aquarium and Field. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/functional/perf.py
diff --git a/chrome/test/functional/perf.py b/chrome/test/functional/perf.py
index 43c937ff5dcd5d2f65b319387dcf664090c222cd..d07e8a21fa71a8cee27788309ad46dc5ef21ac33 100644
--- a/chrome/test/functional/perf.py
+++ b/chrome/test/functional/perf.py
@@ -601,6 +601,65 @@ class YoutubePerfTest(BasePerfTest, YoutubeTestHelper):
'extrapolation')
+class WebGLTest(BasePerfTest):
+ """Tests for WebGL performance."""
+
+ def _RunWebGLTest(self, url, description):
+ """Measures FPS using a specified WebGL demo.
+
+ Args:
+ url: The string URL that, once loaded, will run the WebGL demo (default
+ WebGL demo settings are used, since this test does not modify any
+ settings in the demo).
+ description: A string description for this demo, used as a performance
+ value description. Should not contain any spaces.
+ """
+ self.assertTrue(self.AppendTab(pyauto.GURL(url)),
+ msg='Failed to append tab for %s.' % description)
+
+ get_fps_js = """
+ var fps_field = document.getElementById("fps");
+ var result = -1;
+ if (fps_field)
+ result = fps_field.innerHTML;
+ window.domAutomationController.send(JSON.stringify(result));
+ """
+
+ # Wait until we start getting FPS values.
+ self.assertTrue(
+ self.WaitUntil(
+ lambda: self.ExecuteJavascript(get_fps_js, tab_index=1) != '-1',
+ timeout=300, retry_sleep=1),
+ msg='Timed out when waiting for FPS values to be available.')
+
+ # Let the experiment run for 5 seconds before we start collecting perf
+ # measurements.
+ time.sleep(5)
+
+ # Collect the current FPS value each second for the next 30 seconds. The
+ # final result of this test will be the average of these FPS values.
+ fps_vals = []
+ for _ in xrange(30):
+ fps = self.ExecuteJavascript(get_fps_js, tab_index=1)
+ fps_vals.append(float(fps.replace('"', '')))
+ time.sleep(1)
+ self._PrintSummaryResults(description, fps_vals, 'fps')
+
+ def testWebGLAquarium(self):
+ """Measures performance using the WebGL Aquarium demo."""
+ self._RunWebGLTest(
+ self.GetFileURLForDataPath('pyauto_private', 'webgl', 'aquarium',
+ 'aquarium.html'),
+ 'WebGLAquarium')
+
+ def testWebGLField(self):
+ """Measures performance using the WebGL Field demo."""
+ self._RunWebGLTest(
+ self.GetFileURLForDataPath('pyauto_private', 'webgl', 'field',
+ 'field.html'),
+ 'WebGLField')
+
+
class FileUploadDownloadTest(BasePerfTest):
"""Tests that involve measuring performance of upload and download."""
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698