blob: 8bd8eb7dfc40df5014adef9c7952f1360c51caa9 [file] [log] [blame]
showarded2afea2009-07-07 20:54:07 +00001#!/usr/bin/python
2
3import unittest
4import common
5from autotest_lib.frontend import setup_django_environment
6from autotest_lib.frontend.afe import frontend_test_utils
7from autotest_lib.frontend.afe import models
showard474d1362009-08-20 23:32:01 +00008from autotest_lib.frontend.afe import model_logic
showarded2afea2009-07-07 20:54:07 +00009
showarda5288b42009-07-28 20:06:08 +000010
11class AclGroupTest(unittest.TestCase,
12 frontend_test_utils.FrontendTestMixin):
13 def setUp(self):
14 self._frontend_common_setup()
15
16
17 def tearDown(self):
18 self._frontend_common_teardown()
19
20
21 def _check_acls(self, host, acl_name_list):
22 actual_acl_names = [acl_group.name for acl_group
23 in host.aclgroup_set.all()]
24 self.assertEquals(set(actual_acl_names), set(acl_name_list))
25
26
27 def test_on_host_membership_change(self):
28 host1, host2 = self.hosts[1:3]
29 everyone_acl = models.AclGroup.objects.get(name='Everyone')
30
31 host1.aclgroup_set.clear()
32 self._check_acls(host1, [])
33 host2.aclgroup_set.add(everyone_acl)
34 self._check_acls(host2, ['Everyone', 'my_acl'])
35
36 models.AclGroup.on_host_membership_change()
37
38 self._check_acls(host1, ['Everyone'])
39 self._check_acls(host2, ['my_acl'])
40
41
showardafd97de2009-10-01 18:45:09 +000042class HostTest(unittest.TestCase,
43 frontend_test_utils.FrontendTestMixin):
44 def setUp(self):
45 self._frontend_common_setup()
46
47
48 def tearDown(self):
49 self._frontend_common_teardown()
50
51
52 def test_add_host_previous_one_time_host(self):
53 # ensure that when adding a host which was previously used as a one-time
54 # host, the status isn't reset, since this can interfere with the
55 # scheduler.
56 host = models.Host.create_one_time_host('othost')
57 self.assertEquals(host.invalid, True)
58 self.assertEquals(host.status, models.Host.Status.READY)
59
60 host.status = models.Host.Status.RUNNING
61 host.save()
62
63 host2 = models.Host.add_object(hostname='othost')
64 self.assertEquals(host2.id, host.id)
65 self.assertEquals(host2.status, models.Host.Status.RUNNING)
66
67
showarded2afea2009-07-07 20:54:07 +000068class SpecialTaskUnittest(unittest.TestCase,
69 frontend_test_utils.FrontendTestMixin):
70 def setUp(self):
71 self._frontend_common_setup()
72
73
74 def tearDown(self):
75 self._frontend_common_teardown()
76
77
showardc0ac3a72009-07-08 21:14:45 +000078 def _create_task(self):
79 return models.SpecialTask.objects.create(
showarded2afea2009-07-07 20:54:07 +000080 host=self.hosts[0], task=models.SpecialTask.Task.VERIFY)
81
showardc0ac3a72009-07-08 21:14:45 +000082
83 def test_execution_path(self):
84 task = self._create_task()
showarded2afea2009-07-07 20:54:07 +000085 self.assertEquals(task.execution_path(), 'hosts/host1/1-verify')
86
87
showardc0ac3a72009-07-08 21:14:45 +000088 def test_status(self):
89 task = self._create_task()
90 self.assertEquals(task.status, 'Queued')
91
92 task.update_object(is_active=True)
93 self.assertEquals(task.status, 'Running')
94
showarde60e44e2009-11-13 20:45:38 +000095 task.update_object(is_active=False, is_complete=True, success=True)
showardc0ac3a72009-07-08 21:14:45 +000096 self.assertEquals(task.status, 'Completed')
97
showarde60e44e2009-11-13 20:45:38 +000098 task.update_object(success=False)
99 self.assertEquals(task.status, 'Failed')
100
showardc0ac3a72009-07-08 21:14:45 +0000101
showard97446882009-07-20 22:37:28 +0000102 def test_activate(self):
103 task = self._create_task()
104 task.activate()
105 self.assertTrue(task.is_active)
106 self.assertFalse(task.is_complete)
107
108
109 def test_finish(self):
110 task = self._create_task()
111 task.activate()
showarde60e44e2009-11-13 20:45:38 +0000112 task.finish(True)
showard97446882009-07-20 22:37:28 +0000113 self.assertFalse(task.is_active)
114 self.assertTrue(task.is_complete)
showarde60e44e2009-11-13 20:45:38 +0000115 self.assertTrue(task.success)
showard97446882009-07-20 22:37:28 +0000116
117
showard9bb960b2009-11-19 01:02:11 +0000118 def test_requested_by_from_queue_entry(self):
119 job = self._create_job(hosts=[0])
120 task = models.SpecialTask.objects.create(
121 host=self.hosts[0], task=models.SpecialTask.Task.VERIFY,
122 queue_entry=job.hostqueueentry_set.all()[0])
showardfd8b89f2010-01-20 19:06:30 +0000123 self.assertEquals(task.requested_by.login, 'autotest_system')
showard9bb960b2009-11-19 01:02:11 +0000124
125
showardd1195652009-12-08 22:21:02 +0000126class HostQueueEntryUnittest(unittest.TestCase,
127 frontend_test_utils.FrontendTestMixin):
128 def setUp(self):
129 self._frontend_common_setup()
130
131
132 def tearDown(self):
133 self._frontend_common_teardown()
134
135
136 def test_execution_path(self):
137 entry = self._create_job(hosts=[1]).hostqueueentry_set.all()[0]
138 entry.execution_subdir = 'subdir'
139 entry.save()
140
showardfd8b89f2010-01-20 19:06:30 +0000141 self.assertEquals(entry.execution_path(), '1-autotest_system/subdir')
showardd1195652009-12-08 22:21:02 +0000142
143
showarded2afea2009-07-07 20:54:07 +0000144if __name__ == '__main__':
145 unittest.main()