blob: 58f826cb3a6c8e245984b2687585b360e96f63ee [file] [log] [blame]
# -*- coding: utf-8 -*-
# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Test manual_evaluator module."""
from __future__ import print_function
import os
from chromite.cros_bisect import common
from chromite.cros_bisect import manual_evaluator
from chromite.lib import cros_build_lib
from chromite.lib import cros_test_lib
from chromite.lib import osutils
class TestManualEvaluator(cros_test_lib.MockTempDirTestCase,
cros_test_lib.OutputTestCase):
"""Tests ManualEvaluator class."""
BUILD_LABEL = 'test_build'
BUILD_LABEL2 = 'test_build2'
def setUp(self):
"""Sets up default evaluator."""
options = cros_test_lib.EasyAttr(base_dir=self.tempdir, reuse_eval=True)
self.evaluator = manual_evaluator.ManualEvaluator(options)
def testGetReportPath(self):
"""Tests GetReportPath()."""
self.assertEqual(
os.path.join(self.tempdir, 'reports',
'manual.%s.report' % self.BUILD_LABEL),
self.evaluator.GetReportPath(self.BUILD_LABEL))
def testEvaluate(self):
"""Tests Evaluate()."""
report_path = self.evaluator.GetReportPath(self.BUILD_LABEL)
m = self.PatchObject(cros_build_lib, 'GetInput')
m.return_value = 'yes'
self.assertEqual(common.Score([1.0]),
self.evaluator.Evaluate(None, self.BUILD_LABEL))
self.assertEqual('1', osutils.ReadFile(report_path))
m.return_value = 'no'
self.assertEqual(common.Score([0.0]),
self.evaluator.Evaluate(None, self.BUILD_LABEL))
self.assertEqual('0', osutils.ReadFile(report_path))
def testCheckLastEvaluate(self):
"""Tests CheckLastEvaluate()."""
# Report does not exist.
self.assertFalse(self.evaluator.CheckLastEvaluate(self.BUILD_LABEL))
# Generate a report for BUILD_LABEL
m = self.PatchObject(cros_build_lib, 'GetInput')
m.return_value = 'yes'
self.evaluator.Evaluate(None, self.BUILD_LABEL)
# Found latest evaluation result.
self.assertEqual(common.Score([1.0]),
self.evaluator.CheckLastEvaluate(self.BUILD_LABEL))
# Yet another unseen build.
self.assertFalse(self.evaluator.CheckLastEvaluate(self.BUILD_LABEL2))
# Generate a report for BUILD_LABEL2
m.return_value = 'no'
self.evaluator.Evaluate(None, self.BUILD_LABEL2)
# Found latest evaluation result.
self.assertEqual(common.Score([1.0]),
self.evaluator.CheckLastEvaluate(self.BUILD_LABEL))
self.assertEqual(common.Score([0.0]),
self.evaluator.CheckLastEvaluate(self.BUILD_LABEL2))
def testCheckLastLabelWithReuseEvalOptionUnset(self):
"""Tests CheckLastEvaluate() with options.reuse_eval unset."""
options = cros_test_lib.EasyAttr(base_dir=self.tempdir, reuse_eval=False)
self.evaluator = manual_evaluator.ManualEvaluator(options)
# Report does not exist.
self.assertFalse(self.evaluator.CheckLastEvaluate(self.BUILD_LABEL))
# Generate a report for BUILD_LABEL
m = self.PatchObject(cros_build_lib, 'GetInput')
m.return_value = 'yes'
self.evaluator.Evaluate(None, self.BUILD_LABEL)
# Unlike testCheckLastEvaluate(), it returns empty Score() object.
self.assertFalse(self.evaluator.CheckLastEvaluate(self.BUILD_LABEL))