Add framework for Test Planner execution engine, and the supporting RPC
interfaces
Signed-off-by: James Ren <jamesren@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@4260 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/frontend/planner/rpc_utils_unittest.py b/frontend/planner/rpc_utils_unittest.py
new file mode 100644
index 0000000..d168c05
--- /dev/null
+++ b/frontend/planner/rpc_utils_unittest.py
@@ -0,0 +1,69 @@
+#!/usr/bin/python
+
+import unittest
+import common
+from autotest_lib.frontend import setup_django_environment
+from autotest_lib.frontend.planner import planner_test_utils
+from autotest_lib.frontend.afe import model_logic, models as afe_models
+from autotest_lib.frontend.afe import rpc_interface as afe_rpc_interface
+from autotest_lib.frontend.planner import models, rpc_utils
+from autotest_lib.client.common_lib import utils
+
+
+class RpcUtilsTest(unittest.TestCase,
+ planner_test_utils.PlannerTestMixin):
+ def setUp(self):
+ self._planner_common_setup()
+
+
+ def tearDown(self):
+ self._planner_common_teardown()
+
+
+ def test_create_plan_label(self):
+ label, group = self._create_label_helper()
+
+ label.delete()
+ group.invalid = True
+ group.save()
+
+ label, group = self._create_label_helper()
+
+ self.assertRaises(model_logic.ValidationError,
+ rpc_utils.create_plan_label, self._plan)
+
+
+ def _create_label_helper(self):
+ label = rpc_utils.create_plan_label(self._plan)
+ group = afe_models.AtomicGroup.objects.get(
+ name=rpc_utils.PLANNER_ATOMIC_GROUP_NAME)
+ self.assertFalse(group.invalid)
+ self.assertEqual(label.atomic_group, group)
+
+ return (label, group)
+
+
+ def test_lazy_load(self):
+ self.god.stub_function(utils, 'read_file')
+
+ DUMMY_PATH_1 = object()
+ DUMMY_PATH_2 = object()
+ DUMMY_FILE_1 = object()
+ DUMMY_FILE_2 = object()
+
+ utils.read_file.expect_call(DUMMY_PATH_1).and_return(DUMMY_FILE_1)
+ self.assertEqual(DUMMY_FILE_1, rpc_utils.lazy_load(DUMMY_PATH_1))
+ self.god.check_playback()
+
+ # read_file should not be called again for this path
+ self.assertEqual(DUMMY_FILE_1, rpc_utils.lazy_load(DUMMY_PATH_1))
+ self.god.check_playback()
+
+ # new file; read_file must be called again
+ utils.read_file.expect_call(DUMMY_PATH_2).and_return(DUMMY_FILE_2)
+ self.assertEqual(DUMMY_FILE_2, rpc_utils.lazy_load(DUMMY_PATH_2))
+ self.god.check_playback()
+
+
+if __name__ == '__main__':
+ unittest.main()