1# Copyright 2017 gRPC authors. 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15load("//bazel:grpc_build_system.bzl", "grpc_cc_binary", "grpc_cc_library", "grpc_cc_test", "grpc_package") 16 17licenses(["notice"]) 18 19grpc_package( 20 name = "test/cpp/interop", 21 visibility = "public", 22) 23 24grpc_cc_library( 25 name = "server_helper_lib", 26 srcs = [ 27 "server_helper.cc", 28 ], 29 hdrs = [ 30 "server_helper.h", 31 ], 32 external_deps = [ 33 "absl/flags:flag", 34 ], 35 language = "C++", 36 deps = [ 37 "//test/cpp/util:test_util", 38 ], 39) 40 41grpc_cc_binary( 42 name = "grpclb_fallback_test", 43 srcs = [ 44 "grpclb_fallback_test.cc", 45 ], 46 external_deps = [ 47 "absl/flags:flag", 48 "absl/time:time", 49 ], 50 language = "C++", 51 tags = ["no_windows"], 52 deps = [ 53 "//:grpc++", 54 "//src/proto/grpc/testing:empty_proto", 55 "//src/proto/grpc/testing:messages_proto", 56 "//src/proto/grpc/testing:test_proto", 57 "//test/cpp/util:test_config", 58 "//test/cpp/util:test_util", 59 ], 60) 61 62grpc_cc_binary( 63 name = "interop_server", 64 srcs = [ 65 "interop_server_bootstrap.cc", 66 ], 67 external_deps = [ 68 "absl/flags:flag", 69 ], 70 language = "C++", 71 deps = [ 72 ":interop_server_lib", 73 "//:grpc++", 74 "//test/cpp/util:test_util", 75 ], 76) 77 78grpc_cc_library( 79 name = "interop_server_lib", 80 srcs = [ 81 "interop_server.cc", 82 ], 83 language = "C++", 84 deps = [ 85 ":server_helper_lib", 86 "//:grpcpp_orca_service", 87 "//src/proto/grpc/testing:empty_proto", 88 "//src/proto/grpc/testing:messages_proto", 89 "//src/proto/grpc/testing:test_proto", 90 "//test/cpp/util:test_config", 91 ], 92) 93 94grpc_cc_library( 95 name = "client_helper_lib", 96 srcs = [ 97 "client_helper.cc", 98 "interop_client.cc", 99 ], 100 hdrs = [ 101 "client_helper.h", 102 "interop_client.h", 103 ], 104 external_deps = [ 105 "absl/flags:flag", 106 ], 107 language = "C++", 108 deps = [ 109 ":backend_metrics_lb_policy", 110 "//src/proto/grpc/testing:empty_proto", 111 "//src/proto/grpc/testing:messages_proto", 112 "//src/proto/grpc/testing:test_proto", 113 "//test/core/security:oauth2_utils", 114 "//test/cpp/util:test_config", 115 "//test/cpp/util:test_util", 116 ], 117) 118 119grpc_cc_library( 120 name = "interop_client_main", 121 srcs = [ 122 "client.cc", 123 ], 124 external_deps = [ 125 "absl/flags:flag", 126 ], 127 language = "C++", 128 deps = [ 129 ":client_helper_lib", 130 ], 131) 132 133grpc_cc_binary( 134 name = "interop_client", 135 language = "C++", 136 deps = [ 137 ":interop_client_main", 138 "//:grpc++", 139 "//test/cpp/util:test_util", 140 ], 141) 142 143grpc_cc_binary( 144 name = "metrics_client", 145 srcs = ["metrics_client.cc"], 146 external_deps = [ 147 "absl/flags:flag", 148 ], 149 language = "C++", 150 deps = [ 151 "//:grpc++", 152 "//test/cpp/util:metrics_server_lib", 153 "//test/cpp/util:test_config", 154 ], 155) 156 157grpc_cc_binary( 158 name = "reconnect_interop_client", 159 srcs = [ 160 "reconnect_interop_client.cc", 161 ], 162 external_deps = [ 163 "absl/flags:flag", 164 ], 165 deps = [ 166 ":client_helper_lib", 167 "//:grpc++", 168 "//test/core/util:grpc_test_util", 169 ], 170) 171 172grpc_cc_binary( 173 name = "reconnect_interop_server", 174 srcs = [ 175 "reconnect_interop_server.cc", 176 ], 177 external_deps = [ 178 "absl/flags:flag", 179 ], 180 language = "C++", 181 deps = [ 182 ":interop_server_lib", 183 "//:grpc++", 184 "//test/core/util:grpc_test_util", 185 ], 186) 187 188grpc_cc_binary( 189 name = "stress_test", 190 srcs = [ 191 "stress_interop_client.cc", 192 "stress_interop_client.h", 193 "stress_test.cc", 194 ], 195 external_deps = [ 196 "absl/flags:flag", 197 ], 198 deps = [ 199 ":client_helper_lib", 200 "//:grpc++", 201 "//test/cpp/util:metrics_server_lib", 202 "//test/cpp/util:test_config", 203 ], 204) 205 206grpc_cc_binary( 207 name = "interop_test", 208 srcs = ["interop_test.cc"], 209 data = [ 210 ":interop_client", 211 ":interop_server", 212 ], 213 external_deps = [ 214 "absl/flags:flag", 215 ], 216 tags = ["no_windows"], 217 deps = [ 218 "//:gpr", 219 "//:grpc", 220 "//:grpc++", 221 "//test/core/util:grpc_test_util", 222 "//test/cpp/util:test_config", 223 "//test/cpp/util:test_util", 224 ], 225) 226 227sh_test( 228 name = "interop_test_with_metadata_log", 229 srcs = [ 230 "interop_test_with_metadata_log.sh", 231 ], 232 data = [ 233 ":interop_test", 234 ], 235 tags = ["no_windows"], 236) 237 238grpc_cc_library( 239 name = "xds_stats_watcher", 240 srcs = ["xds_stats_watcher.cc"], 241 hdrs = ["xds_stats_watcher.h"], 242 deps = [ 243 ":rpc_behavior_lb_policy", 244 "//:grpc++", 245 "//:grpc++_reflection", 246 "//:grpcpp_admin", 247 "//src/proto/grpc/testing:empty_proto", 248 "//src/proto/grpc/testing:messages_proto", 249 "//src/proto/grpc/testing:test_proto", 250 "//test/core/util:grpc_test_util", 251 "//test/cpp/util:test_config", 252 ], 253) 254 255grpc_cc_test( 256 name = "xds_stats_watcher_test", 257 srcs = [ 258 "xds_stats_watcher_test.cc", 259 ], 260 external_deps = ["gtest"], 261 deps = [":xds_stats_watcher"], 262) 263 264grpc_cc_binary( 265 name = "xds_interop_client", 266 srcs = [ 267 "xds_interop_client.cc", 268 ], 269 external_deps = [ 270 "absl/flags:flag", 271 "otel/exporters/prometheus:prometheus_exporter", 272 "otel/sdk/src/metrics", 273 ], 274 deps = [ 275 ":rpc_behavior_lb_policy", 276 ":xds_stats_watcher", 277 "//:grpc++", 278 "//:grpc++_reflection", 279 "//:grpcpp_admin", 280 "//:grpcpp_csm_observability", 281 "//src/proto/grpc/testing:empty_proto", 282 "//src/proto/grpc/testing:messages_proto", 283 "//src/proto/grpc/testing:test_proto", 284 "//test/core/util:grpc_test_util", 285 "//test/cpp/util:test_config", 286 ], 287) 288 289grpc_cc_library( 290 name = "xds_interop_server_lib", 291 testonly = True, 292 srcs = [ 293 "pre_stop_hook_server.cc", 294 "xds_interop_server_lib.cc", 295 ], 296 hdrs = [ 297 "pre_stop_hook_server.h", 298 "xds_interop_server_lib.h", 299 ], 300 deps = [ 301 "//:grpc++", 302 "//:grpc++_reflection", 303 "//:grpcpp_admin", 304 "//src/proto/grpc/testing:empty_proto", 305 "//src/proto/grpc/testing:messages_proto", 306 "//src/proto/grpc/testing:test_proto", 307 "//test/cpp/end2end:test_health_check_service_impl", 308 ], 309) 310 311grpc_cc_binary( 312 name = "xds_interop_server", 313 testonly = True, 314 srcs = [ 315 "xds_interop_server.cc", 316 ], 317 external_deps = [ 318 "absl/flags:flag", 319 "otel/exporters/prometheus:prometheus_exporter", 320 "otel/sdk/src/metrics", 321 ], 322 deps = [ 323 ":xds_interop_server_lib", 324 "//:grpc++", 325 "//:grpcpp_csm_observability", 326 "//test/core/util:grpc_test_util", 327 "//test/cpp/end2end:test_health_check_service_impl", 328 "//test/cpp/util:test_config", 329 ], 330) 331 332grpc_cc_test( 333 name = "pre_stop_hook_server_test", 334 srcs = [ 335 "pre_stop_hook_server_test.cc", 336 ], 337 external_deps = ["gtest"], 338 deps = [ 339 ":xds_interop_server_lib", 340 "//:grpc++", 341 "//src/proto/grpc/testing:istio_echo_proto", 342 "//test/core/util:grpc_test_util", 343 "//test/cpp/util:test_config", 344 ], 345) 346 347grpc_cc_test( 348 name = "xds_interop_server_test", 349 srcs = [ 350 "xds_interop_server_test.cc", 351 ], 352 external_deps = ["gtest"], 353 deps = [ 354 ":xds_interop_server_lib", 355 "//:grpc++", 356 "//src/proto/grpc/testing:istio_echo_proto", 357 "//test/core/util:grpc_test_util", 358 "//test/cpp/util:test_config", 359 ], 360) 361 362grpc_cc_library( 363 name = "istio_echo_server_lib", 364 srcs = [ 365 "istio_echo_server_lib.cc", 366 ], 367 hdrs = ["istio_echo_server_lib.h"], 368 deps = [ 369 "//:grpc++", 370 "//src/proto/grpc/testing:istio_echo_proto", 371 ], 372) 373 374grpc_cc_binary( 375 name = "istio_echo_server", 376 srcs = [ 377 "istio_echo_server.cc", 378 ], 379 external_deps = [ 380 "absl/flags:flag", 381 ], 382 deps = [ 383 ":istio_echo_server_lib", 384 "//:grpc++", 385 "//:grpc++_reflection", 386 "//:grpcpp_admin", 387 "//src/proto/grpc/testing:istio_echo_proto", 388 "//test/core/util:grpc_test_util", 389 "//test/cpp/util:test_config", 390 ], 391) 392 393grpc_cc_test( 394 name = "istio_echo_server_test", 395 srcs = [ 396 "istio_echo_server_test.cc", 397 ], 398 external_deps = ["gtest"], 399 deps = [ 400 ":istio_echo_server_lib", 401 "//:grpc++", 402 "//src/proto/grpc/testing:istio_echo_proto", 403 "//test/core/util:grpc_test_util", 404 "//test/cpp/util:test_config", 405 ], 406) 407 408grpc_cc_binary( 409 name = "http2_client", 410 srcs = [ 411 "http2_client.cc", 412 "http2_client.h", 413 ], 414 external_deps = [ 415 "absl/flags:flag", 416 ], 417 deps = [ 418 "//:grpc++", 419 "//src/proto/grpc/testing:empty_proto", 420 "//src/proto/grpc/testing:messages_proto", 421 "//src/proto/grpc/testing:test_proto", 422 "//test/core/util:grpc_test_util", 423 "//test/cpp/util:test_config", 424 "//test/cpp/util:test_util", 425 ], 426) 427 428grpc_cc_binary( 429 name = "xds_federation_client", 430 srcs = [ 431 "xds_federation_client.cc", 432 ], 433 external_deps = [ 434 "absl/flags:flag", 435 ], 436 language = "C++", 437 deps = [ 438 ":client_helper_lib", 439 "//:grpc++", 440 "//test/cpp/util:test_config", 441 ], 442) 443 444grpc_cc_binary( 445 name = "observability_interop_server", 446 srcs = [ 447 "observability_interop_server_bootstrap.cc", 448 ], 449 external_deps = [ 450 "absl/flags:flag", 451 ], 452 language = "C++", 453 tags = ["nobuilder"], 454 deps = [ 455 ":interop_server_lib", 456 "//:grpc++", 457 "//:grpcpp_gcp_observability", 458 "//test/cpp/util:test_util", 459 ], 460) 461 462grpc_cc_library( 463 name = "observability_interop_client_main", 464 srcs = [ 465 "observability_client.cc", 466 ], 467 external_deps = [ 468 "absl/flags:flag", 469 "otel/exporters/prometheus:prometheus_exporter", 470 "otel/sdk/src/metrics", 471 ], 472 language = "C++", 473 tags = ["nobuilder"], 474 deps = [ 475 ":client_helper_lib", 476 "//:grpcpp_gcp_observability", 477 "//src/cpp/ext/otel:otel_plugin", 478 ], 479) 480 481grpc_cc_binary( 482 name = "observability_interop_client", 483 language = "C++", 484 tags = ["nobuilder"], 485 deps = [ 486 ":observability_interop_client_main", 487 "//:grpc++", 488 "//test/cpp/util:test_util", 489 ], 490) 491 492grpc_cc_binary( 493 name = "observability_interop_test", 494 srcs = ["interop_test.cc"], 495 data = [ 496 ":observability_interop_client", 497 ":observability_interop_server", 498 ], 499 external_deps = [ 500 "absl/flags:flag", 501 ], 502 tags = [ 503 "no_windows", 504 "nobuilder", 505 ], 506 deps = [ 507 "//:gpr", 508 "//:grpc", 509 "//:grpc++", 510 "//test/core/util:grpc_test_util", 511 "//test/cpp/util:test_config", 512 "//test/cpp/util:test_util", 513 ], 514) 515 516grpc_cc_library( 517 name = "backend_metrics_lb_policy", 518 srcs = [ 519 "backend_metrics_lb_policy.cc", 520 ], 521 hdrs = [ 522 "backend_metrics_lb_policy.h", 523 ], 524 external_deps = [ 525 ], 526 language = "C++", 527 tags = ["nobuilder"], 528 deps = [ 529 "//:grpc", 530 "//:grpc++", 531 "//src/proto/grpc/testing:messages_proto", 532 ], 533) 534 535grpc_cc_test( 536 name = "backend_metrics_lb_policy_test", 537 srcs = [ 538 "backend_metrics_lb_policy_test.cc", 539 ], 540 external_deps = ["gtest"], 541 deps = [ 542 ":backend_metrics_lb_policy", 543 "//:grpc++", 544 "//:grpcpp_orca_service", 545 "//src/proto/grpc/testing:test_proto", 546 "//test/core/util:grpc_test_util", 547 "//test/cpp/util:test_config", 548 ], 549) 550 551grpc_cc_library( 552 name = "rpc_behavior_lb_policy", 553 srcs = [ 554 "rpc_behavior_lb_policy.cc", 555 ], 556 hdrs = [ 557 "rpc_behavior_lb_policy.h", 558 ], 559 external_deps = [ 560 ], 561 language = "C++", 562 tags = ["nobuilder"], 563 deps = [ 564 "//:grpc", 565 "//:grpc++", 566 ], 567) 568