summaryrefslogtreecommitdiff
path: root/scheduler
diff options
context:
space:
mode:
authorjamesren <jamesren@592f7852-d20e-0410-864c-8624ca9c26a4>2010-04-28 18:07:30 +0000
committerjamesren <jamesren@592f7852-d20e-0410-864c-8624ca9c26a4>2010-04-28 18:07:30 +0000
commite15ff45025da442034629e42130e3d0d636a926e (patch)
tree2eb00e4a43266c6fc9fd52487523756853557127 /scheduler
parent67f47956ca43c63bba6b756f2d28f5dc357a30c3 (diff)
Fix an error in drone sets in monitor_db. Also added more unit tests.
Signed-off-by: James Ren <jamesren@google.com> git-svn-id: svn://test.kernel.org/autotest/trunk@4449 592f7852-d20e-0410-864c-8624ca9c26a4
Diffstat (limited to 'scheduler')
-rwxr-xr-xscheduler/monitor_db.py2
-rwxr-xr-xscheduler/monitor_db_unittest.py109
2 files changed, 102 insertions, 9 deletions
diff --git a/scheduler/monitor_db.py b/scheduler/monitor_db.py
index c54713b9..14a32995 100755
--- a/scheduler/monitor_db.py
+++ b/scheduler/monitor_db.py
@@ -1700,7 +1700,7 @@ class AgentTask(object):
job = models.Job.objects.get(id=job_ids[0])
drone_set = job.drone_set
if not drone_set:
- return self_user_or_global_default_drone_set(job, job.user())
+ return self._user_or_global_default_drone_set(job, job.user())
return drone_set.get_drone_hostnames()
diff --git a/scheduler/monitor_db_unittest.py b/scheduler/monitor_db_unittest.py
index 16586780..38ea84dd 100755
--- a/scheduler/monitor_db_unittest.py
+++ b/scheduler/monitor_db_unittest.py
@@ -1393,34 +1393,127 @@ class AgentTaskTest(unittest.TestCase,
job_3 = self._create_job_simple([self.hosts[0].id],
drone_set=drone_set_3)
- hqe_1 = job_1.hostqueueentry_set.all()[0].id
- hqe_2 = job_2.hostqueueentry_set.all()[0].id
- hqe_3 = job_3.hostqueueentry_set.all()[0].id
+ job_4 = self._create_job_simple([self.hosts[0].id])
+ job_4.drone_set = None
+ job_4.save()
- return (hqe_1, hqe_2, hqe_3), monitor_db.AgentTask()
+ hqe_1 = job_1.hostqueueentry_set.all()[0]
+ hqe_2 = job_2.hostqueueentry_set.all()[0]
+ hqe_3 = job_3.hostqueueentry_set.all()[0]
+ hqe_4 = job_4.hostqueueentry_set.all()[0]
+ return (hqe_1, hqe_2, hqe_3, hqe_4), monitor_db.AgentTask()
- def test_get_drone_hostnames_allowed_no_associated_sets(self):
+
+ def test_get_drone_hostnames_allowed_no_drones_in_set(self):
hqes, task = self._setup_drones()
- task.queue_entry_ids = (hqes[2],)
+ task.queue_entry_ids = (hqes[2].id,)
self.assertEqual(set(), task.get_drone_hostnames_allowed())
self.god.check_playback()
+ def test_get_drone_hostnames_allowed_no_drone_set(self):
+ hqes, task = self._setup_drones()
+ hqe = hqes[3]
+ task.queue_entry_ids = (hqe.id,)
+
+ result = object()
+
+ self.god.stub_function(task, '_user_or_global_default_drone_set')
+ task._user_or_global_default_drone_set.expect_call(
+ hqe.job, hqe.job.user()).and_return(result)
+
+ self.assertEqual(result, task.get_drone_hostnames_allowed())
+ self.god.check_playback()
+
+
def test_get_drone_hostnames_allowed_success(self):
hqes, task = self._setup_drones()
- task.queue_entry_ids = (hqes[0],)
+ task.queue_entry_ids = (hqes[0].id,)
self.assertEqual(set(('0','1')), task.get_drone_hostnames_allowed())
self.god.check_playback()
def test_get_drone_hostnames_allowed_multiple_jobs(self):
hqes, task = self._setup_drones()
- task.queue_entry_ids = (hqes[0], hqes[1])
+ task.queue_entry_ids = (hqes[0].id, hqes[1].id)
self.assertRaises(AssertionError,
task.get_drone_hostnames_allowed)
self.god.check_playback()
+ def test_get_drone_hostnames_allowed_no_hqe(self):
+ class MockSpecialTask(object):
+ requested_by = object()
+
+ class MockSpecialAgentTask(monitor_db.SpecialAgentTask):
+ task = MockSpecialTask()
+ queue_entry_ids = []
+ def __init__(self, *args, **kwargs):
+ pass
+
+ task = MockSpecialAgentTask()
+ self.god.stub_function(models.DroneSet, 'drone_sets_enabled')
+ self.god.stub_function(task, '_user_or_global_default_drone_set')
+
+ result = object()
+ models.DroneSet.drone_sets_enabled.expect_call().and_return(True)
+ task._user_or_global_default_drone_set.expect_call(
+ task.task, MockSpecialTask.requested_by).and_return(result)
+
+ self.assertEqual(result, task.get_drone_hostnames_allowed())
+ self.god.check_playback()
+
+
+ def _setup_test_user_or_global_default_drone_set(self):
+ result = object()
+ class MockDroneSet(object):
+ def get_drone_hostnames(self):
+ return result
+
+ self.god.stub_function(models.DroneSet, 'get_default')
+ models.DroneSet.get_default.expect_call().and_return(MockDroneSet())
+ return result
+
+
+ def test_user_or_global_default_drone_set(self):
+ expected = object()
+ class MockDroneSet(object):
+ def get_drone_hostnames(self):
+ return expected
+ class MockUser(object):
+ drone_set = MockDroneSet()
+
+ self._setup_test_user_or_global_default_drone_set()
+
+ actual = monitor_db.AgentTask()._user_or_global_default_drone_set(
+ None, MockUser())
+
+ self.assertEqual(expected, actual)
+ self.god.check_playback()
+
+
+ def test_user_or_global_default_drone_set_no_user(self):
+ expected = self._setup_test_user_or_global_default_drone_set()
+ actual = monitor_db.AgentTask()._user_or_global_default_drone_set(
+ None, None)
+
+ self.assertEqual(expected, actual)
+ self.god.check_playback()
+
+
+ def test_user_or_global_default_drone_set_no_user_drone_set(self):
+ class MockUser(object):
+ drone_set = None
+ login = None
+
+ expected = self._setup_test_user_or_global_default_drone_set()
+ actual = monitor_db.AgentTask()._user_or_global_default_drone_set(
+ None, MockUser())
+
+ self.assertEqual(expected, actual)
+ self.god.check_playback()
+
+
if __name__ == '__main__':
unittest.main()