blob: d168c05352cb8df4b192a418410c0db7948d1241 [file] [log] [blame]
jamesrenc3940222010-02-19 21:57:37 +00001#!/usr/bin/python
2
3import unittest
4import common
5from autotest_lib.frontend import setup_django_environment
6from autotest_lib.frontend.planner import planner_test_utils
7from autotest_lib.frontend.afe import model_logic, models as afe_models
8from autotest_lib.frontend.afe import rpc_interface as afe_rpc_interface
9from autotest_lib.frontend.planner import models, rpc_utils
10from autotest_lib.client.common_lib import utils
11
12
13class RpcUtilsTest(unittest.TestCase,
14 planner_test_utils.PlannerTestMixin):
15 def setUp(self):
16 self._planner_common_setup()
17
18
19 def tearDown(self):
20 self._planner_common_teardown()
21
22
23 def test_create_plan_label(self):
24 label, group = self._create_label_helper()
25
26 label.delete()
27 group.invalid = True
28 group.save()
29
30 label, group = self._create_label_helper()
31
32 self.assertRaises(model_logic.ValidationError,
33 rpc_utils.create_plan_label, self._plan)
34
35
36 def _create_label_helper(self):
37 label = rpc_utils.create_plan_label(self._plan)
38 group = afe_models.AtomicGroup.objects.get(
39 name=rpc_utils.PLANNER_ATOMIC_GROUP_NAME)
40 self.assertFalse(group.invalid)
41 self.assertEqual(label.atomic_group, group)
42
43 return (label, group)
44
45
46 def test_lazy_load(self):
47 self.god.stub_function(utils, 'read_file')
48
49 DUMMY_PATH_1 = object()
50 DUMMY_PATH_2 = object()
51 DUMMY_FILE_1 = object()
52 DUMMY_FILE_2 = object()
53
54 utils.read_file.expect_call(DUMMY_PATH_1).and_return(DUMMY_FILE_1)
55 self.assertEqual(DUMMY_FILE_1, rpc_utils.lazy_load(DUMMY_PATH_1))
56 self.god.check_playback()
57
58 # read_file should not be called again for this path
59 self.assertEqual(DUMMY_FILE_1, rpc_utils.lazy_load(DUMMY_PATH_1))
60 self.god.check_playback()
61
62 # new file; read_file must be called again
63 utils.read_file.expect_call(DUMMY_PATH_2).and_return(DUMMY_FILE_2)
64 self.assertEqual(DUMMY_FILE_2, rpc_utils.lazy_load(DUMMY_PATH_2))
65 self.god.check_playback()
66
67
68if __name__ == '__main__':
69 unittest.main()