[autotest] Provide a more flexible dynamic_suite API
In practice, we will frequently be running control files from branches
in a ToT autotest environment. In order to avoid being unable to
update and improve the dynamic_suite stuff, provide an API
that accepts **dargs. This way, we can be sure that deprecated arguments
can be coped with, and that we don't have to worry about positional
arguments changing order.
BUG=chromium-os:26523
TEST=unittests
TEST=./server/autoserv test_suites/dev_harness
Change-Id: Iaf7a8844ea330346b654f9b4f51652b798d0ea9b
Reviewed-on: https://gerrit.chromium.org/gerrit/17123
Commit-Ready: Chris Masone <cmasone@chromium.org>
Reviewed-by: Chris Masone <cmasone@chromium.org>
Tested-by: Chris Masone <cmasone@chromium.org>
diff --git a/server/cros/dynamic_suite_unittest.py b/server/cros/dynamic_suite_unittest.py
index e44abf8..81bb848 100755
--- a/server/cros/dynamic_suite_unittest.py
+++ b/server/cros/dynamic_suite_unittest.py
@@ -1,6 +1,6 @@
#!/usr/bin/python
#
-# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Copyright (c) 2012 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.
@@ -26,6 +26,91 @@
self.statuses = statuses
+class DynamicSuiteTest(mox.MoxTestBase):
+ """Unit tests for dynamic_suite module methods.
+
+ @var _DARGS: default args to vet.
+ """
+
+
+ def setUp(self):
+ super(DynamicSuiteTest, self).setUp()
+ self._DARGS = {'name': 'name',
+ 'build': 'build',
+ 'board': 'board',
+ 'job': self.mox.CreateMock(base_job.base_job),
+ 'num': 1,
+ 'pool': 'pool',
+ 'skip_reimage': True,
+ 'add_experimental': False}
+
+
+ def testVetRequiredReimageAndRunArgs(self):
+ """Should verify only that required args are present and correct."""
+ build, board, name, job, _, _, _, _ = \
+ dynamic_suite._vet_reimage_and_run_args(**self._DARGS)
+ self.assertEquals(build, self._DARGS['build'])
+ self.assertEquals(board, self._DARGS['board'])
+ self.assertEquals(name, self._DARGS['name'])
+ self.assertEquals(job, self._DARGS['job'])
+
+
+ def testVetReimageAndRunBuildArgFail(self):
+ """Should fail verification because |build| arg is bad."""
+ self._DARGS['build'] = None
+ self.assertRaises(dynamic_suite.SuiteArgumentException,
+ dynamic_suite._vet_reimage_and_run_args,
+ **self._DARGS)
+
+
+ def testVetReimageAndRunBoardArgFail(self):
+ """Should fail verification because |board| arg is bad."""
+ self._DARGS['board'] = None
+ self.assertRaises(dynamic_suite.SuiteArgumentException,
+ dynamic_suite._vet_reimage_and_run_args,
+ **self._DARGS)
+
+
+ def testVetReimageAndRunNameArgFail(self):
+ """Should fail verification because |name| arg is bad."""
+ self._DARGS['name'] = None
+ self.assertRaises(dynamic_suite.SuiteArgumentException,
+ dynamic_suite._vet_reimage_and_run_args,
+ **self._DARGS)
+
+
+ def testVetReimageAndRunJobArgFail(self):
+ """Should fail verification because |job| arg is bad."""
+ self._DARGS['job'] = None
+ self.assertRaises(dynamic_suite.SuiteArgumentException,
+ dynamic_suite._vet_reimage_and_run_args,
+ **self._DARGS)
+
+
+ def testOverrideOptionalReimageAndRunArgs(self):
+ """Should verify that optional args can be overridden."""
+ _, _, _, _, pool, num, skip, expr = \
+ dynamic_suite._vet_reimage_and_run_args(**self._DARGS)
+ self.assertEquals(pool, self._DARGS['pool'])
+ self.assertEquals(num, self._DARGS['num'])
+ self.assertEquals(skip, self._DARGS['skip_reimage'])
+ self.assertEquals(expr, self._DARGS['add_experimental'])
+
+
+ def testDefaultOptionalReimageAndRunArgs(self):
+ """Should verify that optional args get defaults."""
+ del(self._DARGS['pool'])
+ del(self._DARGS['skip_reimage'])
+ del(self._DARGS['add_experimental'])
+ del(self._DARGS['num'])
+ _, _, _, _, pool, num, skip, expr = \
+ dynamic_suite._vet_reimage_and_run_args(**self._DARGS)
+ self.assertEquals(pool, None)
+ self.assertEquals(num, None)
+ self.assertEquals(skip, False)
+ self.assertEquals(expr, True)
+
+
class ReimagerTest(mox.MoxTestBase):
"""Unit tests for dynamic_suite.Reimager.