[autotest] hqe aborted before starting do not get finished time

TEST=Run a job locally and abort it. Verify the finished time is
not set
BUG=chromium:391509
DEPLOY=scheduler

Change-Id: I1447ba4a7acef31a876267cd47de99b8bdfeaa4e
Reviewed-on: https://chromium-review.googlesource.com/212918
Reviewed-by: Fang Deng <fdeng@chromium.org>
Tested-by: Fang Deng <fdeng@chromium.org>
Commit-Queue: Fang Deng <fdeng@chromium.org>
diff --git a/scheduler/scheduler_models.py b/scheduler/scheduler_models.py
index 303e0e3..73b90fa 100644
--- a/scheduler/scheduler_models.py
+++ b/scheduler/scheduler_models.py
@@ -624,7 +624,8 @@
         if status is not models.HostQueueEntry.Status.ABORTED:
             self.job.stop_if_necessary()
 
-        self.set_finished_on_now()
+        if self.started_on:
+            self.set_finished_on_now()
         if not self.execution_subdir:
             return
         # unregister any possible pidfiles associated with this queue entry
diff --git a/scheduler/scheduler_models_unittest.py b/scheduler/scheduler_models_unittest.py
index aa16660..1421f72 100755
--- a/scheduler/scheduler_models_unittest.py
+++ b/scheduler/scheduler_models_unittest.py
@@ -262,6 +262,7 @@
         hqe.aborted = True
         hqe.complete = False
         hqe.status = models.HostQueueEntry.Status.STARTING
+        hqe.started_on = datetime.datetime.now()
 
         dispatcher = self.god.create_mock_class(monitor_db.BaseDispatcher,
                                                 'BaseDispatcher')
@@ -297,6 +298,7 @@
         """Test that finished_on is set when hqe completes."""
         for status in host_queue_entry_states.Status.values:
             hqe = self._create_hqe(hosts=[1])
+            hqe.started_on = datetime.datetime.now()
             self.assertIsNone(hqe.finished_on)
             hqe.set_status(status)
             if status in host_queue_entry_states.COMPLETE_STATUSES: