bluetooth autotests: Add functions to log to DUT and peers
TEST=Tested bluetooth_AdapterQuickSanity on RPI/Fizz
BUG=b:146671469
Cq-Depend: chromium:1983359
Change-Id: I9d5982a993674e093e2546f5667c2b7dfdc3cbbc
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/1983360
Commit-Queue: Shijin Abraham <shijinabraham@google.com>
Tested-by: Shijin Abraham <shijinabraham@google.com>
Reviewed-by: Shijin Abraham <shijinabraham@google.com>
Reviewed-by: Daniel Winkler <danielwinkler@google.com>
diff --git a/client/cros/bluetooth/bluetooth_device_xmlrpc_server.py b/client/cros/bluetooth/bluetooth_device_xmlrpc_server.py
index 90f0f8a..1f661ec 100755
--- a/client/cros/bluetooth/bluetooth_device_xmlrpc_server.py
+++ b/client/cros/bluetooth/bluetooth_device_xmlrpc_server.py
@@ -13,6 +13,7 @@
import logging
import logging.handlers
import os
+import subprocess
import common
from autotest_lib.client.bin import utils
@@ -214,6 +215,14 @@
dbus_interface=self.BLUEZ_DEBUG_LOG_IFACE)
return
+ def log_message(self, msg):
+ """ log a message to /var/log/messages."""
+ try:
+ cmd = ['logger', msg]
+ subprocess.call(cmd)
+ except Exception as e:
+ logging.error("log_message %s failed with %s", cmd, str(e))
+
@xmlrpc_server.dbus_safe(False)
def start_bluetoothd(self):
diff --git a/client/cros/chameleon/chameleon.py b/client/cros/chameleon/chameleon.py
index 7f9d9d1..37bd6a1 100644
--- a/client/cros/chameleon/chameleon.py
+++ b/client/cros/chameleon/chameleon.py
@@ -338,6 +338,9 @@
"""
self.host.get_file(CHAMELEOND_LOG_REMOTE_PATH, self._output_log_file)
+ def log_message(self, msg):
+ """Log a message in chameleond log and system log."""
+ self._chameleond_proxy.log_message(msg)
def get_all_ports(self):
"""Gets all the ports on Chameleon board which are connected.
diff --git a/server/cros/bluetooth/bluetooth_adapter_quick_tests.py b/server/cros/bluetooth/bluetooth_adapter_quick_tests.py
index fe34dc5..e980ba0 100644
--- a/server/cros/bluetooth/bluetooth_adapter_quick_tests.py
+++ b/server/cros/bluetooth/bluetooth_adapter_quick_tests.py
@@ -203,6 +203,7 @@
time.sleep(self.TEST_SLEEP_SECS)
self._print_delimiter()
logging.info('Starting test: %s', test_name)
+ self.log_message('Starting test: %s'% test_name)
def quick_test_test_end(self):
"""Log and track the test results"""
@@ -235,6 +236,7 @@
self.pkg_fail_count += 1
logging.info(result_msg)
+ self.log_message(result_msg)
self._print_delimiter()
self.bat_tests_results.append(result_msg)
self.pkg_tests_results.append(result_msg)
diff --git a/server/cros/bluetooth/bluetooth_adapter_tests.py b/server/cros/bluetooth/bluetooth_adapter_tests.py
index ac9ee00..bb2d4c5 100644
--- a/server/cros/bluetooth/bluetooth_adapter_tests.py
+++ b/server/cros/bluetooth/bluetooth_adapter_tests.py
@@ -834,6 +834,11 @@
self.bluetooth_facade.set_debug_log_levels(level, level, level, level)
+ def log_message(self, msg):
+ """ Write a string to log."""
+ self.bluetooth_facade.log_message(msg)
+
+
@_test_retry_and_log
def test_bluetoothd_running(self):
"""Test that bluetoothd is running."""
diff --git a/server/cros/bluetooth/bluetooth_device.py b/server/cros/bluetooth/bluetooth_device.py
index 94929af..c85f914 100644
--- a/server/cros/bluetooth/bluetooth_device.py
+++ b/server/cros/bluetooth/bluetooth_device.py
@@ -5,6 +5,7 @@
import base64
import json
import logging
+from datetime import datetime
from autotest_lib.client.bin import utils
from autotest_lib.client.cros import constants
@@ -65,6 +66,30 @@
return self._proxy.set_debug_log_levels(dispatcher_vb, newblue_vb,
bluez_vb, kernel_vb)
+ def log_message(self, msg, dut=True, peer=True):
+ """ Log a message in DUT log and peer logs with timestamp.
+
+ @param msg: message to be logged.
+ @param dut: log message on DUT
+ @param peer: log message on peer devices
+ """
+ try:
+ # TODO(b/146671469) Implement logging to tester
+
+ date = datetime.strftime(datetime.now(),"%Y:%m:%d %H:%M:%S:%f")
+ msg = "bluetooth autotest --- %s : %s ---" % (date, msg)
+ logging.debug("Broadcasting '%s'")
+
+ if dut:
+ self._proxy.log_message(msg)
+
+ if peer:
+ for chameleon in self.host.chameleon_list:
+ chameleon.log_message(msg)
+ except Exception as e:
+ logging.error("Exception '%s' in log_message '%s'", str(e), msg)
+
+
def start_bluetoothd(self):
"""start bluetoothd.