Improve autoupdate_ForcedOOBEUpdate logging and failures.

This test is going to be added to a partner suite running on moblab so
the test needs to be a bit better at reporting what happens. This CL
does these things:

1. Checks that a reboot actually occurs during an OOBE update
2. Gives an update_engine error if the update fails to start
3. Reduces huge timeouts
4. Deals with hostlog timeouts better by giving an error code

BUG=chromium:936268
TEST=autoupdate_ForcedOOBEUpdate

Change-Id: I09cb0ef270270fe9900d5a1841ba9d63c02bc27b
Reviewed-on: https://chromium-review.googlesource.com/1714224
Tested-by: David Haddock <dhaddock@chromium.org>
Commit-Ready: David Haddock <dhaddock@chromium.org>
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-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 7a47ab1..1f1446b 100644
--- a/server/site_tests/autoupdate_ForcedOOBEUpdate/autoupdate_ForcedOOBEUpdate.py
+++ b/server/site_tests/autoupdate_ForcedOOBEUpdate/autoupdate_ForcedOOBEUpdate.py
@@ -35,16 +35,22 @@
         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_minutes = 10
         timeout = time.time() + 60 * timeout_minutes
+        boot_id = self._host.get_boot_id()
+
         while True:
             status = self._get_update_engine_status(timeout=10)
 
             # During reboot, status will be None
-            if status is not None:
-                if self._UPDATE_STATUS_IDLE == status[self._CURRENT_OP]:
-                    break
+            if status is None:
+                # Checking only for the status to change to IDLE can hide
+                # errors that occurred between status checks. When the forced
+                # update is complete, it will automatically reboot the device.
+                # So we wait for an explict reboot. We will verify that the
+                # update completed successfully later in verify_update_events()
+                self._host.test_wait_for_boot(boot_id)
+                break
             time.sleep(1)
             if time.time() > timeout:
                 raise error.TestFail('OOBE update did not finish in %d '