| Index: tools/telemetry/telemetry/core/backends/remote/trybot_browser_finder_unittest.py
|
| diff --git a/tools/telemetry/telemetry/core/backends/remote/trybot_browser_finder_unittest.py b/tools/telemetry/telemetry/core/backends/remote/trybot_browser_finder_unittest.py
|
| index d7427c4ee9e9160530114bf7a0d8dfa2e9d88393..e9ec7ffc70d6fc7c876d0347e68badd0ab6ca8d2 100644
|
| --- a/tools/telemetry/telemetry/core/backends/remote/trybot_browser_finder_unittest.py
|
| +++ b/tools/telemetry/telemetry/core/backends/remote/trybot_browser_finder_unittest.py
|
| @@ -42,34 +42,41 @@ class TrybotBrowserFinderTest(unittest.TestCase):
|
| 'Popen').WithArgs(arg[0]).WillReturn(mock_popen)
|
| trybot_browser_finder.subprocess = mock_subprocess
|
|
|
| - def test_find_all_browser_types_list(self):
|
| - finder_options = browser_options.BrowserFinderOptions(browser_type='list')
|
| + def _MockTryserverJson(self, bots_dict):
|
| trybot_browser_finder.urllib2 = simple_mock.MockObject()
|
| trybot_browser_finder.urllib2.ExpectCall('urlopen').WithArgs(
|
| 'http://build.chromium.org/p/tryserver.chromium.perf/json').WillReturn(
|
| - StringIO.StringIO(json.dumps({'builders': {
|
| - 'android_nexus4_perf_bisect': 'stuff',
|
| - 'mac_10_9_perf_bisect': 'otherstuff',
|
| - 'win_perf_bisect_builder': 'not a trybot',
|
| - }})))
|
| + StringIO.StringIO(json.dumps({'builders': bots_dict})))
|
| +
|
| + def test_find_all_browser_types_list(self):
|
| + finder_options = browser_options.BrowserFinderOptions(browser_type='list')
|
| + self._MockTryserverJson({
|
| + 'android_nexus4_perf_bisect': 'stuff',
|
| + 'mac_10_9_perf_bisect': 'otherstuff',
|
| + 'win_perf_bisect_builder': 'not a trybot',
|
| + })
|
| + expected_trybots_list = ['trybot-all', 'trybot-all-android',
|
| + 'trybot-all-linux', 'trybot-all-mac', 'trybot-all-win',
|
| + 'trybot-android-nexus4', 'trybot-mac-10-9']
|
| +
|
| self.assertEquals(
|
| - ['trybot-android-nexus4', 'trybot-mac-10-9'],
|
| + expected_trybots_list,
|
| # pylint: disable=W0212
|
| sorted(trybot_browser_finder.FindAllBrowserTypes(finder_options)))
|
|
|
| def test_find_all_browser_types_trybot(self):
|
| finder_options = browser_options.BrowserFinderOptions(
|
| browser_type='trybot-win')
|
| - trybot_browser_finder.urllib2 = simple_mock.MockObject()
|
| - trybot_browser_finder.urllib2.ExpectCall('urlopen').WithArgs(
|
| - 'http://build.chromium.org/p/tryserver.chromium.perf/json').WillReturn(
|
| - StringIO.StringIO(json.dumps({'builders': {
|
| - 'android_nexus4_perf_bisect': 'stuff',
|
| - 'mac_10_9_perf_bisect': 'otherstuff',
|
| - 'win_perf_bisect_builder': 'not a trybot',
|
| - }})))
|
| + self._MockTryserverJson({
|
| + 'android_nexus4_perf_bisect': 'stuff',
|
| + 'mac_10_9_perf_bisect': 'otherstuff',
|
| + 'win_perf_bisect_builder': 'not a trybot',
|
| + })
|
| + expected_trybots_list = ['trybot-all', 'trybot-all-android',
|
| + 'trybot-all-linux', 'trybot-all-mac', 'trybot-all-win',
|
| + 'trybot-android-nexus4', 'trybot-mac-10-9']
|
| self.assertEquals(
|
| - ['trybot-android-nexus4', 'trybot-mac-10-9'],
|
| + expected_trybots_list,
|
| # pylint: disable=W0212
|
| sorted(trybot_browser_finder.FindAllBrowserTypes(finder_options)))
|
|
|
| @@ -84,15 +91,144 @@ class TrybotBrowserFinderTest(unittest.TestCase):
|
|
|
| def test_constructor(self):
|
| finder_options = browser_options.BrowserFinderOptions()
|
| + self._MockTryserverJson({
|
| + 'android_nexus4_perf_bisect': 'stuff',
|
| + 'mac_10_9_perf_bisect': 'otherstuff',
|
| + 'win_perf_bisect_builder': 'not a trybot',
|
| + })
|
| browser = trybot_browser_finder.PossibleTrybotBrowser(
|
| 'trybot-android-nexus4', finder_options)
|
| # pylint: disable=W0212
|
| self.assertEquals('android', browser._target_os)
|
| # pylint: disable=W0212
|
| - self.assertEquals('android_nexus4_perf_bisect', browser._buildername)
|
| + self.assertTrue('android' in browser._buildernames)
|
| + self.assertEquals(['android_nexus4_perf_bisect'],
|
| + browser._buildernames.get('android'))
|
| +
|
| + def test_constructor_trybot_all(self):
|
| + finder_options = browser_options.BrowserFinderOptions()
|
| + self._MockTryserverJson({
|
| + 'android_nexus4_perf_bisect': 'stuff',
|
| + 'android_nexus5_perf_bisect': 'stuff2',
|
| + 'mac_10_9_perf_bisect': 'otherstuff',
|
| + 'mac_perf_bisect': 'otherstuff1',
|
| + 'win_perf_bisect': 'otherstuff2',
|
| + 'linux_perf_bisect': 'otherstuff3',
|
| + 'win_x64_perf_bisect': 'otherstuff4',
|
| + 'win_perf_bisect_builder': 'not a trybot',
|
| + })
|
| + browser = trybot_browser_finder.PossibleTrybotBrowser(
|
| + 'trybot-all', finder_options)
|
| +
|
| + # pylint: disable=W0212
|
| + self.assertEquals('all', browser._target_os)
|
| + # pylint: disable=W0212
|
| + self.assertEquals(
|
| + ['android', 'linux', 'mac', 'win', 'win_x64'],
|
| + sorted(browser._buildernames))
|
| + self.assertEquals(
|
| + ['android_nexus4_perf_bisect', 'android_nexus5_perf_bisect'],
|
| + sorted(browser._buildernames.get('android')))
|
| + self.assertEquals(
|
| + ['mac_10_9_perf_bisect', 'mac_perf_bisect'],
|
| + sorted(browser._buildernames.get('mac')))
|
| + self.assertEquals(
|
| + ['linux_perf_bisect'], sorted(browser._buildernames.get('linux')))
|
| + self.assertEquals(
|
| + ['win_perf_bisect'], sorted(browser._buildernames.get('win')))
|
| + self.assertEquals(
|
| + ['win_x64_perf_bisect'], sorted(browser._buildernames.get('win_x64')))
|
| +
|
| + def test_constructor_trybot_all_win(self):
|
| + finder_options = browser_options.BrowserFinderOptions()
|
| + self._MockTryserverJson({
|
| + 'android_nexus4_perf_bisect': 'stuff',
|
| + 'android_nexus5_perf_bisect': 'stuff2',
|
| + 'win_8_perf_bisect': 'otherstuff',
|
| + 'win_perf_bisect': 'otherstuff2',
|
| + 'linux_perf_bisect': 'otherstuff3',
|
| + 'win_x64_perf_bisect': 'otherstuff4',
|
| + 'win_perf_bisect_builder': 'not a trybot',
|
| + })
|
| + browser = trybot_browser_finder.PossibleTrybotBrowser(
|
| + 'trybot-all-win', finder_options)
|
| +
|
| + # pylint: disable=W0212
|
| + self.assertEquals('all', browser._target_os)
|
| + # pylint: disable=W0212
|
| + self.assertEquals(
|
| + ['win', 'win_x64'],
|
| + sorted(browser._buildernames))
|
| + self.assertEquals(
|
| + ['win_8_perf_bisect', 'win_perf_bisect'],
|
| + sorted(browser._buildernames.get('win')))
|
| + self.assertEquals(
|
| + ['win_x64_perf_bisect'], sorted(browser._buildernames.get('win_x64')))
|
| +
|
| + def test_constructor_trybot_all_android(self):
|
| + finder_options = browser_options.BrowserFinderOptions()
|
| + self._MockTryserverJson({
|
| + 'android_nexus4_perf_bisect': 'stuff',
|
| + 'android_nexus5_perf_bisect': 'stuff2',
|
| + 'win_8_perf_bisect': 'otherstuff',
|
| + 'win_perf_bisect': 'otherstuff2',
|
| + 'linux_perf_bisect': 'otherstuff3',
|
| + 'win_x64_perf_bisect': 'otherstuff4',
|
| + 'win_perf_bisect_builder': 'not a trybot',
|
| + })
|
| + browser = trybot_browser_finder.PossibleTrybotBrowser(
|
| + 'trybot-all-android', finder_options)
|
| + self.assertEquals(
|
| + ['android_nexus4_perf_bisect', 'android_nexus5_perf_bisect'],
|
| + sorted(browser._buildernames.get('android')))
|
| +
|
| +
|
| + def test_constructor_trybot_all_mac(self):
|
| + finder_options = browser_options.BrowserFinderOptions()
|
| + self._MockTryserverJson({
|
| + 'android_nexus4_perf_bisect': 'stuff',
|
| + 'win_8_perf_bisect': 'otherstuff',
|
| + 'mac_perf_bisect': 'otherstuff2',
|
| + 'win_perf_bisect_builder': 'not a trybot',
|
| + })
|
| + browser = trybot_browser_finder.PossibleTrybotBrowser(
|
| + 'trybot-all-mac', finder_options)
|
| +
|
| + # pylint: disable=W0212
|
| + self.assertEquals('all', browser._target_os)
|
| + # pylint: disable=W0212
|
| + self.assertEquals(
|
| + ['mac'],
|
| + sorted(browser._buildernames))
|
| + self.assertEquals(
|
| + ['mac_perf_bisect'],
|
| + sorted(browser._buildernames.get('mac')))
|
| +
|
| + def test_constructor_trybot_all_linux(self):
|
| + finder_options = browser_options.BrowserFinderOptions()
|
| + self._MockTryserverJson({
|
| + 'android_nexus4_perf_bisect': 'stuff',
|
| + 'linux_perf_bisect': 'stuff1',
|
| + 'win_8_perf_bisect': 'otherstuff',
|
| + 'mac_perf_bisect': 'otherstuff2',
|
| + 'win_perf_bisect_builder': 'not a trybot',
|
| + })
|
| + browser = trybot_browser_finder.PossibleTrybotBrowser(
|
| + 'trybot-all-linux', finder_options)
|
| +
|
| + # pylint: disable=W0212
|
| + self.assertEquals('all', browser._target_os)
|
| + # pylint: disable=W0212
|
| + self.assertEquals(
|
| + ['linux'],
|
| + sorted(browser._buildernames))
|
| + self.assertEquals(
|
| + ['linux_perf_bisect'],
|
| + sorted(browser._buildernames.get('linux')))
|
|
|
| def test_no_git(self):
|
| finder_options = browser_options.BrowserFinderOptions()
|
| + self._MockTryserverJson({'android_nexus4_perf_bisect': 'stuff'})
|
| browser = trybot_browser_finder.PossibleTrybotBrowser(
|
| 'trybot-android-nexus4', finder_options)
|
| self._ExpectProcesses((
|
| @@ -105,6 +241,7 @@ class TrybotBrowserFinderTest(unittest.TestCase):
|
|
|
| def test_dirty_tree(self):
|
| finder_options = browser_options.BrowserFinderOptions()
|
| + self._MockTryserverJson({'android_nexus4_perf_bisect': 'stuff'})
|
| browser = trybot_browser_finder.PossibleTrybotBrowser(
|
| 'trybot-android-nexus4', finder_options)
|
| self._ExpectProcesses((
|
| @@ -120,6 +257,7 @@ class TrybotBrowserFinderTest(unittest.TestCase):
|
|
|
| def test_no_local_commits(self):
|
| finder_options = browser_options.BrowserFinderOptions()
|
| + self._MockTryserverJson({'android_nexus4_perf_bisect': 'stuff'})
|
| browser = trybot_browser_finder.PossibleTrybotBrowser(
|
| 'trybot-android-nexus4', finder_options)
|
| self._ExpectProcesses((
|
| @@ -137,11 +275,13 @@ class TrybotBrowserFinderTest(unittest.TestCase):
|
| self.assertEquals(
|
| ('No local changes found in chromium or blink trees. '
|
| 'browser=trybot-android-nexus4 argument sends local changes to the '
|
| - 'android_nexus4_perf_bisect perf trybot.\n'),
|
| + 'perf trybot(s): '
|
| + '[[\'android_nexus4_perf_bisect\']].\n'),
|
| self.log_output.getvalue())
|
|
|
| def test_branch_checkout_fails(self):
|
| finder_options = browser_options.BrowserFinderOptions()
|
| + self._MockTryserverJson({'android_nexus4_perf_bisect': 'stuff'})
|
| browser = trybot_browser_finder.PossibleTrybotBrowser(
|
| 'trybot-android-nexus4', finder_options)
|
| self._ExpectProcesses((
|
| @@ -160,10 +300,12 @@ class TrybotBrowserFinderTest(unittest.TestCase):
|
| 'fatal: A branch named \'telemetry-try\' already exists.\n'),
|
| self.log_output.getvalue())
|
|
|
| - def _GetConfigForBrowser(self, name, branch, cfg_filename, is_blink=False):
|
| + def _GetConfigForBrowser(self, name, platform, branch, cfg_filename,
|
| + is_blink=False):
|
| finder_options = browser_options.BrowserFinderOptions()
|
| - browser = trybot_browser_finder.PossibleTrybotBrowser(name, finder_options)
|
| bot = '%s_perf_bisect' % name.replace('trybot-', '').replace('-', '_')
|
| + self._MockTryserverJson({bot: 'stuff'})
|
| + browser = trybot_browser_finder.PossibleTrybotBrowser(name, finder_options)
|
| first_processes = ()
|
| if is_blink:
|
| first_processes = (
|
| @@ -180,9 +322,10 @@ class TrybotBrowserFinderTest(unittest.TestCase):
|
| (['git', 'checkout', '-b', 'telemetry-tryjob'], (0, None, None)),
|
| (['git', 'branch', '--set-upstream-to', 'origin/master'],
|
| (0, None, None)),
|
| - (['git', 'commit', '-a', '-m', 'bisect config'], (0, None, None)),
|
| + (['git', 'commit', '-a', '-m', 'bisect config: %s' % platform],
|
| + (0, None, None)),
|
| (['git', 'cl', 'upload', '-f', '--bypass-hooks', '-m',
|
| - 'CL for perf tryjob'],
|
| + 'CL for perf tryjob on %s' % platform],
|
| (0, 'stuff https://codereview.chromium.org/12345 stuff', None)),
|
| (['git', 'cl', 'try', '-m', 'tryserver.chromium.perf', '-b', bot],
|
| (0, None, None)),
|
| @@ -201,7 +344,8 @@ class TrybotBrowserFinderTest(unittest.TestCase):
|
|
|
| def test_config_android(self):
|
| config = self._GetConfigForBrowser(
|
| - 'trybot-android-nexus4', 'somebranch', 'tools/run-perf-test.cfg')
|
| + 'trybot-android-nexus4', 'android','somebranch',
|
| + 'tools/run-perf-test.cfg')
|
| self.assertEquals(
|
| ('config = {\n'
|
| ' "command": "./tools/perf/run_benchmark '
|
| @@ -214,7 +358,7 @@ class TrybotBrowserFinderTest(unittest.TestCase):
|
|
|
| def test_config_mac(self):
|
| config = self._GetConfigForBrowser(
|
| - 'trybot-mac-10-9', 'currentwork', 'tools/run-perf-test.cfg')
|
| + 'trybot-mac-10-9', 'mac', 'currentwork', 'tools/run-perf-test.cfg')
|
| self.assertEquals(
|
| ('config = {\n'
|
| ' "command": "./tools/perf/run_benchmark '
|
| @@ -227,7 +371,7 @@ class TrybotBrowserFinderTest(unittest.TestCase):
|
|
|
| def test_config_win_x64(self):
|
| config = self._GetConfigForBrowser(
|
| - 'trybot-win-x64', 'currentwork', 'tools/run-perf-test.cfg')
|
| + 'trybot-win-x64', 'win-x64', 'currentwork', 'tools/run-perf-test.cfg')
|
| self.assertEquals(
|
| ('config = {\n'
|
| ' "command": "python tools\\\\perf\\\\run_benchmark '
|
| @@ -240,7 +384,8 @@ class TrybotBrowserFinderTest(unittest.TestCase):
|
|
|
| def test_config_blink(self):
|
| config = self._GetConfigForBrowser(
|
| - 'trybot-mac-10-9', 'blinkbranch', 'Tools/run-perf-test.cfg', True)
|
| + 'trybot-mac-10-9', 'mac', 'blinkbranch',
|
| + 'Tools/run-perf-test.cfg', True)
|
| self.assertEquals(
|
| ('config = {\n'
|
| ' "command": "./tools/perf/run_benchmark '
|
| @@ -250,3 +395,96 @@ class TrybotBrowserFinderTest(unittest.TestCase):
|
| ' "target_arch": "ia32",\n'
|
| ' "truncate_percent": "0"\n'
|
| '}'), config)
|
| +
|
| + def test_update_config_git_commit_tryboterror(self):
|
| + finder_options = browser_options.BrowserFinderOptions()
|
| + self._MockTryserverJson({'android_nexus4_perf_bisect': 'stuff'})
|
| + browser = trybot_browser_finder.PossibleTrybotBrowser(
|
| + 'trybot-android-nexus4', finder_options)
|
| + self._ExpectProcesses((
|
| + (['git', 'commit', '-a', '-m', 'bisect config: android'],
|
| + (128, 'None', 'commit failed')),
|
| + (['git', 'cl', 'upload', '-f', '--bypass-hooks', '-m',
|
| + 'CL for perf tryjob on android'],
|
| + (0, 'stuff https://codereview.chromium.org/12345 stuff', None)),
|
| + (['git', 'cl', 'try', '-m', 'tryserver.chromium.perf', '-b',
|
| + 'android_nexus4_perf_bisect'], (0, None, None))))
|
| + self._stubs.sys.argv = [
|
| + 'tools/perf/run_benchmark',
|
| + '--browser=%s' % browser,
|
| + 'sunspider']
|
| + cfg_filename = 'tools/run-perf-test.cfg'
|
| + cfg = StringIO.StringIO()
|
| + self._stubs.open.files = {cfg_filename: cfg}
|
| + self.assertRaises(trybot_browser_finder.TrybotError,
|
| + browser._UpdateConfigAndRunTryjob, 'android', cfg_filename)
|
| +
|
| + def test_update_config_git_upload_tryboterror(self):
|
| + finder_options = browser_options.BrowserFinderOptions()
|
| + self._MockTryserverJson({'android_nexus4_perf_bisect': 'stuff'})
|
| + browser = trybot_browser_finder.PossibleTrybotBrowser(
|
| + 'trybot-android-nexus4', finder_options)
|
| + self._ExpectProcesses((
|
| + (['git', 'commit', '-a', '-m', 'bisect config: android'],
|
| + (0, 'None', None)),
|
| + (['git', 'cl', 'upload', '-f', '--bypass-hooks', '-m',
|
| + 'CL for perf tryjob on android'],
|
| + (128, None, 'error')),
|
| + (['git', 'cl', 'try', '-m', 'tryserver.chromium.perf', '-b',
|
| + 'android_nexus4_perf_bisect'], (0, None, None))))
|
| + self._stubs.sys.argv = [
|
| + 'tools/perf/run_benchmark',
|
| + '--browser=%s' % browser,
|
| + 'sunspider']
|
| + cfg_filename = 'tools/run-perf-test.cfg'
|
| + cfg = StringIO.StringIO()
|
| + self._stubs.open.files = {cfg_filename: cfg}
|
| + self.assertRaises(trybot_browser_finder.TrybotError,
|
| + browser._UpdateConfigAndRunTryjob, 'android', cfg_filename)
|
| +
|
| + def test_update_config_git_try_tryboterror(self):
|
| + finder_options = browser_options.BrowserFinderOptions()
|
| + self._MockTryserverJson({'android_nexus4_perf_bisect': 'stuff'})
|
| + browser = trybot_browser_finder.PossibleTrybotBrowser(
|
| + 'trybot-android-nexus4', finder_options)
|
| + self._ExpectProcesses((
|
| + (['git', 'commit', '-a', '-m', 'bisect config: android'],
|
| + (0, 'None', None)),
|
| + (['git', 'cl', 'upload', '-f', '--bypass-hooks', '-m',
|
| + 'CL for perf tryjob on android'],
|
| + (0, 'stuff https://codereview.chromium.org/12345 stuff', None)),
|
| + (['git', 'cl', 'try', '-m', 'tryserver.chromium.perf', '-b',
|
| + 'android_nexus4_perf_bisect'], (128, None, None))))
|
| + self._stubs.sys.argv = [
|
| + 'tools/perf/run_benchmark',
|
| + '--browser=%s' % browser,
|
| + 'sunspider']
|
| + cfg_filename = 'tools/run-perf-test.cfg'
|
| + cfg = StringIO.StringIO()
|
| + self._stubs.open.files = {cfg_filename: cfg}
|
| + self.assertRaises(trybot_browser_finder.TrybotError,
|
| + browser._UpdateConfigAndRunTryjob, 'android', cfg_filename)
|
| +
|
| + def test_update_config_git_try(self):
|
| + finder_options = browser_options.BrowserFinderOptions()
|
| + self._MockTryserverJson({'android_nexus4_perf_bisect': 'stuff'})
|
| + browser = trybot_browser_finder.PossibleTrybotBrowser(
|
| + 'trybot-android-nexus4', finder_options)
|
| + self._ExpectProcesses((
|
| + (['git', 'commit', '-a', '-m', 'bisect config: android'],
|
| + (0, 'None', None)),
|
| + (['git', 'cl', 'upload', '-f', '--bypass-hooks', '-m',
|
| + 'CL for perf tryjob on android'],
|
| + (0, 'stuff https://codereview.chromium.org/12345 stuff', None)),
|
| + (['git', 'cl', 'try', '-m', 'tryserver.chromium.perf', '-b',
|
| + 'android_nexus4_perf_bisect'], (0, None, None))))
|
| + self._stubs.sys.argv = [
|
| + 'tools/perf/run_benchmark',
|
| + '--browser=%s' % browser,
|
| + 'sunspider']
|
| + cfg_filename = 'tools/run-perf-test.cfg'
|
| + cfg = StringIO.StringIO()
|
| + self._stubs.open.files = {cfg_filename: cfg}
|
| + self.assertEquals((0, 'https://codereview.chromium.org/12345'),
|
| + browser._UpdateConfigAndRunTryjob('android', cfg_filename))
|
| +
|
|
|