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)