Index: chrome/test/functional/perf_endure.py |
diff --git a/chrome/test/functional/perf_endure.py b/chrome/test/functional/perf_endure.py |
index bad91e102eeeacbdf0952fb3de7f273fb06cd4b3..2381ea838747e68ebf4c990158a896c02cfce6a9 100644 |
--- a/chrome/test/functional/perf_endure.py |
+++ b/chrome/test/functional/perf_endure.py |
@@ -250,20 +250,19 @@ class ChromeEndureControlTest(ChromeEndureBaseTest): |
_webapp_name = 'Control' |
_tab_title_substring = 'Chrome Endure Control Test' |
- def testControlAttachDetachDOMTree(self): |
- """Continually attach and detach a DOM tree from a basic document.""" |
- test_description = 'AttachDetachDOMTree' |
- |
- url = self.GetHttpURLForDataPath('chrome_endure', 'endurance_control.html') |
- self.NavigateToURL(url) |
+ # TODO(dennisjeffrey): Make this function available to the other Chrome Endure |
+ # tests so that we can remove duplicated code in those other tests as well. |
+ # Ideally, tests shouldn't have knowledge about the details of how the test |
+ # harness runs; the only main difference between the tests is that they |
+ # navigate to different URLs, and perform different scenarios on them. |
+ def _RunControlTest(self, test_description, data_file_url, do_scenario): |
+ """Runs a general control test.""" |
+ self.NavigateToURL(data_file_url) |
loaded_tab_title = self.GetActiveTabTitle() |
self.assertTrue(self._tab_title_substring in loaded_tab_title, |
msg='Loaded tab title does not contain "%s": "%s"' % |
(self._tab_title_substring, loaded_tab_title)) |
- # This test performs no interaction with the webpage. It simply sleeps |
- # and periodically checks to see whether it's time to take performance |
- # measurements. |
self._test_start_time = time.time() |
last_perf_stats_time = time.time() |
self._GetPerformanceStats(self._webapp_name, test_description, |
@@ -278,16 +277,52 @@ class ChromeEndureControlTest(ChromeEndureBaseTest): |
self._tab_title_substring) |
if iteration_num % 10 == 0: |
- remaining_time = self._test_length_sec - ( |
- time.time() - self._test_start_time) |
+ remaining_time = self._test_length_sec - (time.time() - |
+ self._test_start_time) |
logging.info('Chrome interaction #%d. Time remaining in test: %d sec.' % |
(iteration_num, remaining_time)) |
- time.sleep(5) |
+ do_scenario() |
self._GetPerformanceStats(self._webapp_name, test_description, |
self._tab_title_substring) |
+ def testControlAttachDetachDOMTree(self): |
+ """Continually attach and detach a DOM tree from a basic document.""" |
+ test_description = 'AttachDetachDOMTree' |
+ url = self.GetHttpURLForDataPath('chrome_endure', 'endurance_control.html') |
+ |
+ def scenario(): |
+ # This test performs no interaction with the webpage. It simply sleeps |
+ # and periodically checks to see whether it's time to take performance |
+ # measurements. |
+ time.sleep(5) |
+ |
+ self._RunControlTest(test_description, url, scenario) |
+ |
+ |
+ def testControlAttachDetachDOMTreeWebDriver(self): |
+ """Use WebDriver to attach and detach a DOM tree from a basic document.""" |
+ test_description = 'AttachDetachDOMTreeWebDriver' |
+ url = self.GetHttpURLForDataPath('chrome_endure', |
+ 'endurance_control_webdriver.html') |
+ |
+ driver = self.NewWebDriver() |
+ wait = WebDriverWait(driver, timeout=60) |
+ |
+ def scenario(driver, wait): |
+ # Interact with the control test webpage for the duration of the test. |
+ # Here, we repeat the following sequence of interactions: click the |
+ # "attach" button to attach a large DOM tree (with event listeners) to the |
+ # document, wait half a second, click "detach" to detach the DOM tree from |
+ # the document, wait half a second. |
+ self._ClickElementByXpath(driver, wait, 'id("attach")') |
+ time.sleep(0.5) |
+ self._ClickElementByXpath(driver, wait, 'id("detach")') |
+ time.sleep(0.5) |
+ |
+ self._RunControlTest(test_description, url, lambda: scenario(driver, wait)) |
+ |
class ChromeEndureGmailTest(ChromeEndureBaseTest): |
"""Long-running performance tests for Chrome using Gmail.""" |
@@ -362,8 +397,8 @@ class ChromeEndureGmailTest(ChromeEndureBaseTest): |
self._tab_title_substring) |
if iteration_num % 10 == 0: |
- remaining_time = self._test_length_sec - ( |
- time.time() - self._test_start_time) |
+ remaining_time = self._test_length_sec - (time.time() - |
+ self._test_start_time) |
logging.info('Chrome interaction #%d. Time remaining in test: %d sec.' % |
(iteration_num, remaining_time)) |
@@ -422,8 +457,8 @@ class ChromeEndureGmailTest(ChromeEndureBaseTest): |
self._tab_title_substring) |
if iteration_num % 10 == 0: |
- remaining_time = self._test_length_sec - ( |
- time.time() - self._test_start_time) |
+ remaining_time = self._test_length_sec - (time.time() - |
+ self._test_start_time) |
logging.info('Chrome interaction #%d. Time remaining in test: %d sec.' % |
(iteration_num, remaining_time)) |
@@ -483,8 +518,8 @@ class ChromeEndureGmailTest(ChromeEndureBaseTest): |
self._tab_title_substring) |
if iteration_num % 10 == 0: |
- remaining_time = self._test_length_sec - ( |
- time.time() - self._test_start_time) |
+ remaining_time = self._test_length_sec - (time.time() - |
+ self._test_start_time) |
logging.info('Chrome interaction #%d. Time remaining in test: %d sec.' % |
(iteration_num, remaining_time)) |
@@ -541,8 +576,8 @@ class ChromeEndureGmailTest(ChromeEndureBaseTest): |
self._tab_title_substring) |
if iteration_num % 10 == 0: |
- remaining_time = self._test_length_sec - ( |
- time.time() - self._test_start_time) |
+ remaining_time = self._test_length_sec - (time.time() - |
+ self._test_start_time) |
logging.info('Chrome interaction #%d. Time remaining in test: %d sec.' % |
(iteration_num, remaining_time)) |
@@ -608,8 +643,8 @@ class ChromeEndureGmailTest(ChromeEndureBaseTest): |
self._tab_title_substring) |
if iteration_num % 10 == 0: |
- remaining_time = self._test_length_sec - ( |
- time.time() - self._test_start_time) |
+ remaining_time = self._test_length_sec - (time.time() - |
+ self._test_start_time) |
logging.info('Chrome interaction #%d. Time remaining in test: %d sec.' % |
(iteration_num, remaining_time)) |
@@ -695,8 +730,8 @@ class ChromeEndureDocsTest(ChromeEndureBaseTest): |
self._tab_title_substring) |
if iteration_num % 10 == 0: |
- remaining_time = self._test_length_sec - ( |
- time.time() - self._test_start_time) |
+ remaining_time = self._test_length_sec - (time.time() - |
+ self._test_start_time) |
logging.info('Chrome interaction #%d. Time remaining in test: %d sec.' % |
(iteration_num, remaining_time)) |
@@ -774,8 +809,8 @@ class ChromeEndurePlusTest(ChromeEndureBaseTest): |
self._tab_title_substring) |
if iteration_num % 10 == 0: |
- remaining_time = self._test_length_sec - ( |
- time.time() - self._test_start_time) |
+ remaining_time = self._test_length_sec - (time.time() - |
+ self._test_start_time) |
logging.info('Chrome interaction #%d. Time remaining in test: %d sec.' % |
(iteration_num, remaining_time)) |