Improve logging for bluetooth_SDP_*AttributeRequest tests.

Add more logging statements and clarify error messages,
especially for the most frequent errors seen in the lab.

No functional changes to the behavior of the test.

ServiceSearchAttributeRequest:
- Split the giant and-ed line and make each sub-test fail instead of
  returning False
- Add in the test name to failures
- Alter the current retry method to handle errors instead of bool

SDP tests:
- Split initial device reset into two sections which fail
  independantly
- Set self.interactive before anything else, to avoid problems
  if the later things fail
- Change output to hex instead of decimal where it makes sense

Client side code:
- Catch btsocket errors and timeouts and log more context info
- Add logging messages to low-level failures
- Check if adapter variable is None before using it

TEST=ran all bluetooth tests on a wificell and saw them pass
BUG=chromium:426260

Change-Id: I919524a984304334265a7e1658fee956fdfbfdb8
Reviewed-on: https://chromium-review.googlesource.com/294622
Reviewed-by: Mussa Kiroga <mussa@chromium.org>
Tested-by: Katherine Threlkeld <kathrelkeld@chromium.org>
Commit-Queue: Katherine Threlkeld <kathrelkeld@chromium.org>
diff --git a/server/cros/bluetooth/bluetooth_test.py b/server/cros/bluetooth/bluetooth_test.py
index 9a23a1f..b14dd3b 100644
--- a/server/cros/bluetooth/bluetooth_test.py
+++ b/server/cros/bluetooth/bluetooth_test.py
@@ -32,7 +32,10 @@
 
     def warmup(self, device_host, tester_host, interactive=False):
         """Initialize the test member objects based on its arguments."""
-        super(BluetoothTest, self).warmup()
+        if interactive:
+            self.interactive = interactive_client.InteractiveClient(device_host)
+        else:
+            self.interactive = None
 
         self.device = bluetooth_device.BluetoothDevice(device_host)
 
@@ -41,11 +44,6 @@
         else:
             self.tester = None
 
-        if interactive:
-            self.interactive = interactive_client.InteractiveClient(device_host)
-        else:
-            self.interactive = None
-
 
     def cleanup(self):
         """Close the test member objects."""