Bluetooth Autotest: fix data transfer over XMLRPC

We transfer responses returned from Service Search/Attribute requests over
XML RPC. But some values (for example, 128-bit UUIDs) may exceed standard
XML's 64-bit long int. This CL adds json dumps/loads to serialize and
deserialize data, so that we will not have such types mismatch problems in
future.

BUG=chromium:446559
TEST=test_that -b $BOARD $HOST suite:bluetooth_qualification

Change-Id: I57f4207b46c7041d5f6dacbb68095340727636e9
Reviewed-on: https://chromium-review.googlesource.com/239314
Tested-by: Artem Rakhov <arakhov@chromium.org>
Reviewed-by: Scott Remnant <keybuk@chromium.org>
Commit-Queue: Artem Rakhov <arakhov@chromium.org>
diff --git a/server/cros/bluetooth/bluetooth_tester.py b/server/cros/bluetooth/bluetooth_tester.py
index 6ac0552..be213bc 100644
--- a/server/cros/bluetooth/bluetooth_tester.py
+++ b/server/cros/bluetooth/bluetooth_tester.py
@@ -150,10 +150,11 @@
         @return list of found services' service record handles or Error Code
 
         """
-        return self._proxy.service_search_request(uuids, max_rec_cnt,
-                                                  preferred_size,
-                                                  forced_pdu_size,
-                                                  invalid_request)
+        return json.loads(
+                self._proxy.service_search_request(
+                 uuids, max_rec_cnt, preferred_size, forced_pdu_size,
+                 invalid_request)
+        )
 
 
     def service_attribute_request(self, handle, max_attr_byte_count, attr_ids,
@@ -174,11 +175,11 @@
         @return list of found attributes IDs and their values or Error Code
 
         """
-        return self._proxy.service_attribute_request(handle,
-                                                     max_attr_byte_count,
-                                                     attr_ids,
-                                                     forced_pdu_size,
-                                                     invalid_request)
+        return json.loads(
+                self._proxy.service_attribute_request(
+                 handle, max_attr_byte_count, attr_ids, forced_pdu_size,
+                 invalid_request)
+        )
 
 
     def service_search_attribute_request(self, uuids, max_attr_byte_count,
@@ -202,12 +203,11 @@
         @return list of found attributes IDs and their values or Error Code
 
         """
-        return self._proxy.service_search_attribute_request(uuids,
-                                                            max_attr_byte_count,
-                                                            attr_ids,
-                                                            preferred_size,
-                                                            forced_pdu_size,
-                                                            invalid_request)
+        return json.loads(
+                self._proxy.service_search_attribute_request(
+                 uuids, max_attr_byte_count, attr_ids, preferred_size,
+                 forced_pdu_size, invalid_request)
+        )
 
 
 def create_host_from(device_host, args=None):