# Copyright 2016 gRPC authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. load("//bazel:grpc_build_system.bzl", "grpc_cc_binary", "grpc_cc_library", "grpc_cc_test", "grpc_package", "grpc_proto_library") load("//test/core/util:grpc_fuzzer.bzl", "grpc_proto_fuzzer") licenses(["notice"]) grpc_package(name = "test/core/end2end") grpc_cc_library( name = "cq_verifier", testonly = 1, srcs = ["cq_verifier.cc"], hdrs = ["cq_verifier.h"], external_deps = [ "absl/functional:any_invocable", "absl/strings", "absl/strings:str_format", "absl/types:variant", "gtest", ], language = "C++", visibility = ["//:__subpackages__"], deps = [ "//:debug_location", "//:gpr", "//:grpc", "//src/core:match", "//src/core:time", "//test/core/util:grpc_test_util", ], ) grpc_cc_library( name = "ssl_test_data", srcs = [ "data/client_certs.cc", "data/server1_cert.cc", "data/server1_key.cc", "data/test_root_cert.cc", ], hdrs = ["data/ssl_test_data.h"], language = "C++", visibility = ["//:__subpackages__"], ) grpc_cc_library( name = "http_proxy", srcs = ["fixtures/http_proxy_fixture.cc"], hdrs = ["fixtures/http_proxy_fixture.h"], external_deps = [ "absl/status", "absl/status:statusor", "absl/strings", ], language = "C++", deps = [ "//:config", "//:exec_ctx", "//:gpr", "//:grpc", "//:httpcli", "//:sockaddr_utils", "//src/core:channel_args", "//src/core:channel_args_endpoint_config", "//src/core:channel_args_preconditioning", "//src/core:closure", "//src/core:error", "//src/core:iomgr_fwd", "//src/core:pollset_set", "//src/core:resolved_address", "//src/core:slice_refcount", "//src/core:status_helper", "//src/core:time", "//test/core/util:grpc_test_util", ], ) grpc_cc_library( name = "proxy", srcs = ["fixtures/proxy.cc"], hdrs = ["fixtures/proxy.h"], language = "C++", deps = [ "//:gpr", "//:grpc", "//:grpc_public_hdrs", "//src/core:channel_args", "//test/core/util:grpc_test_util", ], ) grpc_cc_library( name = "end2end_test_lib", testonly = 1, srcs = [ "end2end_tests.cc", ], hdrs = [ "end2end_tests.h", ], external_deps = [ "absl/functional:any_invocable", "absl/memory", "absl/meta:type_traits", "absl/random", "absl/strings", "absl/types:optional", "absl/types:variant", "gtest", ], deps = [ "cq_verifier", "//:config", "//:debug_location", "//:gpr", "//:grpc", "//:grpc_public_hdrs", "//src/core:bitset", "//src/core:channel_args", "//src/core:default_event_engine", "//src/core:no_destruct", "//src/core:slice", "//src/core:time", "//test/core/event_engine:event_engine_test_utils", "//test/core/util:grpc_test_util", ], ) grpc_cc_library( name = "fixture_support", testonly = 1, srcs = ["fixtures/local_util.cc"], hdrs = [ "fixtures/h2_oauth2_common.h", "fixtures/h2_ssl_cred_reload_fixture.h", "fixtures/h2_ssl_tls_common.h", "fixtures/h2_tls_common.h", "fixtures/inproc_fixture.h", "fixtures/local_util.h", "fixtures/secure_fixture.h", "fixtures/sockpair_fixture.h", "tests/cancel_test_helpers.h", ], external_deps = [ "absl/status", "absl/status:statusor", "absl/strings", "gtest", ], language = "C++", deps = [ "end2end_test_lib", "//:config", "//:exec_ctx", "//:gpr", "//:grpc", "//:grpc_public_hdrs", "//:grpc_security_base", "//:grpc_transport_chttp2", "//:ref_counted_ptr", "//src/core:channel_args", "//src/core:channel_args_preconditioning", "//src/core:channel_stack_type", "//src/core:error", "//src/core:grpc_ssl_credentials", "//src/core:grpc_tls_credentials", "//src/core:grpc_transport_inproc", "//src/core:slice", "//src/core:transport_fwd", "//test/core/util:grpc_test_util", ], ) END2END_TEST_SRCS = [ "end2end_test_suites.cc", "tests/bad_ping.cc", "tests/binary_metadata.cc", "tests/call_creds.cc", "tests/call_host_override.cc", "tests/cancel_after_accept.cc", "tests/cancel_after_client_done.cc", "tests/cancel_after_invoke.cc", "tests/cancel_after_round_trip.cc", "tests/cancel_before_invoke.cc", "tests/cancel_in_a_vacuum.cc", "tests/cancel_with_status.cc", "tests/channelz.cc", "tests/client_streaming.cc", "tests/compressed_payload.cc", "tests/connectivity.cc", "tests/default_host.cc", "tests/disappearing_server.cc", "tests/empty_batch.cc", "tests/filter_causes_close.cc", "tests/filter_context.cc", "tests/filter_init_fails.cc", "tests/filtered_metadata.cc", "tests/graceful_server_shutdown.cc", "tests/grpc_authz.cc", "tests/high_initial_seqno.cc", "tests/hpack_size.cc", "tests/invoke_large_request.cc", "tests/keepalive_timeout.cc", "tests/large_metadata.cc", "tests/max_concurrent_streams.cc", "tests/max_connection_age.cc", "tests/max_connection_idle.cc", "tests/max_message_length.cc", "tests/negative_deadline.cc", "tests/no_logging.cc", "tests/no_op.cc", "tests/payload.cc", "tests/ping.cc", "tests/ping_pong_streaming.cc", "tests/proxy_auth.cc", "tests/registered_call.cc", "tests/request_with_flags.cc", "tests/request_with_payload.cc", "tests/resource_quota_server.cc", "tests/retry.cc", "tests/retry_cancel_after_first_attempt_starts.cc", "tests/retry_cancel_during_delay.cc", "tests/retry_cancel_with_multiple_send_batches.cc", "tests/retry_cancellation.cc", "tests/retry_disabled.cc", "tests/retry_exceeds_buffer_size_in_delay.cc", "tests/retry_exceeds_buffer_size_in_initial_batch.cc", "tests/retry_exceeds_buffer_size_in_subsequent_batch.cc", "tests/retry_lb_drop.cc", "tests/retry_lb_fail.cc", "tests/retry_non_retriable_status.cc", "tests/retry_non_retriable_status_before_recv_trailing_metadata_started.cc", "tests/retry_per_attempt_recv_timeout.cc", "tests/retry_per_attempt_recv_timeout_on_last_attempt.cc", "tests/retry_recv_initial_metadata.cc", "tests/retry_recv_message.cc", "tests/retry_recv_message_replay.cc", "tests/retry_recv_trailing_metadata_error.cc", "tests/retry_send_initial_metadata_refs.cc", "tests/retry_send_op_fails.cc", "tests/retry_send_recv_batch.cc", "tests/retry_server_pushback_delay.cc", "tests/retry_server_pushback_disabled.cc", "tests/retry_streaming.cc", "tests/retry_streaming_after_commit.cc", "tests/retry_streaming_succeeds_before_replay_finished.cc", "tests/retry_throttled.cc", "tests/retry_too_many_attempts.cc", "tests/retry_transparent_goaway.cc", "tests/retry_transparent_max_concurrent_streams.cc", "tests/retry_transparent_not_sent_on_wire.cc", "tests/retry_unref_before_finish.cc", "tests/retry_unref_before_recv.cc", "tests/server_finishes_request.cc", "tests/server_streaming.cc", "tests/shutdown_finishes_calls.cc", "tests/shutdown_finishes_tags.cc", "tests/simple_delayed_request.cc", "tests/simple_metadata.cc", "tests/simple_request.cc", "tests/streaming_error_response.cc", "tests/trailing_metadata.cc", "tests/write_buffering.cc", "tests/write_buffering_at_end.cc", ] END2END_TEST_DATA = [ "//src/core/tsi/test_creds:ca.pem", "//src/core/tsi/test_creds:server1.key", "//src/core/tsi/test_creds:server1.pem", ] grpc_cc_test( name = "core_end2end_tests", timeout = "long", srcs = [ "end2end_test_main.cc", ] + END2END_TEST_SRCS, data = END2END_TEST_DATA, external_deps = [ "absl/functional:any_invocable", "absl/status", "absl/status:statusor", "absl/strings", "absl/strings:str_format", "absl/types:optional", "gtest", ], shard_count = 50, tags = ["core_end2end_test"], deps = [ "cq_verifier", "end2end_test_lib", "fixture_support", "http_proxy", "proxy", "//:channel_stack_builder", "//:config", "//:config_vars", "//:debug_location", "//:exec_ctx", "//:gpr", "//:grpc_authorization_provider", "//:grpc_public_hdrs", "//:grpc_security_base", "//:grpc_trace", "//:grpc_unsecure", "//:legacy_context", "//:orphanable", "//:promise", "//:ref_counted_ptr", "//:stats", "//src/core:arena_promise", "//src/core:bitset", "//src/core:channel_args", "//src/core:channel_fwd", "//src/core:channel_init", "//src/core:channel_stack_type", "//src/core:closure", "//src/core:error", "//src/core:experiments", "//src/core:grpc_authorization_base", "//src/core:grpc_fake_credentials", "//src/core:iomgr_port", "//src/core:json", "//src/core:lb_policy", "//src/core:lb_policy_factory", "//src/core:no_destruct", "//src/core:notification", "//src/core:slice", "//src/core:stats_data", "//src/core:status_helper", "//src/core:time", "//test/core/util:grpc_test_util", "//test/core/util:test_lb_policies", ], ) grpc_cc_test( name = "bad_server_response_test", srcs = ["bad_server_response_test.cc"], language = "C++", deps = [ "cq_verifier", "//:exec_ctx", "//:gpr", "//:grpc", "//:grpc_public_hdrs", "//src/core:closure", "//src/core:error", "//src/core:gpr_atm", "//src/core:iomgr_fwd", "//src/core:slice", "//src/core:status_helper", "//test/core/util:grpc_test_util", ], ) grpc_cc_test( name = "connection_refused_test", srcs = ["connection_refused_test.cc"], language = "C++", deps = [ "cq_verifier", "//:exec_ctx", "//:gpr", "//:grpc_public_hdrs", "//src/core:channel_args", "//test/core/util:grpc_test_util", ], ) grpc_cc_test( name = "dualstack_socket_test", srcs = ["dualstack_socket_test.cc"], external_deps = [ "absl/status:statusor", "absl/strings", "absl/strings:str_format", ], language = "C++", tags = ["no_windows"], deps = [ "cq_verifier", "//:gpr", "//:grpc", "//:grpc_public_hdrs", "//:sockaddr_utils", "//src/core:error", "//src/core:iomgr_port", "//src/core:resolved_address", "//test/core/util:grpc_test_util", ], ) grpc_cc_test( name = "goaway_server_test", srcs = ["goaway_server_test.cc"], external_deps = [ "absl/status", "absl/status:statusor", "absl/strings", ], language = "C++", deps = [ "cq_verifier", "//:debug_location", "//:exec_ctx", "//:gpr", "//:grpc", "//:grpc_public_hdrs", "//:grpc_resolver_dns_ares", "//:server_address", "//src/core:channel_args", "//src/core:closure", "//src/core:default_event_engine", "//src/core:error", "//src/core:grpc_sockaddr", "//src/core:iomgr_fwd", "//src/core:resolved_address", "//src/core:time", "//test/core/util:grpc_test_util", ], ) grpc_cc_test( name = "invalid_call_argument_test", srcs = ["invalid_call_argument_test.cc"], language = "C++", deps = [ "cq_verifier", "//:gpr", "//:gpr_platform", "//:grpc_public_hdrs", "//test/core/util:grpc_test_util", ], ) grpc_cc_test( name = "multiple_server_queues_test", srcs = ["multiple_server_queues_test.cc"], language = "C++", deps = [ "//:event_engine_base_hdrs", "//:gpr", "//test/core/util:grpc_test_util", ], ) grpc_cc_test( name = "no_server_test", srcs = ["no_server_test.cc"], language = "C++", deps = [ "cq_verifier", "//:exec_ctx", "//:gpr", "//:grpc_public_hdrs", "//:grpc_resolver_fake", "//:ref_counted_ptr", "//test/core/util:grpc_test_util", ], ) grpc_cc_test( name = "h2_ssl_cert_test", srcs = [ "end2end_tests.h", "h2_ssl_cert_test.cc", ], external_deps = [ "absl/functional:any_invocable", "absl/memory", "absl/meta:type_traits", "absl/strings", "absl/types:optional", "absl/types:variant", "gtest", "libcrypto", ], language = "C++", deps = [ "cq_verifier", "end2end_test_lib", "fixture_support", "ssl_test_data", "//:config_vars", "//:debug_location", "//:gpr", "//:grpc", "//:grpc_public_hdrs", "//:grpc_security_base", "//src/core:bitset", "//src/core:channel_args", "//src/core:slice", "//src/core:time", "//test/core/event_engine:event_engine_test_utils", "//test/core/util:grpc_test_util", ], ) grpc_cc_test( name = "h2_ssl_session_reuse_test", srcs = ["h2_ssl_session_reuse_test.cc"], data = [ "//src/core/tsi/test_creds:ca.pem", "//src/core/tsi/test_creds:client.key", "//src/core/tsi/test_creds:client.pem", "//src/core/tsi/test_creds:server1.key", "//src/core/tsi/test_creds:server1.pem", ], external_deps = [ "absl/types:optional", "gtest", ], language = "C++", deps = [ "cq_verifier", "//:config_vars", "//:exec_ctx", "//:gpr", "//:grpc", "//:grpc_public_hdrs", "//src/core:channel_args", "//src/core:error", "//src/core:useful", "//test/core/util:grpc_test_util", ], ) grpc_cc_test( name = "h2_tls_peer_property_external_verifier_test", srcs = ["h2_tls_peer_property_external_verifier_test.cc"], data = [ "//src/core/tsi/test_creds:ca.pem", "//src/core/tsi/test_creds:client.key", "//src/core/tsi/test_creds:client.pem", "//src/core/tsi/test_creds:server1.key", "//src/core/tsi/test_creds:server1.pem", ], external_deps = [ "absl/types:optional", "gtest", ], language = "C++", deps = [ "cq_verifier", "//:config_vars", "//:exec_ctx", "//:gpr", "//:grpc", "//:grpc_public_hdrs", "//src/core:channel_args", "//src/core:error", "//src/core:useful", "//test/core/util:grpc_test_util", ], ) grpc_cc_binary( name = "seed_end2end_corpus", testonly = 1, srcs = ["seed_end2end_corpus.cc"] + END2END_TEST_SRCS, external_deps = [ "absl/cleanup", "absl/status", "absl/status:statusor", "absl/strings", "absl/strings:str_format", "absl/types:optional", "gtest", ], deps = [ "cq_verifier", "end2end_test_lib", "fixture_support", "http_proxy", "proxy", "//:channel_stack_builder", "//:config", "//:config_vars", "//:debug_location", "//:exec_ctx", "//:gpr", "//:grpc_authorization_provider", "//:grpc_public_hdrs", "//:grpc_security_base", "//:grpc_trace", "//:grpc_unsecure", "//:legacy_context", "//:orphanable", "//:promise", "//:ref_counted_ptr", "//:stats", "//src/core:arena_promise", "//src/core:bitset", "//src/core:channel_args", "//src/core:channel_fwd", "//src/core:channel_init", "//src/core:channel_stack_type", "//src/core:closure", "//src/core:error", "//src/core:experiments", "//src/core:grpc_authorization_base", "//src/core:grpc_fake_credentials", "//src/core:iomgr_port", "//src/core:json", "//src/core:lb_policy", "//src/core:lb_policy_factory", "//src/core:no_destruct", "//src/core:notification", "//src/core:slice", "//src/core:stats_data", "//src/core:status_helper", "//src/core:time", "//test/core/util:grpc_test_util", "//test/core/util:test_lb_policies", ], ) grpc_proto_library( name = "end2end_test_fuzzer_proto", srcs = ["end2end_test_fuzzer.proto"], has_services = False, deps = [ "//test/core/event_engine/fuzzing_event_engine:fuzzing_event_engine_proto", "//test/core/util:fuzz_config_vars_proto", ], ) grpc_proto_fuzzer( name = "core_end2end_test_fuzzer", size = "enormous", srcs = ["end2end_test_fuzzer.cc"] + END2END_TEST_SRCS, corpus = "end2end_test_corpus", data = END2END_TEST_DATA, external_deps = [ "absl/functional:any_invocable", "absl/status", "absl/status:statusor", "absl/strings", "absl/strings:str_format", "absl/types:optional", "gtest", ], language = "C++", proto = None, shard_count = 50, tags = [ "no_mac", "no_windows", ], uses_event_engine = False, uses_polling = False, deps = [ "cq_verifier", "end2end_test_fuzzer_proto", "end2end_test_lib", "fixture_support", "http_proxy", "proxy", "//:channel_stack_builder", "//:config", "//:config_vars", "//:debug_location", "//:exec_ctx", "//:gpr", "//:grpc", "//:grpc_authorization_provider", "//:grpc_public_hdrs", "//:grpc_security_base", "//:grpc_trace", "//:iomgr_timer", "//:legacy_context", "//:orphanable", "//:promise", "//:ref_counted_ptr", "//:stats", "//src/core:arena_promise", "//src/core:bitset", "//src/core:channel_args", "//src/core:channel_fwd", "//src/core:channel_init", "//src/core:channel_stack_type", "//src/core:closure", "//src/core:default_event_engine", "//src/core:env", "//src/core:error", "//src/core:experiments", "//src/core:grpc_authorization_base", "//src/core:grpc_fake_credentials", "//src/core:iomgr_port", "//src/core:json", "//src/core:lb_policy", "//src/core:lb_policy_factory", "//src/core:no_destruct", "//src/core:notification", "//src/core:slice", "//src/core:stats_data", "//src/core:status_helper", "//src/core:time", "//test/core/event_engine/fuzzing_event_engine", "//test/core/event_engine/fuzzing_event_engine:fuzzing_event_engine_proto", "//test/core/util:fuzz_config_vars", "//test/core/util:fuzz_config_vars_proto", "//test/core/util:grpc_test_util", "//test/core/util:osa_distance", "//test/core/util:test_lb_policies", ], )