[autotest] Remove try catch around collect_cros_au_logs.

The devserver has been changed to return json and it is working
successfully so we can remove this check since there are no longer two
cases to account for.

Updating dev_server_unittest too to mock out the json calls.

BUG=chromium:709710
TEST=test_that <IP> provision_AutoUpdate

Change-Id: I8eec58eb957c47f4051ef377069c8a8fb2ec31ef
Reviewed-on: https://chromium-review.googlesource.com/516511
Commit-Ready: David Haddock <dhaddock@chromium.org>
Tested-by: David Haddock <dhaddock@chromium.org>
Reviewed-by: Xixuan Wu <xixuan@chromium.org>
diff --git a/client/common_lib/cros/dev_server.py b/client/common_lib/cros/dev_server.py
index c75a7d1..b72aff6 100644
--- a/client/common_lib/cros/dev_server.py
+++ b/client/common_lib/cros/dev_server.py
@@ -1711,6 +1711,18 @@
         return os.path.join(log_dir, CROS_AU_LOG_FILENAME % (
                     host_name, pid))
 
+    def _read_json_response_from_devserver(self, response):
+        """Reads the json response from the devserver.
+
+        This is extracted to its own function so that it can be easily mocked.
+        @param response: the response for a devserver.
+        """
+        try:
+            return json.loads(response)
+        except ValueError as e:
+            raise DevServerException(e)
+
+
     @remote_devserver_call()
     def _collect_au_log(self, log_dir, **kwargs):
         """Collect logs from devserver after cros-update process is finished.
@@ -1734,23 +1746,21 @@
                 log_dir, kwargs['host_name'], kwargs['pid'])
         logging.debug('Saving auto-update logs into %s', write_file)
 
+        au_logs = self._read_json_response_from_devserver(response)
+
         try:
-            au_logs = json.loads(response)
             for k, v in au_logs['host_logs'].items():
                 log_name = '%s_%s_%s' % (k, kwargs['host_name'], kwargs['pid'])
                 log_path = os.path.join(log_dir, log_name)
                 with open(log_path, 'w') as out_log:
                     out_log.write(v)
-            cros_au_log = au_logs['cros_au_log']
-        except ValueError:
-            logging.debug('collect_cros_au_log response was not json.')
-            cros_au_log = response
-        except:
-          raise DevServerException('Failed to write auto-update hostlogs')
+        except IOError as e:
+            raise DevServerException('Failed to write auto-update hostlogs: '
+                                     '%s' % e)
 
         try:
             with open(write_file, 'w') as out_log:
-                out_log.write(cros_au_log)
+                out_log.write(au_logs['cros_au_log'])
         except:
             raise DevServerException('Failed to write auto-update logs into '
                                      '%s' % write_file)
diff --git a/client/common_lib/cros/dev_server_unittest.py b/client/common_lib/cros/dev_server_unittest.py
index ae1dc10..da839c2 100755
--- a/client/common_lib/cros/dev_server_unittest.py
+++ b/client/common_lib/cros/dev_server_unittest.py
@@ -253,6 +253,8 @@
         self.mox.StubOutWithMock(os.path, 'exists')
         # Hide local restricted_subnets setting.
         dev_server.RESTRICTED_SUBNETS = []
+        self.mox.StubOutWithMock(dev_server.ImageServer,
+                                 '_read_json_response_from_devserver')
 
 
     def testSimpleResolve(self):
@@ -442,6 +444,8 @@
         devserver."""
         response1 = (True, 100)
         response2 = (True, 'Completed')
+        response3 = {'host_logs': {'a': 'log'}, 'cros_au_log': 'logs'}
+
         argument1 = mox.And(mox.StrContains(self._HOST),
                             mox.StrContains('cros_au'))
         argument2 = mox.And(mox.StrContains(self._HOST),
@@ -492,8 +496,13 @@
                 dev_server.ImageServerBase.run_call(argument3).AndRaise(
                         raised_error)
             else:
+                dev_server.ImageServer._read_json_response_from_devserver(
+                        mox.IgnoreArg()).AndReturn(response3)
                 dev_server.ImageServerBase.run_call(argument3).AndReturn('log')
                 os.path.exists(mox.IgnoreArg()).AndReturn(True)
+
+                # We write two log files: host_log and cros_au_log
+                self._mockWriteFile()
                 self._mockWriteFile()
 
         if 'handler_cleanup_error' in kwargs: