diff options
Diffstat (limited to 'test/core')
56 files changed, 568 insertions, 2 deletions
diff --git a/test/core/end2end/end2end_nosec_tests.c b/test/core/end2end/end2end_nosec_tests.c index deb73395e0..b71299c09e 100644 --- a/test/core/end2end/end2end_nosec_tests.c +++ b/test/core/end2end/end2end_nosec_tests.c @@ -36,51 +36,136 @@ #include "test/core/end2end/end2end_tests.h" +#include <stdbool.h> #include <string.h> #include <grpc/support/log.h> +static bool g_pre_init_called = false; + extern void bad_hostname(grpc_end2end_test_config config); +extern void bad_hostname_pre_init(void); extern void binary_metadata(grpc_end2end_test_config config); +extern void binary_metadata_pre_init(void); extern void cancel_after_accept(grpc_end2end_test_config config); +extern void cancel_after_accept_pre_init(void); extern void cancel_after_client_done(grpc_end2end_test_config config); +extern void cancel_after_client_done_pre_init(void); extern void cancel_after_invoke(grpc_end2end_test_config config); +extern void cancel_after_invoke_pre_init(void); extern void cancel_before_invoke(grpc_end2end_test_config config); +extern void cancel_before_invoke_pre_init(void); extern void cancel_in_a_vacuum(grpc_end2end_test_config config); +extern void cancel_in_a_vacuum_pre_init(void); extern void cancel_with_status(grpc_end2end_test_config config); +extern void cancel_with_status_pre_init(void); extern void compressed_payload(grpc_end2end_test_config config); +extern void compressed_payload_pre_init(void); extern void connectivity(grpc_end2end_test_config config); +extern void connectivity_pre_init(void); extern void default_host(grpc_end2end_test_config config); +extern void default_host_pre_init(void); extern void disappearing_server(grpc_end2end_test_config config); +extern void disappearing_server_pre_init(void); extern void empty_batch(grpc_end2end_test_config config); +extern void empty_batch_pre_init(void); +extern void filter_causes_close(grpc_end2end_test_config config); +extern void filter_causes_close_pre_init(void); extern void graceful_server_shutdown(grpc_end2end_test_config config); +extern void graceful_server_shutdown_pre_init(void); extern void high_initial_seqno(grpc_end2end_test_config config); +extern void high_initial_seqno_pre_init(void); extern void hpack_size(grpc_end2end_test_config config); +extern void hpack_size_pre_init(void); extern void idempotent_request(grpc_end2end_test_config config); +extern void idempotent_request_pre_init(void); extern void invoke_large_request(grpc_end2end_test_config config); +extern void invoke_large_request_pre_init(void); extern void large_metadata(grpc_end2end_test_config config); +extern void large_metadata_pre_init(void); extern void max_concurrent_streams(grpc_end2end_test_config config); +extern void max_concurrent_streams_pre_init(void); extern void max_message_length(grpc_end2end_test_config config); +extern void max_message_length_pre_init(void); extern void negative_deadline(grpc_end2end_test_config config); +extern void negative_deadline_pre_init(void); extern void no_op(grpc_end2end_test_config config); +extern void no_op_pre_init(void); extern void payload(grpc_end2end_test_config config); +extern void payload_pre_init(void); extern void ping(grpc_end2end_test_config config); +extern void ping_pre_init(void); extern void ping_pong_streaming(grpc_end2end_test_config config); +extern void ping_pong_streaming_pre_init(void); extern void registered_call(grpc_end2end_test_config config); +extern void registered_call_pre_init(void); extern void request_with_flags(grpc_end2end_test_config config); +extern void request_with_flags_pre_init(void); extern void request_with_payload(grpc_end2end_test_config config); +extern void request_with_payload_pre_init(void); extern void server_finishes_request(grpc_end2end_test_config config); +extern void server_finishes_request_pre_init(void); extern void shutdown_finishes_calls(grpc_end2end_test_config config); +extern void shutdown_finishes_calls_pre_init(void); extern void shutdown_finishes_tags(grpc_end2end_test_config config); +extern void shutdown_finishes_tags_pre_init(void); extern void simple_delayed_request(grpc_end2end_test_config config); +extern void simple_delayed_request_pre_init(void); extern void simple_metadata(grpc_end2end_test_config config); +extern void simple_metadata_pre_init(void); extern void simple_request(grpc_end2end_test_config config); +extern void simple_request_pre_init(void); extern void trailing_metadata(grpc_end2end_test_config config); +extern void trailing_metadata_pre_init(void); + +void grpc_end2end_tests_pre_init(void) { + GPR_ASSERT(!g_pre_init_called); + g_pre_init_called = true; + bad_hostname_pre_init(); + binary_metadata_pre_init(); + cancel_after_accept_pre_init(); + cancel_after_client_done_pre_init(); + cancel_after_invoke_pre_init(); + cancel_before_invoke_pre_init(); + cancel_in_a_vacuum_pre_init(); + cancel_with_status_pre_init(); + compressed_payload_pre_init(); + connectivity_pre_init(); + default_host_pre_init(); + disappearing_server_pre_init(); + empty_batch_pre_init(); + filter_causes_close_pre_init(); + graceful_server_shutdown_pre_init(); + high_initial_seqno_pre_init(); + hpack_size_pre_init(); + idempotent_request_pre_init(); + invoke_large_request_pre_init(); + large_metadata_pre_init(); + max_concurrent_streams_pre_init(); + max_message_length_pre_init(); + negative_deadline_pre_init(); + no_op_pre_init(); + payload_pre_init(); + ping_pre_init(); + ping_pong_streaming_pre_init(); + registered_call_pre_init(); + request_with_flags_pre_init(); + request_with_payload_pre_init(); + server_finishes_request_pre_init(); + shutdown_finishes_calls_pre_init(); + shutdown_finishes_tags_pre_init(); + simple_delayed_request_pre_init(); + simple_metadata_pre_init(); + simple_request_pre_init(); + trailing_metadata_pre_init(); +} void grpc_end2end_tests(int argc, char **argv, grpc_end2end_test_config config) { int i; + GPR_ASSERT(g_pre_init_called); + if (argc <= 1) { bad_hostname(config); binary_metadata(config); @@ -95,6 +180,7 @@ void grpc_end2end_tests(int argc, char **argv, default_host(config); disappearing_server(config); empty_batch(config); + filter_causes_close(config); graceful_server_shutdown(config); high_initial_seqno(config); hpack_size(config); @@ -174,6 +260,10 @@ void grpc_end2end_tests(int argc, char **argv, empty_batch(config); continue; } + if (0 == strcmp("filter_causes_close", argv[i])) { + filter_causes_close(config); + continue; + } if (0 == strcmp("graceful_server_shutdown", argv[i])) { graceful_server_shutdown(config); continue; diff --git a/test/core/end2end/end2end_tests.c b/test/core/end2end/end2end_tests.c index dd7f6a2a31..00c9c44a78 100644 --- a/test/core/end2end/end2end_tests.c +++ b/test/core/end2end/end2end_tests.c @@ -36,52 +36,139 @@ #include "test/core/end2end/end2end_tests.h" +#include <stdbool.h> #include <string.h> #include <grpc/support/log.h> +static bool g_pre_init_called = false; + extern void bad_hostname(grpc_end2end_test_config config); +extern void bad_hostname_pre_init(void); extern void binary_metadata(grpc_end2end_test_config config); +extern void binary_metadata_pre_init(void); extern void call_creds(grpc_end2end_test_config config); +extern void call_creds_pre_init(void); extern void cancel_after_accept(grpc_end2end_test_config config); +extern void cancel_after_accept_pre_init(void); extern void cancel_after_client_done(grpc_end2end_test_config config); +extern void cancel_after_client_done_pre_init(void); extern void cancel_after_invoke(grpc_end2end_test_config config); +extern void cancel_after_invoke_pre_init(void); extern void cancel_before_invoke(grpc_end2end_test_config config); +extern void cancel_before_invoke_pre_init(void); extern void cancel_in_a_vacuum(grpc_end2end_test_config config); +extern void cancel_in_a_vacuum_pre_init(void); extern void cancel_with_status(grpc_end2end_test_config config); +extern void cancel_with_status_pre_init(void); extern void compressed_payload(grpc_end2end_test_config config); +extern void compressed_payload_pre_init(void); extern void connectivity(grpc_end2end_test_config config); +extern void connectivity_pre_init(void); extern void default_host(grpc_end2end_test_config config); +extern void default_host_pre_init(void); extern void disappearing_server(grpc_end2end_test_config config); +extern void disappearing_server_pre_init(void); extern void empty_batch(grpc_end2end_test_config config); +extern void empty_batch_pre_init(void); +extern void filter_causes_close(grpc_end2end_test_config config); +extern void filter_causes_close_pre_init(void); extern void graceful_server_shutdown(grpc_end2end_test_config config); +extern void graceful_server_shutdown_pre_init(void); extern void high_initial_seqno(grpc_end2end_test_config config); +extern void high_initial_seqno_pre_init(void); extern void hpack_size(grpc_end2end_test_config config); +extern void hpack_size_pre_init(void); extern void idempotent_request(grpc_end2end_test_config config); +extern void idempotent_request_pre_init(void); extern void invoke_large_request(grpc_end2end_test_config config); +extern void invoke_large_request_pre_init(void); extern void large_metadata(grpc_end2end_test_config config); +extern void large_metadata_pre_init(void); extern void max_concurrent_streams(grpc_end2end_test_config config); +extern void max_concurrent_streams_pre_init(void); extern void max_message_length(grpc_end2end_test_config config); +extern void max_message_length_pre_init(void); extern void negative_deadline(grpc_end2end_test_config config); +extern void negative_deadline_pre_init(void); extern void no_op(grpc_end2end_test_config config); +extern void no_op_pre_init(void); extern void payload(grpc_end2end_test_config config); +extern void payload_pre_init(void); extern void ping(grpc_end2end_test_config config); +extern void ping_pre_init(void); extern void ping_pong_streaming(grpc_end2end_test_config config); +extern void ping_pong_streaming_pre_init(void); extern void registered_call(grpc_end2end_test_config config); +extern void registered_call_pre_init(void); extern void request_with_flags(grpc_end2end_test_config config); +extern void request_with_flags_pre_init(void); extern void request_with_payload(grpc_end2end_test_config config); +extern void request_with_payload_pre_init(void); extern void server_finishes_request(grpc_end2end_test_config config); +extern void server_finishes_request_pre_init(void); extern void shutdown_finishes_calls(grpc_end2end_test_config config); +extern void shutdown_finishes_calls_pre_init(void); extern void shutdown_finishes_tags(grpc_end2end_test_config config); +extern void shutdown_finishes_tags_pre_init(void); extern void simple_delayed_request(grpc_end2end_test_config config); +extern void simple_delayed_request_pre_init(void); extern void simple_metadata(grpc_end2end_test_config config); +extern void simple_metadata_pre_init(void); extern void simple_request(grpc_end2end_test_config config); +extern void simple_request_pre_init(void); extern void trailing_metadata(grpc_end2end_test_config config); +extern void trailing_metadata_pre_init(void); + +void grpc_end2end_tests_pre_init(void) { + GPR_ASSERT(!g_pre_init_called); + g_pre_init_called = true; + bad_hostname_pre_init(); + binary_metadata_pre_init(); + call_creds_pre_init(); + cancel_after_accept_pre_init(); + cancel_after_client_done_pre_init(); + cancel_after_invoke_pre_init(); + cancel_before_invoke_pre_init(); + cancel_in_a_vacuum_pre_init(); + cancel_with_status_pre_init(); + compressed_payload_pre_init(); + connectivity_pre_init(); + default_host_pre_init(); + disappearing_server_pre_init(); + empty_batch_pre_init(); + filter_causes_close_pre_init(); + graceful_server_shutdown_pre_init(); + high_initial_seqno_pre_init(); + hpack_size_pre_init(); + idempotent_request_pre_init(); + invoke_large_request_pre_init(); + large_metadata_pre_init(); + max_concurrent_streams_pre_init(); + max_message_length_pre_init(); + negative_deadline_pre_init(); + no_op_pre_init(); + payload_pre_init(); + ping_pre_init(); + ping_pong_streaming_pre_init(); + registered_call_pre_init(); + request_with_flags_pre_init(); + request_with_payload_pre_init(); + server_finishes_request_pre_init(); + shutdown_finishes_calls_pre_init(); + shutdown_finishes_tags_pre_init(); + simple_delayed_request_pre_init(); + simple_metadata_pre_init(); + simple_request_pre_init(); + trailing_metadata_pre_init(); +} void grpc_end2end_tests(int argc, char **argv, grpc_end2end_test_config config) { int i; + GPR_ASSERT(g_pre_init_called); + if (argc <= 1) { bad_hostname(config); binary_metadata(config); @@ -97,6 +184,7 @@ void grpc_end2end_tests(int argc, char **argv, default_host(config); disappearing_server(config); empty_batch(config); + filter_causes_close(config); graceful_server_shutdown(config); high_initial_seqno(config); hpack_size(config); @@ -180,6 +268,10 @@ void grpc_end2end_tests(int argc, char **argv, empty_batch(config); continue; } + if (0 == strcmp("filter_causes_close", argv[i])) { + filter_causes_close(config); + continue; + } if (0 == strcmp("graceful_server_shutdown", argv[i])) { graceful_server_shutdown(config); continue; diff --git a/test/core/end2end/end2end_tests.h b/test/core/end2end/end2end_tests.h index bc44f43a17..dfa041c0c6 100644 --- a/test/core/end2end/end2end_tests.h +++ b/test/core/end2end/end2end_tests.h @@ -64,6 +64,7 @@ struct grpc_end2end_test_config { void (*tear_down_data)(grpc_end2end_test_fixture *f); }; +void grpc_end2end_tests_pre_init(void); void grpc_end2end_tests(int argc, char **argv, grpc_end2end_test_config config); #endif /* GRPC_TEST_CORE_END2END_END2END_TESTS_H */ diff --git a/test/core/end2end/fixtures/h2_census.c b/test/core/end2end/fixtures/h2_census.c index 9d41ff2dbb..9b6f2bf80d 100644 --- a/test/core/end2end/fixtures/h2_census.c +++ b/test/core/end2end/fixtures/h2_census.c @@ -120,6 +120,7 @@ int main(int argc, char **argv) { size_t i; grpc_test_init(argc, argv); + grpc_end2end_tests_pre_init(); grpc_init(); for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) { diff --git a/test/core/end2end/fixtures/h2_compress.c b/test/core/end2end/fixtures/h2_compress.c index 55355b58dd..fe72c6851f 100644 --- a/test/core/end2end/fixtures/h2_compress.c +++ b/test/core/end2end/fixtures/h2_compress.c @@ -124,6 +124,7 @@ int main(int argc, char **argv) { size_t i; grpc_test_init(argc, argv); + grpc_end2end_tests_pre_init(); grpc_init(); for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) { diff --git a/test/core/end2end/fixtures/h2_fakesec.c b/test/core/end2end/fixtures/h2_fakesec.c index a312585946..246619bf68 100644 --- a/test/core/end2end/fixtures/h2_fakesec.c +++ b/test/core/end2end/fixtures/h2_fakesec.c @@ -150,7 +150,7 @@ static grpc_end2end_test_config configs[] = { int main(int argc, char **argv) { size_t i; grpc_test_init(argc, argv); - + grpc_end2end_tests_pre_init(); grpc_init(); for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) { diff --git a/test/core/end2end/fixtures/h2_full+pipe.c b/test/core/end2end/fixtures/h2_full+pipe.c index a3e2196bf6..11e6d0eff2 100644 --- a/test/core/end2end/fixtures/h2_full+pipe.c +++ b/test/core/end2end/fixtures/h2_full+pipe.c @@ -108,6 +108,7 @@ int main(int argc, char **argv) { grpc_allow_specialized_wakeup_fd = 0; grpc_test_init(argc, argv); + grpc_end2end_tests_pre_init(); grpc_init(); for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) { diff --git a/test/core/end2end/fixtures/h2_full+trace.c b/test/core/end2end/fixtures/h2_full+trace.c index 986a06bd01..7599412dfb 100644 --- a/test/core/end2end/fixtures/h2_full+trace.c +++ b/test/core/end2end/fixtures/h2_full+trace.c @@ -116,6 +116,7 @@ int main(int argc, char **argv) { #endif grpc_test_init(argc, argv); + grpc_end2end_tests_pre_init(); grpc_init(); GPR_ASSERT(0 == grpc_tracer_set_enabled("also-doesnt-exist", 0)); diff --git a/test/core/end2end/fixtures/h2_full.c b/test/core/end2end/fixtures/h2_full.c index d0797e0a64..d4ee2aeb9d 100644 --- a/test/core/end2end/fixtures/h2_full.c +++ b/test/core/end2end/fixtures/h2_full.c @@ -105,6 +105,7 @@ int main(int argc, char **argv) { size_t i; grpc_test_init(argc, argv); + grpc_end2end_tests_pre_init(); grpc_init(); for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) { diff --git a/test/core/end2end/fixtures/h2_oauth2.c b/test/core/end2end/fixtures/h2_oauth2.c index 9e7d8d3125..550ff33140 100644 --- a/test/core/end2end/fixtures/h2_oauth2.c +++ b/test/core/end2end/fixtures/h2_oauth2.c @@ -226,7 +226,7 @@ static grpc_end2end_test_config configs[] = { int main(int argc, char **argv) { size_t i; grpc_test_init(argc, argv); - + grpc_end2end_tests_pre_init(); grpc_init(); for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) { diff --git a/test/core/end2end/fixtures/h2_proxy.c b/test/core/end2end/fixtures/h2_proxy.c index 4650da98e3..8f6f156ef7 100644 --- a/test/core/end2end/fixtures/h2_proxy.c +++ b/test/core/end2end/fixtures/h2_proxy.c @@ -120,6 +120,7 @@ int main(int argc, char **argv) { size_t i; grpc_test_init(argc, argv); + grpc_end2end_tests_pre_init(); grpc_init(); for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) { diff --git a/test/core/end2end/fixtures/h2_sockpair+trace.c b/test/core/end2end/fixtures/h2_sockpair+trace.c index 9fdceabbaf..4eb1c57302 100644 --- a/test/core/end2end/fixtures/h2_sockpair+trace.c +++ b/test/core/end2end/fixtures/h2_sockpair+trace.c @@ -150,6 +150,7 @@ int main(int argc, char **argv) { #endif grpc_test_init(argc, argv); + grpc_end2end_tests_pre_init(); grpc_init(); grpc_exec_ctx_finish(&exec_ctx); diff --git a/test/core/end2end/fixtures/h2_sockpair.c b/test/core/end2end/fixtures/h2_sockpair.c index 84777158b6..7760d38100 100644 --- a/test/core/end2end/fixtures/h2_sockpair.c +++ b/test/core/end2end/fixtures/h2_sockpair.c @@ -139,6 +139,7 @@ int main(int argc, char **argv) { size_t i; grpc_test_init(argc, argv); + grpc_end2end_tests_pre_init(); grpc_init(); for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) { diff --git a/test/core/end2end/fixtures/h2_sockpair_1byte.c b/test/core/end2end/fixtures/h2_sockpair_1byte.c index 6b6ca19885..23a5a19c59 100644 --- a/test/core/end2end/fixtures/h2_sockpair_1byte.c +++ b/test/core/end2end/fixtures/h2_sockpair_1byte.c @@ -139,6 +139,7 @@ int main(int argc, char **argv) { size_t i; grpc_test_init(argc, argv); + grpc_end2end_tests_pre_init(); grpc_init(); for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) { diff --git a/test/core/end2end/fixtures/h2_ssl.c b/test/core/end2end/fixtures/h2_ssl.c index e5a255f7c3..69f7616074 100644 --- a/test/core/end2end/fixtures/h2_ssl.c +++ b/test/core/end2end/fixtures/h2_ssl.c @@ -165,6 +165,7 @@ int main(int argc, char **argv) { char *roots_filename; grpc_test_init(argc, argv); + grpc_end2end_tests_pre_init(); /* Set the SSL roots env var. */ roots_file = gpr_tmpfile("chttp2_simple_ssl_fullstack_test", &roots_filename); diff --git a/test/core/end2end/fixtures/h2_ssl_proxy.c b/test/core/end2end/fixtures/h2_ssl_proxy.c index 9edc8a0c23..1403b760f5 100644 --- a/test/core/end2end/fixtures/h2_ssl_proxy.c +++ b/test/core/end2end/fixtures/h2_ssl_proxy.c @@ -195,6 +195,7 @@ int main(int argc, char **argv) { char *roots_filename; grpc_test_init(argc, argv); + grpc_end2end_tests_pre_init(); /* Set the SSL roots env var. */ roots_file = gpr_tmpfile("chttp2_simple_ssl_fullstack_test", &roots_filename); diff --git a/test/core/end2end/fixtures/h2_uds.c b/test/core/end2end/fixtures/h2_uds.c index 9216860a64..d454a103ce 100644 --- a/test/core/end2end/fixtures/h2_uds.c +++ b/test/core/end2end/fixtures/h2_uds.c @@ -110,6 +110,7 @@ int main(int argc, char **argv) { size_t i; grpc_test_init(argc, argv); + grpc_end2end_tests_pre_init(); grpc_init(); for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) { diff --git a/test/core/end2end/gen_build_yaml.py b/test/core/end2end/gen_build_yaml.py index 43ad22e714..9a940a4ab5 100755 --- a/test/core/end2end/gen_build_yaml.py +++ b/test/core/end2end/gen_build_yaml.py @@ -94,6 +94,7 @@ END2END_TESTS = { needs_dns=True), 'disappearing_server': connectivity_test_options, 'empty_batch': default_test_options, + 'filter_causes_close': default_test_options, 'graceful_server_shutdown': default_test_options._replace(cpu_cost=LOWCPU), 'hpack_size': default_test_options._replace(proxyable=False, traceable=False), diff --git a/test/core/end2end/tests/bad_hostname.c b/test/core/end2end/tests/bad_hostname.c index eb1fa46de3..3cb9b3d4b1 100644 --- a/test/core/end2end/tests/bad_hostname.c +++ b/test/core/end2end/tests/bad_hostname.c @@ -179,3 +179,5 @@ void bad_hostname(grpc_end2end_test_config config) { test_invoke_simple_request(config); } } + +void bad_hostname_pre_init(void) {} diff --git a/test/core/end2end/tests/binary_metadata.c b/test/core/end2end/tests/binary_metadata.c index 54583b09bc..994c3bf1dd 100644 --- a/test/core/end2end/tests/binary_metadata.c +++ b/test/core/end2end/tests/binary_metadata.c @@ -287,3 +287,5 @@ static void test_request_response_with_metadata_and_payload( void binary_metadata(grpc_end2end_test_config config) { test_request_response_with_metadata_and_payload(config); } + +void binary_metadata_pre_init(void) {} diff --git a/test/core/end2end/tests/call_creds.c b/test/core/end2end/tests/call_creds.c index a3f86a76c7..b555bea740 100644 --- a/test/core/end2end/tests/call_creds.c +++ b/test/core/end2end/tests/call_creds.c @@ -475,3 +475,5 @@ void call_creds(grpc_end2end_test_config config) { test_request_with_server_rejecting_client_creds(config); } } + +void call_creds_pre_init(void) {} diff --git a/test/core/end2end/tests/cancel_after_accept.c b/test/core/end2end/tests/cancel_after_accept.c index 08d0ef6e51..fc2a64a6c1 100644 --- a/test/core/end2end/tests/cancel_after_accept.c +++ b/test/core/end2end/tests/cancel_after_accept.c @@ -233,3 +233,5 @@ void cancel_after_accept(grpc_end2end_test_config config) { test_cancel_after_accept(config, cancellation_modes[i]); } } + +void cancel_after_accept_pre_init(void) {} diff --git a/test/core/end2end/tests/cancel_after_client_done.c b/test/core/end2end/tests/cancel_after_client_done.c index f85ffad118..3bafa8c85f 100644 --- a/test/core/end2end/tests/cancel_after_client_done.c +++ b/test/core/end2end/tests/cancel_after_client_done.c @@ -237,3 +237,5 @@ void cancel_after_client_done(grpc_end2end_test_config config) { test_cancel_after_accept_and_writes_closed(config, cancellation_modes[i]); } } + +void cancel_after_client_done_pre_init(void) {} diff --git a/test/core/end2end/tests/cancel_after_invoke.c b/test/core/end2end/tests/cancel_after_invoke.c index e7d6e0098a..fc2751af8e 100644 --- a/test/core/end2end/tests/cancel_after_invoke.c +++ b/test/core/end2end/tests/cancel_after_invoke.c @@ -199,3 +199,5 @@ void cancel_after_invoke(grpc_end2end_test_config config) { } } } + +void cancel_after_invoke_pre_init(void) {} diff --git a/test/core/end2end/tests/cancel_before_invoke.c b/test/core/end2end/tests/cancel_before_invoke.c index a4f47f01fa..33005db9e4 100644 --- a/test/core/end2end/tests/cancel_before_invoke.c +++ b/test/core/end2end/tests/cancel_before_invoke.c @@ -194,3 +194,5 @@ void cancel_before_invoke(grpc_end2end_test_config config) { test_cancel_before_invoke(config, i); } } + +void cancel_before_invoke_pre_init(void) {} diff --git a/test/core/end2end/tests/cancel_in_a_vacuum.c b/test/core/end2end/tests/cancel_in_a_vacuum.c index 73a6fc452a..0c893b5f9e 100644 --- a/test/core/end2end/tests/cancel_in_a_vacuum.c +++ b/test/core/end2end/tests/cancel_in_a_vacuum.c @@ -127,3 +127,5 @@ void cancel_in_a_vacuum(grpc_end2end_test_config config) { test_cancel_in_a_vacuum(config, cancellation_modes[i]); } } + +void cancel_in_a_vacuum_pre_init(void) {} diff --git a/test/core/end2end/tests/cancel_with_status.c b/test/core/end2end/tests/cancel_with_status.c index aa73d48891..c3ee4a6a0e 100644 --- a/test/core/end2end/tests/cancel_with_status.c +++ b/test/core/end2end/tests/cancel_with_status.c @@ -182,3 +182,5 @@ void cancel_with_status(grpc_end2end_test_config config) { test_invoke_simple_request(config, i); } } + +void cancel_with_status_pre_init(void) {} diff --git a/test/core/end2end/tests/compressed_payload.c b/test/core/end2end/tests/compressed_payload.c index d5cf9a7858..589bc314f8 100644 --- a/test/core/end2end/tests/compressed_payload.c +++ b/test/core/end2end/tests/compressed_payload.c @@ -336,3 +336,5 @@ void compressed_payload(grpc_end2end_test_config config) { test_invoke_request_with_compressed_payload(config); test_invoke_request_with_compressed_payload_md_override(config); } + +void compressed_payload_pre_init(void) {} diff --git a/test/core/end2end/tests/connectivity.c b/test/core/end2end/tests/connectivity.c index edef2ff68b..5775976b1c 100644 --- a/test/core/end2end/tests/connectivity.c +++ b/test/core/end2end/tests/connectivity.c @@ -172,3 +172,5 @@ void connectivity(grpc_end2end_test_config config) { GPR_ASSERT(config.feature_mask & FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION); test_connectivity(config); } + +void connectivity_pre_init(void) {} diff --git a/test/core/end2end/tests/default_host.c b/test/core/end2end/tests/default_host.c index 105f4e68f0..44384a783e 100644 --- a/test/core/end2end/tests/default_host.c +++ b/test/core/end2end/tests/default_host.c @@ -232,3 +232,5 @@ void default_host(grpc_end2end_test_config config) { return; test_invoke_simple_request(config); } + +void default_host_pre_init(void) {} diff --git a/test/core/end2end/tests/disappearing_server.c b/test/core/end2end/tests/disappearing_server.c index 5b2bbaf70c..03d1ded04c 100644 --- a/test/core/end2end/tests/disappearing_server.c +++ b/test/core/end2end/tests/disappearing_server.c @@ -213,3 +213,5 @@ void disappearing_server(grpc_end2end_test_config config) { GPR_ASSERT(config.feature_mask & FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION); disappearing_server_test(config); } + +void disappearing_server_pre_init(void) {} diff --git a/test/core/end2end/tests/empty_batch.c b/test/core/end2end/tests/empty_batch.c index 95df93ac5b..c05b919914 100644 --- a/test/core/end2end/tests/empty_batch.c +++ b/test/core/end2end/tests/empty_batch.c @@ -132,3 +132,5 @@ static void test_invoke_empty_body(grpc_end2end_test_config config) { void empty_batch(grpc_end2end_test_config config) { test_invoke_empty_body(config); } + +void empty_batch_pre_init(void) {} diff --git a/test/core/end2end/tests/filter_causes_close.c b/test/core/end2end/tests/filter_causes_close.c new file mode 100644 index 0000000000..c6fb766f82 --- /dev/null +++ b/test/core/end2end/tests/filter_causes_close.c @@ -0,0 +1,296 @@ +/* + * + * Copyright 2015, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "test/core/end2end/end2end_tests.h" + +#include <stdbool.h> +#include <stdio.h> +#include <string.h> + +#include <grpc/byte_buffer.h> +#include <grpc/support/alloc.h> +#include <grpc/support/log.h> +#include <grpc/support/time.h> +#include <grpc/support/useful.h> +#include "src/core/lib/channel/channel_stack_builder.h" +#include "src/core/lib/surface/channel_init.h" +#include "test/core/end2end/cq_verifier.h" + +enum { TIMEOUT = 200000 }; + +static bool g_enable_filter = false; + +static void *tag(intptr_t t) { return (void *)t; } + +static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config, + const char *test_name, + grpc_channel_args *client_args, + grpc_channel_args *server_args) { + grpc_end2end_test_fixture f; + gpr_log(GPR_INFO, "%s/%s", test_name, config.name); + f = config.create_fixture(client_args, server_args); + config.init_server(&f, server_args); + config.init_client(&f, client_args); + return f; +} + +static gpr_timespec n_seconds_time(int n) { + return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(n); +} + +static gpr_timespec five_seconds_time(void) { return n_seconds_time(5); } + +static void drain_cq(grpc_completion_queue *cq) { + grpc_event ev; + do { + ev = grpc_completion_queue_next(cq, five_seconds_time(), NULL); + } while (ev.type != GRPC_QUEUE_SHUTDOWN); +} + +static void shutdown_server(grpc_end2end_test_fixture *f) { + if (!f->server) return; + grpc_server_shutdown_and_notify(f->server, f->cq, tag(1000)); + GPR_ASSERT(grpc_completion_queue_pluck( + f->cq, tag(1000), GRPC_TIMEOUT_SECONDS_TO_DEADLINE(5), NULL) + .type == GRPC_OP_COMPLETE); + grpc_server_destroy(f->server); + f->server = NULL; +} + +static void shutdown_client(grpc_end2end_test_fixture *f) { + if (!f->client) return; + grpc_channel_destroy(f->client); + f->client = NULL; +} + +static void end_test(grpc_end2end_test_fixture *f) { + shutdown_server(f); + shutdown_client(f); + + grpc_completion_queue_shutdown(f->cq); + drain_cq(f->cq); + grpc_completion_queue_destroy(f->cq); +} + +/* Request with a large amount of metadata.*/ +static void test_request(grpc_end2end_test_config config) { + grpc_call *c; + grpc_call *s; + gpr_slice request_payload_slice = gpr_slice_from_copied_string("hello world"); + grpc_byte_buffer *request_payload = + grpc_raw_byte_buffer_create(&request_payload_slice, 1); + gpr_timespec deadline = five_seconds_time(); + grpc_metadata meta; + grpc_end2end_test_fixture f = + begin_test(config, "filter_causes_close", NULL, NULL); + cq_verifier *cqv = cq_verifier_create(f.cq); + grpc_op ops[6]; + grpc_op *op; + grpc_metadata_array initial_metadata_recv; + grpc_metadata_array trailing_metadata_recv; + grpc_metadata_array request_metadata_recv; + grpc_byte_buffer *request_payload_recv = NULL; + grpc_call_details call_details; + grpc_status_code status; + grpc_call_error error; + char *details = NULL; + size_t details_capacity = 0; + + c = grpc_channel_create_call(f.client, NULL, GRPC_PROPAGATE_DEFAULTS, f.cq, + "/foo", "foo.test.google.fr", deadline, NULL); + GPR_ASSERT(c); + + grpc_metadata_array_init(&initial_metadata_recv); + grpc_metadata_array_init(&trailing_metadata_recv); + grpc_metadata_array_init(&request_metadata_recv); + grpc_call_details_init(&call_details); + + op = ops; + op->op = GRPC_OP_SEND_INITIAL_METADATA; + op->data.send_initial_metadata.count = 0; + op->data.send_initial_metadata.metadata = NULL; + op->flags = 0; + op->reserved = NULL; + op++; + op->op = GRPC_OP_SEND_MESSAGE; + op->data.send_message = request_payload; + op->flags = 0; + op->reserved = NULL; + op++; + op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; + op->flags = 0; + op->reserved = NULL; + op++; + op->op = GRPC_OP_RECV_INITIAL_METADATA; + op->data.recv_initial_metadata = &initial_metadata_recv; + op->flags = 0; + op->reserved = NULL; + op++; + op->op = GRPC_OP_RECV_STATUS_ON_CLIENT; + op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv; + op->data.recv_status_on_client.status = &status; + op->data.recv_status_on_client.status_details = &details; + op->data.recv_status_on_client.status_details_capacity = &details_capacity; + op->flags = 0; + op->reserved = NULL; + op++; + error = grpc_call_start_batch(c, ops, (size_t)(op - ops), tag(1), NULL); + GPR_ASSERT(GRPC_CALL_OK == error); + + error = + grpc_server_request_call(f.server, &s, &call_details, + &request_metadata_recv, f.cq, f.cq, tag(101)); + GPR_ASSERT(GRPC_CALL_OK == error); + + cq_expect_completion(cqv, tag(1), 1); + cq_verify(cqv); + + GPR_ASSERT(status == GRPC_STATUS_PERMISSION_DENIED); + GPR_ASSERT(0 == strcmp(details, "Random failure that's not preventable.")); + GPR_ASSERT(byte_buffer_eq_string(request_payload_recv, "hello world")); + GPR_ASSERT(contains_metadata(&request_metadata_recv, "key", meta.value)); + + gpr_free(details); + grpc_metadata_array_destroy(&initial_metadata_recv); + grpc_metadata_array_destroy(&trailing_metadata_recv); + grpc_metadata_array_destroy(&request_metadata_recv); + grpc_call_details_destroy(&call_details); + + grpc_call_destroy(c); + grpc_call_destroy(s); + + cq_verifier_destroy(cqv); + + grpc_byte_buffer_destroy(request_payload); + grpc_byte_buffer_destroy(request_payload_recv); + + gpr_free((char *)meta.value); + + end_test(&f); + config.tear_down_data(&f); +} + +/******************************************************************************* + * Test filter - always closes incoming requests + */ + +typedef struct { grpc_closure *recv_im_ready; } call_data; + +typedef struct { +} channel_data; + +static void recv_im_ready(grpc_exec_ctx *exec_ctx, void *arg, bool success) { + grpc_call_element *elem = arg; + call_data *calld = elem->call_data; + if (success) { + // close the stream with an error. + gpr_slice message; + grpc_transport_stream_op close_op; + memset(&close_op, 0, sizeof(close_op)); + message = + gpr_slice_from_copied_string("Random failure that's not preventable."); + grpc_transport_stream_op op; + memset(&op, 0, sizeof(op)); + grpc_transport_stream_op_add_close(&op, GRPC_STATUS_PERMISSION_DENIED, + &message); + grpc_call_next_op(exec_ctx, elem, &op); + } + calld->recv_im_ready->cb(exec_ctx, calld->recv_im_ready->cb_arg, false); +} + +static void start_transport_stream_op(grpc_exec_ctx *exec_ctx, + grpc_call_element *elem, + grpc_transport_stream_op *op) { + call_data *calld = elem->call_data; + if (op->recv_initial_metadata != NULL) { + calld->recv_im_ready = op->recv_initial_metadata_ready; + op->recv_initial_metadata_ready = grpc_closure_create(recv_im_ready, elem); + } + grpc_call_next_op(exec_ctx, elem, op); +} + +static void init_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem, + grpc_call_element_args *args) {} + +static void destroy_call_elem(grpc_exec_ctx *exec_ctx, + grpc_call_element *elem) {} + +static void init_channel_elem(grpc_exec_ctx *exec_ctx, + grpc_channel_element *elem, + grpc_channel_element_args *args) {} + +static void destroy_channel_elem(grpc_exec_ctx *exec_ctx, + grpc_channel_element *elem) {} + +static const grpc_channel_filter test_filter = { + start_transport_stream_op, + grpc_channel_next_op, + sizeof(call_data), + init_call_elem, + grpc_call_stack_ignore_set_pollset, + destroy_call_elem, + sizeof(channel_data), + init_channel_elem, + destroy_channel_elem, + grpc_call_next_get_peer, + "filter_causes_close"}; + +/******************************************************************************* + * Registration + */ + +static bool maybe_add_filter(grpc_channel_stack_builder *builder, void *arg) { + if (g_enable_filter) { + return grpc_channel_stack_builder_prepend_filter(builder, &test_filter, + NULL, NULL); + } else { + return true; + } +} + +static void init_plugin(void) { + grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL, 0, maybe_add_filter, + NULL); +} + +static void destroy_plugin(void) {} + +void filter_causes_close(grpc_end2end_test_config config) { + g_enable_filter = true; + test_request(config); + g_enable_filter = false; +} + +void filter_causes_close_pre_init(void) { + grpc_register_plugin(init_plugin, destroy_plugin); +} diff --git a/test/core/end2end/tests/graceful_server_shutdown.c b/test/core/end2end/tests/graceful_server_shutdown.c index cc6a9d44f8..26198f3bdf 100644 --- a/test/core/end2end/tests/graceful_server_shutdown.c +++ b/test/core/end2end/tests/graceful_server_shutdown.c @@ -210,3 +210,5 @@ static void test_early_server_shutdown_finishes_inflight_calls( void graceful_server_shutdown(grpc_end2end_test_config config) { test_early_server_shutdown_finishes_inflight_calls(config); } + +void graceful_server_shutdown_pre_init(void) {} diff --git a/test/core/end2end/tests/high_initial_seqno.c b/test/core/end2end/tests/high_initial_seqno.c index 8b6e50bdd8..374606dcb7 100644 --- a/test/core/end2end/tests/high_initial_seqno.c +++ b/test/core/end2end/tests/high_initial_seqno.c @@ -237,3 +237,5 @@ void high_initial_seqno(grpc_end2end_test_config config) { test_invoke_10_simple_requests(config, 2147483645); } } + +void high_initial_seqno_pre_init(void) {} diff --git a/test/core/end2end/tests/hpack_size.c b/test/core/end2end/tests/hpack_size.c index 15efcd23bf..07d5d387b4 100644 --- a/test/core/end2end/tests/hpack_size.c +++ b/test/core/end2end/tests/hpack_size.c @@ -444,3 +444,5 @@ void hpack_size(grpc_end2end_test_config config) { } } } + +void hpack_size_pre_init(void) {} diff --git a/test/core/end2end/tests/idempotent_request.c b/test/core/end2end/tests/idempotent_request.c index 485a854441..42a672bf19 100644 --- a/test/core/end2end/tests/idempotent_request.c +++ b/test/core/end2end/tests/idempotent_request.c @@ -246,3 +246,5 @@ void idempotent_request(grpc_end2end_test_config config) { } test_invoke_10_simple_requests(config); } + +void idempotent_request_pre_init(void) {} diff --git a/test/core/end2end/tests/invoke_large_request.c b/test/core/end2end/tests/invoke_large_request.c index 28c0e36461..6410305451 100644 --- a/test/core/end2end/tests/invoke_large_request.c +++ b/test/core/end2end/tests/invoke_large_request.c @@ -254,3 +254,5 @@ static void test_invoke_large_request(grpc_end2end_test_config config) { void invoke_large_request(grpc_end2end_test_config config) { test_invoke_large_request(config); } + +void invoke_large_request_pre_init(void) {} diff --git a/test/core/end2end/tests/large_metadata.c b/test/core/end2end/tests/large_metadata.c index 173c20996e..0e5d6b4fe0 100644 --- a/test/core/end2end/tests/large_metadata.c +++ b/test/core/end2end/tests/large_metadata.c @@ -245,3 +245,5 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) { void large_metadata(grpc_end2end_test_config config) { test_request_with_large_metadata(config); } + +void large_metadata_pre_init(void) {} diff --git a/test/core/end2end/tests/max_concurrent_streams.c b/test/core/end2end/tests/max_concurrent_streams.c index 60e9ecd7d8..1bb53073cb 100644 --- a/test/core/end2end/tests/max_concurrent_streams.c +++ b/test/core/end2end/tests/max_concurrent_streams.c @@ -436,3 +436,5 @@ static void test_max_concurrent_streams(grpc_end2end_test_config config) { void max_concurrent_streams(grpc_end2end_test_config config) { test_max_concurrent_streams(config); } + +void max_concurrent_streams_pre_init(void) {} diff --git a/test/core/end2end/tests/max_message_length.c b/test/core/end2end/tests/max_message_length.c index 00a83ecb33..b5dbc1382a 100644 --- a/test/core/end2end/tests/max_message_length.c +++ b/test/core/end2end/tests/max_message_length.c @@ -221,3 +221,5 @@ static void test_max_message_length(grpc_end2end_test_config config) { void max_message_length(grpc_end2end_test_config config) { test_max_message_length(config); } + +void max_message_length_pre_init(void) {} diff --git a/test/core/end2end/tests/negative_deadline.c b/test/core/end2end/tests/negative_deadline.c index 0cc68a33a1..03e57a90f6 100644 --- a/test/core/end2end/tests/negative_deadline.c +++ b/test/core/end2end/tests/negative_deadline.c @@ -179,3 +179,5 @@ void negative_deadline(grpc_end2end_test_config config) { test_invoke_simple_request(config, i); } } + +void negative_deadline_pre_init(void) {} diff --git a/test/core/end2end/tests/no_op.c b/test/core/end2end/tests/no_op.c index 9dda569cb9..284be7af2a 100644 --- a/test/core/end2end/tests/no_op.c +++ b/test/core/end2end/tests/no_op.c @@ -104,3 +104,5 @@ static void test_no_op(grpc_end2end_test_config config) { } void no_op(grpc_end2end_test_config config) { test_no_op(config); } + +void no_op_pre_init(void) {} diff --git a/test/core/end2end/tests/payload.c b/test/core/end2end/tests/payload.c index e9272b6bce..bdfb135406 100644 --- a/test/core/end2end/tests/payload.c +++ b/test/core/end2end/tests/payload.c @@ -268,3 +268,5 @@ void payload(grpc_end2end_test_config config) { test_invoke_request_response_with_payload(config); test_invoke_10_request_response_with_payload(config); } + +void payload_pre_init(void) {} diff --git a/test/core/end2end/tests/ping.c b/test/core/end2end/tests/ping.c index f42f186502..d49bec983b 100644 --- a/test/core/end2end/tests/ping.c +++ b/test/core/end2end/tests/ping.c @@ -95,3 +95,5 @@ void ping(grpc_end2end_test_config config) { GPR_ASSERT(config.feature_mask & FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION); test_ping(config); } + +void ping_pre_init(void) {} diff --git a/test/core/end2end/tests/ping_pong_streaming.c b/test/core/end2end/tests/ping_pong_streaming.c index ac4e810573..15e1c6e338 100644 --- a/test/core/end2end/tests/ping_pong_streaming.c +++ b/test/core/end2end/tests/ping_pong_streaming.c @@ -275,3 +275,5 @@ void ping_pong_streaming(grpc_end2end_test_config config) { test_pingpong_streaming(config, i); } } + +void ping_pong_streaming_pre_init(void) {} diff --git a/test/core/end2end/tests/registered_call.c b/test/core/end2end/tests/registered_call.c index a67df863d5..3c4edbae7d 100644 --- a/test/core/end2end/tests/registered_call.c +++ b/test/core/end2end/tests/registered_call.c @@ -231,3 +231,5 @@ void registered_call(grpc_end2end_test_config config) { test_invoke_simple_request(config); test_invoke_10_simple_requests(config); } + +void registered_call_pre_init(void) {} diff --git a/test/core/end2end/tests/request_with_flags.c b/test/core/end2end/tests/request_with_flags.c index 9d01ddc94c..779895b970 100644 --- a/test/core/end2end/tests/request_with_flags.c +++ b/test/core/end2end/tests/request_with_flags.c @@ -214,3 +214,5 @@ void request_with_flags(grpc_end2end_test_config config) { } } } + +void request_with_flags_pre_init(void) {} diff --git a/test/core/end2end/tests/request_with_payload.c b/test/core/end2end/tests/request_with_payload.c index 9866d39000..7706404090 100644 --- a/test/core/end2end/tests/request_with_payload.c +++ b/test/core/end2end/tests/request_with_payload.c @@ -232,3 +232,5 @@ static void test_invoke_request_with_payload(grpc_end2end_test_config config) { void request_with_payload(grpc_end2end_test_config config) { test_invoke_request_with_payload(config); } + +void request_with_payload_pre_init(void) {} diff --git a/test/core/end2end/tests/server_finishes_request.c b/test/core/end2end/tests/server_finishes_request.c index 2a26c98916..a4f5319e5b 100644 --- a/test/core/end2end/tests/server_finishes_request.c +++ b/test/core/end2end/tests/server_finishes_request.c @@ -210,3 +210,5 @@ static void test_invoke_simple_request(grpc_end2end_test_config config) { void server_finishes_request(grpc_end2end_test_config config) { test_invoke_simple_request(config); } + +void server_finishes_request_pre_init(void) {} diff --git a/test/core/end2end/tests/shutdown_finishes_calls.c b/test/core/end2end/tests/shutdown_finishes_calls.c index b56ba464b9..80287cd507 100644 --- a/test/core/end2end/tests/shutdown_finishes_calls.c +++ b/test/core/end2end/tests/shutdown_finishes_calls.c @@ -192,3 +192,5 @@ static void test_early_server_shutdown_finishes_inflight_calls( void shutdown_finishes_calls(grpc_end2end_test_config config) { test_early_server_shutdown_finishes_inflight_calls(config); } + +void shutdown_finishes_calls_pre_init(void) {} diff --git a/test/core/end2end/tests/shutdown_finishes_tags.c b/test/core/end2end/tests/shutdown_finishes_tags.c index 4a060de716..b1f3c94562 100644 --- a/test/core/end2end/tests/shutdown_finishes_tags.c +++ b/test/core/end2end/tests/shutdown_finishes_tags.c @@ -119,3 +119,5 @@ static void test_early_server_shutdown_finishes_tags( void shutdown_finishes_tags(grpc_end2end_test_config config) { test_early_server_shutdown_finishes_tags(config); } + +void shutdown_finishes_tags_pre_init(void) {} diff --git a/test/core/end2end/tests/simple_delayed_request.c b/test/core/end2end/tests/simple_delayed_request.c index bb9d462cef..013f1e3981 100644 --- a/test/core/end2end/tests/simple_delayed_request.c +++ b/test/core/end2end/tests/simple_delayed_request.c @@ -221,3 +221,5 @@ void simple_delayed_request(grpc_end2end_test_config config) { test_simple_delayed_request_short(config); test_simple_delayed_request_long(config); } + +void simple_delayed_request_pre_init(void) {} diff --git a/test/core/end2end/tests/simple_metadata.c b/test/core/end2end/tests/simple_metadata.c index 084c0df817..707b3c9512 100644 --- a/test/core/end2end/tests/simple_metadata.c +++ b/test/core/end2end/tests/simple_metadata.c @@ -263,3 +263,5 @@ static void test_request_response_with_metadata_and_payload( void simple_metadata(grpc_end2end_test_config config) { test_request_response_with_metadata_and_payload(config); } + +void simple_metadata_pre_init(void) {} diff --git a/test/core/end2end/tests/simple_request.c b/test/core/end2end/tests/simple_request.c index 68db58d225..42108425e6 100644 --- a/test/core/end2end/tests/simple_request.c +++ b/test/core/end2end/tests/simple_request.c @@ -246,3 +246,5 @@ void simple_request(grpc_end2end_test_config config) { } test_invoke_10_simple_requests(config); } + +void simple_request_pre_init(void) {} diff --git a/test/core/end2end/tests/trailing_metadata.c b/test/core/end2end/tests/trailing_metadata.c index 99e1e2264a..4dd8c12cba 100644 --- a/test/core/end2end/tests/trailing_metadata.c +++ b/test/core/end2end/tests/trailing_metadata.c @@ -268,3 +268,5 @@ static void test_request_response_with_metadata_and_payload( void trailing_metadata(grpc_end2end_test_config config) { test_request_response_with_metadata_and_payload(config); } + +void trailing_metadata_pre_init(void) {} |