Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ad4604ed authored by Hansong Zhang's avatar Hansong Zhang Committed by android-build-merger
Browse files

Cert signal server: Use TCP instead of UNIX socket

am: 91b45f60

Change-Id: I64fc300263102e366d1e7808c457ed5aa7cab22e
parents 6705f6bb 91b45f60
Loading
Loading
Loading
Loading
+13 −11
Original line number Diff line number Diff line
@@ -16,9 +16,9 @@

#include "stack_manager.h"

#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/un.h>
#include <unistd.h>
#include <csignal>
#include <cstring>
@@ -47,16 +47,16 @@ void interrupt_handler(int) {
}  // namespace

int main(int argc, const char** argv) {
  int root_server_port = 8897;
  int grpc_port = 8899;
  int root_server_port = 8896;
  int grpc_port = 8898;
  int signal_port = 8894;

  const std::string arg_grpc_root_server_port = "--root-server-port=";
  const std::string arg_grpc_server_port = "--grpc-port=";
  const std::string arg_rootcanal_port = "--rootcanal-port=";
  const std::string arg_signal_port = "--signal-port=";
  const std::string arg_btsnoop_path = "--btsnoop=";
  std::string btsnoop_path;
  const std::string arg_tester_signal_socket = "--tester-signal-socket=";
  std::string tester_signal_path;
  for (int i = 1; i < argc; i++) {
    std::string arg = argv[i];
    if (arg.find(arg_grpc_root_server_port) == 0) {
@@ -75,18 +75,20 @@ int main(int argc, const char** argv) {
      btsnoop_path = arg.substr(arg_btsnoop_path.size());
      ::bluetooth::hal::SnoopLogger::SetFilePath(btsnoop_path);
    }
    if (arg.find(arg_tester_signal_socket) == 0) {
      tester_signal_path = arg.substr(arg_tester_signal_socket.size());
    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);
  grpc_root_server.StartServer("0.0.0.0", root_server_port, grpc_port);
  int tester_signal_socket = socket(AF_UNIX, SOCK_STREAM, 0);
  struct sockaddr_un addr;
  int tester_signal_socket = socket(AF_INET, SOCK_STREAM, 0);
  struct sockaddr_in addr;
  memset(&addr, 0, sizeof(addr));
  addr.sun_family = AF_UNIX;
  strncpy(addr.sun_path, tester_signal_path.c_str(), tester_signal_path.size() + 1);
  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(); });
+7 −3
Original line number Diff line number Diff line
@@ -52,12 +52,16 @@ def get_instances_with_configs(configs):
        resolved_cmd = []
        for entry in config["cmd"]:
            resolved_cmd.append(replace_vars(entry, config))
        devices.append(GdCertDevice(config["grpc_port"], config["grpc_root_server_port"], resolved_cmd, config["label"]))
        devices.append(GdCertDevice(config["grpc_port"],
                                    config["grpc_root_server_port"],
                                    config["signal_port"],
                                    resolved_cmd, config["label"]))
    return devices

class GdCertDevice(GdDeviceBase):
    def __init__(self, grpc_port, grpc_root_server_port, cmd, label):
        super().__init__(grpc_port, grpc_root_server_port, cmd, label, ACTS_CONTROLLER_CONFIG_NAME)
    def __init__(self, grpc_port, grpc_root_server_port, signal_port, cmd, label):
        super().__init__(grpc_port, grpc_root_server_port, signal_port, cmd,
                         label, ACTS_CONTROLLER_CONFIG_NAME)

        # Cert stubs
        self.rootservice = cert_rootservice_pb2_grpc.RootCertStub(self.grpc_root_server_channel)
+7 −3
Original line number Diff line number Diff line
@@ -52,12 +52,16 @@ def get_instances_with_configs(configs):
        resolved_cmd = []
        for entry in config["cmd"]:
            resolved_cmd.append(replace_vars(entry, config))
        devices.append(GdDevice(config["grpc_port"], config["grpc_root_server_port"], resolved_cmd, config["label"]))
        devices.append(GdDevice(config["grpc_port"],
                                config["grpc_root_server_port"],
                                config["signal_port"],
                                resolved_cmd, config["label"]))
    return devices

class GdDevice(GdDeviceBase):
    def __init__(self, grpc_port, grpc_root_server_port, cmd, label):
        super().__init__(grpc_port, grpc_root_server_port, cmd, label, ACTS_CONTROLLER_CONFIG_NAME)
    def __init__(self, grpc_port, grpc_root_server_port, signal_port, cmd, label):
        super().__init__(grpc_port, grpc_root_server_port, signal_port, cmd,
                         label, ACTS_CONTROLLER_CONFIG_NAME)

        # Facade stubs
        self.rootservice = facade_rootservice_pb2_grpc.RootFacadeStub(self.grpc_root_server_channel)
+6 −8
Original line number Diff line number Diff line
@@ -35,10 +35,12 @@ def replace_vars(string, config):
    return string.replace("$ANDROID_HOST_OUT", ANDROID_HOST_OUT) \
                 .replace("$(grpc_port)", config.get("grpc_port")) \
                 .replace("$(grpc_root_server_port)", config.get("grpc_root_server_port")) \
                 .replace("$(rootcanal_port)", config.get("rootcanal_port"))
                 .replace("$(rootcanal_port)", config.get("rootcanal_port")) \
                 .replace("$(signal_port)", config.get("signal_port"))

class GdDeviceBase:
    def __init__(self, grpc_port, grpc_root_server_port, cmd, label, type_identifier):
    def __init__(self, grpc_port, grpc_root_server_port, signal_port, cmd,
                 label, type_identifier):
        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.
        log_path_base = getattr(logging, 'log_path', '/tmp/logs')
@@ -55,14 +57,11 @@ class GdDeviceBase:
        btsnoop_path = os.path.join(log_path_base, '%s_btsnoop_hci.log' % label)
        cmd.append("--btsnoop=" + btsnoop_path)

        tester_signal_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
        socket_address = os.path.join(
            log_path_base, '%s_socket' % type_identifier)
        tester_signal_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        socket_address = ('localhost', int(signal_port))
        tester_signal_socket.bind(socket_address)
        tester_signal_socket.listen(1)

        cmd.append("--tester-signal-socket=" + socket_address)

        self.backing_process = subprocess.Popen(
            cmd,
            cwd=ANDROID_BUILD_TOP,
@@ -71,7 +70,6 @@ class GdDeviceBase:
            stderr=self.backing_process_logs)
        tester_signal_socket.accept()
        tester_signal_socket.close()
        os.unlink(socket_address)

        self.grpc_root_server_channel = grpc.insecure_channel("localhost:" + grpc_root_server_port)
        self.grpc_port = int(grpc_port)
+6 −2
Original line number Diff line number Diff line
@@ -15,13 +15,15 @@
                {
                    "grpc_port": "8899",
                    "grpc_root_server_port": "8897",
                    "signal_port": "8895",
                    "label": "stack_under_test",
                    "cmd":
                    [
                        "$ANDROID_HOST_OUT/bin/stack_with_facade",
                        "--grpc-port=$(grpc_port)",
                        "--root-server-port=$(grpc_root_server_port)",
                        "--rootcanal-port=$(rootcanal_port)"
                        "--rootcanal-port=$(rootcanal_port)",
                        "--signal-port=$(signal_port)"
                    ]
                }
            ],
@@ -30,13 +32,15 @@
                {
                    "grpc_port": "8898",
                    "grpc_root_server_port": "8896",
                    "signal_port": "8894",
                    "label": "cert_stack",
                    "cmd":
                    [
                        "$ANDROID_HOST_OUT/bin/bluetooth_cert_stack",
                        "--grpc-port=$(grpc_port)",
                        "--root-server-port=$(grpc_root_server_port)",
                        "--rootcanal-port=$(rootcanal_port)"
                        "--rootcanal-port=$(rootcanal_port)",
                        "--signal-port=$(signal_port)"
                    ]
                }
            ]
Loading