Sanity check: prevent the creation of a special task for a host that already
has an active special task.  This should only ever happen due to a scheduler
bug.  Dying to allow human cleanup is desirable today.

Signed-off-by: Gregory Smith <gps@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@3571 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/frontend/afe/models_test.py b/frontend/afe/models_test.py
index df9e964..143853b 100644
--- a/frontend/afe/models_test.py
+++ b/frontend/afe/models_test.py
@@ -5,6 +5,7 @@
 from autotest_lib.frontend import setup_django_environment
 from autotest_lib.frontend.afe import frontend_test_utils
 from autotest_lib.frontend.afe import models
+from autotest_lib.frontend.afe import model_logic
 
 
 class AclGroupTest(unittest.TestCase,
@@ -84,5 +85,21 @@
         self.assertTrue(task.is_complete)
 
 
+    def test_prepare(self):
+        self.assertEqual(13, models.SpecialTask.prepare(agent=None, task=13))
+        class DummyAgentTask(object):
+            host = None
+            queue_entry = None
+        self.assertRaises(ValueError, models.SpecialTask.prepare,
+                          DummyAgentTask(), None)
+        DummyAgentTask.TASK_TYPE = models.SpecialTask.Task.VERIFY
+        DummyAgentTask.host = models.Host.objects.create(hostname='hi')
+        task1 = models.SpecialTask.prepare(DummyAgentTask(), None)
+        task1.activate()
+        DummyAgentTask.TASK_TYPE = models.SpecialTask.Task.REPAIR
+        self.assertRaises(model_logic.ValidationError,
+                          models.SpecialTask.prepare, DummyAgentTask(), None)
+
+
 if __name__ == '__main__':
     unittest.main()