1# Copyright 2016 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", "grpc_proto_library") 16load("grpc_core_end2end_test.bzl", "grpc_core_end2end_test") 17 18licenses(["notice"]) 19 20grpc_package(name = "test/core/end2end") 21 22grpc_cc_library( 23 name = "cq_verifier", 24 testonly = 1, 25 srcs = ["cq_verifier.cc"], 26 hdrs = ["cq_verifier.h"], 27 external_deps = [ 28 "absl/container:flat_hash_map", 29 "absl/functional:any_invocable", 30 "absl/strings", 31 "absl/strings:str_format", 32 "absl/types:variant", 33 "gtest", 34 ], 35 language = "C++", 36 visibility = ["//:__subpackages__"], 37 deps = [ 38 "//:debug_location", 39 "//:gpr", 40 "//:grpc", 41 "//src/core:match", 42 "//src/core:time", 43 "//test/core/util:grpc_test_util", 44 ], 45) 46 47grpc_cc_library( 48 name = "ssl_test_data", 49 srcs = [ 50 "data/client_certs.cc", 51 "data/server1_cert.cc", 52 "data/server1_key.cc", 53 "data/test_root_cert.cc", 54 ], 55 hdrs = ["data/ssl_test_data.h"], 56 language = "C++", 57 visibility = ["//:__subpackages__"], 58) 59 60grpc_cc_library( 61 name = "http_proxy", 62 srcs = ["fixtures/http_proxy_fixture.cc"], 63 hdrs = ["fixtures/http_proxy_fixture.h"], 64 external_deps = [ 65 "absl/status", 66 "absl/status:statusor", 67 "absl/strings", 68 ], 69 language = "C++", 70 deps = [ 71 "//:config", 72 "//:exec_ctx", 73 "//:gpr", 74 "//:grpc", 75 "//:httpcli", 76 "//:sockaddr_utils", 77 "//src/core:channel_args", 78 "//src/core:channel_args_endpoint_config", 79 "//src/core:channel_args_preconditioning", 80 "//src/core:closure", 81 "//src/core:default_event_engine", 82 "//src/core:error", 83 "//src/core:iomgr_fwd", 84 "//src/core:pollset_set", 85 "//src/core:resolved_address", 86 "//src/core:slice_refcount", 87 "//src/core:status_helper", 88 "//src/core:time", 89 "//test/core/util:grpc_test_util", 90 ], 91) 92 93grpc_cc_library( 94 name = "proxy", 95 srcs = ["fixtures/proxy.cc"], 96 hdrs = ["fixtures/proxy.h"], 97 language = "C++", 98 deps = [ 99 "//:channel_arg_names", 100 "//:gpr", 101 "//:grpc", 102 "//:grpc_public_hdrs", 103 "//src/core:channel_args", 104 "//test/core/util:grpc_test_util", 105 ], 106) 107 108grpc_cc_library( 109 name = "end2end_test_lib", 110 testonly = 1, 111 srcs = [ 112 "end2end_tests.cc", 113 ], 114 hdrs = [ 115 "end2end_tests.h", 116 ], 117 external_deps = [ 118 "absl/functional:any_invocable", 119 "absl/memory", 120 "absl/meta:type_traits", 121 "absl/random", 122 "absl/strings", 123 "absl/types:optional", 124 "absl/types:variant", 125 "gtest", 126 ], 127 deps = [ 128 "cq_verifier", 129 "//:config", 130 "//:debug_location", 131 "//:gpr", 132 "//:grpc", 133 "//:grpc_public_hdrs", 134 "//src/core:bitset", 135 "//src/core:channel_args", 136 "//src/core:default_event_engine", 137 "//src/core:no_destruct", 138 "//src/core:slice", 139 "//src/core:time", 140 "//test/core/event_engine:event_engine_test_utils", 141 "//test/core/util:grpc_test_util", 142 ], 143) 144 145grpc_cc_library( 146 name = "fixture_support", 147 testonly = 1, 148 srcs = ["fixtures/local_util.cc"], 149 hdrs = [ 150 "fixtures/h2_oauth2_common.h", 151 "fixtures/h2_ssl_cred_reload_fixture.h", 152 "fixtures/h2_ssl_tls_common.h", 153 "fixtures/h2_tls_common.h", 154 "fixtures/inproc_fixture.h", 155 "fixtures/local_util.h", 156 "fixtures/secure_fixture.h", 157 "fixtures/sockpair_fixture.h", 158 "tests/cancel_test_helpers.h", 159 ], 160 external_deps = [ 161 "absl/functional:any_invocable", 162 "absl/status", 163 "absl/status:statusor", 164 "absl/strings", 165 "gtest", 166 ], 167 language = "C++", 168 deps = [ 169 "end2end_test_lib", 170 "//:channel_arg_names", 171 "//:config", 172 "//:exec_ctx", 173 "//:gpr", 174 "//:grpc", 175 "//:grpc_public_hdrs", 176 "//:grpc_security_base", 177 "//:grpc_transport_chttp2", 178 "//:ref_counted_ptr", 179 "//src/core:channel_args", 180 "//src/core:channel_args_preconditioning", 181 "//src/core:channel_stack_type", 182 "//src/core:error", 183 "//src/core:grpc_ssl_credentials", 184 "//src/core:grpc_tls_credentials", 185 "//src/core:grpc_transport_inproc", 186 "//src/core:slice", 187 "//test/core/util:grpc_test_util", 188 ], 189) 190 191grpc_cc_library( 192 name = "end2end_test_suites", 193 testonly = 1, 194 srcs = [ 195 "end2end_test_suites.cc", 196 ], 197 external_deps = [ 198 "absl/base:core_headers", 199 "absl/functional:any_invocable", 200 "absl/meta:type_traits", 201 "absl/random", 202 "absl/status", 203 "absl/strings:str_format", 204 "absl/types:optional", 205 "gtest", 206 ], 207 deps = [ 208 "end2end_test_lib", 209 "fixture_support", 210 "http_proxy", 211 "proxy", 212 "//:channel_arg_names", 213 "//:exec_ctx", 214 "//:gpr", 215 "//:grpc", 216 "//:grpc_public_hdrs", 217 "//:grpc_trace", 218 "//src/core:channel_args", 219 "//src/core:chaotic_good_connector", 220 "//src/core:chaotic_good_server", 221 "//src/core:env", 222 "//src/core:error", 223 "//src/core:grpc_fake_credentials", 224 "//src/core:iomgr_port", 225 "//src/core:no_destruct", 226 "//test/core/util:grpc_test_util", 227 ], 228 alwayslink = 1, 229) 230 231grpc_cc_library( 232 name = "end2end_test_main", 233 testonly = 1, 234 srcs = [ 235 "end2end_test_main.cc", 236 ], 237 external_deps = [ 238 "absl/functional:any_invocable", 239 "absl/strings", 240 "absl/types:optional", 241 "gtest", 242 ], 243 tags = ["nofixdeps"], 244 deps = [ 245 "end2end_test_lib", 246 "end2end_test_suites", 247 "fixture_support", 248 "//:config_vars", 249 "//test/core/util:grpc_test_util", 250 ], 251) 252 253grpc_cc_library( 254 name = "end2end_test_fuzzer", 255 testonly = 1, 256 srcs = [ 257 "end2end_test_fuzzer.cc", 258 ], 259 hdrs = [ 260 "end2end_test_fuzzer.h", 261 ], 262 external_deps = [ 263 "absl/functional:any_invocable", 264 "absl/strings", 265 "absl/types:optional", 266 "gtest", 267 ], 268 tags = ["nofixdeps"], 269 deps = [ 270 "end2end_test_fuzzer_proto", 271 "end2end_test_lib", 272 "end2end_test_suites", 273 "fixture_support", 274 "//:config_vars", 275 "//test/core/event_engine/fuzzing_event_engine", 276 "//test/core/util:fuzz_config_vars", 277 "//test/core/util:grpc_test_util", 278 ], 279) 280 281grpc_core_end2end_test(name = "bad_ping") 282 283grpc_core_end2end_test(name = "binary_metadata") 284 285grpc_core_end2end_test(name = "call_creds") 286 287grpc_core_end2end_test(name = "call_host_override") 288 289grpc_core_end2end_test( 290 name = "cancel_after_accept", 291 shard_count = 50, 292) 293 294grpc_core_end2end_test( 295 name = "cancel_after_client_done", 296 shard_count = 50, 297) 298 299grpc_core_end2end_test( 300 name = "cancel_after_invoke", 301 shard_count = 50, 302) 303 304grpc_core_end2end_test( 305 name = "cancel_after_round_trip", 306 shard_count = 50, 307) 308 309grpc_core_end2end_test(name = "cancel_before_invoke") 310 311grpc_core_end2end_test(name = "cancel_in_a_vacuum") 312 313grpc_core_end2end_test(name = "cancel_with_status") 314 315grpc_core_end2end_test(name = "channelz") 316 317grpc_core_end2end_test(name = "client_streaming") 318 319grpc_core_end2end_test( 320 name = "compressed_payload", 321 tags = ["compression_test"], 322) 323 324grpc_core_end2end_test(name = "connectivity") 325 326grpc_core_end2end_test(name = "default_host") 327 328grpc_core_end2end_test(name = "disappearing_server") 329 330grpc_core_end2end_test(name = "empty_batch") 331 332grpc_core_end2end_test(name = "filter_causes_close") 333 334grpc_core_end2end_test(name = "filter_context") 335 336grpc_core_end2end_test(name = "filter_init_fails") 337 338grpc_core_end2end_test(name = "filtered_metadata") 339 340grpc_core_end2end_test(name = "graceful_server_shutdown") 341 342grpc_core_end2end_test(name = "grpc_authz") 343 344grpc_core_end2end_test( 345 name = "high_initial_seqno", 346 shard_count = 20, 347) 348 349grpc_core_end2end_test( 350 name = "hpack_size", 351 shard_count = 50, 352) 353 354grpc_core_end2end_test(name = "http2_stats") 355 356grpc_core_end2end_test(name = "invoke_large_request") 357 358grpc_core_end2end_test(name = "keepalive_timeout") 359 360grpc_core_end2end_test( 361 name = "large_metadata", 362 shard_count = 50, 363) 364 365grpc_core_end2end_test(name = "max_concurrent_streams") 366 367grpc_core_end2end_test(name = "max_connection_age") 368 369grpc_core_end2end_test(name = "max_connection_idle") 370 371grpc_core_end2end_test(name = "max_message_length") 372 373grpc_core_end2end_test(name = "negative_deadline") 374 375grpc_core_end2end_test(name = "no_logging") 376 377grpc_core_end2end_test(name = "no_op") 378 379grpc_core_end2end_test(name = "payload") 380 381grpc_core_end2end_test(name = "ping") 382 383grpc_core_end2end_test(name = "ping_pong_streaming") 384 385grpc_core_end2end_test(name = "proxy_auth") 386 387grpc_core_end2end_test(name = "registered_call") 388 389grpc_core_end2end_test( 390 name = "request_with_flags", 391 shard_count = 50, 392) 393 394grpc_core_end2end_test(name = "request_with_payload") 395 396grpc_core_end2end_test(name = "resource_quota_server") 397 398grpc_core_end2end_test(name = "retry") 399 400grpc_core_end2end_test(name = "retry_cancel_after_first_attempt_starts") 401 402grpc_core_end2end_test(name = "retry_cancel_during_delay") 403 404grpc_core_end2end_test(name = "retry_cancel_with_multiple_send_batches") 405 406grpc_core_end2end_test(name = "retry_cancellation") 407 408grpc_core_end2end_test(name = "retry_disabled") 409 410grpc_core_end2end_test(name = "retry_exceeds_buffer_size_in_delay") 411 412grpc_core_end2end_test(name = "retry_exceeds_buffer_size_in_initial_batch") 413 414grpc_core_end2end_test(name = "retry_exceeds_buffer_size_in_subsequent_batch") 415 416grpc_core_end2end_test(name = "retry_lb_drop") 417 418grpc_core_end2end_test(name = "retry_lb_fail") 419 420grpc_core_end2end_test(name = "retry_non_retriable_status") 421 422grpc_core_end2end_test(name = "retry_non_retriable_status_before_trailers") 423 424grpc_core_end2end_test(name = "retry_per_attempt_recv_timeout") 425 426grpc_core_end2end_test(name = "retry_per_attempt_recv_timeout_on_last_attempt") 427 428grpc_core_end2end_test(name = "retry_recv_initial_metadata") 429 430grpc_core_end2end_test(name = "retry_recv_message") 431 432grpc_core_end2end_test(name = "retry_recv_message_replay") 433 434grpc_core_end2end_test(name = "retry_recv_trailing_metadata_error") 435 436grpc_core_end2end_test(name = "retry_send_initial_metadata_refs") 437 438grpc_core_end2end_test(name = "retry_send_op_fails") 439 440grpc_core_end2end_test(name = "retry_send_recv_batch") 441 442grpc_core_end2end_test(name = "retry_server_pushback_delay") 443 444grpc_core_end2end_test(name = "retry_server_pushback_disabled") 445 446grpc_core_end2end_test(name = "retry_streaming") 447 448grpc_core_end2end_test(name = "retry_streaming_after_commit") 449 450grpc_core_end2end_test(name = "retry_streaming_succeeds_before_replay_finished") 451 452grpc_core_end2end_test(name = "retry_throttled") 453 454grpc_core_end2end_test(name = "retry_too_many_attempts") 455 456grpc_core_end2end_test(name = "retry_transparent_goaway") 457 458grpc_core_end2end_test(name = "retry_transparent_max_concurrent_streams") 459 460grpc_core_end2end_test(name = "retry_transparent_not_sent_on_wire") 461 462grpc_core_end2end_test(name = "retry_unref_before_finish") 463 464grpc_core_end2end_test(name = "retry_unref_before_recv") 465 466grpc_core_end2end_test(name = "server_finishes_request") 467 468grpc_core_end2end_test(name = "server_streaming") 469 470grpc_core_end2end_test(name = "shutdown_finishes_calls") 471 472grpc_core_end2end_test(name = "shutdown_finishes_tags") 473 474grpc_core_end2end_test( 475 name = "simple_delayed_request", 476 shard_count = 3, 477) 478 479grpc_core_end2end_test(name = "simple_metadata") 480 481grpc_core_end2end_test(name = "simple_request") 482 483grpc_core_end2end_test(name = "streaming_error_response") 484 485grpc_core_end2end_test(name = "timeout_before_request_call") 486 487grpc_core_end2end_test(name = "trailing_metadata") 488 489grpc_core_end2end_test(name = "write_buffering") 490 491grpc_core_end2end_test(name = "write_buffering_at_end") 492 493grpc_cc_test( 494 name = "bad_server_response_test", 495 srcs = ["bad_server_response_test.cc"], 496 language = "C++", 497 deps = [ 498 "cq_verifier", 499 "//:exec_ctx", 500 "//:gpr", 501 "//:grpc", 502 "//:grpc_public_hdrs", 503 "//src/core:closure", 504 "//src/core:error", 505 "//src/core:event_engine_shim", 506 "//src/core:gpr_atm", 507 "//src/core:iomgr_fwd", 508 "//src/core:notification", 509 "//src/core:slice", 510 "//src/core:status_helper", 511 "//test/core/util:grpc_test_util", 512 ], 513) 514 515grpc_cc_test( 516 name = "connection_refused_test", 517 srcs = ["connection_refused_test.cc"], 518 language = "C++", 519 deps = [ 520 "cq_verifier", 521 "//:channel_arg_names", 522 "//:exec_ctx", 523 "//:gpr", 524 "//:grpc_public_hdrs", 525 "//src/core:channel_args", 526 "//test/core/util:grpc_test_util", 527 ], 528) 529 530grpc_cc_test( 531 name = "dualstack_socket_test", 532 srcs = ["dualstack_socket_test.cc"], 533 external_deps = [ 534 "absl/status:statusor", 535 "absl/strings", 536 "absl/strings:str_format", 537 ], 538 language = "C++", 539 tags = ["no_windows"], 540 deps = [ 541 "cq_verifier", 542 "//:gpr", 543 "//:grpc", 544 "//:grpc_public_hdrs", 545 "//:sockaddr_utils", 546 "//src/core:error", 547 "//src/core:iomgr_port", 548 "//src/core:resolved_address", 549 "//test/core/util:grpc_test_util", 550 ], 551) 552 553grpc_cc_test( 554 name = "goaway_server_test", 555 srcs = ["goaway_server_test.cc"], 556 external_deps = [ 557 "absl/status", 558 "absl/status:statusor", 559 "absl/strings", 560 ], 561 language = "C++", 562 deps = [ 563 "cq_verifier", 564 "//:channel_arg_names", 565 "//:debug_location", 566 "//:endpoint_addresses", 567 "//:exec_ctx", 568 "//:gpr", 569 "//:grpc", 570 "//:grpc_public_hdrs", 571 "//:grpc_resolver_dns_ares", 572 "//src/core:channel_args", 573 "//src/core:closure", 574 "//src/core:default_event_engine", 575 "//src/core:error", 576 "//src/core:experiments", 577 "//src/core:grpc_sockaddr", 578 "//src/core:iomgr_fwd", 579 "//src/core:resolved_address", 580 "//src/core:time", 581 "//test/core/util:grpc_test_util", 582 ], 583) 584 585grpc_cc_test( 586 name = "invalid_call_argument_test", 587 srcs = ["invalid_call_argument_test.cc"], 588 language = "C++", 589 deps = [ 590 "cq_verifier", 591 "//:gpr", 592 "//:gpr_platform", 593 "//:grpc_public_hdrs", 594 "//test/core/util:grpc_test_util", 595 ], 596) 597 598grpc_cc_test( 599 name = "multiple_server_queues_test", 600 srcs = ["multiple_server_queues_test.cc"], 601 language = "C++", 602 deps = [ 603 "//:event_engine_base_hdrs", 604 "//:gpr", 605 "//test/core/util:grpc_test_util", 606 ], 607) 608 609grpc_cc_test( 610 name = "no_server_test", 611 srcs = ["no_server_test.cc"], 612 external_deps = [ 613 "absl/status", 614 "absl/status:statusor", 615 "absl/time", 616 ], 617 language = "C++", 618 deps = [ 619 "cq_verifier", 620 "//:endpoint_addresses", 621 "//:exec_ctx", 622 "//:gpr", 623 "//:grpc_public_hdrs", 624 "//:grpc_resolver", 625 "//:grpc_resolver_fake", 626 "//:ref_counted_ptr", 627 "//src/core:channel_args", 628 "//src/core:grpc_service_config", 629 "//test/core/util:grpc_test_util", 630 ], 631) 632 633grpc_cc_test( 634 name = "h2_ssl_cert_test", 635 srcs = [ 636 "end2end_tests.h", 637 "h2_ssl_cert_test.cc", 638 ], 639 external_deps = [ 640 "absl/functional:any_invocable", 641 "absl/memory", 642 "absl/meta:type_traits", 643 "absl/strings", 644 "absl/types:optional", 645 "absl/types:variant", 646 "gtest", 647 ], 648 language = "C++", 649 shard_count = 10, 650 deps = [ 651 "cq_verifier", 652 "end2end_test_lib", 653 "fixture_support", 654 "ssl_test_data", 655 "//:channel_arg_names", 656 "//:config_vars", 657 "//:debug_location", 658 "//:gpr", 659 "//:grpc", 660 "//:grpc_public_hdrs", 661 "//:grpc_security_base", 662 "//src/core:bitset", 663 "//src/core:channel_args", 664 "//src/core:slice", 665 "//src/core:time", 666 "//test/core/event_engine:event_engine_test_utils", 667 "//test/core/util:grpc_test_util", 668 ], 669) 670 671grpc_cc_test( 672 name = "h2_ssl_session_reuse_test", 673 srcs = ["h2_ssl_session_reuse_test.cc"], 674 data = [ 675 "//src/core/tsi/test_creds:ca.pem", 676 "//src/core/tsi/test_creds:client.key", 677 "//src/core/tsi/test_creds:client.pem", 678 "//src/core/tsi/test_creds:server1.key", 679 "//src/core/tsi/test_creds:server1.pem", 680 ], 681 external_deps = [ 682 "absl/types:optional", 683 "gtest", 684 ], 685 language = "C++", 686 deps = [ 687 "cq_verifier", 688 "//:channel_arg_names", 689 "//:config_vars", 690 "//:exec_ctx", 691 "//:gpr", 692 "//:grpc", 693 "//:grpc_public_hdrs", 694 "//src/core:channel_args", 695 "//src/core:error", 696 "//src/core:useful", 697 "//test/core/util:grpc_test_util", 698 ], 699) 700 701grpc_cc_test( 702 name = "h2_tls_peer_property_external_verifier_test", 703 srcs = ["h2_tls_peer_property_external_verifier_test.cc"], 704 data = [ 705 "//src/core/tsi/test_creds:ca.pem", 706 "//src/core/tsi/test_creds:client.key", 707 "//src/core/tsi/test_creds:client.pem", 708 "//src/core/tsi/test_creds:server1.key", 709 "//src/core/tsi/test_creds:server1.pem", 710 ], 711 external_deps = [ 712 "absl/types:optional", 713 "gtest", 714 ], 715 language = "C++", 716 deps = [ 717 "cq_verifier", 718 "//:channel_arg_names", 719 "//:config_vars", 720 "//:exec_ctx", 721 "//:gpr", 722 "//:grpc", 723 "//:grpc_public_hdrs", 724 "//src/core:channel_args", 725 "//src/core:error", 726 "//src/core:useful", 727 "//test/core/util:grpc_test_util", 728 ], 729) 730 731grpc_proto_library( 732 name = "end2end_test_fuzzer_proto", 733 srcs = ["end2end_test_fuzzer.proto"], 734 has_services = False, 735 deps = [ 736 "//test/core/event_engine/fuzzing_event_engine:fuzzing_event_engine_proto", 737 "//test/core/util:fuzz_config_vars_proto", 738 ], 739) 740