mirror of https://github.com/grpc/grpc.git
The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)
https://grpc.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
3.1 KiB
92 lines
3.1 KiB
// |
|
// |
|
// Copyright 2015 gRPC authors. |
|
// |
|
// Licensed under the Apache License, Version 2.0 (the "License"); |
|
// you may not use this file except in compliance with the License. |
|
// You may obtain a copy of the License at |
|
// |
|
// http://www.apache.org/licenses/LICENSE-2.0 |
|
// |
|
// Unless required by applicable law or agreed to in writing, software |
|
// distributed under the License is distributed on an "AS IS" BASIS, |
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
// See the License for the specific language governing permissions and |
|
// limitations under the License. |
|
// |
|
// |
|
|
|
#include "test/cpp/qps/benchmark_config.h" |
|
|
|
#include "absl/flags/flag.h" |
|
#include "absl/log/check.h" |
|
|
|
#include <grpc/support/log.h> |
|
#include <grpcpp/create_channel.h> |
|
#include <grpcpp/security/credentials.h> |
|
|
|
#include "src/core/lib/gprpp/crash.h" |
|
#include "test/cpp/util/test_credentials_provider.h" |
|
|
|
ABSL_FLAG(bool, enable_log_reporter, true, |
|
"Enable reporting of benchmark results through GprLog"); |
|
|
|
ABSL_FLAG(std::string, scenario_result_file, "", |
|
"Write JSON benchmark report to the file specified."); |
|
|
|
ABSL_FLAG(std::string, hashed_id, "", "Hash of the user id"); |
|
|
|
ABSL_FLAG(std::string, test_name, "", "Name of the test being executed"); |
|
|
|
ABSL_FLAG(std::string, sys_info, "", "System information"); |
|
|
|
ABSL_FLAG(std::string, server_address, "localhost:50052", |
|
"Address of the performance database server"); |
|
|
|
ABSL_FLAG(std::string, tag, "", "Optional tag for the test"); |
|
|
|
ABSL_FLAG(std::string, rpc_reporter_server_address, "", |
|
"Server address for rpc reporter to send results to"); |
|
|
|
ABSL_FLAG(bool, enable_rpc_reporter, false, "Enable use of RPC reporter"); |
|
|
|
ABSL_FLAG( |
|
std::string, rpc_reporter_credential_type, |
|
grpc::testing::kInsecureCredentialsType, |
|
"Credential type for communication to the QPS benchmark report server"); |
|
|
|
namespace grpc { |
|
namespace testing { |
|
|
|
static std::shared_ptr<Reporter> InitBenchmarkReporters() { |
|
auto* composite_reporter = new CompositeReporter; |
|
if (absl::GetFlag(FLAGS_enable_log_reporter)) { |
|
composite_reporter->add( |
|
std::unique_ptr<Reporter>(new GprLogReporter("LogReporter"))); |
|
} |
|
if (!absl::GetFlag(FLAGS_scenario_result_file).empty()) { |
|
composite_reporter->add(std::unique_ptr<Reporter>(new JsonReporter( |
|
"JsonReporter", absl::GetFlag(FLAGS_scenario_result_file)))); |
|
} |
|
if (absl::GetFlag(FLAGS_enable_rpc_reporter)) { |
|
ChannelArguments channel_args; |
|
std::shared_ptr<ChannelCredentials> channel_creds = |
|
testing::GetCredentialsProvider()->GetChannelCredentials( |
|
absl::GetFlag(FLAGS_rpc_reporter_credential_type), &channel_args); |
|
CHECK(!absl::GetFlag(FLAGS_rpc_reporter_server_address).empty()); |
|
composite_reporter->add(std::unique_ptr<Reporter>(new RpcReporter( |
|
"RpcReporter", |
|
grpc::CreateChannel(absl::GetFlag(FLAGS_rpc_reporter_server_address), |
|
channel_creds)))); |
|
} |
|
|
|
return std::shared_ptr<Reporter>(composite_reporter); |
|
} |
|
|
|
std::shared_ptr<Reporter> GetReporter() { |
|
static std::shared_ptr<Reporter> reporter(InitBenchmarkReporters()); |
|
return reporter; |
|
} |
|
|
|
} // namespace testing |
|
} // namespace grpc
|
|
|