Fixes for infrequent AU test failures.

There are a few AU failures that happen infrequently. I will group the
fixes for them in this CL:

1. Sometimes an update is in checking for update status for >90seconds.
2. Sometimes we spend almost an hour in a while loop before autotest
gives up. I will just error out earlier.
3. If update_Engine_client --status returns an error event I will fail
the test as trying to figure out what happens from the logs when the
test ignores the status is difficult.
4. No need to restart update engine at the start of an OOBE update test.

BUG=None
TEST=autoupdate_ForcedOOBEUpdate*

Change-Id: I4104992db53f1f7879c7e5e3bbf9c3f151ab42a8
Reviewed-on: https://chromium-review.googlesource.com/1097418
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: David Haddock <dhaddock@chromium.org>
Reviewed-by: Amin Hassani <ahassani@chromium.org>
diff --git a/server/site_tests/autoupdate_ForcedOOBEUpdate/autoupdate_ForcedOOBEUpdate.py b/server/site_tests/autoupdate_ForcedOOBEUpdate/autoupdate_ForcedOOBEUpdate.py
index ae65edd..4f89060 100644
--- a/server/site_tests/autoupdate_ForcedOOBEUpdate/autoupdate_ForcedOOBEUpdate.py
+++ b/server/site_tests/autoupdate_ForcedOOBEUpdate/autoupdate_ForcedOOBEUpdate.py
@@ -30,6 +30,9 @@
         Repeated check status of update. It should move from DOWNLOADING to
         FINALIZING to COMPLETE (then reboot) to IDLE.
         """
+        # 20 minute timeout.
+        timeout_minutes = 20
+        timeout = time.time() + 60 * timeout_minutes
         while True:
             status = self._get_update_engine_status(timeout=10)
 
@@ -38,6 +41,9 @@
                 if self._UPDATE_STATUS_IDLE == status[self._CURRENT_OP]:
                     break
             time.sleep(1)
+            if time.time() > timeout:
+                raise error.TestFail('OOBE update did not finish in %d '
+                                     'minutes.' % timeout_minutes)
 
 
     def run_once(self, full_payload=True, cellular=False,