Loading system/gd/cert/gd_base_test.pydeleted 100644 → 0 +0 −77 Original line number Diff line number Diff line #!/usr/bin/env python3 # # Copyright 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. from acts.base_test import BaseTestClass import importlib import logging import os import signal import subprocess ANDROID_BUILD_TOP = os.environ.get('ANDROID_BUILD_TOP') class GdBaseTestClass(BaseTestClass): def __init__(self, configs): BaseTestClass.__init__(self, configs) log_path_base = getattr(configs, "log_path", "/tmp/logs") gd_devices = self.controller_configs.get("GdDevice") gd_cert_devices = self.controller_configs.get("GdCertDevice") self.rootcanal_running = False if 'rootcanal' in self.controller_configs: self.rootcanal_running = True rootcanal_logpath = os.path.join(log_path_base, 'rootcanal_logs.txt') self.rootcanal_logs = open(rootcanal_logpath, 'w') rootcanal_config = self.controller_configs['rootcanal'] rootcanal_hci_port = str(rootcanal_config.get("hci_port", "6402")) android_host_out = os.environ.get('ANDROID_HOST_OUT') rootcanal = android_host_out + "/nativetest64/root-canal/root-canal" self.rootcanal_process = subprocess.Popen( [ rootcanal, str(rootcanal_config.get("test_port", "6401")), rootcanal_hci_port, str(rootcanal_config.get("link_layer_port", "6403")) ], cwd=ANDROID_BUILD_TOP, env=os.environ.copy(), stdout=self.rootcanal_logs, stderr=self.rootcanal_logs) for gd_device in gd_devices: gd_device["rootcanal_port"] = rootcanal_hci_port for gd_cert_device in gd_cert_devices: gd_cert_device["rootcanal_port"] = rootcanal_hci_port self.register_controller( importlib.import_module('cert.gd_device'), builtin=True) self.register_controller( importlib.import_module('cert.gd_cert_device'), builtin=True) def teardown_class(self): if self.rootcanal_running: self.rootcanal_process.send_signal(signal.SIGINT) rootcanal_return_code = self.rootcanal_process.wait() self.rootcanal_logs.close() if rootcanal_return_code != 0 and\ rootcanal_return_code != -signal.SIGINT: logging.error( "rootcanal stopped with code: %d" % rootcanal_return_code) return False system/gd/cert/gd_base_test_facade_only.py +1 −3 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ # limitations under the License. from acts.base_test import BaseTestClass from acts import context import importlib import logging Loading @@ -30,13 +29,12 @@ class GdFacadeOnlyBaseTestClass(BaseTestClass): def setup_class(self): log_path_base = context.get_current_context().get_full_output_path() gd_devices = self.controller_configs.get("GdDevice") self.rootcanal_running = False if 'rootcanal' in self.controller_configs: self.rootcanal_running = True rootcanal_logpath = os.path.join(log_path_base, rootcanal_logpath = os.path.join(self.log_path, 'rootcanal_logs.txt') self.rootcanal_logs = open(rootcanal_logpath, 'w') rootcanal_config = self.controller_configs['rootcanal'] Loading system/gd/cert/gd_device.py +3 −3 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ import logging from facade import rootservice_pb2_grpc as facade_rootservice_pb2_grpc from cert.gd_device_base import GdDeviceBase, GdDeviceConfigError, replace_vars from cert.gd_device_base import GdDeviceBase, replace_vars from hal import facade_pb2_grpc as hal_facade_pb2_grpc from hci.facade import facade_pb2_grpc as hci_facade_pb2_grpc from hci.facade import acl_manager_facade_pb2_grpc Loading @@ -35,9 +35,9 @@ ACTS_CONTROLLER_REFERENCE_NAME = "gd_devices" def create(configs): if not configs: raise GdDeviceConfigError("Configuration is empty") raise Exception("Configuration is empty") elif not isinstance(configs, list): raise GdDeviceConfigError("Configuration should be a list") raise Exception("Configuration should be a list") return get_instances_with_configs(configs) Loading system/gd/cert/gd_device_base.py +1 −22 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ import socket import subprocess import time from acts import context, error, tracelogger from acts import context from acts.controllers.adb import AdbProxy import grpc Loading Loading @@ -59,11 +59,6 @@ class GdDeviceBase: # logging.log_path only exists when this is used in an ACTS test run. self.log_path_base = context.get_current_context().get_full_output_path( ) self.log = tracelogger.TraceLogger( GdDeviceBaseLoggerAdapter(logging.getLogger(), { 'device': label, 'type_identifier': type_identifier })) backing_process_logpath = os.path.join( self.log_path_base, Loading Loading @@ -146,19 +141,3 @@ class GdDeviceBase: future.result(timeout=WAIT_CHANNEL_READY_TIMEOUT) except grpc.FutureTimeoutError: logging.error("wait channel ready timeout") class GdDeviceBaseLoggerAdapter(logging.LoggerAdapter): def process(self, msg, kwargs): msg = "[%s|%s] %s" % (self.extra["type_identifier"], self.extra["device"], msg) return (msg, kwargs) class GdDeviceConfigError(Exception): """Raised when GdDevice configs are malformatted.""" class GdDeviceError(error.ActsError): """Raised when there is an error in GdDevice.""" system/gd/hci/acl_manager.cc +1 −0 Original line number Diff line number Diff line Loading @@ -225,6 +225,7 @@ struct AclManager::impl { hci_layer_->UnregisterEventHandler(EventCode::READ_REMOTE_EXTENDED_FEATURES_COMPLETE); hci_queue_end_->UnregisterDequeue(); unregister_all_connections(); controller_->UnregisterCompletedAclPacketsCallback(); acl_connections_.clear(); hci_queue_end_ = nullptr; handler_ = nullptr; Loading Loading
system/gd/cert/gd_base_test.pydeleted 100644 → 0 +0 −77 Original line number Diff line number Diff line #!/usr/bin/env python3 # # Copyright 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. from acts.base_test import BaseTestClass import importlib import logging import os import signal import subprocess ANDROID_BUILD_TOP = os.environ.get('ANDROID_BUILD_TOP') class GdBaseTestClass(BaseTestClass): def __init__(self, configs): BaseTestClass.__init__(self, configs) log_path_base = getattr(configs, "log_path", "/tmp/logs") gd_devices = self.controller_configs.get("GdDevice") gd_cert_devices = self.controller_configs.get("GdCertDevice") self.rootcanal_running = False if 'rootcanal' in self.controller_configs: self.rootcanal_running = True rootcanal_logpath = os.path.join(log_path_base, 'rootcanal_logs.txt') self.rootcanal_logs = open(rootcanal_logpath, 'w') rootcanal_config = self.controller_configs['rootcanal'] rootcanal_hci_port = str(rootcanal_config.get("hci_port", "6402")) android_host_out = os.environ.get('ANDROID_HOST_OUT') rootcanal = android_host_out + "/nativetest64/root-canal/root-canal" self.rootcanal_process = subprocess.Popen( [ rootcanal, str(rootcanal_config.get("test_port", "6401")), rootcanal_hci_port, str(rootcanal_config.get("link_layer_port", "6403")) ], cwd=ANDROID_BUILD_TOP, env=os.environ.copy(), stdout=self.rootcanal_logs, stderr=self.rootcanal_logs) for gd_device in gd_devices: gd_device["rootcanal_port"] = rootcanal_hci_port for gd_cert_device in gd_cert_devices: gd_cert_device["rootcanal_port"] = rootcanal_hci_port self.register_controller( importlib.import_module('cert.gd_device'), builtin=True) self.register_controller( importlib.import_module('cert.gd_cert_device'), builtin=True) def teardown_class(self): if self.rootcanal_running: self.rootcanal_process.send_signal(signal.SIGINT) rootcanal_return_code = self.rootcanal_process.wait() self.rootcanal_logs.close() if rootcanal_return_code != 0 and\ rootcanal_return_code != -signal.SIGINT: logging.error( "rootcanal stopped with code: %d" % rootcanal_return_code) return False
system/gd/cert/gd_base_test_facade_only.py +1 −3 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ # limitations under the License. from acts.base_test import BaseTestClass from acts import context import importlib import logging Loading @@ -30,13 +29,12 @@ class GdFacadeOnlyBaseTestClass(BaseTestClass): def setup_class(self): log_path_base = context.get_current_context().get_full_output_path() gd_devices = self.controller_configs.get("GdDevice") self.rootcanal_running = False if 'rootcanal' in self.controller_configs: self.rootcanal_running = True rootcanal_logpath = os.path.join(log_path_base, rootcanal_logpath = os.path.join(self.log_path, 'rootcanal_logs.txt') self.rootcanal_logs = open(rootcanal_logpath, 'w') rootcanal_config = self.controller_configs['rootcanal'] Loading
system/gd/cert/gd_device.py +3 −3 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ import logging from facade import rootservice_pb2_grpc as facade_rootservice_pb2_grpc from cert.gd_device_base import GdDeviceBase, GdDeviceConfigError, replace_vars from cert.gd_device_base import GdDeviceBase, replace_vars from hal import facade_pb2_grpc as hal_facade_pb2_grpc from hci.facade import facade_pb2_grpc as hci_facade_pb2_grpc from hci.facade import acl_manager_facade_pb2_grpc Loading @@ -35,9 +35,9 @@ ACTS_CONTROLLER_REFERENCE_NAME = "gd_devices" def create(configs): if not configs: raise GdDeviceConfigError("Configuration is empty") raise Exception("Configuration is empty") elif not isinstance(configs, list): raise GdDeviceConfigError("Configuration should be a list") raise Exception("Configuration should be a list") return get_instances_with_configs(configs) Loading
system/gd/cert/gd_device_base.py +1 −22 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ import socket import subprocess import time from acts import context, error, tracelogger from acts import context from acts.controllers.adb import AdbProxy import grpc Loading Loading @@ -59,11 +59,6 @@ class GdDeviceBase: # logging.log_path only exists when this is used in an ACTS test run. self.log_path_base = context.get_current_context().get_full_output_path( ) self.log = tracelogger.TraceLogger( GdDeviceBaseLoggerAdapter(logging.getLogger(), { 'device': label, 'type_identifier': type_identifier })) backing_process_logpath = os.path.join( self.log_path_base, Loading Loading @@ -146,19 +141,3 @@ class GdDeviceBase: future.result(timeout=WAIT_CHANNEL_READY_TIMEOUT) except grpc.FutureTimeoutError: logging.error("wait channel ready timeout") class GdDeviceBaseLoggerAdapter(logging.LoggerAdapter): def process(self, msg, kwargs): msg = "[%s|%s] %s" % (self.extra["type_identifier"], self.extra["device"], msg) return (msg, kwargs) class GdDeviceConfigError(Exception): """Raised when GdDevice configs are malformatted.""" class GdDeviceError(error.ActsError): """Raised when there is an error in GdDevice."""
system/gd/hci/acl_manager.cc +1 −0 Original line number Diff line number Diff line Loading @@ -225,6 +225,7 @@ struct AclManager::impl { hci_layer_->UnregisterEventHandler(EventCode::READ_REMOTE_EXTENDED_FEATURES_COMPLETE); hci_queue_end_->UnregisterDequeue(); unregister_all_connections(); controller_->UnregisterCompletedAclPacketsCallback(); acl_connections_.clear(); hci_queue_end_ = nullptr; handler_ = nullptr; Loading