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;
}