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

Side by Side Diff: tools/bisect-perf-regression_test.py

Issue 536553003: Parse Git hash for dependency repositories from DEPS file. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months 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 unified diff | Download patch
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import os 5 import os
6 import re
6 import unittest 7 import unittest
7 8
8 from auto_bisect import source_control as source_control_module 9 from auto_bisect import source_control as source_control_module
9 10
10 # Special import necessary because filename contains dash characters. 11 # Special import necessary because filename contains dash characters.
11 bisect_perf_module = __import__('bisect-perf-regression') 12 bisect_perf_module = __import__('bisect-perf-regression')
12 13
14 def GetBisectPerformanceMetricsInstance():
15 """Returns an instance of BisectPerformanceMetrics class."""
qyearsley 2014/09/04 18:42:36 Formatting nit: extra space. (And maybe it should
prasadv 2014/09/04 18:58:42 Done.
16 options_dict = {
17 'debug_ignore_build': True,
18 'debug_ignore_sync': True,
19 'debug_ignore_perf_test': True,
20 'command': 'fake_command',
21 'metric': 'fake/metric',
22 'good_revision': 280000,
23 'bad_revision': 280005,
24 }
25 bisect_options = bisect_perf_module.BisectOptions.FromDict(options_dict)
26 source_control = source_control_module.DetermineAndCreateSourceControl(
27 bisect_options)
28 bisect_instance = bisect_perf_module.BisectPerformanceMetrics(
29 source_control, bisect_options)
30 bisect_instance.src_cwd = os.path.abspath(
31 os.path.join(os.path.dirname(__file__), os.path.pardir))
32 return bisect_instance
qyearsley 2014/09/04 18:42:36 Formatting nit: Two blank spaces between top-level
prasadv 2014/09/04 18:58:42 Done.
13 33
14 class BisectPerfRegressionTest(unittest.TestCase): 34 class BisectPerfRegressionTest(unittest.TestCase):
15 """Test case for other functions and classes in bisect-perf-regression.py.""" 35 """Test case for other functions and classes in bisect-perf-regression.py."""
16 36
17 def _AssertConfidence(self, score, bad_values, good_values): 37 def _AssertConfidence(self, score, bad_values, good_values):
18 """Checks whether the given sets of values have a given confidence score. 38 """Checks whether the given sets of values have a given confidence score.
19 39
20 The score represents our confidence that the two sets of values wouldn't 40 The score represents our confidence that the two sets of values wouldn't
21 be as different as they are just by chance; that is, that some real change 41 be as different as they are just by chance; that is, that some real change
22 occurred between the two sets of values. 42 occurred between the two sets of values.
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 276628, 'chromium') 240 276628, 'chromium')
221 241
222 # This method doesn't reference self; it fails if an error is thrown. 242 # This method doesn't reference self; it fails if an error is thrown.
223 # pylint: disable=R0201 243 # pylint: disable=R0201
224 def testDryRun(self): 244 def testDryRun(self):
225 """Does a dry run of the bisect script. 245 """Does a dry run of the bisect script.
226 246
227 This serves as a smoke test to catch errors in the basic execution of the 247 This serves as a smoke test to catch errors in the basic execution of the
228 script. 248 script.
229 """ 249 """
230 options_dict = { 250 bisect_instance = GetBisectPerformanceMetricsInstance()
231 'debug_ignore_build': True, 251 results = bisect_instance.Run(bisect_instance.opts.command,
232 'debug_ignore_sync': True, 252 bisect_instance.opts.bad_revision,
233 'debug_ignore_perf_test': True, 253 bisect_instance.opts.good_revision,
234 'command': 'fake_command', 254 bisect_instance.opts.metric)
235 'metric': 'fake/metric',
236 'good_revision': 280000,
237 'bad_revision': 280005,
238 }
239 bisect_options = bisect_perf_module.BisectOptions.FromDict(options_dict)
240 source_control = source_control_module.DetermineAndCreateSourceControl(
241 bisect_options)
242 bisect_instance = bisect_perf_module.BisectPerformanceMetrics(
243 source_control, bisect_options)
244 bisect_instance.src_cwd = os.path.abspath(
245 os.path.join(os.path.dirname(__file__), '..'))
246 results = bisect_instance.Run(bisect_options.command,
247 bisect_options.bad_revision,
248 bisect_options.good_revision,
249 bisect_options.metric)
250 bisect_instance.FormatAndPrintResults(results) 255 bisect_instance.FormatAndPrintResults(results)
251 256
252 def testSVNFindRev(self): 257 def testSVNFindRev(self):
253 """Determine numerical SVN revision or Commit Position.""" 258 """Determine numerical SVN revision or Commit Position."""
254 options_dict = { 259 bisect_instance = GetBisectPerformanceMetricsInstance()
255 'debug_ignore_build': True,
256 'debug_ignore_sync': True,
257 'debug_ignore_perf_test': True,
258 'command': 'fake_command',
259 'metric': 'fake/metric',
260 'good_revision': 280000,
261 'bad_revision': 280005,
262 }
263 bisect_options = bisect_perf_module.BisectOptions.FromDict(options_dict)
264 source_control = source_control_module.DetermineAndCreateSourceControl(
265 bisect_options)
266
267 cp_git_rev = '7017a81991de983e12ab50dfc071c70e06979531' 260 cp_git_rev = '7017a81991de983e12ab50dfc071c70e06979531'
268 self.assertEqual(291765, source_control.SVNFindRev(cp_git_rev)) 261 self.assertEqual(291765,
262 bisect_instance.source_control.SVNFindRev(cp_git_rev))
269 263
270 svn_git_rev = 'e6db23a037cad47299a94b155b95eebd1ee61a58' 264 svn_git_rev = 'e6db23a037cad47299a94b155b95eebd1ee61a58'
271 self.assertEqual(291467, source_control.SVNFindRev(svn_git_rev)) 265 self.assertEqual(291467,
266 bisect_instance.source_control.SVNFindRev(svn_git_rev))
267
268 def testUpdateDepsContent(self):
269 bisect_instance = GetBisectPerformanceMetricsInstance()
270 deps_file = 'DEPS'
271 # We are intentionally reading DEPS file contents instead of string literal
272 # with few lines from DEPS because to check if the format we are expecting
273 # to search is not changed in DEPS content.
274 # TODO (prasadv): Add a separate test to validate the DEPS contents with the
275 # format that bisect script expects.
276 deps_contents = bisect_perf_module.ReadStringFromFile(deps_file)
277 deps_key = 'v8_revision'
278 depot = 'v8'
279 git_revision = 'a12345789a23456789a123456789a123456789'
280 updated_content = bisect_instance.UpdateDepsContents(
281 deps_contents, depot, git_revision, deps_key)
282 self.assertIsNotNone(updated_content)
283 ss = re.compile('["\']%s["\']: ["\']%s["\']' % (deps_key, git_revision))
284 self.assertIsNotNone(re.search(ss, updated_content))
285
286
272 287
qyearsley 2014/09/04 18:42:36 Formatting nit: should be 2 blank lines rather tha
prasadv 2014/09/04 18:58:42 Done.
273 if __name__ == '__main__': 288 if __name__ == '__main__':
274 unittest.main() 289 unittest.main()
OLDNEW
« tools/bisect-perf-regression.py ('K') | « tools/bisect-perf-regression.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698