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 visibility = ["@grpc:xds_end2end_test_utils"], 29 deps = [ 30 "//:gpr", 31 "//:grpc", 32 "//:grpc++", 33 "//src/proto/grpc/testing/xds/v3:ads_proto", 34 "//src/proto/grpc/testing/xds/v3:cluster_proto", 35 "//src/proto/grpc/testing/xds/v3:discovery_proto", 36 "//src/proto/grpc/testing/xds/v3:endpoint_proto", 37 "//src/proto/grpc/testing/xds/v3:listener_proto", 38 "//src/proto/grpc/testing/xds/v3:lrs_proto", 39 "//src/proto/grpc/testing/xds/v3:route_proto", 40 "//test/core/util:grpc_test_util", 41 "//test/cpp/end2end:counted_service", 42 ], 43) 44 45grpc_cc_library( 46 name = "xds_utils", 47 srcs = ["xds_utils.cc"], 48 hdrs = ["xds_utils.h"], 49 visibility = ["@grpc:xds_end2end_test_utils"], 50 deps = [ 51 ":xds_server", 52 "//src/proto/grpc/testing/xds/v3:cluster_proto", 53 "//src/proto/grpc/testing/xds/v3:discovery_proto", 54 "//src/proto/grpc/testing/xds/v3:endpoint_proto", 55 "//src/proto/grpc/testing/xds/v3:http_connection_manager_proto", 56 "//src/proto/grpc/testing/xds/v3:listener_proto", 57 "//src/proto/grpc/testing/xds/v3:route_proto", 58 "//src/proto/grpc/testing/xds/v3:router_proto", 59 "//test/core/util:grpc_test_util_base", 60 ], 61) 62 63grpc_cc_library( 64 name = "xds_end2end_test_lib", 65 testonly = True, 66 srcs = ["xds_end2end_test_lib.cc"], 67 hdrs = ["xds_end2end_test_lib.h"], 68 external_deps = [ 69 "gtest", 70 ], 71 deps = [ 72 ":xds_server", 73 ":xds_utils", 74 "//:gpr", 75 "//:grpc", 76 "//:grpc++", 77 "//:grpc_resolver_fake", 78 "//src/proto/grpc/testing:echo_messages_proto", 79 "//src/proto/grpc/testing:echo_proto", 80 "//src/proto/grpc/testing/duplicate:echo_duplicate_proto", 81 "//src/proto/grpc/testing/xds/v3:ads_proto", 82 "//src/proto/grpc/testing/xds/v3:cluster_proto", 83 "//src/proto/grpc/testing/xds/v3:discovery_proto", 84 "//src/proto/grpc/testing/xds/v3:endpoint_proto", 85 "//src/proto/grpc/testing/xds/v3:http_connection_manager_proto", 86 "//src/proto/grpc/testing/xds/v3:http_filter_rbac_proto", 87 "//src/proto/grpc/testing/xds/v3:listener_proto", 88 "//src/proto/grpc/testing/xds/v3:lrs_proto", 89 "//src/proto/grpc/testing/xds/v3:route_proto", 90 "//src/proto/grpc/testing/xds/v3:router_proto", 91 "//test/core/util:grpc_test_util", 92 "//test/cpp/end2end:counted_service", 93 "//test/cpp/end2end:test_service_impl", 94 "//test/cpp/util:tls_test_utils", 95 ], 96) 97 98grpc_cc_test( 99 name = "xds_end2end_test", 100 size = "large", 101 srcs = ["xds_end2end_test.cc"], 102 data = [ 103 "//src/core/tsi/test_creds:badclient.key", 104 "//src/core/tsi/test_creds:badclient.pem", 105 "//src/core/tsi/test_creds:ca.pem", 106 "//src/core/tsi/test_creds:client.key", 107 "//src/core/tsi/test_creds:client.pem", 108 "//src/core/tsi/test_creds:server1.key", 109 "//src/core/tsi/test_creds:server1.pem", 110 ], 111 external_deps = [ 112 "gtest", 113 ], 114 flaky = True, # TODO(b/144705388) 115 linkstatic = True, # Fixes dyld error on MacOS 116 shard_count = 50, 117 tags = [ 118 "no_test_ios", 119 "no_windows", 120 "xds_end2end_test", 121 ], # TODO(jtattermusch): fix test on windows 122 deps = [ 123 ":xds_end2end_test_lib", 124 "//:gpr", 125 "//:grpc", 126 "//:grpc++", 127 "//:grpc_resolver_fake", 128 "//src/core:channel_args", 129 "//src/core:grpc_audit_logging", 130 "//src/proto/grpc/testing:echo_messages_proto", 131 "//src/proto/grpc/testing:echo_proto", 132 "//src/proto/grpc/testing/duplicate:echo_duplicate_proto", 133 "//src/proto/grpc/testing/xds/v3:aggregate_cluster_proto", 134 "//src/proto/grpc/testing/xds/v3:cluster_proto", 135 "//src/proto/grpc/testing/xds/v3:endpoint_proto", 136 "//src/proto/grpc/testing/xds/v3:fault_common_proto", 137 "//src/proto/grpc/testing/xds/v3:fault_proto", 138 "//src/proto/grpc/testing/xds/v3:http_connection_manager_proto", 139 "//src/proto/grpc/testing/xds/v3:http_filter_rbac_proto", 140 "//src/proto/grpc/testing/xds/v3:listener_proto", 141 "//src/proto/grpc/testing/xds/v3:route_proto", 142 "//src/proto/grpc/testing/xds/v3:router_proto", 143 "//src/proto/grpc/testing/xds/v3:tls_proto", 144 "//src/proto/grpc/testing/xds/v3:typed_struct_proto", 145 "//test/core/util:audit_logging_utils", 146 "//test/core/util:grpc_test_util", 147 "//test/core/util:scoped_env_var", 148 "//test/cpp/util:test_config", 149 "//test/cpp/util:test_util", 150 "//test/cpp/util:tls_test_utils", 151 ], 152) 153 154grpc_cc_test( 155 name = "xds_cluster_end2end_test", 156 size = "large", 157 srcs = ["xds_cluster_end2end_test.cc"], 158 external_deps = [ 159 "gtest", 160 ], 161 flaky = True, # TODO(b/144705388) 162 linkstatic = True, # Fixes dyld error on MacOS 163 shard_count = 50, 164 tags = [ 165 "no_test_ios", 166 "no_windows", 167 "xds_end2end_test", 168 ], # TODO(jtattermusch): fix test on windows 169 deps = [ 170 ":xds_end2end_test_lib", 171 "//:gpr", 172 "//:grpc", 173 "//:grpc++", 174 "//test/core/util:fake_stats_plugin", 175 "//test/core/util:grpc_test_util", 176 "//test/core/util:scoped_env_var", 177 "//test/cpp/end2end:connection_attempt_injector", 178 ], 179) 180 181grpc_cc_test( 182 name = "xds_cluster_type_end2end_test", 183 size = "large", 184 srcs = ["xds_cluster_type_end2end_test.cc"], 185 external_deps = [ 186 "gtest", 187 ], 188 flaky = True, # TODO(b/144705388) 189 linkstatic = True, # Fixes dyld error on MacOS 190 tags = [ 191 "no_test_ios", 192 "no_windows", 193 "xds_end2end_test", 194 ], # TODO(jtattermusch): fix test on windows 195 deps = [ 196 ":xds_end2end_test_lib", 197 "//:gpr", 198 "//:grpc", 199 "//:grpc++", 200 "//:grpc_resolver_fake", 201 "//src/proto/grpc/testing/xds/v3:aggregate_cluster_proto", 202 "//test/core/util:grpc_test_util", 203 "//test/core/util:scoped_env_var", 204 "//test/cpp/end2end:connection_attempt_injector", 205 ], 206) 207 208grpc_cc_test( 209 name = "xds_core_end2end_test", 210 size = "large", 211 srcs = ["xds_core_end2end_test.cc"], 212 external_deps = [ 213 "gtest", 214 ], 215 flaky = True, 216 linkstatic = True, # Fixes dyld error on MacOS 217 shard_count = 15, 218 tags = [ 219 "no_test_ios", 220 "no_windows", 221 "xds_end2end_test", 222 ], # TODO(jtattermusch): fix test on windows 223 deps = [ 224 ":xds_end2end_test_lib", 225 "//:gpr", 226 "//:grpc", 227 "//:grpc++", 228 "//test/core/util:fake_stats_plugin", 229 "//test/core/util:grpc_test_util", 230 "//test/core/util:scoped_env_var", 231 ], 232) 233 234grpc_cc_test( 235 name = "xds_csds_end2end_test", 236 size = "large", 237 srcs = ["xds_csds_end2end_test.cc"], 238 external_deps = [ 239 "gtest", 240 ], 241 linkstatic = True, # Fixes dyld error on MacOS 242 tags = [ 243 "no_test_ios", 244 "no_windows", 245 "xds_end2end_test", 246 ], # TODO(jtattermusch): fix test on windows 247 deps = [ 248 ":xds_end2end_test_lib", 249 "//:gpr", 250 "//:grpc", 251 "//:grpc++", 252 "//:grpcpp_csds", 253 "//src/proto/grpc/testing/xds/v3:cluster_proto", 254 "//src/proto/grpc/testing/xds/v3:endpoint_proto", 255 "//src/proto/grpc/testing/xds/v3:listener_proto", 256 "//src/proto/grpc/testing/xds/v3:route_proto", 257 "//test/core/util:grpc_test_util", 258 ], 259) 260 261grpc_cc_test( 262 name = "xds_fault_injection_end2end_test", 263 size = "large", 264 srcs = ["xds_fault_injection_end2end_test.cc"], 265 external_deps = [ 266 "gtest", 267 ], 268 flaky = True, 269 linkstatic = True, # Fixes dyld error on MacOS 270 shard_count = 5, 271 tags = [ 272 "no_test_ios", 273 "no_windows", 274 "xds_end2end_test", 275 ], # TODO(jtattermusch): fix test on windows 276 deps = [ 277 ":xds_end2end_test_lib", 278 "//:gpr", 279 "//:grpc", 280 "//:grpc++", 281 "//src/proto/grpc/testing/xds/v3:cluster_proto", 282 "//src/proto/grpc/testing/xds/v3:fault_proto", 283 "//src/proto/grpc/testing/xds/v3:http_connection_manager_proto", 284 "//src/proto/grpc/testing/xds/v3:router_proto", 285 "//test/core/util:grpc_test_util", 286 ], 287) 288 289grpc_cc_test( 290 name = "xds_outlier_detection_end2end_test", 291 size = "large", 292 srcs = ["xds_outlier_detection_end2end_test.cc"], 293 external_deps = [ 294 "gtest", 295 ], 296 flaky = True, 297 linkstatic = True, # Fixes dyld error on MacOS 298 tags = [ 299 "no_test_ios", 300 "no_windows", 301 "xds_end2end_test", 302 ], # TODO(jtattermusch): fix test on windows 303 deps = [ 304 ":xds_end2end_test_lib", 305 "//:gpr", 306 "//:grpc", 307 "//:grpc++", 308 "//src/proto/grpc/testing/xds/v3:fault_proto", 309 "//src/proto/grpc/testing/xds/v3:router_proto", 310 "//test/core/util:grpc_test_util", 311 ], 312) 313 314grpc_cc_test( 315 name = "xds_wrr_end2end_test", 316 size = "large", 317 srcs = ["xds_wrr_end2end_test.cc"], 318 external_deps = [ 319 "gtest", 320 ], 321 linkstatic = True, # Fixes dyld error on MacOS 322 tags = [ 323 "no_test_ios", 324 "no_windows", 325 "xds_end2end_test", 326 ], # TODO(jtattermusch): fix test on windows 327 deps = [ 328 ":xds_end2end_test_lib", 329 "//:gpr", 330 "//:grpc", 331 "//:grpc++", 332 "//src/proto/grpc/testing/xds/v3:client_side_weighted_round_robin_proto", 333 "//src/proto/grpc/testing/xds/v3:cluster_proto", 334 "//src/proto/grpc/testing/xds/v3:wrr_locality_proto", 335 "//test/core/util:fake_stats_plugin", 336 "//test/core/util:grpc_test_util", 337 "//test/core/util:scoped_env_var", 338 ], 339) 340 341grpc_cc_test( 342 name = "xds_ring_hash_end2end_test", 343 size = "large", 344 srcs = ["xds_ring_hash_end2end_test.cc"], 345 external_deps = [ 346 "gtest", 347 ], 348 flaky = True, # TODO(b/144705388) 349 linkstatic = True, # Fixes dyld error on MacOS 350 shard_count = 10, 351 tags = [ 352 "no_test_ios", 353 "no_windows", 354 "xds_end2end_test", 355 ], # TODO(jtattermusch): fix test on windows 356 deps = [ 357 ":xds_end2end_test_lib", 358 "//:gpr", 359 "//:grpc", 360 "//:grpc++", 361 "//:grpc_resolver_fake", 362 "//src/proto/grpc/testing/xds/v3:aggregate_cluster_proto", 363 "//src/proto/grpc/testing/xds/v3:cluster_proto", 364 "//src/proto/grpc/testing/xds/v3:endpoint_proto", 365 "//src/proto/grpc/testing/xds/v3:listener_proto", 366 "//src/proto/grpc/testing/xds/v3:route_proto", 367 "//test/core/util:grpc_test_util", 368 "//test/cpp/end2end:connection_attempt_injector", 369 ], 370) 371 372grpc_cc_test( 373 name = "xds_rls_end2end_test", 374 size = "large", 375 srcs = ["xds_rls_end2end_test.cc"], 376 external_deps = [ 377 "gtest", 378 ], 379 linkstatic = True, # Fixes dyld error on MacOS 380 tags = [ 381 "no_test_ios", 382 "no_windows", 383 "xds_end2end_test", 384 ], # TODO(jtattermusch): fix test on windows 385 deps = [ 386 ":xds_end2end_test_lib", 387 "//:gpr", 388 "//:grpc", 389 "//:grpc++", 390 "//src/proto/grpc/lookup/v1:rls_config_proto", 391 "//src/proto/grpc/lookup/v1:rls_proto", 392 "//test/core/util:grpc_test_util", 393 "//test/core/util:scoped_env_var", 394 "//test/cpp/end2end:rls_server", 395 ], 396) 397 398grpc_cc_test( 399 name = "xds_routing_end2end_test", 400 size = "large", 401 srcs = ["xds_routing_end2end_test.cc"], 402 external_deps = [ 403 "gtest", 404 ], 405 flaky = True, # TODO(b/144705388) 406 linkstatic = True, # Fixes dyld error on MacOS 407 shard_count = 10, 408 tags = [ 409 "no_test_ios", 410 "no_windows", 411 "xds_end2end_test", 412 ], # TODO(jtattermusch): fix test on windows 413 deps = [ 414 ":xds_end2end_test_lib", 415 "//:gpr", 416 "//:grpc", 417 "//:grpc++", 418 "//src/proto/grpc/testing/xds/v3:fault_proto", 419 "//src/proto/grpc/testing/xds/v3:router_proto", 420 "//test/core/util:grpc_test_util", 421 ], 422) 423 424grpc_cc_test( 425 name = "xds_credentials_end2end_test", 426 srcs = ["xds_credentials_end2end_test.cc"], 427 external_deps = [ 428 "gtest", 429 ], 430 tags = [ 431 "no_test_ios", 432 "xds_end2end_test", 433 ], 434 deps = [ 435 "//:gpr", 436 "//:grpc", 437 "//:grpc++", 438 "//src/proto/grpc/testing:echo_messages_proto", 439 "//src/proto/grpc/testing:echo_proto", 440 "//test/core/util:grpc_test_util", 441 "//test/cpp/end2end:test_service_impl", 442 "//test/cpp/util:test_util", 443 ], 444) 445 446grpc_cc_test( 447 name = "xds_override_host_end2end_test", 448 size = "large", 449 srcs = ["xds_override_host_end2end_test.cc"], 450 external_deps = [ 451 "gtest", 452 ], 453 linkstatic = True, # Fixes dyld error on MacOS 454 tags = [ 455 "no_test_ios", 456 "no_windows", 457 "xds_end2end_test", 458 ], # TODO(jtattermusch): fix test on windows 459 deps = [ 460 ":xds_end2end_test_lib", 461 "//:gpr", 462 "//:grpc", 463 "//:grpc++", 464 "//src/proto/grpc/testing/xds/v3:stateful_session_cookie_proto", 465 "//src/proto/grpc/testing/xds/v3:stateful_session_proto", 466 "//test/core/util:grpc_test_util", 467 "//test/core/util:scoped_env_var", 468 ], 469) 470 471grpc_cc_test( 472 name = "xds_pick_first_end2end_test", 473 size = "large", 474 srcs = ["xds_pick_first_end2end_test.cc"], 475 external_deps = [ 476 "gtest", 477 ], 478 linkstatic = True, # Fixes dyld error on MacOS 479 tags = [ 480 "no_test_ios", 481 "no_windows", 482 "xds_end2end_test", 483 ], # TODO(jtattermusch): fix test on windows 484 deps = [ 485 ":xds_end2end_test_lib", 486 "//:gpr", 487 "//:grpc", 488 "//:grpc++", 489 "//src/proto/grpc/testing/xds/v3:aggregate_cluster_proto", 490 "//src/proto/grpc/testing/xds/v3:pick_first_proto", 491 "//src/proto/grpc/testing/xds/v3:router_proto", 492 "//test/core/util:grpc_test_util", 493 "//test/core/util:scoped_env_var", 494 "//test/cpp/end2end:connection_attempt_injector", 495 ], 496) 497 498grpc_cc_test( 499 name = "xds_fallback_end2end_test", 500 srcs = ["xds_fallback_end2end_test.cc"], 501 external_deps = [ 502 "gtest", 503 ], 504 linkstatic = True, # Fixes dyld error on MacOS 505 tags = [ 506 "no_test_ios", 507 "no_windows", 508 "xds_end2end_test", 509 ], # TODO(jtattermusch): fix test on windows 510 deps = [ 511 ":xds_end2end_test_lib", 512 "//:gpr", 513 "//:grpc", 514 "//:grpc++", 515 "//test/core/util:scoped_env_var", 516 ], 517) 518