[xDS Interop] Use XdsServerBuilder when testing CSM Observability (#35634)

[prod:grpc/core/master/linux/grpc_xds_k8s_lb](https://fusion2.corp.google.com/ci/kokoro/prod:grpc%2Fcore%2Fmaster%2Flinux%2Fgrpc_xds_k8s_lb/activity/6c2577f0-965b-4f22-ac2a-5454a0f77444/log)

Closes #35634

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/35634 from yashykt:CsmInteropTrial a8213cd10a
PiperOrigin-RevId: 601010836
pull/35651/head
Yash Tibrewal 1 year ago committed by Copybara-Service
parent 6b6ce36f74
commit 4cea5d0cba
  1. 10
      test/cpp/interop/xds_interop_server.cc
  2. 34
      test/cpp/interop/xds_interop_server_lib.cc
  3. 5
      test/cpp/interop/xds_interop_server_lib.h
  4. 5
      test/cpp/interop/xds_interop_server_test.cc

@ -79,12 +79,14 @@ int main(int argc, char** argv) {
return 1;
}
grpc::EnableDefaultHealthCheckService(false);
if (absl::GetFlag(FLAGS_enable_csm_observability)) {
bool enable_csm_observability = absl::GetFlag(FLAGS_enable_csm_observability);
if (enable_csm_observability) {
EnableCsmObservability();
}
grpc::testing::RunServer(
absl::GetFlag(FLAGS_secure_mode), port, maintenance_port, hostname,
absl::GetFlag(FLAGS_server_id), [](grpc::Server* /* unused */) {});
grpc::testing::RunServer(absl::GetFlag(FLAGS_secure_mode),
enable_csm_observability, port, maintenance_port,
hostname, absl::GetFlag(FLAGS_server_id),
[](grpc::Server* /* unused */) {});
return 0;
}

@ -169,15 +169,11 @@ class MaintenanceServices {
grpc::health::v1::HealthCheckResponse::SERVING);
}
std::unique_ptr<ServerBuilder> InitializeServerBuilder(int port) {
auto builder = std::make_unique<ServerBuilder>();
void AddToServerBuilder(ServerBuilder* builder) {
builder->RegisterService(&health_check_service_);
builder->RegisterService(&update_health_service_);
builder->RegisterService(&hook_service_);
grpc::AddAdminServices(builder.get());
builder->AddListeningPort(absl::StrCat("0.0.0.0:", port),
grpc::InsecureServerCredentials());
return builder;
grpc::AddAdminServices(builder);
}
private:
@ -227,8 +223,9 @@ absl::optional<grpc::Status> GetStatusForRpcBehaviorMetadata(
return absl::nullopt;
}
void RunServer(bool secure_mode, const int port, const int maintenance_port,
absl::string_view hostname, absl::string_view server_id,
void RunServer(bool secure_mode, bool enable_csm_observability, int port,
const int maintenance_port, absl::string_view hostname,
absl::string_view server_id,
const std::function<void(Server*)>& server_callback) {
std::unique_ptr<Server> xds_enabled_server;
std::unique_ptr<Server> server;
@ -236,7 +233,6 @@ void RunServer(bool secure_mode, const int port, const int maintenance_port,
grpc::reflection::InitProtoReflectionServerBuilderPlugin();
MaintenanceServices maintenance_services;
ServerBuilder builder;
if (secure_mode) {
XdsServerBuilder xds_builder;
xds_builder.RegisterService(&service);
@ -245,13 +241,25 @@ void RunServer(bool secure_mode, const int port, const int maintenance_port,
grpc::XdsServerCredentials(grpc::InsecureServerCredentials()));
xds_enabled_server = xds_builder.BuildAndStart();
gpr_log(GPR_INFO, "Server starting on 0.0.0.0:%d", port);
server = maintenance_services.InitializeServerBuilder(maintenance_port)
->BuildAndStart();
ServerBuilder builder;
maintenance_services.AddToServerBuilder(&builder);
server = builder
.AddListeningPort(absl::StrCat("0.0.0.0:", maintenance_port),
grpc::InsecureServerCredentials())
.BuildAndStart();
gpr_log(GPR_INFO, "Maintenance server listening on 0.0.0.0:%d",
maintenance_port);
} else {
auto builder = maintenance_services.InitializeServerBuilder(port);
server = builder->RegisterService(&service).BuildAndStart();
// CSM Observability requires an xDS enabled server.
auto builder = enable_csm_observability
? std::make_unique<XdsServerBuilder>()
: std::make_unique<ServerBuilder>();
maintenance_services.AddToServerBuilder(builder.get());
server = builder
->AddListeningPort(absl::StrCat("0.0.0.0:", port),
grpc::InsecureServerCredentials())
.RegisterService(&service)
.BuildAndStart();
gpr_log(GPR_INFO, "Server listening on 0.0.0.0:%d", port);
}
server_callback(server.get());

@ -30,8 +30,9 @@ namespace testing {
absl::optional<grpc::Status> GetStatusForRpcBehaviorMetadata(
absl::string_view header_value, absl::string_view hostname);
void RunServer(bool secure_mode, const int port, const int maintenance_port,
absl::string_view hostname, absl::string_view server_id,
void RunServer(bool secure_mode, bool enable_csm_observability, int port,
const int maintenance_port, absl::string_view hostname,
absl::string_view server_id,
const std::function<void(Server*)>& server_callback);
} // namespace testing

@ -37,8 +37,9 @@ namespace {
void ServerLoop(int port, grpc_core::Mutex* mutex,
grpc_core::CondVar* condition, Server** server) {
RunServer(false, port, /* should not be used */ -1, "127.0.0.1",
"test_server", [&](Server* s) {
RunServer(false, /*enable_csm_observability=*/false, port,
/* should not be used */ -1, "127.0.0.1", "test_server",
[&](Server* s) {
grpc_core::MutexLock lock(mutex);
*server = s;
condition->Signal();

Loading…
Cancel
Save