Index: tools/telemetry/telemetry/internal/browser/browser_unittest.py |
diff --git a/tools/telemetry/telemetry/internal/browser/browser_unittest.py b/tools/telemetry/telemetry/internal/browser/browser_unittest.py |
deleted file mode 100644 |
index 2f744f0e4e8b393322e1de3d19092a60d58200f1..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/telemetry/internal/browser/browser_unittest.py |
+++ /dev/null |
@@ -1,258 +0,0 @@ |
-# Copyright 2012 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-import logging |
-import os |
-import shutil |
-import tempfile |
-import unittest |
- |
-from telemetry.core import util |
-from telemetry import decorators |
-from telemetry.internal.browser import browser as browser_module |
-from telemetry.internal.browser import browser_finder |
-from telemetry.internal.platform import gpu_device |
-from telemetry.internal.platform import gpu_info |
-from telemetry.internal.platform import system_info |
-from telemetry.internal.util import path |
-from telemetry.testing import browser_test_case |
-from telemetry.testing import options_for_unittests |
-from telemetry.timeline import tracing_config |
- |
-import mock |
- |
- |
-class IntentionalException(Exception): |
- pass |
- |
- |
-class BrowserTest(browser_test_case.BrowserTestCase): |
- def testBrowserCreation(self): |
- self.assertEquals(1, len(self._browser.tabs)) |
- |
- # Different browsers boot up to different things. |
- assert self._browser.tabs[0].url |
- |
- @decorators.Enabled('has tabs') |
- def testNewCloseTab(self): |
- existing_tab = self._browser.tabs[0] |
- self.assertEquals(1, len(self._browser.tabs)) |
- existing_tab_url = existing_tab.url |
- |
- new_tab = self._browser.tabs.New() |
- self.assertEquals(2, len(self._browser.tabs)) |
- self.assertEquals(existing_tab.url, existing_tab_url) |
- self.assertEquals(new_tab.url, 'about:blank') |
- |
- new_tab.Close() |
- self.assertEquals(1, len(self._browser.tabs)) |
- self.assertEquals(existing_tab.url, existing_tab_url) |
- |
- def testMultipleTabCalls(self): |
- self._browser.tabs[0].Navigate(self.UrlOfUnittestFile('blank.html')) |
- self._browser.tabs[0].WaitForDocumentReadyStateToBeInteractiveOrBetter() |
- |
- def testTabCallByReference(self): |
- tab = self._browser.tabs[0] |
- tab.Navigate(self.UrlOfUnittestFile('blank.html')) |
- self._browser.tabs[0].WaitForDocumentReadyStateToBeInteractiveOrBetter() |
- |
- @decorators.Enabled('has tabs') |
- @decorators.Disabled('win') # crbug.com/321527 |
- def testCloseReferencedTab(self): |
- self._browser.tabs.New() |
- tab = self._browser.tabs[0] |
- tab.Navigate(self.UrlOfUnittestFile('blank.html')) |
- tab.Close() |
- self.assertEquals(1, len(self._browser.tabs)) |
- |
- @decorators.Enabled('has tabs') |
- def testForegroundTab(self): |
- # Should be only one tab at this stage, so that must be the foreground tab |
- original_tab = self._browser.tabs[0] |
- self.assertEqual(self._browser.foreground_tab, original_tab) |
- new_tab = self._browser.tabs.New() |
- # New tab shouls be foreground tab |
- self.assertEqual(self._browser.foreground_tab, new_tab) |
- # Make sure that activating the background tab makes it the foreground tab |
- original_tab.Activate() |
- self.assertEqual(self._browser.foreground_tab, original_tab) |
- # Closing the current foreground tab should switch the foreground tab to the |
- # other tab |
- original_tab.Close() |
- self.assertEqual(self._browser.foreground_tab, new_tab) |
- |
- def testGetSystemInfo(self): |
- if not self._browser.supports_system_info: |
- logging.warning( |
- 'Browser does not support getting system info, skipping test.') |
- return |
- |
- info = self._browser.GetSystemInfo() |
- |
- self.assertTrue(isinstance(info, system_info.SystemInfo)) |
- self.assertTrue(hasattr(info, 'model_name')) |
- self.assertTrue(hasattr(info, 'gpu')) |
- self.assertTrue(isinstance(info.gpu, gpu_info.GPUInfo)) |
- self.assertTrue(hasattr(info.gpu, 'devices')) |
- self.assertTrue(len(info.gpu.devices) > 0) |
- for g in info.gpu.devices: |
- self.assertTrue(isinstance(g, gpu_device.GPUDevice)) |
- |
- def testGetSystemInfoNotCachedObject(self): |
- if not self._browser.supports_system_info: |
- logging.warning( |
- 'Browser does not support getting system info, skipping test.') |
- return |
- |
- info_a = self._browser.GetSystemInfo() |
- info_b = self._browser.GetSystemInfo() |
- self.assertFalse(info_a is info_b) |
- |
- def testGetSystemTotalMemory(self): |
- self.assertTrue(self._browser.memory_stats['SystemTotalPhysicalMemory'] > 0) |
- |
- @decorators.Disabled('mac', 'linux', 'chromeos') # crbug.com/499208. |
- @decorators.Disabled('win') # crbug.com/570955. |
- def testIsTracingRunning(self): |
- tracing_controller = self._browser.platform.tracing_controller |
- if not tracing_controller.IsChromeTracingSupported(): |
- return |
- self.assertFalse(tracing_controller.is_tracing_running) |
- config = tracing_config.TracingConfig() |
- config.enable_chrome_trace = True |
- tracing_controller.StartTracing(config) |
- self.assertTrue(tracing_controller.is_tracing_running) |
- tracing_controller.StopTracing() |
- self.assertFalse(tracing_controller.is_tracing_running) |
- |
- |
-class CommandLineBrowserTest(browser_test_case.BrowserTestCase): |
- @classmethod |
- def CustomizeBrowserOptions(cls, options): |
- options.AppendExtraBrowserArgs('--user-agent=telemetry') |
- |
- def testCommandLineOverriding(self): |
- # This test starts the browser with --user-agent=telemetry. This tests |
- # whether the user agent is then set. |
- t = self._browser.tabs[0] |
- t.Navigate(self.UrlOfUnittestFile('blank.html')) |
- t.WaitForDocumentReadyStateToBeInteractiveOrBetter() |
- self.assertEquals(t.EvaluateJavaScript('navigator.userAgent'), |
- 'telemetry') |
- |
-class DirtyProfileBrowserTest(browser_test_case.BrowserTestCase): |
- @classmethod |
- def CustomizeBrowserOptions(cls, options): |
- options.profile_type = 'small_profile' |
- |
- @decorators.Disabled('chromeos') # crbug.com/243912 |
- def testDirtyProfileCreation(self): |
- self.assertEquals(1, len(self._browser.tabs)) |
- |
- |
-class BrowserLoggingTest(browser_test_case.BrowserTestCase): |
- @classmethod |
- def CustomizeBrowserOptions(cls, options): |
- options.enable_logging = True |
- |
- @decorators.Disabled('chromeos', 'android') |
- def testLogFileExist(self): |
- self.assertTrue( |
- os.path.isfile(self._browser._browser_backend.log_file_path)) |
- |
- |
-def _GenerateBrowserProfile(number_of_tabs): |
- """ Generate a browser profile which browser had |number_of_tabs| number of |
- tabs opened before it was closed. |
- Returns: |
- profile_dir: the directory of profile. |
- """ |
- profile_dir = tempfile.mkdtemp() |
- options = options_for_unittests.GetCopy() |
- options.output_profile_path = profile_dir |
- browser_to_create = browser_finder.FindBrowser(options) |
- with browser_to_create.Create(options) as browser: |
- browser.platform.SetHTTPServerDirectories(path.GetUnittestDataDir()) |
- blank_file_path = os.path.join(path.GetUnittestDataDir(), 'blank.html') |
- blank_url = browser.platform.http_server.UrlOf(blank_file_path) |
- browser.foreground_tab.Navigate(blank_url) |
- browser.foreground_tab.WaitForDocumentReadyStateToBeComplete() |
- for _ in xrange(number_of_tabs - 1): |
- tab = browser.tabs.New() |
- tab.Navigate(blank_url) |
- tab.WaitForDocumentReadyStateToBeComplete() |
- return profile_dir |
- |
- |
-class BrowserCreationTest(unittest.TestCase): |
- def setUp(self): |
- self.mock_browser_backend = mock.MagicMock() |
- self.mock_platform_backend = mock.MagicMock() |
- |
- def testCleanedUpCalledWhenExceptionRaisedInBrowserCreation(self): |
- self.mock_platform_backend.platform.FlushDnsCache.side_effect = ( |
- IntentionalException('Boom!')) |
- with self.assertRaises(IntentionalException): |
- browser_module.Browser( |
- self.mock_browser_backend, self.mock_platform_backend, |
- credentials_path=None) |
- self.assertTrue(self.mock_platform_backend.WillCloseBrowser.called) |
- |
- def testOriginalExceptionNotSwallow(self): |
- self.mock_platform_backend.platform.FlushDnsCache.side_effect = ( |
- IntentionalException('Boom!')) |
- self.mock_platform_backend.WillCloseBrowser.side_effect = ( |
- IntentionalException('Cannot close browser!')) |
- with self.assertRaises(IntentionalException) as context: |
- browser_module.Browser( |
- self.mock_browser_backend, self.mock_platform_backend, |
- credentials_path=None) |
- self.assertIn('Boom!', context.exception.message) |
- |
- |
-class BrowserRestoreSessionTest(unittest.TestCase): |
- |
- @classmethod |
- def setUpClass(cls): |
- cls._number_of_tabs = 4 |
- cls._profile_dir = _GenerateBrowserProfile(cls._number_of_tabs) |
- cls._options = options_for_unittests.GetCopy() |
- cls._options.browser_options.AppendExtraBrowserArgs( |
- ['--restore-last-session']) |
- cls._options.browser_options.profile_dir = cls._profile_dir |
- cls._browser_to_create = browser_finder.FindBrowser(cls._options) |
- |
- @decorators.Enabled('has tabs') |
- @decorators.Disabled('chromeos', 'win', 'mac') |
- # TODO(nednguyen): Enable this test on windowsn platform |
- def testRestoreBrowserWithMultipleTabs(self): |
- with self._browser_to_create.Create(self._options) as browser: |
- # The number of tabs will be self._number_of_tabs + 1 as it includes the |
- # old tabs and a new blank tab. |
- expected_number_of_tabs = self._number_of_tabs + 1 |
- try: |
- util.WaitFor(lambda: len(browser.tabs) == expected_number_of_tabs, 10) |
- except: |
- logging.error('Number of tabs is %s' % len(browser.tabs)) |
- raise |
- self.assertEquals(expected_number_of_tabs, len(browser.tabs)) |
- |
- @classmethod |
- def tearDownClass(cls): |
- shutil.rmtree(cls._profile_dir) |
- |
- |
-class ReferenceBrowserTest(unittest.TestCase): |
- |
- @decorators.Enabled('win', 'mac', 'linux') |
- def testBasicBrowserActions(self): |
- options = options_for_unittests.GetCopy() |
- options.browser_type = 'reference' |
- browser_to_create = browser_finder.FindBrowser(options) |
- self.assertIsNotNone(browser_to_create) |
- with browser_to_create.Create(options) as ref_browser: |
- tab = ref_browser.tabs.New() |
- tab.Navigate('about:blank') |
- self.assertEquals(2, tab.EvaluateJavaScript('1 + 1')) |