diff options
author | jamesren <jamesren@592f7852-d20e-0410-864c-8624ca9c26a4> | 2010-04-28 18:07:30 +0000 |
---|---|---|
committer | jamesren <jamesren@592f7852-d20e-0410-864c-8624ca9c26a4> | 2010-04-28 18:07:30 +0000 |
commit | e15ff45025da442034629e42130e3d0d636a926e (patch) | |
tree | 2eb00e4a43266c6fc9fd52487523756853557127 /scheduler | |
parent | 67f47956ca43c63bba6b756f2d28f5dc357a30c3 (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-x | scheduler/monitor_db.py | 2 | ||||
-rwxr-xr-x | scheduler/monitor_db_unittest.py | 109 |
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() |