Index: tools/bisect-perf-regression_test.py |
diff --git a/tools/bisect-perf-regression_test.py b/tools/bisect-perf-regression_test.py |
index 51cf7a41af60c6a42764351873680b952e52850a..16a3f13f0a513c278f933f12c66782fe524c423e 100644 |
--- a/tools/bisect-perf-regression_test.py |
+++ b/tools/bisect-perf-regression_test.py |
@@ -3,6 +3,7 @@ |
# found in the LICENSE file. |
import os |
+import re |
import unittest |
from auto_bisect import source_control as source_control_module |
@@ -10,6 +11,26 @@ from auto_bisect import source_control as source_control_module |
# Special import necessary because filename contains dash characters. |
bisect_perf_module = __import__('bisect-perf-regression') |
+def _GetBisectPerformanceMetricsInstance(): |
+ """Returns an instance of the BisectPerformanceMetrics class.""" |
+ options_dict = { |
+ 'debug_ignore_build': True, |
+ 'debug_ignore_sync': True, |
+ 'debug_ignore_perf_test': True, |
+ 'command': 'fake_command', |
+ 'metric': 'fake/metric', |
+ 'good_revision': 280000, |
+ 'bad_revision': 280005, |
+ } |
+ bisect_options = bisect_perf_module.BisectOptions.FromDict(options_dict) |
+ source_control = source_control_module.DetermineAndCreateSourceControl( |
+ bisect_options) |
+ bisect_instance = bisect_perf_module.BisectPerformanceMetrics( |
+ source_control, bisect_options) |
+ bisect_instance.src_cwd = os.path.abspath( |
+ os.path.join(os.path.dirname(__file__), os.path.pardir)) |
+ return bisect_instance |
+ |
class BisectPerfRegressionTest(unittest.TestCase): |
"""Test case for other functions and classes in bisect-perf-regression.py.""" |
@@ -227,48 +248,42 @@ class BisectPerfRegressionTest(unittest.TestCase): |
This serves as a smoke test to catch errors in the basic execution of the |
script. |
""" |
- options_dict = { |
- 'debug_ignore_build': True, |
- 'debug_ignore_sync': True, |
- 'debug_ignore_perf_test': True, |
- 'command': 'fake_command', |
- 'metric': 'fake/metric', |
- 'good_revision': 280000, |
- 'bad_revision': 280005, |
- } |
- bisect_options = bisect_perf_module.BisectOptions.FromDict(options_dict) |
- source_control = source_control_module.DetermineAndCreateSourceControl( |
- bisect_options) |
- bisect_instance = bisect_perf_module.BisectPerformanceMetrics( |
- source_control, bisect_options) |
- bisect_instance.src_cwd = os.path.abspath( |
- os.path.join(os.path.dirname(__file__), '..')) |
- results = bisect_instance.Run(bisect_options.command, |
- bisect_options.bad_revision, |
- bisect_options.good_revision, |
- bisect_options.metric) |
+ bisect_instance = _GetBisectPerformanceMetricsInstance() |
+ results = bisect_instance.Run(bisect_instance.opts.command, |
+ bisect_instance.opts.bad_revision, |
+ bisect_instance.opts.good_revision, |
+ bisect_instance.opts.metric) |
bisect_instance.FormatAndPrintResults(results) |
def testSVNFindRev(self): |
"""Determine numerical SVN revision or Commit Position.""" |
- options_dict = { |
- 'debug_ignore_build': True, |
- 'debug_ignore_sync': True, |
- 'debug_ignore_perf_test': True, |
- 'command': 'fake_command', |
- 'metric': 'fake/metric', |
- 'good_revision': 280000, |
- 'bad_revision': 280005, |
- } |
- bisect_options = bisect_perf_module.BisectOptions.FromDict(options_dict) |
- source_control = source_control_module.DetermineAndCreateSourceControl( |
- bisect_options) |
- |
+ bisect_instance = _GetBisectPerformanceMetricsInstance() |
cp_git_rev = '7017a81991de983e12ab50dfc071c70e06979531' |
- self.assertEqual(291765, source_control.SVNFindRev(cp_git_rev)) |
+ self.assertEqual(291765, |
+ bisect_instance.source_control.SVNFindRev(cp_git_rev)) |
svn_git_rev = 'e6db23a037cad47299a94b155b95eebd1ee61a58' |
- self.assertEqual(291467, source_control.SVNFindRev(svn_git_rev)) |
+ self.assertEqual(291467, |
+ bisect_instance.source_control.SVNFindRev(svn_git_rev)) |
+ |
+ def testUpdateDepsContent(self): |
+ bisect_instance = _GetBisectPerformanceMetricsInstance() |
+ deps_file = 'DEPS' |
+ # We are intentionally reading DEPS file contents instead of string literal |
+ # with few lines from DEPS because to check if the format we are expecting |
+ # to search is not changed in DEPS content. |
+ # TODO (prasadv): Add a separate test to validate the DEPS contents with the |
+ # format that bisect script expects. |
+ deps_contents = bisect_perf_module.ReadStringFromFile(deps_file) |
+ deps_key = 'v8_revision' |
+ depot = 'v8' |
+ git_revision = 'a12345789a23456789a123456789a123456789' |
+ updated_content = bisect_instance.UpdateDepsContents( |
+ deps_contents, depot, git_revision, deps_key) |
+ self.assertIsNotNone(updated_content) |
+ ss = re.compile('["\']%s["\']: ["\']%s["\']' % (deps_key, git_revision)) |
+ self.assertIsNotNone(re.search(ss, updated_content)) |
+ |
if __name__ == '__main__': |
unittest.main() |