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

Commit fd50d794 authored by Henri Chataing's avatar Henri Chataing
Browse files

RootCanal: Name tcp port parameters

Test: m root-canal
Change-Id: I939c193680d8dd27e65b3cbc7e6d7ca878c8d5c5
parent 3400bf7b
Loading
Loading
Loading
Loading
+20 −23
Original line number Diff line number Diff line
@@ -103,8 +103,7 @@ class GdBaseTestClass(base_test.BaseTestClass):
        if self.dut.host_only_device:
            new_dut_coverage_info = self.dut.get_coverage_info()
            if self.dut_coverage_info:
                asserts.assert_true(
                    self.dut_coverage_info == new_dut_coverage_info,
                asserts.assert_true(self.dut_coverage_info == new_dut_coverage_info,
                                    msg="DUT coverage info must be the same for each test run, old: {}, new: {}".format(
                                        self.dut_coverage_info, new_dut_coverage_info))
            self.dut_coverage_info = new_dut_coverage_info
@@ -176,14 +175,13 @@ class GdBaseTestClass(base_test.BaseTestClass):

            # Start root canal process
            rootcanal_cmd = [
                rootcanal,
                str(rootcanal_test_port),
                str(rootcanal_hci_port),
                rootcanal, '-test_port',
                str(rootcanal_test_port), '-hci_port',
                str(rootcanal_hci_port), '-link_port',
                str(rootcanal_link_layer_port), '-controller_properties_file=' + controller_properties_file
            ]
            self.log.debug("Running %s" % " ".join(rootcanal_cmd))
            self.rootcanal_process = subprocess.Popen(
                rootcanal_cmd,
            self.rootcanal_process = subprocess.Popen(rootcanal_cmd,
                                                      cwd=get_gd_root(),
                                                      env=os.environ.copy(),
                                                      stdout=subprocess.PIPE,
@@ -191,11 +189,10 @@ class GdBaseTestClass(base_test.BaseTestClass):
                                                      universal_newlines=True)

            asserts.assert_true(self.rootcanal_process, msg="Cannot start root-canal at " + str(rootcanal))
            asserts.assert_true(
                is_subprocess_alive(self.rootcanal_process), msg="root-canal stopped immediately after running")
            asserts.assert_true(is_subprocess_alive(self.rootcanal_process),
                                msg="root-canal stopped immediately after running")

            self.rootcanal_logger = AsyncSubprocessLogger(
                self.rootcanal_process, [self.rootcanal_logpath],
            self.rootcanal_logger = AsyncSubprocessLogger(self.rootcanal_process, [self.rootcanal_logpath],
                                                          log_to_stdout=self.verbose_mode,
                                                          tag="rootcanal",
                                                          color=TerminalColor.MAGENTA)
@@ -267,8 +264,8 @@ class GdBaseTestClass(base_test.BaseTestClass):
                return attr(*args, **kwargs)
            except RpcError as e:
                exception_info = "".join(traceback.format_exception(e.__class__, e, e.__traceback__))
                raise signals.TestFailure(
                    "RpcError during test\n\nRpcError:\n\n%s\n%s" % (exception_info, self.__dump_crashes()))
                raise signals.TestFailure("RpcError during test\n\nRpcError:\n\n%s\n%s" %
                                          (exception_info, self.__dump_crashes()))

        return __wrapped

+33 −39
Original line number Diff line number Diff line
@@ -44,11 +44,10 @@ DEFINE_string(default_commands_file, "",
DEFINE_bool(enable_hci_sniffer, false, "enable hci sniffer");
DEFINE_bool(enable_baseband_sniffer, false, "enable baseband sniffer");
DEFINE_bool(enable_pcap_filter, false, "enable PCAP filter");

constexpr uint16_t kTestPort = 6401;
constexpr uint16_t kHciServerPort = 6402;
constexpr uint16_t kLinkServerPort = 6403;
constexpr uint16_t kLinkBleServerPort = 6404;
DEFINE_uint32(test_port, 6401, "test tcp port");
DEFINE_uint32(hci_port, 6402, "hci server tcp port");
DEFINE_uint32(link_port, 6403, "link server tcp port");
DEFINE_uint32(link_ble_port, 6404, "le link server tcp port");

extern "C" const char* __asan_default_options() {
  return "detect_container_overflow=0";
@@ -93,43 +92,37 @@ int main(int argc, char** argv) {
  android::base::InitLogging(argv);

  LOG_INFO("main");
  uint16_t test_port = kTestPort;
  uint16_t hci_server_port = kHciServerPort;
  uint16_t link_server_port = kLinkServerPort;
  uint16_t link_ble_server_port = kLinkBleServerPort;

  for (int arg = 0; arg < argc; arg++) {
    int port = (int)strtol(argv[arg], nullptr, 0);
    LOG_INFO("%d: %s (%d)", arg, argv[arg], port);
    if (port < 0 || port > UINT16_MAX) {
      LOG_WARN("%s out of range", argv[arg]);
    } else {
      switch (arg) {
        case 0:  // executable name
          break;
        case 1:
          test_port = port;
          break;
        case 2:
          hci_server_port = port;
          break;
        case 3:
          link_server_port = port;
          break;
        case 4:
          link_ble_server_port = port;
          break;
        default:
          LOG_WARN("Ignored option %s", argv[arg]);

  if (FLAGS_test_port > UINT16_MAX) {
    LOG_ERROR("test_port out of range: %" PRIu32, FLAGS_test_port);
    return -1;
  }

  if (FLAGS_hci_port > UINT16_MAX) {
    LOG_ERROR("hci_port out of range: %" PRIu32, FLAGS_hci_port);
    return -1;
  }

  if (FLAGS_link_port > UINT16_MAX) {
    LOG_ERROR("link_port out of range: %" PRIu32, FLAGS_link_port);
    return -1;
  }

  if (FLAGS_link_ble_port > UINT16_MAX) {
    LOG_ERROR("link_ble_port out of range: %" PRIu32, FLAGS_link_ble_port);
    return -1;
  }

  AsyncManager am;
  TestEnvironment root_canal(
      std::make_shared<PosixAsyncSocketServer>(test_port, &am),
      std::make_shared<PosixAsyncSocketServer>(hci_server_port, &am),
      std::make_shared<PosixAsyncSocketServer>(link_server_port, &am),
      std::make_shared<PosixAsyncSocketServer>(link_ble_server_port, &am),
      std::make_shared<PosixAsyncSocketServer>(
          static_cast<int>(FLAGS_test_port), &am),
      std::make_shared<PosixAsyncSocketServer>(static_cast<int>(FLAGS_hci_port),
                                               &am),
      std::make_shared<PosixAsyncSocketServer>(
          static_cast<int>(FLAGS_link_port), &am),
      std::make_shared<PosixAsyncSocketServer>(
          static_cast<int>(FLAGS_link_ble_port), &am),
      std::make_shared<PosixAsyncSocketConnector>(&am),
      FLAGS_controller_properties_file, FLAGS_default_commands_file,
      FLAGS_enable_hci_sniffer, FLAGS_enable_baseband_sniffer,
@@ -139,4 +132,5 @@ int main(int argc, char** argv) {
  root_canal.initialize(std::move(barrier));
  barrier_future.wait();
  root_canal.close();
  return 0;
}