| #!/usr/bin/env python3 |
| # |
| # Copyright 2020 - The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| import time |
| |
| from acts import asserts |
| from cert.gd_base_test_facade_only import GdFacadeOnlyBaseTestClass |
| from google.protobuf import empty_pb2 as empty_proto |
| from facade import rootservice_pb2 as facade_rootservice |
| from hci.facade import controller_facade_pb2 as controller_facade |
| |
| |
| class ControllerTest(GdFacadeOnlyBaseTestClass): |
| |
| def setup_test(self): |
| self.device_under_test.rootservice.StartStack( |
| facade_rootservice.StartStackRequest( |
| module_under_test=facade_rootservice.BluetoothModule.Value( |
| 'HCI_INTERFACES'),)) |
| self.cert_device.rootservice.StartStack( |
| facade_rootservice.StartStackRequest( |
| module_under_test=facade_rootservice.BluetoothModule.Value( |
| 'HCI_INTERFACES'),)) |
| |
| self.device_under_test.wait_channel_ready() |
| self.cert_device.wait_channel_ready() |
| |
| def teardown_test(self): |
| self.device_under_test.rootservice.StopStack( |
| facade_rootservice.StopStackRequest()) |
| self.cert_device.rootservice.StopStack( |
| facade_rootservice.StopStackRequest()) |
| |
| def test_get_addresses(self): |
| cert_address_response = self.cert_device.hci_controller.GetMacAddress( |
| empty_proto.Empty()) |
| dut_address_response = self.device_under_test.hci_controller.GetMacAddress( |
| empty_proto.Empty()) |
| asserts.assert_true( |
| cert_address_response.address != dut_address_response.address, |
| msg="Expected cert and dut address to be different %s" % |
| cert_address_response.address) |
| time.sleep(1) # This shouldn't be needed b/149120542 |
| |
| def test_get_local_extended_features(self): |
| request = controller_facade.PageNumberMsg() |
| request.page_number = 1 |
| dut_feature_response1 = self.device_under_test.hci_controller.GetLocalExtendedFeatures( |
| request) |
| request0 = controller_facade.PageNumberMsg() |
| request0.page_number = 0 |
| dut_feature_response0 = self.device_under_test.hci_controller.GetLocalExtendedFeatures( |
| request0) |
| asserts.assert_true( |
| dut_feature_response1.page != dut_feature_response0.page, |
| msg="Expected cert dut feature pages to be different %d" % |
| dut_feature_response1.page) |
| |
| def test_write_local_name(self): |
| self.device_under_test.hci_controller.WriteLocalName( |
| controller_facade.NameMsg(name=b'ImTheDUT')) |
| self.cert_device.hci_controller.WriteLocalName( |
| controller_facade.NameMsg(name=b'ImTheCert')) |
| cert_name_msg = self.cert_device.hci_controller.GetLocalName( |
| empty_proto.Empty()).name |
| dut_name_msg = self.device_under_test.hci_controller.GetLocalName( |
| empty_proto.Empty()).name |
| asserts.assert_true( |
| dut_name_msg == b'ImTheDUT', |
| msg="unexpected dut name %s" % dut_name_msg) |
| asserts.assert_true( |
| cert_name_msg == b'ImTheCert', |
| msg="unexpected cert name %s" % cert_name_msg) |