diff options
author | jamesren <jamesren@592f7852-d20e-0410-864c-8624ca9c26a4> | 2010-03-13 00:58:17 +0000 |
---|---|---|
committer | jamesren <jamesren@592f7852-d20e-0410-864c-8624ca9c26a4> | 2010-03-13 00:58:17 +0000 |
commit | 4a8fc1d2c3caad95862d2e32d2737f083ffb6f42 (patch) | |
tree | e2ca2f9b6bfa536e5ab8e1a198d69513684425d1 /scheduler | |
parent | d7ae8babd51c9fe59246a48e200aa7e9156827fb (diff) |
Set hostless queue entries to STARTING upon scheduling the agent. This
fixes an issue where the scheduler created multiple HostlessQueueTask
objects for a single hostless queue entry, causing several autoserv
processes to be launched when the agents are run.
Signed-off-by: James Ren <jamesren@google.com>
git-svn-id: svn://test.kernel.org/autotest/trunk@4304 592f7852-d20e-0410-864c-8624ca9c26a4
Diffstat (limited to 'scheduler')
-rwxr-xr-x | scheduler/monitor_db.py | 1 | ||||
-rwxr-xr-x | scheduler/monitor_db_unittest.py | 23 |
2 files changed, 24 insertions, 0 deletions
diff --git a/scheduler/monitor_db.py b/scheduler/monitor_db.py index 4b18d2ca..2f4f0d54 100755 --- a/scheduler/monitor_db.py +++ b/scheduler/monitor_db.py @@ -1077,6 +1077,7 @@ class Dispatcher(object): def _schedule_hostless_job(self, queue_entry): self.add_agent_task(HostlessQueueTask(queue_entry)) + queue_entry.set_status(models.HostQueueEntry.Status.STARTING) def _schedule_new_jobs(self): diff --git a/scheduler/monitor_db_unittest.py b/scheduler/monitor_db_unittest.py index 905a3fff..243e74ce 100755 --- a/scheduler/monitor_db_unittest.py +++ b/scheduler/monitor_db_unittest.py @@ -1298,6 +1298,29 @@ class JobSchedulingTest(BaseSchedulerTest): self._dispatcher._schedule_running_host_queue_entries) + def test_schedule_hostless_job(self): + job = self._create_job(hostless=True) + self.assertEqual(1, job.hostqueueentry_set.count()) + hqe_query = scheduler_models.HostQueueEntry.fetch( + 'id = %s' % job.hostqueueentry_set.all()[0].id) + self.assertEqual(1, len(hqe_query)) + hqe = hqe_query[0] + + self.assertEqual(models.HostQueueEntry.Status.QUEUED, hqe.status) + self.assertEqual(0, len(self._dispatcher._agents)) + + self._dispatcher._schedule_new_jobs() + + self.assertEqual(models.HostQueueEntry.Status.STARTING, hqe.status) + self.assertEqual(1, len(self._dispatcher._agents)) + + self._dispatcher._schedule_new_jobs() + + # No change to previously schedule hostless job, and no additional agent + self.assertEqual(models.HostQueueEntry.Status.STARTING, hqe.status) + self.assertEqual(1, len(self._dispatcher._agents)) + + class TopLevelFunctionsTest(unittest.TestCase): def setUp(self): self.god = mock.mock_god() |