int main()

in e2e-examples/gcs/benchmark/main.cc [33:90]


int main(int argc, char **argv) {
  grpc_core::testing::InitializeStackTracer(argv[0]);

  absl::ParseCommandLine(argc, argv);
  absl::optional<Parameters> parameters = GetParameters();
  if (!parameters.has_value()) {
    return 1;
  }

  if (parameters->prometheus_endpoint != "") {
    absl::Status s = StartGrpcOpenTelemetry(parameters->prometheus_endpoint);
    if (!s.ok()) {
      std::cerr << "OpenTelemetry failure: " << s.ToString().c_str()
                << std::endl;
      return 1;
    }
  }

  if (parameters->grpc_admin > 0) {
    StartGrpcAdmin(parameters->grpc_admin);
  }

  // Create a runner based on a client
  auto watcher = std::make_shared<RunnerWatcher>(
      parameters->warmups * parameters->threads, parameters->verbose);
  std::unique_ptr<Runner> runner;
  if (parameters->client == "grpc") {
    runner.reset(new GrpcRunner(*parameters, watcher));
  } else if (parameters->client == "gcscpp-json" ||
             parameters->client == "gcscpp-grpc") {
    runner.reset(new GcscppRunner(*parameters, watcher));
  } else {
    std::cerr << "Invalid client: " << parameters->client << std::endl;
    return 1;
  }

  // Let's run!
  absl::Time run_start = absl::Now();
  watcher->SetStartTime(run_start);
  if (!runner->Run()) {
    std::cerr << "Runner failed to complete a run." << std::endl;
    return 1;
  }
  watcher->SetDuration(absl::Now() - run_start);

  StopGrpcAdmin();

  // Results
  PrintResult(*watcher);
  if (!parameters->report_file.empty()) {
    WriteReport(*watcher, parameters->report_file, parameters->report_tag);
  }
  if (!parameters->data_file.empty()) {
    WriteData(*watcher, parameters->data_file, parameters->report_tag);
  }

  return 0;
}