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_library", "grpc_cc_test", "grpc_package") 16 17licenses(["notice"]) 18 19grpc_package( 20 name = "test/cpp/end2end/xds", 21 visibility = "public", 22) # Allows external users to implement end2end tests. 23 24grpc_cc_library( 25 name = "xds_server", 26 srcs = ["xds_server.cc"], 27 hdrs = ["xds_server.h"], 28 external_deps = [ 29 "absl/log:check", 30 "absl/log:log", 31 ], 32 visibility = ["@grpc:xds_end2end_test_utils"], 33 deps = [ 34 "//:gpr", 35 "//:grpc", 36 "//:grpc++", 37 "//src/proto/grpc/testing/xds/v3:ads_cc_grpc", 38 "//src/proto/grpc/testing/xds/v3:discovery_cc_proto", 39 "//src/proto/grpc/testing/xds/v3:lrs_cc_grpc", 40 "//test/core/test_util:grpc_test_util", 41 "//test/cpp/end2end:counted_service", 42 "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto", 43 "@envoy_api//envoy/config/endpoint/v3:pkg_cc_proto", 44 "@envoy_api//envoy/config/listener/v3:pkg_cc_proto", 45 "@envoy_api//envoy/config/route/v3:pkg_cc_proto", 46 ], 47) 48 49grpc_cc_library( 50 name = "xds_utils", 51 srcs = ["xds_utils.cc"], 52 hdrs = ["xds_utils.h"], 53 visibility = ["@grpc:xds_end2end_test_utils"], 54 deps = [ 55 ":xds_server", 56 "//src/proto/grpc/testing/xds/v3:discovery_cc_proto", 57 "//test/core/test_util:grpc_test_util_base", 58 "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto", 59 "@envoy_api//envoy/config/endpoint/v3:pkg_cc_proto", 60 "@envoy_api//envoy/config/listener/v3:pkg_cc_proto", 61 "@envoy_api//envoy/config/route/v3:pkg_cc_proto", 62 "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto", 63 "@envoy_api//envoy/extensions/filters/network/http_connection_manager/v3:pkg_cc_proto", 64 ], 65) 66 67grpc_cc_library( 68 name = "xds_end2end_test_lib", 69 testonly = True, 70 srcs = ["xds_end2end_test_lib.cc"], 71 hdrs = ["xds_end2end_test_lib.h"], 72 external_deps = [ 73 "absl/log:check", 74 "gtest", 75 ], 76 deps = [ 77 ":xds_server", 78 ":xds_utils", 79 "//:gpr", 80 "//:grpc", 81 "//:grpc++", 82 "//:grpc_resolver_fake", 83 "//src/proto/grpc/testing:echo_cc_grpc", 84 "//src/proto/grpc/testing:echo_messages_cc_proto", 85 "//src/proto/grpc/testing/duplicate:echo_duplicate_cc_grpc", 86 "//src/proto/grpc/testing/xds/v3:ads_cc_grpc", 87 "//src/proto/grpc/testing/xds/v3:discovery_cc_proto", 88 "//src/proto/grpc/testing/xds/v3:lrs_cc_grpc", 89 "//test/core/test_util:grpc_test_util", 90 "//test/cpp/end2end:counted_service", 91 "//test/cpp/end2end:test_service_impl", 92 "//test/cpp/util:tls_test_utils", 93 "@com_github_cncf_xds//xds/data/orca/v3:pkg_cc_proto", 94 "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto", 95 "@envoy_api//envoy/config/endpoint/v3:pkg_cc_proto", 96 "@envoy_api//envoy/config/listener/v3:pkg_cc_proto", 97 "@envoy_api//envoy/config/route/v3:pkg_cc_proto", 98 "@envoy_api//envoy/extensions/filters/http/rbac/v3:pkg_cc_proto", 99 "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto", 100 "@envoy_api//envoy/extensions/filters/network/http_connection_manager/v3:pkg_cc_proto", 101 ], 102) 103 104grpc_cc_test( 105 name = "xds_security_end2end_test", 106 size = "large", 107 srcs = ["xds_security_end2end_test.cc"], 108 data = [ 109 "//src/core/tsi/test_creds:badclient.key", 110 "//src/core/tsi/test_creds:badclient.pem", 111 "//src/core/tsi/test_creds:ca.pem", 112 "//src/core/tsi/test_creds:client.key", 113 "//src/core/tsi/test_creds:client.pem", 114 "//src/core/tsi/test_creds:server1.key", 115 "//src/core/tsi/test_creds:server1.pem", 116 ], 117 external_deps = [ 118 "absl/log:check", 119 "gtest", 120 ], 121 flaky = True, # TODO(b/144705388) 122 linkstatic = True, # Fixes dyld error on MacOS 123 shard_count = 25, 124 tags = [ 125 "no_test_ios", 126 "no_windows", 127 "xds_end2end_test", 128 ], # TODO(jtattermusch): fix test on windows 129 deps = [ 130 ":xds_end2end_test_lib", 131 "//:gpr", 132 "//:grpc", 133 "//:grpc++", 134 "//src/core:grpc_audit_logging", 135 "//src/proto/grpc/testing:echo_cc_grpc", 136 "//src/proto/grpc/testing:echo_messages_cc_proto", 137 "//test/core/test_util:audit_logging_utils", 138 "//test/core/test_util:grpc_test_util", 139 "//test/core/test_util:scoped_env_var", 140 "//test/cpp/util:test_config", 141 "//test/cpp/util:test_util", 142 "//test/cpp/util:tls_test_utils", 143 "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto", 144 "@envoy_api//envoy/config/endpoint/v3:pkg_cc_proto", 145 "@envoy_api//envoy/config/listener/v3:pkg_cc_proto", 146 "@envoy_api//envoy/config/route/v3:pkg_cc_proto", 147 "@envoy_api//envoy/extensions/clusters/aggregate/v3:pkg_cc_proto", 148 "@envoy_api//envoy/extensions/filters/http/rbac/v3:pkg_cc_proto", 149 "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto", 150 "@envoy_api//envoy/extensions/filters/network/http_connection_manager/v3:pkg_cc_proto", 151 "@envoy_api//envoy/extensions/transport_sockets/tls/v3:pkg_cc_proto", 152 "@envoy_api//envoy/type/v3:pkg_cc_proto", 153 ], 154) 155 156grpc_cc_test( 157 name = "xds_cluster_end2end_test", 158 size = "large", 159 srcs = ["xds_cluster_end2end_test.cc"], 160 external_deps = [ 161 "gtest", 162 ], 163 flaky = True, # TODO(b/144705388) 164 linkstatic = True, # Fixes dyld error on MacOS 165 shard_count = 50, 166 tags = [ 167 "no_test_ios", 168 "no_windows", 169 "xds_end2end_test", 170 ], # TODO(jtattermusch): fix test on windows 171 deps = [ 172 ":xds_end2end_test_lib", 173 "//:gpr", 174 "//:grpc", 175 "//:grpc++", 176 "//test/core/test_util:fake_stats_plugin", 177 "//test/core/test_util:grpc_test_util", 178 "//test/core/test_util:scoped_env_var", 179 "//test/cpp/end2end:connection_attempt_injector", 180 ], 181) 182 183grpc_cc_test( 184 name = "xds_cluster_type_end2end_test", 185 size = "large", 186 srcs = ["xds_cluster_type_end2end_test.cc"], 187 external_deps = [ 188 "absl/log:check", 189 "gtest", 190 ], 191 flaky = True, # TODO(b/144705388) 192 linkstatic = True, # Fixes dyld error on MacOS 193 tags = [ 194 "no_test_ios", 195 "no_windows", 196 "xds_end2end_test", 197 ], # TODO(jtattermusch): fix test on windows 198 deps = [ 199 ":xds_end2end_test_lib", 200 "//:gpr", 201 "//:grpc", 202 "//:grpc++", 203 "//:grpc_resolver_fake", 204 "//test/core/test_util:grpc_test_util", 205 "//test/core/test_util:scoped_env_var", 206 "//test/cpp/end2end:connection_attempt_injector", 207 "@envoy_api//envoy/extensions/clusters/aggregate/v3:pkg_cc_proto", 208 ], 209) 210 211grpc_cc_test( 212 name = "xds_core_end2end_test", 213 size = "large", 214 srcs = ["xds_core_end2end_test.cc"], 215 data = [ 216 "//src/core/tsi/test_creds:ca.pem", 217 "//src/core/tsi/test_creds:server1.key", 218 "//src/core/tsi/test_creds:server1.pem", 219 ], 220 external_deps = [ 221 "gtest", 222 ], 223 flaky = True, 224 linkstatic = True, # Fixes dyld error on MacOS 225 shard_count = 15, 226 tags = [ 227 "no_test_ios", 228 "no_windows", 229 "xds_end2end_test", 230 ], # TODO(jtattermusch): fix test on windows 231 deps = [ 232 ":xds_end2end_test_lib", 233 "//:gpr", 234 "//:grpc", 235 "//:grpc++", 236 "//test/core/test_util:fake_stats_plugin", 237 "//test/core/test_util:grpc_test_util", 238 "//test/core/test_util:scoped_env_var", 239 ], 240) 241 242grpc_cc_test( 243 name = "xds_csds_end2end_test", 244 size = "large", 245 srcs = ["xds_csds_end2end_test.cc"], 246 external_deps = [ 247 "gtest", 248 ], 249 linkstatic = True, # Fixes dyld error on MacOS 250 tags = [ 251 "no_test_ios", 252 "no_windows", 253 "xds_end2end_test", 254 ], # TODO(jtattermusch): fix test on windows 255 deps = [ 256 ":xds_end2end_test_lib", 257 "//:gpr", 258 "//:grpc", 259 "//:grpc++", 260 "//:grpcpp_csds", 261 "//test/core/test_util:grpc_test_util", 262 "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto", 263 "@envoy_api//envoy/config/endpoint/v3:pkg_cc_proto", 264 "@envoy_api//envoy/config/listener/v3:pkg_cc_proto", 265 "@envoy_api//envoy/config/route/v3:pkg_cc_proto", 266 ], 267) 268 269grpc_cc_test( 270 name = "xds_fault_injection_end2end_test", 271 size = "large", 272 srcs = ["xds_fault_injection_end2end_test.cc"], 273 external_deps = [ 274 "gtest", 275 ], 276 flaky = True, 277 linkstatic = True, # Fixes dyld error on MacOS 278 shard_count = 5, 279 tags = [ 280 "no_mac", 281 "no_test_ios", 282 "no_windows", 283 "xds_end2end_test", 284 ], # TODO(jtattermusch): fix test on windows 285 deps = [ 286 ":xds_end2end_test_lib", 287 "//:gpr", 288 "//:grpc", 289 "//:grpc++", 290 "//test/core/test_util:grpc_test_util", 291 "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto", 292 "@envoy_api//envoy/extensions/filters/http/fault/v3:pkg_cc_proto", 293 "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto", 294 "@envoy_api//envoy/extensions/filters/network/http_connection_manager/v3:pkg_cc_proto", 295 ], 296) 297 298grpc_cc_test( 299 name = "xds_gcp_authn_end2end_test", 300 size = "large", 301 srcs = ["xds_gcp_authn_end2end_test.cc"], 302 data = [ 303 "//src/core/tsi/test_creds:badclient.key", 304 "//src/core/tsi/test_creds:badclient.pem", 305 "//src/core/tsi/test_creds:ca.pem", 306 "//src/core/tsi/test_creds:client.key", 307 "//src/core/tsi/test_creds:client.pem", 308 "//src/core/tsi/test_creds:server1.key", 309 "//src/core/tsi/test_creds:server1.pem", 310 ], 311 external_deps = [ 312 "gtest", 313 ], 314 flaky = True, 315 linkstatic = True, # Fixes dyld error on MacOS 316 tags = [ 317 "no_test_ios", 318 "no_windows", 319 "xds_end2end_test", 320 ], # TODO(jtattermusch): fix test on windows 321 deps = [ 322 ":xds_end2end_test_lib", 323 "//:gpr", 324 "//:grpc", 325 "//:grpc++", 326 "//test/core/test_util:grpc_test_util", 327 "//test/core/test_util:scoped_env_var", 328 "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto", 329 "@envoy_api//envoy/extensions/filters/http/gcp_authn/v3:pkg_cc_proto", 330 "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto", 331 "@envoy_api//envoy/extensions/filters/network/http_connection_manager/v3:pkg_cc_proto", 332 ], 333) 334 335grpc_cc_test( 336 name = "xds_outlier_detection_end2end_test", 337 size = "large", 338 srcs = ["xds_outlier_detection_end2end_test.cc"], 339 external_deps = [ 340 "absl/log:check", 341 "gtest", 342 ], 343 flaky = True, 344 linkstatic = True, # Fixes dyld error on MacOS 345 tags = [ 346 "no_test_ios", 347 "no_windows", 348 "xds_end2end_test", 349 ], # TODO(jtattermusch): fix test on windows 350 deps = [ 351 ":xds_end2end_test_lib", 352 "//:gpr", 353 "//:grpc", 354 "//:grpc++", 355 "//test/core/test_util:grpc_test_util", 356 "@envoy_api//envoy/extensions/filters/http/fault/v3:pkg_cc_proto", 357 "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto", 358 ], 359) 360 361grpc_cc_test( 362 name = "xds_wrr_end2end_test", 363 size = "large", 364 srcs = ["xds_wrr_end2end_test.cc"], 365 external_deps = [ 366 "gtest", 367 ], 368 linkstatic = True, # Fixes dyld error on MacOS 369 tags = [ 370 "no_test_ios", 371 "no_windows", 372 "xds_end2end_test", 373 ], # TODO(jtattermusch): fix test on windows 374 deps = [ 375 ":xds_end2end_test_lib", 376 "//:gpr", 377 "//:grpc", 378 "//:grpc++", 379 "//test/core/test_util:fake_stats_plugin", 380 "//test/core/test_util:grpc_test_util", 381 "//test/core/test_util:scoped_env_var", 382 "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto", 383 "@envoy_api//envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3:pkg_cc_proto", 384 "@envoy_api//envoy/extensions/load_balancing_policies/wrr_locality/v3:pkg_cc_proto", 385 ], 386) 387 388grpc_cc_test( 389 name = "xds_ring_hash_end2end_test", 390 size = "large", 391 srcs = ["xds_ring_hash_end2end_test.cc"], 392 external_deps = [ 393 "absl/log:check", 394 "absl/log:log", 395 "gtest", 396 ], 397 flaky = True, # TODO(b/144705388) 398 linkstatic = True, # Fixes dyld error on MacOS 399 shard_count = 10, 400 tags = [ 401 "no_test_ios", 402 "no_windows", 403 "xds_end2end_test", 404 ], # TODO(jtattermusch): fix test on windows 405 deps = [ 406 ":xds_end2end_test_lib", 407 "//:gpr", 408 "//:grpc", 409 "//:grpc++", 410 "//:grpc_resolver_fake", 411 "//test/core/test_util:grpc_test_util", 412 "//test/core/test_util:scoped_env_var", 413 "//test/cpp/end2end:connection_attempt_injector", 414 "@envoy_api//envoy/config/cluster/v3:pkg_cc_proto", 415 "@envoy_api//envoy/config/endpoint/v3:pkg_cc_proto", 416 "@envoy_api//envoy/config/listener/v3:pkg_cc_proto", 417 "@envoy_api//envoy/config/route/v3:pkg_cc_proto", 418 "@envoy_api//envoy/extensions/clusters/aggregate/v3:pkg_cc_proto", 419 ], 420) 421 422grpc_cc_test( 423 name = "xds_rls_end2end_test", 424 size = "large", 425 srcs = ["xds_rls_end2end_test.cc"], 426 external_deps = [ 427 "gtest", 428 ], 429 linkstatic = True, # Fixes dyld error on MacOS 430 tags = [ 431 "no_test_ios", 432 "no_windows", 433 "xds_end2end_test", 434 ], # TODO(jtattermusch): fix test on windows 435 deps = [ 436 ":xds_end2end_test_lib", 437 "//:gpr", 438 "//:grpc", 439 "//:grpc++", 440 "//src/proto/grpc/lookup/v1:rls_cc_proto", 441 "//src/proto/grpc/lookup/v1:rls_config_cc_proto", 442 "//test/core/test_util:grpc_test_util", 443 "//test/core/test_util:scoped_env_var", 444 "//test/cpp/end2end:rls_server", 445 ], 446) 447 448grpc_cc_test( 449 name = "xds_routing_end2end_test", 450 size = "large", 451 srcs = ["xds_routing_end2end_test.cc"], 452 external_deps = [ 453 "gtest", 454 ], 455 flaky = True, # TODO(b/144705388) 456 linkstatic = True, # Fixes dyld error on MacOS 457 shard_count = 10, 458 tags = [ 459 "no_test_ios", 460 "no_windows", 461 "xds_end2end_test", 462 ], # TODO(jtattermusch): fix test on windows 463 deps = [ 464 ":xds_end2end_test_lib", 465 "//:gpr", 466 "//:grpc", 467 "//:grpc++", 468 "//test/core/test_util:grpc_test_util", 469 "@envoy_api//envoy/extensions/filters/http/fault/v3:pkg_cc_proto", 470 "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto", 471 ], 472) 473 474grpc_cc_test( 475 name = "xds_credentials_end2end_test", 476 srcs = ["xds_credentials_end2end_test.cc"], 477 external_deps = [ 478 "gtest", 479 ], 480 tags = [ 481 "no_test_ios", 482 "xds_end2end_test", 483 ], 484 deps = [ 485 "//:gpr", 486 "//:grpc", 487 "//:grpc++", 488 "//src/proto/grpc/testing:echo_cc_grpc", 489 "//src/proto/grpc/testing:echo_messages_cc_proto", 490 "//test/core/test_util:grpc_test_util", 491 "//test/cpp/end2end:test_service_impl", 492 "//test/cpp/util:test_util", 493 ], 494) 495 496grpc_cc_test( 497 name = "xds_override_host_end2end_test", 498 size = "large", 499 srcs = ["xds_override_host_end2end_test.cc"], 500 external_deps = [ 501 "gtest", 502 ], 503 linkstatic = True, # Fixes dyld error on MacOS 504 tags = [ 505 "no_test_ios", 506 "no_windows", 507 "xds_end2end_test", 508 ], # TODO(jtattermusch): fix test on windows 509 deps = [ 510 ":xds_end2end_test_lib", 511 "//:gpr", 512 "//:grpc", 513 "//:grpc++", 514 "//test/core/test_util:grpc_test_util", 515 "//test/core/test_util:scoped_env_var", 516 "@envoy_api//envoy/extensions/filters/http/stateful_session/v3:pkg_cc_proto", 517 "@envoy_api//envoy/extensions/http/stateful_session/cookie/v3:pkg_cc_proto", 518 ], 519) 520 521grpc_cc_test( 522 name = "xds_pick_first_end2end_test", 523 size = "large", 524 srcs = ["xds_pick_first_end2end_test.cc"], 525 external_deps = [ 526 "gtest", 527 ], 528 linkstatic = True, # Fixes dyld error on MacOS 529 tags = [ 530 "no_test_ios", 531 "no_windows", 532 "xds_end2end_test", 533 ], # TODO(jtattermusch): fix test on windows 534 deps = [ 535 ":xds_end2end_test_lib", 536 "//:gpr", 537 "//:grpc", 538 "//:grpc++", 539 "//test/core/test_util:grpc_test_util", 540 "//test/core/test_util:scoped_env_var", 541 "//test/cpp/end2end:connection_attempt_injector", 542 "@envoy_api//envoy/extensions/clusters/aggregate/v3:pkg_cc_proto", 543 "@envoy_api//envoy/extensions/filters/http/router/v3:pkg_cc_proto", 544 "@envoy_api//envoy/extensions/load_balancing_policies/pick_first/v3:pkg_cc_proto", 545 ], 546) 547 548grpc_cc_test( 549 name = "xds_fallback_end2end_test", 550 srcs = ["xds_fallback_end2end_test.cc"], 551 external_deps = [ 552 "gtest", 553 ], 554 linkstatic = True, # Fixes dyld error on MacOS 555 tags = [ 556 "no_test_ios", 557 "no_windows", 558 "xds_end2end_test", 559 ], # TODO(jtattermusch): fix test on windows 560 deps = [ 561 ":xds_end2end_test_lib", 562 "//:gpr", 563 "//:grpc", 564 "//:grpc++", 565 "//test/core/test_util:scoped_env_var", 566 ], 567) 568 569grpc_cc_test( 570 name = "xds_http_connect_end2end_test", 571 srcs = ["xds_http_connect_end2end_test.cc"], 572 external_deps = [ 573 "gtest", 574 ], 575 linkstatic = True, # Fixes dyld error on MacOS 576 tags = [ 577 "no_test_ios", 578 "no_windows", 579 "xds_end2end_test", 580 ], # TODO(jtattermusch): fix test on windows 581 deps = [ 582 ":xds_end2end_test_lib", 583 "//:gpr", 584 "//:grpc", 585 "//:grpc++", 586 "//test/core/end2end:http_proxy", 587 "//test/core/test_util:scoped_env_var", 588 "@envoy_api//envoy/config/core/v3:pkg_cc_proto", 589 "@envoy_api//envoy/extensions/transport_sockets/http_11_proxy/v3:pkg_cc_proto", 590 ], 591) 592 593grpc_cc_test( 594 name = "xds_enabled_server_end2end_test", 595 size = "large", 596 srcs = ["xds_enabled_server_end2end_test.cc"], 597 external_deps = [ 598 "gtest", 599 ], 600 flaky = True, # TODO(b/144705388) 601 linkstatic = True, # Fixes dyld error on MacOS 602 tags = [ 603 "no_test_ios", 604 "no_windows", 605 "xds_end2end_test", 606 ], # TODO(jtattermusch): fix test on windows 607 deps = [ 608 ":xds_end2end_test_lib", 609 "//:gpr", 610 "//:grpc", 611 "//:grpc++", 612 "//test/core/test_util:grpc_test_util", 613 ], 614) 615