Loading system/gd/cert/android_devices_config.json +6 −2 Original line number Original line Diff line number Diff line Loading @@ -9,6 +9,7 @@ { { "grpc_port": "8899", "grpc_port": "8899", "grpc_root_server_port": "8897", "grpc_root_server_port": "8897", "signal_port": "8895", "label": "stack_under_test", "label": "stack_under_test", "serial_number": "DUT", "serial_number": "DUT", "cmd": "cmd": Loading @@ -20,7 +21,8 @@ "/system/bin/stack_with_facade", "/system/bin/stack_with_facade", "--grpc-port=$(grpc_port)", "--grpc-port=$(grpc_port)", "--root-server-port=$(grpc_root_server_port)", "--root-server-port=$(grpc_root_server_port)", "--btsnoop=data/misc/bluetooth/logs/btsnoop_hci.log" "--btsnoop=data/misc/bluetooth/logs/btsnoop_hci.log", "--signal-port=$(signal_port)" ] ] } } ], ], Loading @@ -29,6 +31,7 @@ { { "grpc_port": "8898", "grpc_port": "8898", "grpc_root_server_port": "8896", "grpc_root_server_port": "8896", "signal_port": "8894", "label": "cert_stack", "label": "cert_stack", "serial_number": "CERT", "serial_number": "CERT", "cmd": "cmd": Loading @@ -40,7 +43,8 @@ "/system/bin/bluetooth_cert_stack", "/system/bin/bluetooth_cert_stack", "--grpc-port=$(grpc_port)", "--grpc-port=$(grpc_port)", "--root-server-port=$(grpc_root_server_port)", "--root-server-port=$(grpc_root_server_port)", "--btsnoop=data/misc/bluetooth/logs/btsnoop_hci.log" "--btsnoop=data/misc/bluetooth/logs/btsnoop_hci.log", "--signal-port=$(signal_port)" ] ] } } ] ] Loading system/gd/cert/cert_main.cc +17 −0 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,9 @@ #include "stack_manager.h" #include "stack_manager.h" #include <netinet/in.h> #include <sys/socket.h> #include <sys/types.h> #include <unistd.h> #include <unistd.h> #include <csignal> #include <csignal> #include <cstring> #include <cstring> Loading Loading @@ -46,10 +49,12 @@ void interrupt_handler(int) { int main(int argc, const char** argv) { int main(int argc, const char** argv) { int root_server_port = 8896; int root_server_port = 8896; int grpc_port = 8898; int grpc_port = 8898; int signal_port = 8894; const std::string arg_grpc_root_server_port = "--root-server-port="; const std::string arg_grpc_root_server_port = "--root-server-port="; const std::string arg_grpc_server_port = "--grpc-port="; const std::string arg_grpc_server_port = "--grpc-port="; const std::string arg_rootcanal_port = "--rootcanal-port="; const std::string arg_rootcanal_port = "--rootcanal-port="; const std::string arg_signal_port = "--signal-port="; const std::string arg_btsnoop_path = "--btsnoop="; const std::string arg_btsnoop_path = "--btsnoop="; std::string btsnoop_path; std::string btsnoop_path; for (int i = 1; i < argc; i++) { for (int i = 1; i < argc; i++) { Loading @@ -70,10 +75,22 @@ int main(int argc, const char** argv) { btsnoop_path = arg.substr(arg_btsnoop_path.size()); btsnoop_path = arg.substr(arg_btsnoop_path.size()); ::bluetooth::hal::SnoopLogger::SetFilePath(btsnoop_path); ::bluetooth::hal::SnoopLogger::SetFilePath(btsnoop_path); } } if (arg.find(arg_signal_port) == 0) { auto port_number = arg.substr(arg_signal_port.size()); signal_port = std::stoi(port_number); } } } signal(SIGINT, interrupt_handler); signal(SIGINT, interrupt_handler); grpc_root_server.StartServer("0.0.0.0", root_server_port, grpc_port); grpc_root_server.StartServer("0.0.0.0", root_server_port, grpc_port); int tester_signal_socket = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(signal_port); addr.sin_addr.s_addr = htonl(INADDR_ANY); connect(tester_signal_socket, (sockaddr*)&addr, sizeof(addr)); close(tester_signal_socket); auto wait_thread = std::thread([] { grpc_root_server.RunGrpcLoop(); }); auto wait_thread = std::thread([] { grpc_root_server.RunGrpcLoop(); }); wait_thread.join(); wait_thread.join(); Loading system/gd/cert/gd_cert_device.py +3 −2 Original line number Original line Diff line number Diff line Loading @@ -55,12 +55,13 @@ def get_instances_with_configs(configs): resolved_cmd.append(replace_vars(entry, config)) resolved_cmd.append(replace_vars(entry, config)) devices.append(GdCertDevice(config["grpc_port"], devices.append(GdCertDevice(config["grpc_port"], config["grpc_root_server_port"], config["grpc_root_server_port"], config["signal_port"], resolved_cmd, config["label"])) resolved_cmd, config["label"])) return devices return devices class GdCertDevice(GdDeviceBase): class GdCertDevice(GdDeviceBase): def __init__(self, grpc_port, grpc_root_server_port, cmd, label): def __init__(self, grpc_port, grpc_root_server_port, signal_port, cmd, label): super().__init__(grpc_port, grpc_root_server_port, cmd, super().__init__(grpc_port, grpc_root_server_port, signal_port, cmd, label, ACTS_CONTROLLER_CONFIG_NAME) label, ACTS_CONTROLLER_CONFIG_NAME) # Cert stubs # Cert stubs Loading system/gd/cert/gd_device.py +3 −2 Original line number Original line Diff line number Diff line Loading @@ -55,12 +55,13 @@ def get_instances_with_configs(configs): resolved_cmd.append(replace_vars(entry, config)) resolved_cmd.append(replace_vars(entry, config)) devices.append(GdDevice(config["grpc_port"], devices.append(GdDevice(config["grpc_port"], config["grpc_root_server_port"], config["grpc_root_server_port"], config["signal_port"], resolved_cmd, config["label"])) resolved_cmd, config["label"])) return devices return devices class GdDevice(GdDeviceBase): class GdDevice(GdDeviceBase): def __init__(self, grpc_port, grpc_root_server_port, cmd, label): def __init__(self, grpc_port, grpc_root_server_port, signal_port, cmd, label): super().__init__(grpc_port, grpc_root_server_port, cmd, super().__init__(grpc_port, grpc_root_server_port, signal_port, cmd, label, ACTS_CONTROLLER_CONFIG_NAME) label, ACTS_CONTROLLER_CONFIG_NAME) # Facade stubs # Facade stubs Loading system/gd/cert/gd_device_base.py +13 −10 Original line number Original line Diff line number Diff line Loading @@ -43,10 +43,11 @@ def replace_vars(string, config): .replace("$(grpc_port)", config.get("grpc_port")) \ .replace("$(grpc_port)", config.get("grpc_port")) \ .replace("$(grpc_root_server_port)", config.get("grpc_root_server_port")) \ .replace("$(grpc_root_server_port)", config.get("grpc_root_server_port")) \ .replace("$(rootcanal_port)", rootcanal_port) \ .replace("$(rootcanal_port)", rootcanal_port) \ .replace("$(signal_port)", config.get("signal_port")) \ .replace("$(serial_number)", serial_number) .replace("$(serial_number)", serial_number) class GdDeviceBase: class GdDeviceBase: def __init__(self, grpc_port, grpc_root_server_port, cmd, def __init__(self, grpc_port, grpc_root_server_port, signal_port, cmd, label, type_identifier): label, type_identifier): self.label = label if label is not None else grpc_port self.label = label if label is not None else grpc_port # logging.log_path only exists when this is used in an ACTS test run. # logging.log_path only exists when this is used in an ACTS test run. Loading @@ -66,12 +67,21 @@ class GdDeviceBase: btsnoop_path = os.path.join(log_path_base, '%s_btsnoop_hci.log' % label) btsnoop_path = os.path.join(log_path_base, '%s_btsnoop_hci.log' % label) cmd.append("--btsnoop=" + btsnoop_path) cmd.append("--btsnoop=" + btsnoop_path) tester_signal_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tester_signal_socket.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) socket_address = ('localhost', int(signal_port)) tester_signal_socket.bind(socket_address) tester_signal_socket.listen(1) self.backing_process = subprocess.Popen( self.backing_process = subprocess.Popen( cmd, cmd, cwd=ANDROID_BUILD_TOP, cwd=ANDROID_BUILD_TOP, env=os.environ.copy(), env=os.environ.copy(), stdout=self.backing_process_logs, stdout=self.backing_process_logs, stderr=self.backing_process_logs) stderr=self.backing_process_logs) tester_signal_socket.accept() tester_signal_socket.close() self.grpc_root_server_channel = grpc.insecure_channel("localhost:" + grpc_root_server_port) self.grpc_root_server_channel = grpc.insecure_channel("localhost:" + grpc_root_server_port) self.grpc_port = int(grpc_port) self.grpc_port = int(grpc_port) Loading @@ -95,13 +105,6 @@ class GdDeviceBase: except grpc.FutureTimeoutError: except grpc.FutureTimeoutError: logging.error("wait channel ready timeout") logging.error("wait channel ready timeout") def wait_root_service_ready(self): future = grpc.channel_ready_future(self.grpc_root_server_channel) try: future.result(timeout=WAIT_CHANNEL_READY_TIMEOUT) except grpc.FutureTimeoutError: logging.error("wait channel ready timeout") class GdDeviceBaseLoggerAdapter(logging.LoggerAdapter): class GdDeviceBaseLoggerAdapter(logging.LoggerAdapter): Loading Loading
system/gd/cert/android_devices_config.json +6 −2 Original line number Original line Diff line number Diff line Loading @@ -9,6 +9,7 @@ { { "grpc_port": "8899", "grpc_port": "8899", "grpc_root_server_port": "8897", "grpc_root_server_port": "8897", "signal_port": "8895", "label": "stack_under_test", "label": "stack_under_test", "serial_number": "DUT", "serial_number": "DUT", "cmd": "cmd": Loading @@ -20,7 +21,8 @@ "/system/bin/stack_with_facade", "/system/bin/stack_with_facade", "--grpc-port=$(grpc_port)", "--grpc-port=$(grpc_port)", "--root-server-port=$(grpc_root_server_port)", "--root-server-port=$(grpc_root_server_port)", "--btsnoop=data/misc/bluetooth/logs/btsnoop_hci.log" "--btsnoop=data/misc/bluetooth/logs/btsnoop_hci.log", "--signal-port=$(signal_port)" ] ] } } ], ], Loading @@ -29,6 +31,7 @@ { { "grpc_port": "8898", "grpc_port": "8898", "grpc_root_server_port": "8896", "grpc_root_server_port": "8896", "signal_port": "8894", "label": "cert_stack", "label": "cert_stack", "serial_number": "CERT", "serial_number": "CERT", "cmd": "cmd": Loading @@ -40,7 +43,8 @@ "/system/bin/bluetooth_cert_stack", "/system/bin/bluetooth_cert_stack", "--grpc-port=$(grpc_port)", "--grpc-port=$(grpc_port)", "--root-server-port=$(grpc_root_server_port)", "--root-server-port=$(grpc_root_server_port)", "--btsnoop=data/misc/bluetooth/logs/btsnoop_hci.log" "--btsnoop=data/misc/bluetooth/logs/btsnoop_hci.log", "--signal-port=$(signal_port)" ] ] } } ] ] Loading
system/gd/cert/cert_main.cc +17 −0 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,9 @@ #include "stack_manager.h" #include "stack_manager.h" #include <netinet/in.h> #include <sys/socket.h> #include <sys/types.h> #include <unistd.h> #include <unistd.h> #include <csignal> #include <csignal> #include <cstring> #include <cstring> Loading Loading @@ -46,10 +49,12 @@ void interrupt_handler(int) { int main(int argc, const char** argv) { int main(int argc, const char** argv) { int root_server_port = 8896; int root_server_port = 8896; int grpc_port = 8898; int grpc_port = 8898; int signal_port = 8894; const std::string arg_grpc_root_server_port = "--root-server-port="; const std::string arg_grpc_root_server_port = "--root-server-port="; const std::string arg_grpc_server_port = "--grpc-port="; const std::string arg_grpc_server_port = "--grpc-port="; const std::string arg_rootcanal_port = "--rootcanal-port="; const std::string arg_rootcanal_port = "--rootcanal-port="; const std::string arg_signal_port = "--signal-port="; const std::string arg_btsnoop_path = "--btsnoop="; const std::string arg_btsnoop_path = "--btsnoop="; std::string btsnoop_path; std::string btsnoop_path; for (int i = 1; i < argc; i++) { for (int i = 1; i < argc; i++) { Loading @@ -70,10 +75,22 @@ int main(int argc, const char** argv) { btsnoop_path = arg.substr(arg_btsnoop_path.size()); btsnoop_path = arg.substr(arg_btsnoop_path.size()); ::bluetooth::hal::SnoopLogger::SetFilePath(btsnoop_path); ::bluetooth::hal::SnoopLogger::SetFilePath(btsnoop_path); } } if (arg.find(arg_signal_port) == 0) { auto port_number = arg.substr(arg_signal_port.size()); signal_port = std::stoi(port_number); } } } signal(SIGINT, interrupt_handler); signal(SIGINT, interrupt_handler); grpc_root_server.StartServer("0.0.0.0", root_server_port, grpc_port); grpc_root_server.StartServer("0.0.0.0", root_server_port, grpc_port); int tester_signal_socket = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(signal_port); addr.sin_addr.s_addr = htonl(INADDR_ANY); connect(tester_signal_socket, (sockaddr*)&addr, sizeof(addr)); close(tester_signal_socket); auto wait_thread = std::thread([] { grpc_root_server.RunGrpcLoop(); }); auto wait_thread = std::thread([] { grpc_root_server.RunGrpcLoop(); }); wait_thread.join(); wait_thread.join(); Loading
system/gd/cert/gd_cert_device.py +3 −2 Original line number Original line Diff line number Diff line Loading @@ -55,12 +55,13 @@ def get_instances_with_configs(configs): resolved_cmd.append(replace_vars(entry, config)) resolved_cmd.append(replace_vars(entry, config)) devices.append(GdCertDevice(config["grpc_port"], devices.append(GdCertDevice(config["grpc_port"], config["grpc_root_server_port"], config["grpc_root_server_port"], config["signal_port"], resolved_cmd, config["label"])) resolved_cmd, config["label"])) return devices return devices class GdCertDevice(GdDeviceBase): class GdCertDevice(GdDeviceBase): def __init__(self, grpc_port, grpc_root_server_port, cmd, label): def __init__(self, grpc_port, grpc_root_server_port, signal_port, cmd, label): super().__init__(grpc_port, grpc_root_server_port, cmd, super().__init__(grpc_port, grpc_root_server_port, signal_port, cmd, label, ACTS_CONTROLLER_CONFIG_NAME) label, ACTS_CONTROLLER_CONFIG_NAME) # Cert stubs # Cert stubs Loading
system/gd/cert/gd_device.py +3 −2 Original line number Original line Diff line number Diff line Loading @@ -55,12 +55,13 @@ def get_instances_with_configs(configs): resolved_cmd.append(replace_vars(entry, config)) resolved_cmd.append(replace_vars(entry, config)) devices.append(GdDevice(config["grpc_port"], devices.append(GdDevice(config["grpc_port"], config["grpc_root_server_port"], config["grpc_root_server_port"], config["signal_port"], resolved_cmd, config["label"])) resolved_cmd, config["label"])) return devices return devices class GdDevice(GdDeviceBase): class GdDevice(GdDeviceBase): def __init__(self, grpc_port, grpc_root_server_port, cmd, label): def __init__(self, grpc_port, grpc_root_server_port, signal_port, cmd, label): super().__init__(grpc_port, grpc_root_server_port, cmd, super().__init__(grpc_port, grpc_root_server_port, signal_port, cmd, label, ACTS_CONTROLLER_CONFIG_NAME) label, ACTS_CONTROLLER_CONFIG_NAME) # Facade stubs # Facade stubs Loading
system/gd/cert/gd_device_base.py +13 −10 Original line number Original line Diff line number Diff line Loading @@ -43,10 +43,11 @@ def replace_vars(string, config): .replace("$(grpc_port)", config.get("grpc_port")) \ .replace("$(grpc_port)", config.get("grpc_port")) \ .replace("$(grpc_root_server_port)", config.get("grpc_root_server_port")) \ .replace("$(grpc_root_server_port)", config.get("grpc_root_server_port")) \ .replace("$(rootcanal_port)", rootcanal_port) \ .replace("$(rootcanal_port)", rootcanal_port) \ .replace("$(signal_port)", config.get("signal_port")) \ .replace("$(serial_number)", serial_number) .replace("$(serial_number)", serial_number) class GdDeviceBase: class GdDeviceBase: def __init__(self, grpc_port, grpc_root_server_port, cmd, def __init__(self, grpc_port, grpc_root_server_port, signal_port, cmd, label, type_identifier): label, type_identifier): self.label = label if label is not None else grpc_port self.label = label if label is not None else grpc_port # logging.log_path only exists when this is used in an ACTS test run. # logging.log_path only exists when this is used in an ACTS test run. Loading @@ -66,12 +67,21 @@ class GdDeviceBase: btsnoop_path = os.path.join(log_path_base, '%s_btsnoop_hci.log' % label) btsnoop_path = os.path.join(log_path_base, '%s_btsnoop_hci.log' % label) cmd.append("--btsnoop=" + btsnoop_path) cmd.append("--btsnoop=" + btsnoop_path) tester_signal_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tester_signal_socket.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) socket_address = ('localhost', int(signal_port)) tester_signal_socket.bind(socket_address) tester_signal_socket.listen(1) self.backing_process = subprocess.Popen( self.backing_process = subprocess.Popen( cmd, cmd, cwd=ANDROID_BUILD_TOP, cwd=ANDROID_BUILD_TOP, env=os.environ.copy(), env=os.environ.copy(), stdout=self.backing_process_logs, stdout=self.backing_process_logs, stderr=self.backing_process_logs) stderr=self.backing_process_logs) tester_signal_socket.accept() tester_signal_socket.close() self.grpc_root_server_channel = grpc.insecure_channel("localhost:" + grpc_root_server_port) self.grpc_root_server_channel = grpc.insecure_channel("localhost:" + grpc_root_server_port) self.grpc_port = int(grpc_port) self.grpc_port = int(grpc_port) Loading @@ -95,13 +105,6 @@ class GdDeviceBase: except grpc.FutureTimeoutError: except grpc.FutureTimeoutError: logging.error("wait channel ready timeout") logging.error("wait channel ready timeout") def wait_root_service_ready(self): future = grpc.channel_ready_future(self.grpc_root_server_channel) try: future.result(timeout=WAIT_CHANNEL_READY_TIMEOUT) except grpc.FutureTimeoutError: logging.error("wait channel ready timeout") class GdDeviceBaseLoggerAdapter(logging.LoggerAdapter): class GdDeviceBaseLoggerAdapter(logging.LoggerAdapter): Loading