diff options
Diffstat (limited to 'lib/launch_control/processed_builds_unittest.py')
-rw-r--r-- | lib/launch_control/processed_builds_unittest.py | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/lib/launch_control/processed_builds_unittest.py b/lib/launch_control/processed_builds_unittest.py new file mode 100644 index 000000000..91443b642 --- /dev/null +++ b/lib/launch_control/processed_builds_unittest.py @@ -0,0 +1,84 @@ +# Copyright 2015 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 processed_builds.""" + +from __future__ import print_function + +import os + +from chromite.lib.launch_control import processed_builds +from chromite.lib import cros_test_lib + + +# Unitests often need access to internals of the thing they test. +# pylint: disable=protected-access + +class ProcessedBuildsStorageTest(cros_test_lib.TempDirTestCase): + """Test our helper library for storing processed build ids.""" + + def setUp(self): + self.testfile = os.path.join(self.tempdir, 'testfile.json') + + def testStartStop(self): + with processed_builds.ProcessedBuildsStorage(self.testfile): + pass + + self.assertFileContents(self.testfile, '{}') + + def testFetchEmpty(self): + with processed_builds.ProcessedBuildsStorage(self.testfile) as ps: + self.assertEqual(ps.GetProcessedBuilds('branch', 'target'), []) + + self.assertFileContents(self.testfile, '{"branch": {"target": []}}') + + def testPurgeEmpty(self): + with processed_builds.ProcessedBuildsStorage(self.testfile) as ps: + ps.PurgeOldBuilds('branch', 'target', [1, 2, 3]) + + self.assertFileContents(self.testfile, '{"branch": {"target": []}}') + + def testAddEmpty(self): + with processed_builds.ProcessedBuildsStorage(self.testfile) as ps: + ps.AddProcessedBuild('branch', 'target', 1) + + self.assertFileContents(self.testfile, '{"branch": {"target": [1]}}') + + def testMultipleUses(self): + with processed_builds.ProcessedBuildsStorage(self.testfile) as ps: + ps.AddProcessedBuild('branch', 'target', 1) + ps.AddProcessedBuild('branch', 'target', 2) + + self.assertFileContents(self.testfile, '{"branch": {"target": [1, 2]}}') + + with processed_builds.ProcessedBuildsStorage(self.testfile) as ps: + # Try adding twice, should only happen once. + ps.AddProcessedBuild('branch', 'target', 3) + ps.AddProcessedBuild('branch', 'target', 3) + + self.assertFileContents(self.testfile, '{"branch": {"target": [1, 2, 3]}}') + + with processed_builds.ProcessedBuildsStorage(self.testfile) as ps: + ps.PurgeOldBuilds('branch', 'target', [2, 3]) + ps.AddProcessedBuild('branch', 'target', 4) + + self.assertFileContents(self.testfile, '{"branch": {"target": [2, 3, 4]}}') + + with processed_builds.ProcessedBuildsStorage(self.testfile) as ps: + self.assertEqual(ps.GetProcessedBuilds('branch', 'target'), [2, 3, 4]) + + def testAddMultipleBranchTargets(self): + with processed_builds.ProcessedBuildsStorage(self.testfile) as ps: + ps.AddProcessedBuild('branch1', 'target', 1) + ps.AddProcessedBuild('branch2', 'target', 1) + ps.AddProcessedBuild('branch2', 'target', 2) + ps.AddProcessedBuild('branch2', 'target2', 3) + + self.assertEqual(ps.GetProcessedBuilds('branch2', 'target'), + [1, 2]) + + self.assertFileContents( + self.testfile, + '{"branch1": {"target": [1]},' + ' "branch2": {"target": [1, 2], "target2": [3]}}') |