absl::optional GetParameters()

in e2e-examples/gcs/benchmark/parameters.cc [99:160]


absl::optional<Parameters> GetParameters() {
  Parameters p;
  p.client = absl::GetFlag(FLAGS_client);
  p.operation = absl::GetFlag(FLAGS_operation);
  if (p.operation == "read") {
    p.operation_type = OperationType::Read;
  } else if (p.operation == "random-read") {
    p.operation_type = OperationType::RandomRead;
  } else if (p.operation == "write") {
    p.operation_type = OperationType::Write;
  } else {
    std::cerr << "Invalid operation: " << p.operation << std::endl;
    return {};
  }
  p.bucket = absl::GetFlag(FLAGS_bucket);
  p.object = absl::GetFlag(FLAGS_object);
  p.object_format = absl::GetFlag(FLAGS_object_format);
  p.object_start = absl::GetFlag(FLAGS_object_start);
  p.object_stop = absl::GetFlag(FLAGS_object_stop);
  p.chunk_size = absl::GetFlag(FLAGS_chunk_size);
  p.read_offset = absl::GetFlag(FLAGS_read_offset);
  p.read_limit = absl::GetFlag(FLAGS_read_limit);
  p.write_size = absl::GetFlag(FLAGS_write_size);
  p.timeout = absl::GetFlag(FLAGS_timeout);
  p.runs = absl::GetFlag(FLAGS_runs);
  p.warmups = absl::GetFlag(FLAGS_warmups);
  p.threads = absl::GetFlag(FLAGS_threads);
  p.crc32c = absl::GetFlag(FLAGS_crc32c);
  p.resumable = absl::GetFlag(FLAGS_resumable);
  p.trying = absl::GetFlag(FLAGS_trying);
  p.wait_threads = absl::GetFlag(FLAGS_wait_threads);
  p.steal_work = absl::GetFlag(FLAGS_steal_work);
  p.verbose = absl::GetFlag(FLAGS_verbose);
  p.grpc_admin = absl::GetFlag(FLAGS_grpc_admin);
  p.report_tag = absl::GetFlag(FLAGS_report_tag);
  p.report_file = absl::GetFlag(FLAGS_report_file);
  p.data_file = absl::GetFlag(FLAGS_data_file);
  p.prometheus_endpoint = absl::GetFlag(FLAGS_prometheus_endpoint);
  p.host = absl::GetFlag(FLAGS_host);
  p.target_api_version = absl::GetFlag(FLAGS_target_api_version);
  p.access_token = absl::GetFlag(FLAGS_access_token);
  p.network = absl::GetFlag(FLAGS_network);
  p.cred = absl::GetFlag(FLAGS_cred);
  p.ssl_cert = absl::GetFlag(FLAGS_ssl_cert);
  p.rr = absl::GetFlag(FLAGS_rr);
  p.td = absl::GetFlag(FLAGS_td);
  p.tx_zerocopy = absl::GetFlag(FLAGS_tx_zerocopy);
  p.cpolicy = absl::GetFlag(FLAGS_cpolicy);
  if (p.cpolicy == "") {
    p.cpolicy = p.td ? "const" : "perthread";
  }
  if (p.cpolicy != "perthread" && p.cpolicy != "percall" &&
      p.cpolicy != "const" && p.cpolicy != "pool" && p.cpolicy != "bpool" &&
      p.cpolicy != "spool") {
    std::cerr << "Invalid cpolicy: " << p.cpolicy << std::endl;
    return {};
  }
  p.carg = absl::GetFlag(FLAGS_carg);
  p.ctest = absl::GetFlag(FLAGS_ctest);
  p.mtest = absl::GetFlag(FLAGS_mtest);
  return p;
}