Special tasks show "Failed" as their status instead of "Completed" if
they failed
Signed-off-by: James Ren <jamesren@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@3946 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/frontend/afe/models.py b/frontend/afe/models.py
index e2909f8..5a42742 100644
--- a/frontend/afe/models.py
+++ b/frontend/afe/models.py
@@ -938,6 +938,7 @@
is_complete = dbmodels.BooleanField(default=False, blank=False, null=False)
time_started = dbmodels.DateTimeField(null=True, blank=True)
queue_entry = dbmodels.ForeignKey(HostQueueEntry, blank=True, null=True)
+ success = dbmodels.BooleanField(default=False, blank=False, null=False)
objects = model_logic.ExtendedManager()
@@ -957,7 +958,9 @@
present similar statuses.
"""
if self.is_complete:
- return HostQueueEntry.Status.COMPLETED
+ if self.success:
+ return HostQueueEntry.Status.COMPLETED
+ return HostQueueEntry.Status.FAILED
if self.is_active:
return HostQueueEntry.Status.RUNNING
return HostQueueEntry.Status.QUEUED
@@ -992,13 +995,14 @@
self.save()
- def finish(self):
+ def finish(self, success):
"""
Sets a task as completed
"""
logging.info('Finished: %s', self)
self.is_active = False
self.is_complete = True
+ self.success = success
self.save()
diff --git a/frontend/afe/models_test.py b/frontend/afe/models_test.py
index 47932e0..734be2a 100755
--- a/frontend/afe/models_test.py
+++ b/frontend/afe/models_test.py
@@ -92,9 +92,12 @@
task.update_object(is_active=True)
self.assertEquals(task.status, 'Running')
- task.update_object(is_active=False, is_complete=True)
+ task.update_object(is_active=False, is_complete=True, success=True)
self.assertEquals(task.status, 'Completed')
+ task.update_object(success=False)
+ self.assertEquals(task.status, 'Failed')
+
def test_activate(self):
task = self._create_task()
@@ -106,9 +109,10 @@
def test_finish(self):
task = self._create_task()
task.activate()
- task.finish()
+ task.finish(True)
self.assertFalse(task.is_active)
self.assertTrue(task.is_complete)
+ self.assertTrue(task.success)
if __name__ == '__main__':
diff --git a/frontend/migrations/041_add_special_task_success.py b/frontend/migrations/041_add_special_task_success.py
new file mode 100644
index 0000000..2000088
--- /dev/null
+++ b/frontend/migrations/041_add_special_task_success.py
@@ -0,0 +1,14 @@
+UP_SQL = """
+ALTER TABLE special_tasks
+ADD COLUMN success TINYINT(1)
+NOT NULL DEFAULT 0;
+
+UPDATE special_tasks
+SET success = 1
+WHERE is_complete = 1;
+"""
+
+DOWN_SQL = """
+ALTER TABLE special_tasks
+DROP COLUMN success;
+"""