#!/usr/bin/env python3 # # Copyright (C) 2019 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. """ This test exercises basic setup of various GATT server configurations. Setup: This test only requires one fuchsia device as the purpose is to test different configurations of valid GATT services. """ from acts import signals from acts.base_test import BaseTestClass from acts.test_decorators import test_tracker_info import gatt_server_databases as database class GattServerSetupTest(BaseTestClass): err_message = "Setting up database failed with: {}" def setup_class(self): super().setup_class() self.fuchsia_dut = self.fuchsia_devices[0] def setup_database(self, database): setup_result = self.fuchsia_dut.sl4f.gatts_lib.publishServer(database) if setup_result.get("error") is None: signals.TestPass(setup_result.get("result")) else: raise signals.TestFailure( self.err_message.format(setup_result.get("error"))) def test_teardown(self): self.fuchsia_dut.sl4f.gatts_lib.closeServer() @test_tracker_info(uuid='25f3463b-b6bd-408b-9924-f18ed3b9bbe2') def test_single_primary_service(self): """Test GATT Server Setup: Single Primary Service Test a single primary service as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.SINGLE_PRIMARY_SERVICE) @test_tracker_info(uuid='084d2c91-ca8c-4572-8e9b-053495acd894') def test_single_secondary_service(self): """Test GATT Server Setup: Single Secondary Service Test a single secondary service as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.SINGLE_SECONDARY_SERVICE) @test_tracker_info(uuid='9ff0a91d-3b17-4e11-b5d6-b91997c79a04') def test_primary_and_secondary_service(self): """Test GATT Server Setup: Primary and secondary service Test primary and secondary service as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.PRIMARY_AND_SECONDARY_SERVICES) @test_tracker_info(uuid='4f57e827-5511-4d5d-9591-c247d84d6d6c') def test_duplicate_services(self): """Test GATT Server Setup: Duplicate service uuids Test duplicate service uuids as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.DUPLICATE_SERVICES) ### Begin SIG defined services ### @test_tracker_info(uuid='6b0993f5-18ff-4a20-be3d-d76529eb1126') def test_alert_notification_service(self): """Test GATT Server Setup: Alert Notification Service Test Alert Notification Service as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.ALERT_NOTIFICATION_SERVICE) @test_tracker_info(uuid='c42e8bc9-1ba7-4d4e-b67e-9c19cc11472c') def test_automation_io_service(self): """Test GATT Server Setup: Automation IO Test Automation IO as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.AUTOMATION_IO_SERVICE) @test_tracker_info(uuid='68936f97-4a4d-4bfb-9826-558846a0a53a') def test_battery_service(self): """Test GATT Server Setup: Battery Service Test Battery Service as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.BATTERY_SERVICE) @test_tracker_info(uuid='678864a1-edcf-4335-85b4-1494d00c62be') def test_blood_pressure_service(self): """Test GATT Server Setup: Blood Pressure Test Blood Pressure as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.BLOOD_PRESSURE_SERVICE) @test_tracker_info(uuid='1077d373-7d9b-4a43-acde-7d20bb0fa4e4') def test_body_composition_service(self): """Test GATT Server Setup: Body Composition Test Body Composition as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.BODY_COMPOSITION_SERVICE) @test_tracker_info(uuid='67a82719-7dcb-4d11-b9a4-a95c05f6dda6') def test_bond_management_service(self): """Test GATT Server Setup: Bond Management Service Test Bond Management Service as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.BOND_MANAGEMENT_SERVICE) @test_tracker_info(uuid='c0edd532-00f1-4afc-85f2-114477d81a0a') def test_continuous_glucose_monitoring_service(self): """Test GATT Server Setup: Continuous Glucose Monitoring Test Continuous Glucose Monitoring as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.CONTINUOUS_GLUCOSE_MONITORING_SERVICE) @test_tracker_info(uuid='23b3faeb-1423-4687-81bc-ff9d71bc1c1c') def test_current_time_service(self): """Test GATT Server Setup: Current Time Service Test Current Time Service as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.CURRENT_TIME_SERVICE) @test_tracker_info(uuid='7cc592d8-69e6-459e-b4ae-fe0b1be77491') def test_cycling_power_service(self): """Test GATT Server Setup: Cycling Power Test Cycling Power as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.CYCLING_POWER_SERVICE) @test_tracker_info(uuid='3134ee93-7e19-4bd5-ab09-9bcb4a8f6b7d') def test_cycling_speed_and_cadence_service(self): """Test GATT Server Setup: Cycling Speed and Cadence Test Cycling Speed and Cadence as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.CYCLING_SPEED_AND_CADENCE_SERVICE) @test_tracker_info(uuid='c090443e-c4cf-42de-ae79-a60dae50cad4') def test_device_information_service(self): """Test GATT Server Setup: Device Information Test Device Information as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.DEVICE_INFORMATION_SERVICE) @test_tracker_info(uuid='bd696344-34a4-4665-857f-fafbd2d3c849') def test_environmental_sensing_service(self): """Test GATT Server Setup: Environmental Sensing Test Environmental Sensing as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.ENVIRONMENTAL_SENSING_SERVICE) @test_tracker_info(uuid='d567c23b-276e-43c9-9862-94d0d36887c2') def test_fitness_machine_service(self): """Test GATT Server Setup: Fitness Machine Test Fitness Machine as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.FITNESS_MACHINE_SERVICE) @test_tracker_info(uuid='47084eb2-b99f-4f8d-b943-04148b8a71ca') def test_glucose_service(self): """Test GATT Server Setup: Glucose Test Glucose as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.GLUCOSE_SERVICE) @test_tracker_info(uuid='d64ce217-13f1-4cdd-965a-03d06349ac53') def test_health_thermometer_service(self): """Test GATT Server Setup: Health Thermometer Test Health Thermometer as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.HEALTH_THERMOMETER_SERVICE) @test_tracker_info(uuid='2510d536-0464-4e25-a2c1-f2acc989e7ef') def test_heart_rate_service(self): """Test GATT Server Setup: Heart Rate Test Heart Rate as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.HEART_RATE_SERVICE) @test_tracker_info(uuid='cc3ca7f2-d783-426d-a62e-86a56cafec96') def test_http_proxy_service(self): """Test GATT Server Setup: HTTP Proxy Test HTTP Proxy as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.HTTP_PROXY_SERVICE) @test_tracker_info(uuid='4e265f85-12aa-43e3-9560-b9f2fb015116') def test_human_interface_device_service(self): """Test GATT Server Setup: Human Interface Device Test Human Interface Device as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.HUMAN_INTERFACE_DEVICE_SERVICE) @test_tracker_info(uuid='3e092fb8-fe5f-42a9-ac1d-9951e4ddebe5') def test_immediate_alert_service(self): """Test GATT Server Setup: Immediate Alert Test Immediate Alert as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.IMMEDIATE_ALERT_SERVICE) @test_tracker_info(uuid='c6eb782a-4999-460d-9ebe-d4a050002242') def test_indoor_positioning_service(self): """Test GATT Server Setup: Indoor Positioning Test Indoor Positioning as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.INDOOR_POSITIONING_SERVICE) @test_tracker_info(uuid='96ac4b99-2232-4efd-8039-d62e8f98f0ef') def test_insulin_delivery_service(self): """Test GATT Server Setup: Insulin Delivery Test Insulin Delivery as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.INSULIN_DELIVERY_SERVICE) @test_tracker_info(uuid='28a0f54e-906d-4c9a-800f-238ce1a3829a') def test_internet_protocol_support_service(self): """Test GATT Server Setup: Internet Protocol Support Service Test Internet Protocol Support Service as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.INTERNET_PROTOCOL_SUPPORT_SERVICE) @test_tracker_info(uuid='3d0452ce-5cfc-4312-97c3-e7060e2efce6') def test_link_loss_service(self): """Test GATT Server Setup: Link Loss Test Link Loss as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.LINK_LOSS_SERVICE) @test_tracker_info(uuid='79a375e9-1f6c-498e-a7f8-63a2e2fdb03b') def test_location_and_navigation_service(self): """Test GATT Server Setup: Location and Navigation Test Location and Navigation as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.LOCATION_AND_NAVIGATION_SERVICE) @test_tracker_info(uuid='4517a844-e6b3-4f28-91f1-989d7affd190') def test_mesh_provisioning_service(self): """Test GATT Server Setup: Mesh Provisioning Service Test Mesh Provisioning Service as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.MESH_PROVISIONING_SERVICE) @test_tracker_info(uuid='960fdf95-4e55-4c88-86ce-a6d31dd094fa') def test_mesh_proxy_service(self): """Test GATT Server Setup: Mesh Proxy Service Test Mesh Proxy Service as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.MESH_PROXY_SERVICE) @test_tracker_info(uuid='c97f933a-2200-46ae-a161-9c133fcc2c67') def test_next_dst_change_service(self): """Test GATT Server Setup: Next DST Change Service Test Next DST Change Service as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.NEXT_DST_CHANGE_SERVICE) @test_tracker_info(uuid='90b2caa1-f0fa-4afa-8771-924234deae17') def test_object_transfer_service(self): """Test GATT Server Setup: Object Transfer Service Test Object Transfer Service as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.OBJECT_TRANSFER_SERVICE) @test_tracker_info(uuid='28ac2e34-1d0d-4c29-95f3-92e845dc65a2') def test_phone_alert_status_service(self): """Test GATT Server Setup: Phone Alert Status Service Test Phone Alert Status Service as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.PHONE_ALERT_STATUS_SERVICE) @test_tracker_info(uuid='fb19e36f-0a25-48af-8787-dae2b213bf5b') def test_pulse_oximeter_service(self): """Test GATT Server Setup: Pulse Oximeter Service Test Pulse Oximeter Service as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.PULSE_OXIMETER_SERVICE) @test_tracker_info(uuid='5e59820a-db03-4acd-96a4-1e3fc0bf7f53') def test_reconnection_configuration_service(self): """Test GATT Server Setup: Reconnection Configuration Test Reconnection Configuration as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.RECONNECTION_CONFIGURATION_SERVICE) @test_tracker_info(uuid='7b2525c9-178a-44db-aa3b-f3cf5ceed132') def test_reference_time_update_service(self): """Test GATT Server Setup: Reference Time Update Service Test Reference Time Update Service as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.REFERENCE_TIME_UPDATE_SERVICE) @test_tracker_info(uuid='71d657db-4519-4158-b6d2-a744f2cc2c22') def test_running_speed_and_cadence_service(self): """Test GATT Server Setup: Running Speed and Cadence Test Running Speed and Cadence as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.RUNNING_SPEED_AND_CADENCE_SERVICE) @test_tracker_info(uuid='4d3bd69a-978a-4483-9a2d-f1aff308a845') def test_scan_parameters_service(self): """Test GATT Server Setup: Scan Parameters Test Scan Parameters as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.SCAN_PARAMETERS_SERVICE) @test_tracker_info(uuid='2c6f95a1-a353-4147-abb6-714bc3aacbb4') def test_transport_discovery_service(self): """Test GATT Server Setup: Transport Discovery Test Transport Discovery as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.TRANSPORT_DISCOVERY_SERVICE) @test_tracker_info(uuid='3e36f2ba-5590-4201-897e-7321c8e44f4c') def test_tx_power_service(self): """Test GATT Server Setup: Tx Power Test Tx Power as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.TX_POWER_SERVICE) @test_tracker_info(uuid='c62d70f8-e474-4c88-9960-f2ce2200852e') def test_user_data_service(self): """Test GATT Server Setup: User Data Test User Data as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.USER_DATA_SERVICE) @test_tracker_info(uuid='18951e43-f587-4395-93e3-b440dc4b3285') def test_weight_scale_service(self): """Test GATT Server Setup: Weight Scale Test Weight Scale as a GATT server input. Steps: 1. Setup input database Expected Result: Verify that there are no errors after setting up the input database. Returns: signals.TestPass if no errors signals.TestFailure if there are any errors during setup TAGS: GATT Priority: 1 """ self.setup_database(database.WEIGHT_SCALE_SERVICE) ### End SIG defined services ###