With the new SpecialTask recovery code, a RepairTask can be passed a queue entry that was previously requeued. So make sure the task leaves the HQE alone in that case.
Also delete some dead code that called requeue().
Signed-off-by: Steve Howard <showard@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@3411 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/scheduler/monitor_db_unittest.py b/scheduler/monitor_db_unittest.py
index 8e1edbf..1d62387 100644
--- a/scheduler/monitor_db_unittest.py
+++ b/scheduler/monitor_db_unittest.py
@@ -1392,7 +1392,7 @@
self.DUMMY_PROCESS, mock.is_string_comparator())
- def _test_repair_task_helper(self, success, task_tag):
+ def _test_repair_task_helper(self, success, task_tag, queue_entry=None):
self.host.set_status.expect_call('Repairing')
if success:
self.setup_run_monitor(0, task_tag)
@@ -1401,7 +1401,7 @@
self.setup_run_monitor(1, task_tag)
self.host.set_status.expect_call('Repair Failed')
- task = monitor_db.RepairTask(self.host)
+ task = monitor_db.RepairTask(self.host, queue_entry=queue_entry)
self.assertEquals(task.failure_tasks, [])
self.run_task(task, success)
@@ -1423,6 +1423,15 @@
self._test_repair_task_helper(False, '2-repair')
+ def test_repair_task_with_hqe_already_requeued(self):
+ # during recovery, a RepairTask can be passed a queue entry that has
+ # already been requeued. ensure it leaves the HQE alone in that case.
+ self.queue_entry.meta_host = 1
+ self.queue_entry.host = None
+ self._test_repair_task_helper(False, '1-repair',
+ queue_entry=self.queue_entry)
+
+
def test_repair_task_aborted(self):
self.host.set_status.expect_call('Repairing')
self.setup_run_monitor(0, '1-repair', aborted=True)