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):