Commit cdb492db authored by sergiyb's avatar sergiyb Committed by Commit bot

Refactored bisect results dicts into a separate class

R=qyearsley@chromium.org

Review URL: https://codereview.chromium.org/554283003

Cr-Commit-Position: refs/heads/master@{#297006}
parent 893b8d6d
This diff is collapsed.
...@@ -8,6 +8,7 @@ import shutil ...@@ -8,6 +8,7 @@ import shutil
import unittest import unittest
import bisect_perf_regression import bisect_perf_regression
import bisect_results
import source_control as source_control_module import source_control as source_control_module
def _GetBisectPerformanceMetricsInstance(): def _GetBisectPerformanceMetricsInstance():
...@@ -26,14 +27,20 @@ def _GetBisectPerformanceMetricsInstance(): ...@@ -26,14 +27,20 @@ def _GetBisectPerformanceMetricsInstance():
bisect_options) bisect_options)
bisect_instance = bisect_perf_regression.BisectPerformanceMetrics( bisect_instance = bisect_perf_regression.BisectPerformanceMetrics(
source_control, bisect_options) source_control, bisect_options)
bisect_instance.src_cwd = os.path.abspath(
os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir))
return bisect_instance return bisect_instance
class BisectPerfRegressionTest(unittest.TestCase): class BisectPerfRegressionTest(unittest.TestCase):
"""Test case for other functions and classes in bisect-perf-regression.py.""" """Test case for other functions and classes in bisect-perf-regression.py."""
def setUp(self):
self.cwd = os.getcwd()
os.chdir(os.path.abspath(os.path.join(os.path.dirname(__file__),
os.path.pardir, os.path.pardir)))
def tearDown(self):
os.chdir(self.cwd)
def _AssertConfidence(self, score, bad_values, good_values): def _AssertConfidence(self, score, bad_values, good_values):
"""Checks whether the given sets of values have a given confidence score. """Checks whether the given sets of values have a given confidence score.
...@@ -48,7 +55,7 @@ class BisectPerfRegressionTest(unittest.TestCase): ...@@ -48,7 +55,7 @@ class BisectPerfRegressionTest(unittest.TestCase):
""" """
# ConfidenceScore takes a list of lists but these lists are flattened # ConfidenceScore takes a list of lists but these lists are flattened
# inside the function. # inside the function.
confidence = bisect_perf_regression.ConfidenceScore( confidence = bisect_results.ConfidenceScore(
[[v] for v in bad_values], [[v] for v in bad_values],
[[v] for v in good_values]) [[v] for v in good_values])
self.assertEqual(score, confidence) self.assertEqual(score, confidence)
...@@ -306,5 +313,40 @@ class BisectPerfRegressionTest(unittest.TestCase): ...@@ -306,5 +313,40 @@ class BisectPerfRegressionTest(unittest.TestCase):
self.assertIsNotNone(re.search(ss, updated_content)) self.assertIsNotNone(re.search(ss, updated_content))
class DepotDirectoryRegistryTest(unittest.TestCase):
def setUp(self):
self.old_chdir = os.chdir
os.chdir = self.mockChdir
self.old_depot_names = bisect_perf_regression.DEPOT_NAMES
bisect_perf_regression.DEPOT_NAMES = ['mock_depot']
self.old_depot_deps_name = bisect_perf_regression.DEPOT_DEPS_NAME
bisect_perf_regression.DEPOT_DEPS_NAME = {'mock_depot': {'src': 'src/foo'}}
self.registry = bisect_perf_regression.DepotDirectoryRegistry('/mock/src')
self.cur_dir = None
def tearDown(self):
os.chdir = self.old_chdir
bisect_perf_regression.DEPOT_NAMES = self.old_depot_names
bisect_perf_regression.DEPOT_DEPS_NAME = self.old_depot_deps_name
def mockChdir(self, new_dir):
self.cur_dir = new_dir
def testReturnsCorrectResultForChrome(self):
self.assertEqual(self.registry.GetDepotDir('chromium'), '/mock/src')
def testReturnsCorrectResultForChromeOS(self):
self.assertEqual(self.registry.GetDepotDir('cros'), '/mock/src/tools/cros')
def testUsesDepotSpecToInitializeRegistry(self):
self.assertEqual(self.registry.GetDepotDir('mock_depot'), '/mock/src/foo')
def testChangedTheDirectory(self):
self.registry.ChangeToDepotDir('mock_depot')
self.assertEqual(self.cur_dir, '/mock/src/foo')
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()
This diff is collapsed.
# Copyright 2014 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 unittest
import bisect_results
import ttest
class ConfidenceScoreTest(unittest.TestCase):
def testConfidenceScoreIsZeroOnTooFewLists(self):
self.assertEqual(bisect_results.ConfidenceScore([], [[1], [2]]), 0.0)
self.assertEqual(bisect_results.ConfidenceScore([[1], [2]], []), 0.0)
self.assertEqual(bisect_results.ConfidenceScore([[1]], [[1], [2]]), 0.0)
self.assertEqual(bisect_results.ConfidenceScore([[1], [2]], [[1]]), 0.0)
def testConfidenceScoreIsZeroOnEmptyLists(self):
self.assertEqual(bisect_results.ConfidenceScore([[], []], [[1], [2]]), 0.0)
self.assertEqual(bisect_results.ConfidenceScore([[1], [2]], [[], []]), 0.0)
def testConfidenceScoreIsUsingTTestWelchsTTest(self):
original_WelchsTTest = ttest.WelchsTTest
try:
ttest.WelchsTTest = lambda _sample1, _sample2: (0, 0, 0.42)
self.assertAlmostEqual(
bisect_results.ConfidenceScore([[1], [1]], [[2], [2]]), 58.0)
finally:
ttest.WelchsTTest = original_WelchsTTest
class BisectResulstsTest(unittest.TestCase):
# TODO(sergiyb): Write tests for GetResultDicts when it is broken into smaller
# pieces.
pass
if __name__ == '__main__':
unittest.main()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment