| Index: chrome/test/functional/process_count.py
|
| diff --git a/chrome/test/functional/process_count.py b/chrome/test/functional/process_count.py
|
| index aee73a096ff21335f8bb905cb777f192f0659137..99caed1aba1830d633655c684c31ca671f2e2316 100644
|
| --- a/chrome/test/functional/process_count.py
|
| +++ b/chrome/test/functional/process_count.py
|
| @@ -12,46 +12,75 @@ import pyauto
|
| class ProcessCountTest(pyauto.PyUITest):
|
| """Tests to ensure the number of Chrome-related processes is as expected."""
|
|
|
| - def _VerifyProcessCount(self, expected_count):
|
| + FRESH_PROFILE_PROC_COUNT = {
|
| + 'win': 2, # Processes: browser, tab.
|
| + 'mac': 2, # Processes: browser, tab.
|
| + 'linux': 4, # Processes: browser, tab, sandbox helper, zygote.
|
| + 'chromeos': 5, # Processes: browser, tab, sandbox helper, zygote, GPU.
|
| + }
|
| +
|
| + CHROME_PROCESS_NAME = {
|
| + 'win': 'chrome.exe',
|
| + 'mac': 'Chromium',
|
| + 'linux': 'chrome',
|
| + 'chromeos': 'chrome',
|
| + }
|
| +
|
| + def setUp(self):
|
| + self.proc_count_fresh_profile = 0
|
| + self.chrome_proc_name = ''
|
| + if self.IsChromeOS():
|
| + self.proc_count_fresh_profile = self.FRESH_PROFILE_PROC_COUNT['chromeos']
|
| + self.chrome_proc_name = self.CHROME_PROCESS_NAME['chromeos']
|
| + elif self.IsWin():
|
| + self.proc_count_fresh_profile = self.FRESH_PROFILE_PROC_COUNT['win']
|
| + self.chrome_proc_name = self.CHROME_PROCESS_NAME['win']
|
| + elif self.IsMac():
|
| + self.proc_count_fresh_profile = self.FRESH_PROFILE_PROC_COUNT['mac']
|
| + self.chrome_proc_name = self.CHROME_PROCESS_NAME['mac']
|
| + elif self.IsLinux():
|
| + self.proc_count_fresh_profile = self.FRESH_PROFILE_PROC_COUNT['linux']
|
| + self.chrome_proc_name = self.CHROME_PROCESS_NAME['linux']
|
| +
|
| + pyauto.PyUITest.setUp(self)
|
| +
|
| + def _VerifyProcessCount(self, num_expected):
|
| """Verifies the number of Chrome-related processes is as expected.
|
|
|
| Args:
|
| - expected_count: An integer representing the expected number of Chrome-
|
| - related processes that should currently exist.
|
| + num_expected: An integer representing the expected number of Chrome-
|
| + related processes that should currently exist.
|
| """
|
| - # Compute the actual number of Chrome-related processes that exist.
|
| - # Processes include: a single browser process; a single renderer process
|
| - # for each tab in each window; 0 or more child processes (associated with
|
| - # plugins or other workers); and 0 or more extension processes.
|
| - info = self.GetBrowserInfo()
|
| - actual_count = (
|
| - 1 + # Browser process.
|
| - sum([len(tab_info['tabs']) for tab_info in info['windows']]) +
|
| - len(info['child_processes']) + len(info['extension_views']))
|
| -
|
| - self.assertEqual(actual_count, expected_count,
|
| - msg='Number of processes should be %d, but was %d.' %
|
| - (expected_count, actual_count))
|
| + proc_info = self.GetProcessInfo()
|
| + browser_info = [x for x in proc_info['browsers']
|
| + if x['process_name'] == self.chrome_proc_name]
|
| + assert len(browser_info) == 1
|
| + num_actual = len(browser_info[0]['processes'])
|
| +
|
| + self.assertEqual(num_actual, num_expected,
|
| + msg='Number of processes should be %d, but was %d.\n'
|
| + 'Actual process info:\n%s' % (
|
| + num_expected, num_actual, self.pformat(proc_info)))
|
|
|
| def testProcessCountFreshProfile(self):
|
| """Verifies the process count in a fresh profile."""
|
| - self._VerifyProcessCount(2)
|
| + self._VerifyProcessCount(self.proc_count_fresh_profile)
|
|
|
| def testProcessCountAppendSingleTab(self):
|
| """Verifies the process count after appending a single tab."""
|
| self.AppendTab(pyauto.GURL('about:blank'), 0)
|
| - self._VerifyProcessCount(3)
|
| + self._VerifyProcessCount(self.proc_count_fresh_profile + 1)
|
|
|
| def testProcessCountNewWindow(self):
|
| """Verifies the process count after opening a new window."""
|
| self.OpenNewBrowserWindow(True)
|
| - self._VerifyProcessCount(3)
|
| + self._VerifyProcessCount(self.proc_count_fresh_profile + 1)
|
|
|
| def testProcessCountFlashProcess(self):
|
| """Verifies the process count when the flash process is running."""
|
| flash_url = self.GetFileURLForDataPath('plugin', 'flash.swf')
|
| self.NavigateToURL(flash_url)
|
| - self._VerifyProcessCount(3)
|
| + self._VerifyProcessCount(self.proc_count_fresh_profile + 1)
|
|
|
| def testProcessCountExtensionProcess(self):
|
| """Verifies the process count when an extension is installed."""
|
| @@ -59,10 +88,15 @@ class ProcessCountTest(pyauto.PyUITest):
|
| os.path.join(self.DataDir(), 'extensions', 'page_action.crx'))
|
| self.assertTrue(self.InstallExtension(crx_file_path, False),
|
| msg='Extension install failed.')
|
| - self._VerifyProcessCount(3)
|
| + self._VerifyProcessCount(self.proc_count_fresh_profile + 1)
|
|
|
| def testProcessCountCombination(self):
|
| - """Verifies process count with a combination of tabs/windows/extensions."""
|
| + """Verifies process count with a combination of tabs/windows/extensions.
|
| +
|
| + This test installs 1 extension, appends 2 tabs to the window, navigates 1
|
| + tab to a flash page, opens 1 new window, and appends 3 tabs to the new
|
| + window (8 new processes expected).
|
| + """
|
| if self.IsMac():
|
| # On Mac 10.5, flash files loaded too quickly after firing browser ends
|
| # up getting downloaded, which seems to indicate that the plugin hasn't
|
| @@ -85,7 +119,7 @@ class ProcessCountTest(pyauto.PyUITest):
|
| for _ in xrange(3):
|
| self.AppendTab(pyauto.GURL('about:blank'), 1)
|
|
|
| - self._VerifyProcessCount(10)
|
| + self._VerifyProcessCount(self.proc_count_fresh_profile + 8)
|
|
|
|
|
| if __name__ == '__main__':
|
|
|