#include "test/cpp/util/grpc_tool.h"
-#include <gflags/gflags.h>
#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpcpp/channel.h>
#include <chrono>
#include <sstream>
+#include "absl/flags/declare.h"
+#include "absl/flags/flag.h"
#include "src/core/lib/gpr/env.h"
#include "src/core/lib/iomgr/load_file.h"
#include "src/proto/grpc/testing/echo.grpc.pb.h"
" }\n" \
"}\n\n"
-DECLARE_string(channel_creds_type);
-DECLARE_string(ssl_target);
+ABSL_DECLARE_FLAG(std::string, channel_creds_type);
+ABSL_DECLARE_FLAG(std::string, ssl_target);
+ABSL_DECLARE_FLAG(bool, binary_input);
+ABSL_DECLARE_FLAG(bool, binary_output);
+ABSL_DECLARE_FLAG(bool, json_input);
+ABSL_DECLARE_FLAG(bool, json_output);
+ABSL_DECLARE_FLAG(bool, l);
+ABSL_DECLARE_FLAG(bool, batch);
+ABSL_DECLARE_FLAG(std::string, metadata);
+ABSL_DECLARE_FLAG(std::string, protofiles);
+ABSL_DECLARE_FLAG(std::string, proto_path);
+ABSL_DECLARE_FLAG(std::string, default_service_config);
+ABSL_DECLARE_FLAG(double, timeout);
namespace grpc {
namespace testing {
-
-DECLARE_bool(binary_input);
-DECLARE_bool(binary_output);
-DECLARE_bool(json_input);
-DECLARE_bool(json_output);
-DECLARE_bool(l);
-DECLARE_bool(batch);
-DECLARE_string(metadata);
-DECLARE_string(protofiles);
-DECLARE_string(proto_path);
-DECLARE_string(default_service_config);
-DECLARE_double(timeout);
-
namespace {
const int kServerDefaultResponseStreamsToSend = 3;
// Returning string instead of bool to avoid using embedded messages in
// proto3
- response->set_message(seconds.count() <= FLAGS_timeout ? "true" : "false");
+ response->set_message(
+ seconds.count() <= absl::GetFlag(FLAGS_timeout) ? "true" : "false");
return Status::OK;
}
const std::string server_address = SetUpServer();
const char* argv[] = {"grpc_cli", "ls", server_address.c_str()};
- FLAGS_l = false;
+ absl::SetFlag(&FLAGS_l, false);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
const char* argv[] = {"grpc_cli", "ls", server_address.c_str(),
"grpc.testing.EchoTestService"};
// without -l flag
- FLAGS_l = false;
+ absl::SetFlag(&FLAGS_l, false);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
// with -l flag
output_stream.str(std::string());
output_stream.clear();
- FLAGS_l = true;
+ absl::SetFlag(&FLAGS_l, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
const char* argv[] = {"grpc_cli", "ls", server_address.c_str(),
"grpc.testing.EchoTestService.Echo"};
// without -l flag
- FLAGS_l = false;
+ absl::SetFlag(&FLAGS_l, false);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
// with -l flag
output_stream.str(std::string());
output_stream.clear();
- FLAGS_l = true;
+ absl::SetFlag(&FLAGS_l, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
output_stream.str(std::string());
output_stream.clear();
- FLAGS_json_output = true;
+ // TODO(Capstan): Consider using absl::FlagSaver
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
+ absl::SetFlag(&FLAGS_json_output, false);
// Expected output:
// {
const char* argv[] = {"grpc_cli", "call", server_address.c_str(), "Echo",
"{ \"message\": \"Hello\"}"};
- FLAGS_json_input = true;
+ absl::SetFlag(&FLAGS_json_input, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
output_stream.str(std::string());
output_stream.clear();
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
- FLAGS_json_input = false;
+ absl::SetFlag(&FLAGS_json_output, false);
+ absl::SetFlag(&FLAGS_json_input, false);
// Expected output:
// {
std::istringstream ss("message: 'Hello1'\n\n message: 'Hello2'\n\n");
std::cin.rdbuf(ss.rdbuf());
- FLAGS_batch = true;
+ absl::SetFlag(&FLAGS_batch, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_batch = false;
+ absl::SetFlag(&FLAGS_batch, false);
// Expected output: "message: "Hello0"\nmessage: "Hello1"\nmessage:
// "Hello2"\n"
ss.seekg(0);
std::cin.rdbuf(ss.rdbuf());
- FLAGS_batch = true;
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_batch, true);
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
- FLAGS_batch = false;
+ absl::SetFlag(&FLAGS_json_output, false);
+ absl::SetFlag(&FLAGS_batch, false);
// Expected output:
// {
"{\"message\": \"Hello1\"}\n\n{\"message\": \"Hello2\" }\n\n");
std::cin.rdbuf(ss.rdbuf());
- FLAGS_json_input = true;
- FLAGS_batch = true;
+ absl::SetFlag(&FLAGS_json_input, true);
+ absl::SetFlag(&FLAGS_batch, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_batch = false;
+ absl::SetFlag(&FLAGS_batch, false);
// Expected output: "message: "Hello0"\nmessage: "Hello1"\nmessage:
// "Hello2"\n"
ss.seekg(0);
std::cin.rdbuf(ss.rdbuf());
- FLAGS_batch = true;
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_batch, true);
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
- FLAGS_batch = false;
- FLAGS_json_input = false;
+ absl::SetFlag(&FLAGS_json_output, false);
+ absl::SetFlag(&FLAGS_batch, false);
+ absl::SetFlag(&FLAGS_json_input, false);
// Expected output:
// {
std::istringstream ss("message: 1\n\n message: 'Hello2'\n\n");
std::cin.rdbuf(ss.rdbuf());
- FLAGS_batch = true;
+ absl::SetFlag(&FLAGS_batch, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_batch = false;
+ absl::SetFlag(&FLAGS_batch, false);
// Expected output: "message: "Hello0"\nmessage: "Hello2"\n"
EXPECT_TRUE(nullptr != strstr(output_stream.str().c_str(),
ss.seekg(0);
std::cin.rdbuf(ss.rdbuf());
- FLAGS_batch = true;
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_batch, true);
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
- FLAGS_batch = false;
+ absl::SetFlag(&FLAGS_json_output, false);
+ absl::SetFlag(&FLAGS_batch, false);
// Expected output:
// {
"{ \"message\": 1 }\n\n { \"message\": \"Hello2\" }\n\n");
std::cin.rdbuf(ss.rdbuf());
- FLAGS_batch = true;
- FLAGS_json_input = true;
+ absl::SetFlag(&FLAGS_batch, true);
+ absl::SetFlag(&FLAGS_json_input, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_input = false;
- FLAGS_batch = false;
+ absl::SetFlag(&FLAGS_json_input, false);
+ absl::SetFlag(&FLAGS_batch, false);
// Expected output: "message: "Hello0"\nmessage: "Hello2"\n"
EXPECT_TRUE(nullptr != strstr(output_stream.str().c_str(),
ss.seekg(0);
std::cin.rdbuf(ss.rdbuf());
- FLAGS_batch = true;
- FLAGS_json_input = true;
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_batch, true);
+ absl::SetFlag(&FLAGS_json_input, true);
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
- FLAGS_json_input = false;
- FLAGS_batch = false;
+ absl::SetFlag(&FLAGS_json_output, false);
+ absl::SetFlag(&FLAGS_json_input, false);
+ absl::SetFlag(&FLAGS_batch, false);
// Expected output:
// {
"{ \"message\": \"Hello1\" }\n\n{ \"message\": \"Hello2\" }\n\n");
std::cin.rdbuf(ss.rdbuf());
- FLAGS_json_input = true;
+ absl::SetFlag(&FLAGS_json_input, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_input = false;
+ absl::SetFlag(&FLAGS_json_input, false);
// Expected output: "message: \"Hello0Hello1Hello2\""
EXPECT_TRUE(nullptr != strstr(output_stream.str().c_str(),
"{ \"bad_field\": \"Hello1\" }\n\n{ \"message\": \"Hello2\" }\n\n");
std::cin.rdbuf(ss.rdbuf());
- FLAGS_json_input = true;
+ absl::SetFlag(&FLAGS_json_input, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_input = false;
+ absl::SetFlag(&FLAGS_json_input, false);
// Expected output: "message: \"Hello0Hello2\""
EXPECT_TRUE(nullptr !=
"CheckDeadlineSet"};
// Set timeout to 5000.25 seconds
- FLAGS_timeout = 5000.25;
+ absl::SetFlag(&FLAGS_timeout, 5000.25);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
"CheckDeadlineUpperBound"};
// Set timeout to 900 seconds
- FLAGS_timeout = 900;
+ absl::SetFlag(&FLAGS_timeout, 900);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
"CheckDeadlineSet"};
// Set timeout to -5 (deadline not set)
- FLAGS_timeout = -5;
+ absl::SetFlag(&FLAGS_timeout, -5);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
"CheckDeadlineSet"};
// Set timeout to -1 (default value, deadline not set)
- FLAGS_timeout = -1;
+ absl::SetFlag(&FLAGS_timeout, -1);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
output_stream.str(std::string());
output_stream.clear();
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
+ absl::SetFlag(&FLAGS_json_output, false);
// Expected output: "{\n \"message\": \"Hello{n}\"\n}\n"
for (int i = 0; i < kServerDefaultResponseStreamsToSend; i++) {
"grpc.testing.EchoResponse",
ECHO_RESPONSE_MESSAGE_TEXT_FORMAT};
- FLAGS_binary_input = false;
- FLAGS_binary_output = false;
+ absl::SetFlag(&FLAGS_binary_input, false);
+ absl::SetFlag(&FLAGS_binary_output, false);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
output_stream.str(std::string());
output_stream.clear();
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
+ absl::SetFlag(&FLAGS_json_output, false);
// Expected output: ECHO_RESPONSE_MESSAGE_JSON_FORMAT
EXPECT_TRUE(0 == strcmp(output_stream.str().c_str(),
// Parse text message to binary message and then parse it back to text message
output_stream.str(std::string());
output_stream.clear();
- FLAGS_binary_output = true;
+ absl::SetFlag(&FLAGS_binary_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
output_stream.str(std::string());
output_stream.clear();
argv[4] = binary_data.c_str();
- FLAGS_binary_input = true;
- FLAGS_binary_output = false;
+ absl::SetFlag(&FLAGS_binary_input, true);
+ absl::SetFlag(&FLAGS_binary_output, false);
EXPECT_TRUE(0 == GrpcToolMainLib(5, argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
EXPECT_TRUE(0 == strcmp(output_stream.str().c_str(),
ECHO_RESPONSE_MESSAGE_TEXT_FORMAT));
- FLAGS_binary_input = false;
- FLAGS_binary_output = false;
+ absl::SetFlag(&FLAGS_binary_input, false);
+ absl::SetFlag(&FLAGS_binary_output, false);
ShutdownServer();
}
"grpc.testing.EchoResponse",
ECHO_RESPONSE_MESSAGE_JSON_FORMAT};
- FLAGS_json_input = true;
+ absl::SetFlag(&FLAGS_json_input, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
output_stream.str(std::string());
output_stream.clear();
- FLAGS_json_output = true;
+ absl::SetFlag(&FLAGS_json_output, true);
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_json_output = false;
- FLAGS_json_input = false;
+ absl::SetFlag(&FLAGS_json_output, false);
+ absl::SetFlag(&FLAGS_json_input, false);
// Expected output: ECHO_RESPONSE_MESSAGE_JSON_FORMAT
EXPECT_TRUE(0 == strcmp(output_stream.str().c_str(),
{
std::stringstream output_stream;
- FLAGS_metadata = "key0:val0:key1:valq:key2:val2";
+ absl::SetFlag(&FLAGS_metadata, "key0:val0:key1:valq:key2:val2");
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv,
TestCliCredentials(),
std::bind(PrintStream, &output_stream,
{
std::stringstream output_stream;
- FLAGS_metadata = "key:val\\:val";
+ absl::SetFlag(&FLAGS_metadata, "key:val\\:val");
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv,
TestCliCredentials(),
std::bind(PrintStream, &output_stream,
{
std::stringstream output_stream;
- FLAGS_metadata = "key:val\\\\val";
+ absl::SetFlag(&FLAGS_metadata, "key:val\\\\val");
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv,
TestCliCredentials(),
std::bind(PrintStream, &output_stream,
strstr(output_stream.str().c_str(), "message: \"Hello\""));
}
- FLAGS_metadata = "";
+ absl::SetFlag(&FLAGS_metadata, "");
ShutdownServer();
}
const char* argv[] = {"grpc_cli", "call", "localhost:10000",
"grpc.testing.EchoTestService.Echo",
"message: 'Hello'"};
- FLAGS_protofiles = "src/proto/grpc/testing/echo.proto";
+ absl::SetFlag(&FLAGS_protofiles, "src/proto/grpc/testing/echo.proto");
char* test_srcdir = gpr_getenv("TEST_SRCDIR");
if (test_srcdir != nullptr) {
- FLAGS_proto_path = test_srcdir + std::string("/com_github_grpc_grpc");
+ absl::SetFlag(&FLAGS_proto_path,
+ test_srcdir + std::string("/com_github_grpc_grpc"));
}
{
std::stringstream output_stream;
- FLAGS_metadata = "key0:val0:key1";
+ absl::SetFlag(&FLAGS_metadata, "key0:val0:key1");
// Exit with 1
EXPECT_EXIT(
GrpcToolMainLib(
{
std::stringstream output_stream;
- FLAGS_metadata = "key:val\\val";
+ absl::SetFlag(&FLAGS_metadata, "key:val\\val");
// Exit with 1
EXPECT_EXIT(
GrpcToolMainLib(
::testing::ExitedWithCode(1), ".*Failed to parse metadata flag.*");
}
- FLAGS_metadata = "";
- FLAGS_protofiles = "";
+ absl::SetFlag(&FLAGS_metadata, "");
+ absl::SetFlag(&FLAGS_protofiles, "");
gpr_free(test_srcdir);
}
// --ssl_target=z.test.google.fr"
std::stringstream output_stream;
const char* argv[] = {"grpc_cli", "ls", server_address.c_str()};
- FLAGS_l = false;
- FLAGS_channel_creds_type = "ssl";
- FLAGS_ssl_target = "z.test.google.fr";
+ absl::SetFlag(&FLAGS_l, false);
+ absl::SetFlag(&FLAGS_channel_creds_type, "ssl");
+ absl::SetFlag(&FLAGS_ssl_target, "z.test.google.fr");
EXPECT_TRUE(
0 == GrpcToolMainLib(
ArraySize(argv), argv, TestCliCredentials(true),
"grpc.testing.EchoTestService\n"
"grpc.reflection.v1alpha.ServerReflection\n"));
- FLAGS_channel_creds_type = "";
- FLAGS_ssl_target = "";
+ absl::SetFlag(&FLAGS_channel_creds_type, "");
+ absl::SetFlag(&FLAGS_ssl_target, "");
ShutdownServer();
}
// Just check that the tool is still operational when --default_service_config
// is configured. This particular service config is in reality redundant with
// the channel's default configuration.
- FLAGS_l = false;
- FLAGS_default_service_config =
- "{\"loadBalancingConfig\":[{\"pick_first\":{}}]}";
+ absl::SetFlag(&FLAGS_l, false);
+ absl::SetFlag(&FLAGS_default_service_config,
+ "{\"loadBalancingConfig\":[{\"pick_first\":{}}]}");
EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(),
std::bind(PrintStream, &output_stream,
std::placeholders::_1)));
- FLAGS_default_service_config = "";
+ absl::SetFlag(&FLAGS_default_service_config, "");
EXPECT_TRUE(0 == strcmp(output_stream.str().c_str(),
"grpc.testing.EchoTestService\n"
"grpc.reflection.v1alpha.ServerReflection\n"));