aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Yash Tibrewal <yashkt@google.com>2017-11-28 13:23:36 -0800
committerGravatar Yash Tibrewal <yashkt@google.com>2017-11-28 13:23:36 -0800
commit81fc8c9c336fab7a71b448f748a32d680301277c (patch)
tree5cd64fd191db0f87d59ef53768c1b6760b4f1654
parent3285f4c7329bf4305133be74f88dd4b10d5e2052 (diff)
Fix tests to call grpc_init and grpc_shutdown before using exec_ctx
-rw-r--r--include/grpc/impl/codegen/port_platform.h2
-rw-r--r--include/grpc/support/tls.h6
-rw-r--r--src/core/lib/iomgr/block_annotate.h8
-rw-r--r--src/core/lib/iomgr/exec_ctx.h2
-rw-r--r--src/core/lib/iomgr/iomgr.cc102
-rw-r--r--src/core/lib/iomgr/load_file.cc3
-rw-r--r--src/core/lib/surface/init.cc31
-rw-r--r--test/core/backoff/backoff_test.cc3
-rw-r--r--test/core/bad_client/tests/badreq.cc4
-rw-r--r--test/core/bad_client/tests/connection_prefix.cc3
-rw-r--r--test/core/bad_client/tests/head_of_line_blocking.cc3
-rw-r--r--test/core/bad_client/tests/headers.cc2
-rw-r--r--test/core/bad_client/tests/initial_settings_frame.cc2
-rw-r--r--test/core/bad_client/tests/server_registered_method.cc2
-rw-r--r--test/core/bad_client/tests/simple_request.cc4
-rw-r--r--test/core/bad_client/tests/unknown_frame.cc2
-rw-r--r--test/core/bad_client/tests/window_overflow.cc3
-rw-r--r--test/core/client_channel/parse_address_test.cc4
-rw-r--r--test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc48
-rw-r--r--test/core/client_channel/uri_fuzzer_test.cc17
-rw-r--r--test/core/client_channel/uri_parser_test.cc3
-rw-r--r--test/core/end2end/bad_server_response_test.cc2
-rw-r--r--test/core/end2end/fixtures/h2_sockpair+trace.cc1
-rw-r--r--test/core/end2end/fuzzers/api_fuzzer.cc2
-rw-r--r--test/core/end2end/fuzzers/client_fuzzer.cc209
-rw-r--r--test/core/end2end/fuzzers/server_fuzzer.cc134
-rw-r--r--test/core/http/format_request_test.cc2
-rw-r--r--test/core/http/httpcli_test.cc107
-rw-r--r--test/core/http/httpscli_test.cc11
-rw-r--r--test/core/http/parser_test.cc3
-rw-r--r--test/core/iomgr/endpoint_pair_test.cc17
-rw-r--r--test/core/iomgr/ev_epollsig_linux_test.cc22
-rw-r--r--test/core/iomgr/fd_conservation_posix_test.cc36
-rw-r--r--test/core/iomgr/fd_posix_test.cc23
-rw-r--r--test/core/iomgr/load_file_test.cc3
-rw-r--r--test/core/iomgr/pollset_set_test.cc31
-rw-r--r--test/core/iomgr/resolve_address_posix_test.cc10
-rw-r--r--test/core/iomgr/resolve_address_test.cc22
-rw-r--r--test/core/iomgr/tcp_client_posix_test.cc29
-rw-r--r--test/core/iomgr/tcp_posix_test.cc20
-rw-r--r--test/core/iomgr/tcp_server_posix_test.cc98
-rw-r--r--test/core/iomgr/timer_list_test.cc3
-rw-r--r--test/core/iomgr/udp_server_test.cc36
-rw-r--r--test/core/security/json_token_test.cc2
-rw-r--r--test/core/security/secure_endpoint_test.cc24
-rw-r--r--test/core/security/ssl_server_fuzzer.cc115
-rw-r--r--test/core/slice/b64_test.cc3
-rw-r--r--test/core/slice/percent_encoding_test.cc3
-rw-r--r--test/core/slice/slice_buffer_test.cc3
-rw-r--r--test/core/slice/slice_hash_table_test.cc2
-rw-r--r--test/core/slice/slice_string_helpers_test.cc3
-rw-r--r--test/core/slice/slice_test.cc2
-rw-r--r--test/core/surface/byte_buffer_reader_test.cc2
-rw-r--r--test/core/surface/concurrent_connectivity_test.cc10
-rw-r--r--test/core/transport/byte_stream_test.cc3
-rw-r--r--test/core/transport/chttp2/bin_decoder_test.cc110
-rw-r--r--test/core/transport/chttp2/bin_encoder_test.cc3
-rw-r--r--test/core/transport/chttp2/hpack_parser_fuzzer_test.cc15
-rw-r--r--test/core/transport/chttp2/varint_test.cc3
-rw-r--r--test/core/transport/connectivity_state_test.cc2
-rw-r--r--test/core/transport/metadata_test.cc2
-rw-r--r--test/core/transport/stream_owned_slice_test.cc3
-rw-r--r--test/core/util/one_corpus_entry_fuzzer.cc10
-rw-r--r--test/core/util/port_server_client.cc83
64 files changed, 822 insertions, 656 deletions
diff --git a/include/grpc/impl/codegen/port_platform.h b/include/grpc/impl/codegen/port_platform.h
index de27a53e26..1a93be38e0 100644
--- a/include/grpc/impl/codegen/port_platform.h
+++ b/include/grpc/impl/codegen/port_platform.h
@@ -182,7 +182,7 @@
#ifndef _BSD_SOURCE
#define _BSD_SOURCE
#endif
-#define TLS_NO_SUPPORT 1
+#define TLS_NO_SUPPORT 1 /* thread-local storage not supported. Use GPR_TLS */
#if TARGET_OS_IPHONE
#define GPR_PLATFORM_STRING "ios"
#define GPR_CPU_IPHONE 1
diff --git a/include/grpc/support/tls.h b/include/grpc/support/tls.h
index 8519a8350b..4c9e79b6cf 100644
--- a/include/grpc/support/tls.h
+++ b/include/grpc/support/tls.h
@@ -32,6 +32,12 @@
GPR_TLS_DECL(foo);
Thread locals always have static scope.
+ Declaring a thread local class variable 'foo':
+ GPR_TLS_CLASS_DECL(foo);
+
+ Defining the thread local class variable:
+ GPR_TLS_CLASS_DEF(foo);
+
Initializing a thread local (must be done at library initialization
time):
gpr_tls_init(&foo);
diff --git a/src/core/lib/iomgr/block_annotate.h b/src/core/lib/iomgr/block_annotate.h
index 55bde3eaac..e3d4368d17 100644
--- a/src/core/lib/iomgr/block_annotate.h
+++ b/src/core/lib/iomgr/block_annotate.h
@@ -46,6 +46,11 @@ void gpr_thd_end_blocking_region();
gpr_thd_end_blocking_region(); \
grpc_core::ExecCtx::Get()->InvalidateNow(); \
} while (0)
+#define GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX \
+ do { \
+ gpr_thd_end_blocking_region(); \
+ } while (0)
+
#else
#define GRPC_SCHEDULING_START_BLOCKING_REGION \
do { \
@@ -54,6 +59,9 @@ void gpr_thd_end_blocking_region();
do { \
grpc_core::ExecCtx::Get()->InvalidateNow(); \
} while (0)
+#define GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX \
+ do { \
+ } while (0)
#endif
#endif /* GRPC_CORE_LIB_IOMGR_BLOCK_ANNOTATE_H */
diff --git a/src/core/lib/iomgr/exec_ctx.h b/src/core/lib/iomgr/exec_ctx.h
index 3a44d691b7..b04aab61fa 100644
--- a/src/core/lib/iomgr/exec_ctx.h
+++ b/src/core/lib/iomgr/exec_ctx.h
@@ -77,6 +77,7 @@ namespace grpc_core {
class ExecCtx {
public:
/** Default Constructor */
+
ExecCtx() : flags_(GRPC_EXEC_CTX_FLAG_IS_FINISHED) { Set(this); }
/** Parameterised Constructor */
@@ -84,7 +85,6 @@ class ExecCtx {
/** Destructor */
~ExecCtx() {
- GPR_ASSERT(Get() == this);
flags_ |= GRPC_EXEC_CTX_FLAG_IS_FINISHED;
Flush();
Set(last_exec_ctx_);
diff --git a/src/core/lib/iomgr/iomgr.cc b/src/core/lib/iomgr/iomgr.cc
index 3bad17a54e..570d97443d 100644
--- a/src/core/lib/iomgr/iomgr.cc
+++ b/src/core/lib/iomgr/iomgr.cc
@@ -84,62 +84,66 @@ void grpc_iomgr_shutdown() {
gpr_now(GPR_CLOCK_REALTIME), gpr_time_from_seconds(10, GPR_TIMESPAN));
gpr_timespec last_warning_time = gpr_now(GPR_CLOCK_REALTIME);
- grpc_timer_manager_shutdown();
- grpc_iomgr_platform_flush();
- grpc_executor_shutdown();
-
- gpr_mu_lock(&g_mu);
- g_shutdown = 1;
- while (g_root_object.next != &g_root_object) {
- if (gpr_time_cmp(
- gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME), last_warning_time),
- gpr_time_from_seconds(1, GPR_TIMESPAN)) >= 0) {
- if (g_root_object.next != &g_root_object) {
- gpr_log(GPR_DEBUG,
- "Waiting for %" PRIuPTR " iomgr objects to be destroyed",
- count_objects());
+ {
+ grpc_core::ExecCtx _local_exec_ctx(0);
+ grpc_timer_manager_shutdown();
+ grpc_iomgr_platform_flush();
+ grpc_executor_shutdown();
+
+ gpr_mu_lock(&g_mu);
+ g_shutdown = 1;
+ while (g_root_object.next != &g_root_object) {
+ if (gpr_time_cmp(
+ gpr_time_sub(gpr_now(GPR_CLOCK_REALTIME), last_warning_time),
+ gpr_time_from_seconds(1, GPR_TIMESPAN)) >= 0) {
+ if (g_root_object.next != &g_root_object) {
+ gpr_log(GPR_DEBUG,
+ "Waiting for %" PRIuPTR " iomgr objects to be destroyed",
+ count_objects());
+ }
+ last_warning_time = gpr_now(GPR_CLOCK_REALTIME);
}
- last_warning_time = gpr_now(GPR_CLOCK_REALTIME);
- }
- grpc_core::ExecCtx::Get()->SetNowIomgrShutdown();
- if (grpc_timer_check(nullptr) == GRPC_TIMERS_FIRED) {
- gpr_mu_unlock(&g_mu);
- grpc_core::ExecCtx::Get()->Flush();
- grpc_iomgr_platform_flush();
- gpr_mu_lock(&g_mu);
- continue;
- }
- if (g_root_object.next != &g_root_object) {
- if (grpc_iomgr_abort_on_leaks()) {
- gpr_log(GPR_DEBUG,
- "Failed to free %" PRIuPTR
- " iomgr objects before shutdown deadline: "
- "memory leaks are likely",
- count_objects());
- dump_objects("LEAKED");
- abort();
+ grpc_core::ExecCtx::Get()->SetNowIomgrShutdown();
+ if (grpc_timer_check(nullptr) == GRPC_TIMERS_FIRED) {
+ gpr_mu_unlock(&g_mu);
+ grpc_core::ExecCtx::Get()->Flush();
+ grpc_iomgr_platform_flush();
+ gpr_mu_lock(&g_mu);
+ continue;
}
- gpr_timespec short_deadline = gpr_time_add(
- gpr_now(GPR_CLOCK_REALTIME), gpr_time_from_millis(100, GPR_TIMESPAN));
- if (gpr_cv_wait(&g_rcv, &g_mu, short_deadline)) {
- if (gpr_time_cmp(gpr_now(GPR_CLOCK_REALTIME), shutdown_deadline) > 0) {
- if (g_root_object.next != &g_root_object) {
- gpr_log(GPR_DEBUG,
- "Failed to free %" PRIuPTR
- " iomgr objects before shutdown deadline: "
- "memory leaks are likely",
- count_objects());
- dump_objects("LEAKED");
+ if (g_root_object.next != &g_root_object) {
+ if (grpc_iomgr_abort_on_leaks()) {
+ gpr_log(GPR_DEBUG,
+ "Failed to free %" PRIuPTR
+ " iomgr objects before shutdown deadline: "
+ "memory leaks are likely",
+ count_objects());
+ dump_objects("LEAKED");
+ abort();
+ }
+ gpr_timespec short_deadline =
+ gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
+ gpr_time_from_millis(100, GPR_TIMESPAN));
+ if (gpr_cv_wait(&g_rcv, &g_mu, short_deadline)) {
+ if (gpr_time_cmp(gpr_now(GPR_CLOCK_REALTIME), shutdown_deadline) >
+ 0) {
+ if (g_root_object.next != &g_root_object) {
+ gpr_log(GPR_DEBUG,
+ "Failed to free %" PRIuPTR
+ " iomgr objects before shutdown deadline: "
+ "memory leaks are likely",
+ count_objects());
+ dump_objects("LEAKED");
+ }
+ break;
}
- break;
}
}
}
- }
- gpr_mu_unlock(&g_mu);
+ gpr_mu_unlock(&g_mu);
- grpc_timer_list_shutdown();
- grpc_core::ExecCtx::Get()->Flush();
+ grpc_timer_list_shutdown();
+ }
/* ensure all threads have left g_mu */
gpr_mu_lock(&g_mu);
diff --git a/src/core/lib/iomgr/load_file.cc b/src/core/lib/iomgr/load_file.cc
index 1afe6ba96d..4a05de1410 100644
--- a/src/core/lib/iomgr/load_file.cc
+++ b/src/core/lib/iomgr/load_file.cc
@@ -30,7 +30,6 @@
grpc_error* grpc_load_file(const char* filename, int add_null_terminator,
grpc_slice* output) {
- grpc_core::ExecCtx exec_ctx;
unsigned char* contents = nullptr;
size_t contents_size = 0;
grpc_slice result = grpc_empty_slice();
@@ -74,6 +73,6 @@ end:
GRPC_ERROR_UNREF(error);
error = error_out;
}
- GRPC_SCHEDULING_END_BLOCKING_REGION;
+ GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX;
return error;
}
diff --git a/src/core/lib/surface/init.cc b/src/core/lib/surface/init.cc
index da641e1cf5..2d7a33e147 100644
--- a/src/core/lib/surface/init.cc
+++ b/src/core/lib/surface/init.cc
@@ -153,23 +153,28 @@ void grpc_shutdown(void) {
if (grpc_core::ExecCtx::Get()) {
grpc_core::ExecCtx::Get()->Flush();
}
- grpc_core::ExecCtx _local_exec_ctx(0);
gpr_mu_lock(&g_init_mu);
if (--g_initializations == 0) {
- grpc_executor_shutdown();
- grpc_timer_manager_set_threading(false); // shutdown timer_manager thread
- for (i = g_number_of_plugins; i >= 0; i--) {
- if (g_all_of_the_plugins[i].destroy != nullptr) {
- g_all_of_the_plugins[i].destroy();
+ {
+ {
+ grpc_core::ExecCtx _local_exec_ctx(0);
+ grpc_executor_shutdown();
+ grpc_timer_manager_set_threading(
+ false); // shutdown timer_manager thread
+ for (i = g_number_of_plugins; i >= 0; i--) {
+ if (g_all_of_the_plugins[i].destroy != nullptr) {
+ g_all_of_the_plugins[i].destroy();
+ }
+ }
+ grpc_mdctx_global_shutdown();
+ grpc_handshaker_factory_registry_shutdown();
}
+ grpc_iomgr_shutdown();
+ gpr_timers_global_destroy();
+ grpc_tracer_shutdown();
+ grpc_slice_intern_shutdown();
+ grpc_stats_shutdown();
}
- grpc_iomgr_shutdown();
- gpr_timers_global_destroy();
- grpc_tracer_shutdown();
- grpc_mdctx_global_shutdown();
- grpc_handshaker_factory_registry_shutdown();
- grpc_slice_intern_shutdown();
- grpc_stats_shutdown();
}
gpr_mu_unlock(&g_init_mu);
}
diff --git a/test/core/backoff/backoff_test.cc b/test/core/backoff/backoff_test.cc
index 76a9f39c35..2cd97d8055 100644
--- a/test/core/backoff/backoff_test.cc
+++ b/test/core/backoff/backoff_test.cc
@@ -18,6 +18,7 @@
#include "src/core/lib/backoff/backoff.h"
+#include <grpc/grpc.h>
#include <grpc/support/log.h>
#include <grpc/support/useful.h>
@@ -174,6 +175,7 @@ static void test_jitter_backoff(void) {
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
gpr_time_init();
test_constant_backoff();
@@ -181,5 +183,6 @@ int main(int argc, char** argv) {
test_no_jitter_backoff();
test_jitter_backoff();
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/bad_client/tests/badreq.cc b/test/core/bad_client/tests/badreq.cc
index c30244e0cd..eeaf4c9974 100644
--- a/test/core/bad_client/tests/badreq.cc
+++ b/test/core/bad_client/tests/badreq.cc
@@ -20,6 +20,8 @@
#include <string.h>
+#include <grpc/grpc.h>
+
#include "src/core/lib/surface/server.h"
#include "test/core/end2end/cq_verifier.h"
@@ -38,6 +40,7 @@ static void verifier(grpc_server* server, grpc_completion_queue* cq,
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
/* invalid content type */
GRPC_RUN_BAD_CLIENT_TEST(
@@ -126,5 +129,6 @@ int main(int argc, char** argv) {
"\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)",
GRPC_BAD_CLIENT_DISCONNECT);
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/bad_client/tests/connection_prefix.cc b/test/core/bad_client/tests/connection_prefix.cc
index 47252f9f10..4aab234d3e 100644
--- a/test/core/bad_client/tests/connection_prefix.cc
+++ b/test/core/bad_client/tests/connection_prefix.cc
@@ -30,6 +30,7 @@ static void verifier(grpc_server* server, grpc_completion_queue* cq,
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
GRPC_RUN_BAD_CLIENT_TEST(verifier, nullptr, "X", 0);
GRPC_RUN_BAD_CLIENT_TEST(verifier, nullptr, "PX", 0);
@@ -57,5 +58,7 @@ int main(int argc, char** argv) {
0);
GRPC_RUN_BAD_CLIENT_TEST(verifier, nullptr, "PRI * HTTP/2.0\r\n\r\nSM\r\n\rX",
0);
+
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/bad_client/tests/head_of_line_blocking.cc b/test/core/bad_client/tests/head_of_line_blocking.cc
index bbc5611991..f56c4d71dd 100644
--- a/test/core/bad_client/tests/head_of_line_blocking.cc
+++ b/test/core/bad_client/tests/head_of_line_blocking.cc
@@ -20,6 +20,7 @@
#include <string.h>
+#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include "src/core/lib/surface/server.h"
@@ -109,6 +110,7 @@ static void addbuf(const void* data, size_t len) {
int main(int argc, char** argv) {
int i;
grpc_test_init(argc, argv);
+ grpc_init();
#define NUM_FRAMES 10
#define FRAME_SIZE 1000
@@ -131,6 +133,7 @@ int main(int argc, char** argv) {
}
grpc_run_bad_client_test(verifier, nullptr, g_buffer, g_count, 0);
gpr_free(g_buffer);
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/bad_client/tests/headers.cc b/test/core/bad_client/tests/headers.cc
index 50bb72c493..2aa1b280ce 100644
--- a/test/core/bad_client/tests/headers.cc
+++ b/test/core/bad_client/tests/headers.cc
@@ -34,6 +34,7 @@ static void verifier(grpc_server* server, grpc_completion_queue* cq,
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
/* partial http2 header prefixes */
GRPC_RUN_BAD_CLIENT_TEST(verifier, nullptr, PFX_STR "\x00",
@@ -335,5 +336,6 @@ int main(int argc, char** argv) {
"15 seconds",
GRPC_BAD_CLIENT_DISCONNECT);
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/bad_client/tests/initial_settings_frame.cc b/test/core/bad_client/tests/initial_settings_frame.cc
index edc52f503e..0220000ece 100644
--- a/test/core/bad_client/tests/initial_settings_frame.cc
+++ b/test/core/bad_client/tests/initial_settings_frame.cc
@@ -33,6 +33,7 @@ static void verifier(grpc_server* server, grpc_completion_queue* cq,
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
/* various partial prefixes */
GRPC_RUN_BAD_CLIENT_TEST(verifier, nullptr, PFX_STR "\x00",
@@ -106,5 +107,6 @@ int main(int argc, char** argv) {
PFX_STR ONE_SETTING_HDR "\x00\x99\x00\x00\x00\x00",
GRPC_BAD_CLIENT_DISCONNECT);
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/bad_client/tests/server_registered_method.cc b/test/core/bad_client/tests/server_registered_method.cc
index 6613c94b41..c2dc9c66af 100644
--- a/test/core/bad_client/tests/server_registered_method.cc
+++ b/test/core/bad_client/tests/server_registered_method.cc
@@ -77,6 +77,7 @@ static void verifier_fails(grpc_server* server, grpc_completion_queue* cq,
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
/* body generated with
* tools/codegen/core/gen_server_registered_method_bad_client_test_body.py */
@@ -123,5 +124,6 @@ int main(int argc, char** argv) {
"\x00\x00\x07\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00",
0);
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/bad_client/tests/simple_request.cc b/test/core/bad_client/tests/simple_request.cc
index 9f4a03e69b..c80fc5cb4a 100644
--- a/test/core/bad_client/tests/simple_request.cc
+++ b/test/core/bad_client/tests/simple_request.cc
@@ -20,6 +20,8 @@
#include <string.h>
+#include <grpc/grpc.h>
+
#include "src/core/lib/surface/server.h"
#include "test/core/end2end/cq_verifier.h"
@@ -122,6 +124,7 @@ static void failure_verifier(grpc_server* server, grpc_completion_queue* cq,
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
/* basic request: check that things are working */
GRPC_RUN_BAD_CLIENT_TEST(verifier, nullptr, PFX_STR, 0);
@@ -164,5 +167,6 @@ int main(int argc, char** argv) {
GRPC_RUN_BAD_CLIENT_TEST(failure_verifier, nullptr,
PFX_STR "\x00\x00\x00\x03\x10\x00\x00\x00\x01", 0);
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/bad_client/tests/unknown_frame.cc b/test/core/bad_client/tests/unknown_frame.cc
index d962a4244d..b1b618a43f 100644
--- a/test/core/bad_client/tests/unknown_frame.cc
+++ b/test/core/bad_client/tests/unknown_frame.cc
@@ -33,6 +33,7 @@ static void verifier(grpc_server* server, grpc_completion_queue* cq,
}
int main(int argc, char** argv) {
+ grpc_init();
grpc_test_init(argc, argv);
/* test adding prioritization data */
@@ -40,5 +41,6 @@ int main(int argc, char** argv) {
PFX_STR "\x00\x00\x00\x88\x00\x00\x00\x00\x01",
GRPC_BAD_CLIENT_DISCONNECT);
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/bad_client/tests/window_overflow.cc b/test/core/bad_client/tests/window_overflow.cc
index f4bd81828b..ed8279c951 100644
--- a/test/core/bad_client/tests/window_overflow.cc
+++ b/test/core/bad_client/tests/window_overflow.cc
@@ -20,6 +20,7 @@
#include <string.h>
+#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include "src/core/lib/surface/server.h"
@@ -72,6 +73,7 @@ int main(int argc, char** argv) {
#define SEND_SIZE (6 * 1024 * 1024)
#define NUM_FRAMES (SEND_SIZE / FRAME_SIZE + 1)
grpc_test_init(argc, argv);
+ grpc_init();
addbuf(PFX_STR, sizeof(PFX_STR) - 1);
for (i = 0; i < NUM_FRAMES; i++) {
@@ -93,6 +95,7 @@ int main(int argc, char** argv) {
grpc_run_bad_client_test(verifier, nullptr, g_buffer, g_count,
GRPC_BAD_CLIENT_LARGE_REQUEST);
gpr_free(g_buffer);
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/client_channel/parse_address_test.cc b/test/core/client_channel/parse_address_test.cc
index f64b092743..21c86d01f1 100644
--- a/test/core/client_channel/parse_address_test.cc
+++ b/test/core/client_channel/parse_address_test.cc
@@ -24,6 +24,7 @@
#include <sys/un.h>
#endif
+#include <grpc/grpc.h>
#include <grpc/support/log.h>
#include "src/core/lib/iomgr/exec_ctx.h"
@@ -90,9 +91,12 @@ static void test_grpc_parse_ipv6(const char* uri_text, const char* host,
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
test_grpc_parse_unix("unix:/path/name", "/path/name");
test_grpc_parse_ipv4("ipv4:192.0.2.1:12345", "192.0.2.1", 12345);
test_grpc_parse_ipv6("ipv6:[2001:db8::1]:12345", "2001:db8::1", 12345, 0);
test_grpc_parse_ipv6("ipv6:[2001:db8::1%252]:12345", "2001:db8::1", 12345, 2);
+
+ grpc_shutdown();
}
diff --git a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc
index 08ce148efe..f6d7731a6d 100644
--- a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc
+++ b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc
@@ -147,29 +147,31 @@ int main(int argc, char** argv) {
grpc_dns_lookup_ares = my_dns_lookup_ares;
grpc_channel_args* result = (grpc_channel_args*)1;
- grpc_core::ExecCtx _local_exec_ctx;
- grpc_resolver* resolver = create_resolver("dns:test");
- gpr_event ev1;
- gpr_event_init(&ev1);
- call_resolver_next_after_locking(
- resolver, &result,
- GRPC_CLOSURE_CREATE(on_done, &ev1, grpc_schedule_on_exec_ctx));
- grpc_core::ExecCtx::Get()->Flush();
- GPR_ASSERT(wait_loop(5, &ev1));
- GPR_ASSERT(result == nullptr);
-
- gpr_event ev2;
- gpr_event_init(&ev2);
- call_resolver_next_after_locking(
- resolver, &result,
- GRPC_CLOSURE_CREATE(on_done, &ev2, grpc_schedule_on_exec_ctx));
- grpc_core::ExecCtx::Get()->Flush();
- GPR_ASSERT(wait_loop(30, &ev2));
- GPR_ASSERT(result != nullptr);
-
- grpc_channel_args_destroy(result);
- GRPC_RESOLVER_UNREF(resolver, "test");
- GRPC_COMBINER_UNREF(g_combiner, "test");
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ grpc_resolver* resolver = create_resolver("dns:test");
+ gpr_event ev1;
+ gpr_event_init(&ev1);
+ call_resolver_next_after_locking(
+ resolver, &result,
+ GRPC_CLOSURE_CREATE(on_done, &ev1, grpc_schedule_on_exec_ctx));
+ grpc_core::ExecCtx::Get()->Flush();
+ GPR_ASSERT(wait_loop(5, &ev1));
+ GPR_ASSERT(result == nullptr);
+
+ gpr_event ev2;
+ gpr_event_init(&ev2);
+ call_resolver_next_after_locking(
+ resolver, &result,
+ GRPC_CLOSURE_CREATE(on_done, &ev2, grpc_schedule_on_exec_ctx));
+ grpc_core::ExecCtx::Get()->Flush();
+ GPR_ASSERT(wait_loop(30, &ev2));
+ GPR_ASSERT(result != nullptr);
+
+ grpc_channel_args_destroy(result);
+ GRPC_RESOLVER_UNREF(resolver, "test");
+ GRPC_COMBINER_UNREF(g_combiner, "test");
+ }
grpc_shutdown();
gpr_mu_destroy(&g_mu);
diff --git a/test/core/client_channel/uri_fuzzer_test.cc b/test/core/client_channel/uri_fuzzer_test.cc
index 484676e472..8f1f5e2eda 100644
--- a/test/core/client_channel/uri_fuzzer_test.cc
+++ b/test/core/client_channel/uri_fuzzer_test.cc
@@ -20,6 +20,7 @@
#include <stdint.h>
#include <string.h>
+#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include "src/core/ext/filters/client_channel/uri_parser.h"
@@ -33,12 +34,18 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
memcpy(s, data, size);
s[size] = 0;
- grpc_core::ExecCtx _local_exec_ctx;
- grpc_uri* x;
- if ((x = grpc_uri_parse(s, 1))) {
- grpc_uri_destroy(x);
+ grpc_init();
+
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ grpc_uri* x;
+ if ((x = grpc_uri_parse(s, 1))) {
+ grpc_uri_destroy(x);
+ }
+
+ gpr_free(s);
}
- gpr_free(s);
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/client_channel/uri_parser_test.cc b/test/core/client_channel/uri_parser_test.cc
index 1694f2363d..33cf82d17c 100644
--- a/test/core/client_channel/uri_parser_test.cc
+++ b/test/core/client_channel/uri_parser_test.cc
@@ -20,6 +20,7 @@
#include <string.h>
+#include <grpc/grpc.h>
#include <grpc/support/log.h>
#include "src/core/lib/iomgr/exec_ctx.h"
@@ -119,6 +120,7 @@ static void test_query_parts() {
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
test_succeeds("http://www.google.com", "http", "www.google.com", "", "", "");
test_succeeds("dns:///foo", "dns", "", "/foo", "", "");
test_succeeds("http://www.google.com:90", "http", "www.google.com:90", "", "",
@@ -146,5 +148,6 @@ int main(int argc, char** argv) {
test_fails("http://foo?bar#lol#");
test_query_parts();
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/end2end/bad_server_response_test.cc b/test/core/end2end/bad_server_response_test.cc
index d323783925..b65ba522ac 100644
--- a/test/core/end2end/bad_server_response_test.cc
+++ b/test/core/end2end/bad_server_response_test.cc
@@ -298,6 +298,7 @@ static void run_test(const char* response_payload,
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
/* status defined in hpack static table */
run_test(HTTP2_RESP(204), sizeof(HTTP2_RESP(204)) - 1, GRPC_STATUS_CANCELLED,
@@ -336,5 +337,6 @@ int main(int argc, char** argv) {
run_test(HTTP1_RESP, sizeof(HTTP1_RESP) - 1, GRPC_STATUS_UNAVAILABLE,
HTTP1_DETAIL_MSG);
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/end2end/fixtures/h2_sockpair+trace.cc b/test/core/end2end/fixtures/h2_sockpair+trace.cc
index b8b18e2a95..574b755539 100644
--- a/test/core/end2end/fixtures/h2_sockpair+trace.cc
+++ b/test/core/end2end/fixtures/h2_sockpair+trace.cc
@@ -126,7 +126,6 @@ static grpc_end2end_test_config configs[] = {
int main(int argc, char** argv) {
size_t i;
- grpc_core::ExecCtx _local_exec_ctx;
/* force tracing on, with a value to force many
code paths in trace.c to be taken */
diff --git a/test/core/end2end/fuzzers/api_fuzzer.cc b/test/core/end2end/fuzzers/api_fuzzer.cc
index ce916bd341..f3127e92cc 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.cc
+++ b/test/core/end2end/fuzzers/api_fuzzer.cc
@@ -745,8 +745,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
input_stream inp = {data, data + size};
grpc_tcp_client_connect_impl = my_tcp_client_connect;
gpr_now_impl = now_impl;
- grpc_init();
grpc_timer_manager_set_threading(false);
+ grpc_init();
{
grpc_core::ExecCtx _local_exec_ctx;
grpc_executor_set_threading(false);
diff --git a/test/core/end2end/fuzzers/client_fuzzer.cc b/test/core/end2end/fuzzers/client_fuzzer.cc
index 1298dd4e4f..e2fb13936a 100644
--- a/test/core/end2end/fuzzers/client_fuzzer.cc
+++ b/test/core/end2end/fuzzers/client_fuzzer.cc
@@ -43,111 +43,114 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
if (squelch) gpr_set_log_function(dont_log);
if (leak_check) grpc_memory_counters_init();
grpc_init();
- grpc_core::ExecCtx _local_exec_ctx;
- grpc_executor_set_threading(false);
-
- grpc_resource_quota* resource_quota =
- grpc_resource_quota_create("client_fuzzer");
- grpc_endpoint* mock_endpoint =
- grpc_mock_endpoint_create(discard_write, resource_quota);
- grpc_resource_quota_unref_internal(resource_quota);
-
- grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr);
- grpc_transport* transport =
- grpc_create_chttp2_transport(nullptr, mock_endpoint, 1);
- grpc_chttp2_transport_start_reading(transport, nullptr);
-
- grpc_channel* channel = grpc_channel_create(
- "test-target", nullptr, GRPC_CLIENT_DIRECT_CHANNEL, transport);
- grpc_slice host = grpc_slice_from_static_string("localhost");
- grpc_call* call = grpc_channel_create_call(
- channel, nullptr, 0, cq, grpc_slice_from_static_string("/foo"), &host,
- gpr_inf_future(GPR_CLOCK_REALTIME), nullptr);
-
- grpc_metadata_array initial_metadata_recv;
- grpc_metadata_array_init(&initial_metadata_recv);
- grpc_byte_buffer* response_payload_recv = nullptr;
- grpc_metadata_array trailing_metadata_recv;
- grpc_metadata_array_init(&trailing_metadata_recv);
- grpc_status_code status;
- grpc_slice details = grpc_empty_slice();
-
- grpc_op ops[6];
- memset(ops, 0, sizeof(ops));
- grpc_op* op = ops;
- op->op = GRPC_OP_SEND_INITIAL_METADATA;
- op->data.send_initial_metadata.count = 0;
- op->flags = 0;
- op->reserved = nullptr;
- op++;
- op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT;
- op->flags = 0;
- op->reserved = nullptr;
- op++;
- op->op = GRPC_OP_RECV_INITIAL_METADATA;
- op->data.recv_initial_metadata.recv_initial_metadata = &initial_metadata_recv;
- op->flags = 0;
- op->reserved = nullptr;
- op++;
- op->op = GRPC_OP_RECV_MESSAGE;
- op->data.recv_message.recv_message = &response_payload_recv;
- op->flags = 0;
- op->reserved = nullptr;
- 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->flags = 0;
- op->reserved = nullptr;
- op++;
- grpc_call_error error =
- grpc_call_start_batch(call, ops, (size_t)(op - ops), tag(1), nullptr);
- int requested_calls = 1;
- GPR_ASSERT(GRPC_CALL_OK == error);
-
- grpc_mock_endpoint_put_read(
- mock_endpoint, grpc_slice_from_copied_buffer((const char*)data, size));
-
- grpc_event ev;
- while (1) {
- grpc_core::ExecCtx::Get()->Flush();
- ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME),
- nullptr);
- switch (ev.type) {
- case GRPC_QUEUE_TIMEOUT:
- goto done;
- case GRPC_QUEUE_SHUTDOWN:
- break;
- case GRPC_OP_COMPLETE:
- requested_calls--;
- break;
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ grpc_executor_set_threading(false);
+
+ grpc_resource_quota* resource_quota =
+ grpc_resource_quota_create("client_fuzzer");
+ grpc_endpoint* mock_endpoint =
+ grpc_mock_endpoint_create(discard_write, resource_quota);
+ grpc_resource_quota_unref_internal(resource_quota);
+
+ grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr);
+ grpc_transport* transport =
+ grpc_create_chttp2_transport(nullptr, mock_endpoint, 1);
+ grpc_chttp2_transport_start_reading(transport, nullptr);
+
+ grpc_channel* channel = grpc_channel_create(
+ "test-target", nullptr, GRPC_CLIENT_DIRECT_CHANNEL, transport);
+ grpc_slice host = grpc_slice_from_static_string("localhost");
+ grpc_call* call = grpc_channel_create_call(
+ channel, nullptr, 0, cq, grpc_slice_from_static_string("/foo"), &host,
+ gpr_inf_future(GPR_CLOCK_REALTIME), nullptr);
+
+ grpc_metadata_array initial_metadata_recv;
+ grpc_metadata_array_init(&initial_metadata_recv);
+ grpc_byte_buffer* response_payload_recv = nullptr;
+ grpc_metadata_array trailing_metadata_recv;
+ grpc_metadata_array_init(&trailing_metadata_recv);
+ grpc_status_code status;
+ grpc_slice details = grpc_empty_slice();
+
+ grpc_op ops[6];
+ memset(ops, 0, sizeof(ops));
+ grpc_op* op = ops;
+ op->op = GRPC_OP_SEND_INITIAL_METADATA;
+ op->data.send_initial_metadata.count = 0;
+ op->flags = 0;
+ op->reserved = nullptr;
+ op++;
+ op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT;
+ op->flags = 0;
+ op->reserved = nullptr;
+ op++;
+ op->op = GRPC_OP_RECV_INITIAL_METADATA;
+ op->data.recv_initial_metadata.recv_initial_metadata =
+ &initial_metadata_recv;
+ op->flags = 0;
+ op->reserved = nullptr;
+ op++;
+ op->op = GRPC_OP_RECV_MESSAGE;
+ op->data.recv_message.recv_message = &response_payload_recv;
+ op->flags = 0;
+ op->reserved = nullptr;
+ 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->flags = 0;
+ op->reserved = nullptr;
+ op++;
+ grpc_call_error error =
+ grpc_call_start_batch(call, ops, (size_t)(op - ops), tag(1), nullptr);
+ int requested_calls = 1;
+ GPR_ASSERT(GRPC_CALL_OK == error);
+
+ grpc_mock_endpoint_put_read(
+ mock_endpoint, grpc_slice_from_copied_buffer((const char*)data, size));
+
+ grpc_event ev;
+ while (1) {
+ grpc_core::ExecCtx::Get()->Flush();
+ ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME),
+ nullptr);
+ switch (ev.type) {
+ case GRPC_QUEUE_TIMEOUT:
+ goto done;
+ case GRPC_QUEUE_SHUTDOWN:
+ break;
+ case GRPC_OP_COMPLETE:
+ requested_calls--;
+ break;
+ }
}
- }
-done:
- if (requested_calls) {
- grpc_call_cancel(call, nullptr);
- }
- for (int i = 0; i < requested_calls; i++) {
- ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME),
- nullptr);
- GPR_ASSERT(ev.type == GRPC_OP_COMPLETE);
- }
- grpc_completion_queue_shutdown(cq);
- for (int i = 0; i < requested_calls; i++) {
- ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME),
- nullptr);
- GPR_ASSERT(ev.type == GRPC_QUEUE_SHUTDOWN);
- }
- grpc_call_unref(call);
- grpc_completion_queue_destroy(cq);
- grpc_metadata_array_destroy(&initial_metadata_recv);
- grpc_metadata_array_destroy(&trailing_metadata_recv);
- grpc_slice_unref(details);
- grpc_channel_destroy(channel);
- if (response_payload_recv != nullptr) {
- grpc_byte_buffer_destroy(response_payload_recv);
+ done:
+ if (requested_calls) {
+ grpc_call_cancel(call, nullptr);
+ }
+ for (int i = 0; i < requested_calls; i++) {
+ ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME),
+ nullptr);
+ GPR_ASSERT(ev.type == GRPC_OP_COMPLETE);
+ }
+ grpc_completion_queue_shutdown(cq);
+ for (int i = 0; i < requested_calls; i++) {
+ ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME),
+ nullptr);
+ GPR_ASSERT(ev.type == GRPC_QUEUE_SHUTDOWN);
+ }
+ grpc_call_unref(call);
+ grpc_completion_queue_destroy(cq);
+ grpc_metadata_array_destroy(&initial_metadata_recv);
+ grpc_metadata_array_destroy(&trailing_metadata_recv);
+ grpc_slice_unref(details);
+ grpc_channel_destroy(channel);
+ if (response_payload_recv != nullptr) {
+ grpc_byte_buffer_destroy(response_payload_recv);
+ }
}
grpc_shutdown();
if (leak_check) {
diff --git a/test/core/end2end/fuzzers/server_fuzzer.cc b/test/core/end2end/fuzzers/server_fuzzer.cc
index 2cb6c984c5..4506ff5c0b 100644
--- a/test/core/end2end/fuzzers/server_fuzzer.cc
+++ b/test/core/end2end/fuzzers/server_fuzzer.cc
@@ -41,80 +41,82 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
if (squelch) gpr_set_log_function(dont_log);
if (leak_check) grpc_memory_counters_init();
grpc_init();
- grpc_core::ExecCtx _local_exec_ctx;
- grpc_executor_set_threading(false);
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ grpc_executor_set_threading(false);
- grpc_resource_quota* resource_quota =
- grpc_resource_quota_create("server_fuzzer");
- grpc_endpoint* mock_endpoint =
- grpc_mock_endpoint_create(discard_write, resource_quota);
- grpc_resource_quota_unref_internal(resource_quota);
- grpc_mock_endpoint_put_read(
- mock_endpoint, grpc_slice_from_copied_buffer((const char*)data, size));
+ grpc_resource_quota* resource_quota =
+ grpc_resource_quota_create("server_fuzzer");
+ grpc_endpoint* mock_endpoint =
+ grpc_mock_endpoint_create(discard_write, resource_quota);
+ grpc_resource_quota_unref_internal(resource_quota);
+ grpc_mock_endpoint_put_read(
+ mock_endpoint, grpc_slice_from_copied_buffer((const char*)data, size));
- grpc_server* server = grpc_server_create(nullptr, nullptr);
- grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr);
- grpc_server_register_completion_queue(server, cq, nullptr);
- // TODO(ctiller): add registered methods (one for POST, one for PUT)
- // void *registered_method =
- // grpc_server_register_method(server, "/reg", NULL, 0);
- grpc_server_start(server);
- grpc_transport* transport =
- grpc_create_chttp2_transport(nullptr, mock_endpoint, 0);
- grpc_server_setup_transport(server, transport, nullptr, nullptr);
- grpc_chttp2_transport_start_reading(transport, nullptr);
+ grpc_server* server = grpc_server_create(nullptr, nullptr);
+ grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr);
+ grpc_server_register_completion_queue(server, cq, nullptr);
+ // TODO(ctiller): add registered methods (one for POST, one for PUT)
+ // void *registered_method =
+ // grpc_server_register_method(server, "/reg", NULL, 0);
+ grpc_server_start(server);
+ grpc_transport* transport =
+ grpc_create_chttp2_transport(nullptr, mock_endpoint, 0);
+ grpc_server_setup_transport(server, transport, nullptr, nullptr);
+ grpc_chttp2_transport_start_reading(transport, nullptr);
- grpc_call* call1 = nullptr;
- grpc_call_details call_details1;
- grpc_metadata_array request_metadata1;
- grpc_call_details_init(&call_details1);
- grpc_metadata_array_init(&request_metadata1);
- int requested_calls = 0;
+ grpc_call* call1 = nullptr;
+ grpc_call_details call_details1;
+ grpc_metadata_array request_metadata1;
+ grpc_call_details_init(&call_details1);
+ grpc_metadata_array_init(&request_metadata1);
+ int requested_calls = 0;
- GPR_ASSERT(GRPC_CALL_OK ==
- grpc_server_request_call(server, &call1, &call_details1,
- &request_metadata1, cq, cq, tag(1)));
- requested_calls++;
+ GPR_ASSERT(GRPC_CALL_OK ==
+ grpc_server_request_call(server, &call1, &call_details1,
+ &request_metadata1, cq, cq, tag(1)));
+ requested_calls++;
- grpc_event ev;
- while (1) {
- grpc_core::ExecCtx::Get()->Flush();
- ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME),
- nullptr);
- switch (ev.type) {
- case GRPC_QUEUE_TIMEOUT:
- goto done;
- case GRPC_QUEUE_SHUTDOWN:
- break;
- case GRPC_OP_COMPLETE:
- switch (detag(ev.tag)) {
- case 1:
- requested_calls--;
- // TODO(ctiller): keep reading that call!
- break;
- }
+ grpc_event ev;
+ while (1) {
+ grpc_core::ExecCtx::Get()->Flush();
+ ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME),
+ nullptr);
+ switch (ev.type) {
+ case GRPC_QUEUE_TIMEOUT:
+ goto done;
+ case GRPC_QUEUE_SHUTDOWN:
+ break;
+ case GRPC_OP_COMPLETE:
+ switch (detag(ev.tag)) {
+ case 1:
+ requested_calls--;
+ // TODO(ctiller): keep reading that call!
+ break;
+ }
+ }
}
- }
-done:
- if (call1 != nullptr) grpc_call_unref(call1);
- grpc_call_details_destroy(&call_details1);
- grpc_metadata_array_destroy(&request_metadata1);
- grpc_server_shutdown_and_notify(server, cq, tag(0xdead));
- grpc_server_cancel_all_calls(server);
- for (int i = 0; i <= requested_calls; i++) {
- ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME),
- nullptr);
- GPR_ASSERT(ev.type == GRPC_OP_COMPLETE);
- }
- grpc_completion_queue_shutdown(cq);
- for (int i = 0; i <= requested_calls; i++) {
- ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME),
- nullptr);
- GPR_ASSERT(ev.type == GRPC_QUEUE_SHUTDOWN);
+ done:
+ if (call1 != nullptr) grpc_call_unref(call1);
+ grpc_call_details_destroy(&call_details1);
+ grpc_metadata_array_destroy(&request_metadata1);
+ grpc_server_shutdown_and_notify(server, cq, tag(0xdead));
+ grpc_server_cancel_all_calls(server);
+ for (int i = 0; i <= requested_calls; i++) {
+ ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME),
+ nullptr);
+ GPR_ASSERT(ev.type == GRPC_OP_COMPLETE);
+ }
+ grpc_completion_queue_shutdown(cq);
+ for (int i = 0; i <= requested_calls; i++) {
+ ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME),
+ nullptr);
+ GPR_ASSERT(ev.type == GRPC_QUEUE_SHUTDOWN);
+ }
+ grpc_server_destroy(server);
+ grpc_completion_queue_destroy(cq);
}
- grpc_server_destroy(server);
- grpc_completion_queue_destroy(cq);
grpc_shutdown();
if (leak_check) {
counters = grpc_memory_counters_snapshot();
diff --git a/test/core/http/format_request_test.cc b/test/core/http/format_request_test.cc
index 684738a997..353e138b2a 100644
--- a/test/core/http/format_request_test.cc
+++ b/test/core/http/format_request_test.cc
@@ -139,11 +139,13 @@ static void test_format_post_request_content_type_override(void) {
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
test_format_get_request();
test_format_post_request();
test_format_post_request_no_body();
test_format_post_request_content_type_override();
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/http/httpcli_test.cc b/test/core/http/httpcli_test.cc
index d354ad3570..ed5c03558f 100644
--- a/test/core/http/httpcli_test.cc
+++ b/test/core/http/httpcli_test.cc
@@ -141,62 +141,63 @@ static void destroy_pops(void* p, grpc_error* error) {
}
int main(int argc, char** argv) {
- grpc_closure destroyed;
- grpc_core::ExecCtx _local_exec_ctx;
gpr_subprocess* server;
- char* me = argv[0];
- char* lslash = strrchr(me, '/');
- char* args[4];
- int port = grpc_pick_unused_port_or_die();
- int arg_shift = 0;
- /* figure out where we are */
- char* root;
- if (lslash) {
- root = static_cast<char*>(gpr_malloc((size_t)(lslash - me + 1)));
- memcpy(root, me, (size_t)(lslash - me));
- root[lslash - me] = 0;
- } else {
- root = gpr_strdup(".");
- }
-
- GPR_ASSERT(argc <= 2);
- if (argc == 2) {
- args[0] = gpr_strdup(argv[1]);
- } else {
- arg_shift = 1;
- gpr_asprintf(&args[0], "%s/../../tools/distrib/python_wrapper.sh", root);
- gpr_asprintf(&args[1], "%s/../../test/core/http/test_server.py", root);
- }
-
- /* start the server */
- args[1 + arg_shift] = const_cast<char*>("--port");
- gpr_asprintf(&args[2 + arg_shift], "%d", port);
- server = gpr_subprocess_create(3 + arg_shift, (const char**)args);
- GPR_ASSERT(server);
- gpr_free(args[0]);
- if (arg_shift) gpr_free(args[1]);
- gpr_free(args[2 + arg_shift]);
- gpr_free(root);
-
- gpr_sleep_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
- gpr_time_from_seconds(5, GPR_TIMESPAN)));
-
grpc_test_init(argc, argv);
grpc_init();
- grpc_httpcli_context_init(&g_context);
- grpc_pollset* pollset =
- static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
- grpc_pollset_init(pollset, &g_mu);
- g_pops = grpc_polling_entity_create_from_pollset(pollset);
-
- test_get(port);
- test_post(port);
-
- grpc_httpcli_context_destroy(&g_context);
- GRPC_CLOSURE_INIT(&destroyed, destroy_pops, &g_pops,
- grpc_schedule_on_exec_ctx);
- grpc_pollset_shutdown(grpc_polling_entity_pollset(&g_pops), &destroyed);
-
+ {
+ grpc_closure destroyed;
+ grpc_core::ExecCtx _local_exec_ctx;
+ char* me = argv[0];
+ char* lslash = strrchr(me, '/');
+ char* args[4];
+ int port = grpc_pick_unused_port_or_die();
+ int arg_shift = 0;
+ /* figure out where we are */
+ char* root;
+ if (lslash) {
+ root = static_cast<char*>(gpr_malloc((size_t)(lslash - me + 1)));
+ memcpy(root, me, (size_t)(lslash - me));
+ root[lslash - me] = 0;
+ } else {
+ root = gpr_strdup(".");
+ }
+
+ GPR_ASSERT(argc <= 2);
+ if (argc == 2) {
+ args[0] = gpr_strdup(argv[1]);
+ } else {
+ arg_shift = 1;
+ gpr_asprintf(&args[0], "%s/../../tools/distrib/python_wrapper.sh", root);
+ gpr_asprintf(&args[1], "%s/../../test/core/http/test_server.py", root);
+ }
+
+ /* start the server */
+ args[1 + arg_shift] = const_cast<char*>("--port");
+ gpr_asprintf(&args[2 + arg_shift], "%d", port);
+ server = gpr_subprocess_create(3 + arg_shift, (const char**)args);
+ GPR_ASSERT(server);
+ gpr_free(args[0]);
+ if (arg_shift) gpr_free(args[1]);
+ gpr_free(args[2 + arg_shift]);
+ gpr_free(root);
+
+ gpr_sleep_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
+ gpr_time_from_seconds(5, GPR_TIMESPAN)));
+
+ grpc_httpcli_context_init(&g_context);
+ grpc_pollset* pollset =
+ static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
+ grpc_pollset_init(pollset, &g_mu);
+ g_pops = grpc_polling_entity_create_from_pollset(pollset);
+
+ test_get(port);
+ test_post(port);
+
+ grpc_httpcli_context_destroy(&g_context);
+ GRPC_CLOSURE_INIT(&destroyed, destroy_pops, &g_pops,
+ grpc_schedule_on_exec_ctx);
+ grpc_pollset_shutdown(grpc_polling_entity_pollset(&g_pops), &destroyed);
+ }
grpc_shutdown();
gpr_free(grpc_polling_entity_pollset(&g_pops));
diff --git a/test/core/http/httpscli_test.cc b/test/core/http/httpscli_test.cc
index 76bbd2d366..ee2bff18db 100644
--- a/test/core/http/httpscli_test.cc
+++ b/test/core/http/httpscli_test.cc
@@ -195,11 +195,12 @@ int main(int argc, char** argv) {
test_get(port);
test_post(port);
- grpc_httpcli_context_destroy(&g_context);
- GRPC_CLOSURE_INIT(&destroyed, destroy_pops, &g_pops,
- grpc_schedule_on_exec_ctx);
- grpc_pollset_shutdown(grpc_polling_entity_pollset(&g_pops), &destroyed);
-
+ {
+ grpc_httpcli_context_destroy(&g_context);
+ GRPC_CLOSURE_INIT(&destroyed, destroy_pops, &g_pops,
+ grpc_schedule_on_exec_ctx);
+ grpc_pollset_shutdown(grpc_polling_entity_pollset(&g_pops), &destroyed);
+ }
grpc_shutdown();
gpr_free(grpc_polling_entity_pollset(&g_pops));
diff --git a/test/core/http/parser_test.cc b/test/core/http/parser_test.cc
index 0b60e369b7..18f19856bd 100644
--- a/test/core/http/parser_test.cc
+++ b/test/core/http/parser_test.cc
@@ -21,6 +21,7 @@
#include <stdarg.h>
#include <string.h>
+#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
@@ -217,6 +218,7 @@ int main(int argc, char** argv) {
char *tmp1, *tmp2;
grpc_test_init(argc, argv);
+ grpc_init();
for (i = 0; i < GPR_ARRAY_SIZE(split_modes); i++) {
test_succeeds(split_modes[i],
@@ -300,5 +302,6 @@ int main(int argc, char** argv) {
gpr_free(tmp2);
}
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/iomgr/endpoint_pair_test.cc b/test/core/iomgr/endpoint_pair_test.cc
index 658971b9fb..d895a270ad 100644
--- a/test/core/iomgr/endpoint_pair_test.cc
+++ b/test/core/iomgr/endpoint_pair_test.cc
@@ -59,16 +59,17 @@ static void destroy_pollset(void* p, grpc_error* error) {
int main(int argc, char** argv) {
grpc_closure destroyed;
- grpc_core::ExecCtx _local_exec_ctx;
grpc_test_init(argc, argv);
grpc_init();
- g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
- grpc_pollset_init(g_pollset, &g_mu);
- grpc_endpoint_tests(configs[0], g_pollset, g_mu);
- GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
- grpc_schedule_on_exec_ctx);
- grpc_pollset_shutdown(g_pollset, &destroyed);
-
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
+ grpc_pollset_init(g_pollset, &g_mu);
+ grpc_endpoint_tests(configs[0], g_pollset, g_mu);
+ GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
+ grpc_schedule_on_exec_ctx);
+ grpc_pollset_shutdown(g_pollset, &destroyed);
+ }
grpc_shutdown();
gpr_free(g_pollset);
diff --git a/test/core/iomgr/ev_epollsig_linux_test.cc b/test/core/iomgr/ev_epollsig_linux_test.cc
index ae77834401..45c96ce12d 100644
--- a/test/core/iomgr/ev_epollsig_linux_test.cc
+++ b/test/core/iomgr/ev_epollsig_linux_test.cc
@@ -301,17 +301,19 @@ int main(int argc, char** argv) {
const char* poll_strategy = nullptr;
grpc_test_init(argc, argv);
grpc_init();
- grpc_core::ExecCtx _local_exec_ctx;
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
- poll_strategy = grpc_get_poll_strategy_name();
- if (poll_strategy != nullptr && strcmp(poll_strategy, "epollsig") == 0) {
- test_add_fd_to_pollset();
- test_threading();
- } else {
- gpr_log(GPR_INFO,
- "Skipping the test. The test is only relevant for 'epollsig' "
- "strategy. and the current strategy is: '%s'",
- poll_strategy);
+ poll_strategy = grpc_get_poll_strategy_name();
+ if (poll_strategy != nullptr && strcmp(poll_strategy, "epollsig") == 0) {
+ test_add_fd_to_pollset();
+ test_threading();
+ } else {
+ gpr_log(GPR_INFO,
+ "Skipping the test. The test is only relevant for 'epollsig' "
+ "strategy. and the current strategy is: '%s'",
+ poll_strategy);
+ }
}
grpc_shutdown();
diff --git a/test/core/iomgr/fd_conservation_posix_test.cc b/test/core/iomgr/fd_conservation_posix_test.cc
index 11e664d8ff..f4c8e5a21f 100644
--- a/test/core/iomgr/fd_conservation_posix_test.cc
+++ b/test/core/iomgr/fd_conservation_posix_test.cc
@@ -31,25 +31,27 @@ int main(int argc, char** argv) {
grpc_test_init(argc, argv);
grpc_init();
- grpc_core::ExecCtx _local_exec_ctx;
-
- /* set max # of file descriptors to a low value, and
- verify we can create and destroy many more than this number
- of descriptors */
- rlim.rlim_cur = rlim.rlim_max = 10;
- GPR_ASSERT(0 == setrlimit(RLIMIT_NOFILE, &rlim));
- grpc_resource_quota* resource_quota =
- grpc_resource_quota_create("fd_conservation_posix_test");
-
- for (i = 0; i < 100; i++) {
- p = grpc_iomgr_create_endpoint_pair("test", NULL);
- grpc_endpoint_destroy(p.client);
- grpc_endpoint_destroy(p.server);
- grpc_core::ExecCtx::Get()->Flush();
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+
+ /* set max # of file descriptors to a low value, and
+ verify we can create and destroy many more than this number
+ of descriptors */
+ rlim.rlim_cur = rlim.rlim_max = 10;
+ GPR_ASSERT(0 == setrlimit(RLIMIT_NOFILE, &rlim));
+ grpc_resource_quota* resource_quota =
+ grpc_resource_quota_create("fd_conservation_posix_test");
+
+ for (i = 0; i < 100; i++) {
+ p = grpc_iomgr_create_endpoint_pair("test", NULL);
+ grpc_endpoint_destroy(p.client);
+ grpc_endpoint_destroy(p.server);
+ grpc_core::ExecCtx::Get()->Flush();
+ }
+
+ grpc_resource_quota_unref(resource_quota);
}
- grpc_resource_quota_unref(resource_quota);
-
grpc_shutdown();
return 0;
}
diff --git a/test/core/iomgr/fd_posix_test.cc b/test/core/iomgr/fd_posix_test.cc
index 3a9d801169..8eda76cf9b 100644
--- a/test/core/iomgr/fd_posix_test.cc
+++ b/test/core/iomgr/fd_posix_test.cc
@@ -513,19 +513,20 @@ static void destroy_pollset(void* p, grpc_error* error) {
int main(int argc, char** argv) {
grpc_closure destroyed;
- grpc_core::ExecCtx _local_exec_ctx;
grpc_test_init(argc, argv);
grpc_init();
- g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
- grpc_pollset_init(g_pollset, &g_mu);
- test_grpc_fd();
- test_grpc_fd_change();
- GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
- grpc_schedule_on_exec_ctx);
- grpc_pollset_shutdown(g_pollset, &destroyed);
- grpc_core::ExecCtx::Get()->Flush();
- gpr_free(g_pollset);
-
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
+ grpc_pollset_init(g_pollset, &g_mu);
+ test_grpc_fd();
+ test_grpc_fd_change();
+ GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
+ grpc_schedule_on_exec_ctx);
+ grpc_pollset_shutdown(g_pollset, &destroyed);
+ grpc_core::ExecCtx::Get()->Flush();
+ gpr_free(g_pollset);
+ }
grpc_shutdown();
return 0;
}
diff --git a/test/core/iomgr/load_file_test.cc b/test/core/iomgr/load_file_test.cc
index 9f360badcc..797d0ef1a4 100644
--- a/test/core/iomgr/load_file_test.cc
+++ b/test/core/iomgr/load_file_test.cc
@@ -19,6 +19,7 @@
#include <stdio.h>
#include <string.h>
+#include <grpc/grpc.h>
#include <grpc/slice.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
@@ -152,9 +153,11 @@ static void test_load_big_file(void) {
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
test_load_empty_file();
test_load_failure();
test_load_small_file();
test_load_big_file();
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/iomgr/pollset_set_test.cc b/test/core/iomgr/pollset_set_test.cc
index 502b40f2cf..cf9c82b482 100644
--- a/test/core/iomgr/pollset_set_test.cc
+++ b/test/core/iomgr/pollset_set_test.cc
@@ -421,24 +421,25 @@ void pollset_set_test_empty_pollset() {
}
int main(int argc, char** argv) {
- grpc_core::ExecCtx _local_exec_ctx;
grpc_test_init(argc, argv);
grpc_init();
- const char* poll_strategy = grpc_get_poll_strategy_name();
-
- if (poll_strategy != nullptr &&
- (strcmp(poll_strategy, "epollsig") == 0 ||
- strcmp(poll_strategy, "epoll-threadpool") == 0)) {
- pollset_set_test_basic();
- pollset_set_test_dup_fds();
- pollset_set_test_empty_pollset();
- } else {
- gpr_log(GPR_INFO,
- "Skipping the test. The test is only relevant for 'epoll' "
- "strategy. and the current strategy is: '%s'",
- poll_strategy);
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ const char* poll_strategy = grpc_get_poll_strategy_name();
+
+ if (poll_strategy != nullptr &&
+ (strcmp(poll_strategy, "epollsig") == 0 ||
+ strcmp(poll_strategy, "epoll-threadpool") == 0)) {
+ pollset_set_test_basic();
+ pollset_set_test_dup_fds();
+ pollset_set_test_empty_pollset();
+ } else {
+ gpr_log(GPR_INFO,
+ "Skipping the test. The test is only relevant for 'epoll' "
+ "strategy. and the current strategy is: '%s'",
+ poll_strategy);
+ }
}
-
grpc_shutdown();
return 0;
}
diff --git a/test/core/iomgr/resolve_address_posix_test.cc b/test/core/iomgr/resolve_address_posix_test.cc
index 6fb6f72a00..0ea57e2202 100644
--- a/test/core/iomgr/resolve_address_posix_test.cc
+++ b/test/core/iomgr/resolve_address_posix_test.cc
@@ -156,10 +156,12 @@ static void test_unix_socket_path_name_too_long(void) {
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
grpc_init();
- grpc_core::ExecCtx _local_exec_ctx;
- test_unix_socket();
- test_unix_socket_path_name_too_long();
- grpc_executor_shutdown();
+
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ test_unix_socket();
+ test_unix_socket_path_name_too_long();
+ }
grpc_shutdown();
return 0;
diff --git a/test/core/iomgr/resolve_address_test.cc b/test/core/iomgr/resolve_address_test.cc
index e44d660dad..e6986f332b 100644
--- a/test/core/iomgr/resolve_address_test.cc
+++ b/test/core/iomgr/resolve_address_test.cc
@@ -242,16 +242,18 @@ static void test_unparseable_hostports(void) {
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
grpc_init();
- grpc_core::ExecCtx _local_exec_ctx;
- test_localhost();
- test_default_port();
- test_non_numeric_default_port();
- test_missing_default_port();
- test_ipv6_with_port();
- test_ipv6_without_port();
- test_invalid_ip_addresses();
- test_unparseable_hostports();
- grpc_executor_shutdown();
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ test_localhost();
+ test_default_port();
+ test_non_numeric_default_port();
+ test_missing_default_port();
+ test_ipv6_with_port();
+ test_ipv6_without_port();
+ test_invalid_ip_addresses();
+ test_unparseable_hostports();
+ grpc_executor_shutdown();
+ }
grpc_shutdown();
return 0;
diff --git a/test/core/iomgr/tcp_client_posix_test.cc b/test/core/iomgr/tcp_client_posix_test.cc
index 12295ef180..0cdf30590e 100644
--- a/test/core/iomgr/tcp_client_posix_test.cc
+++ b/test/core/iomgr/tcp_client_posix_test.cc
@@ -188,21 +188,24 @@ static void destroy_pollset(void* p, grpc_error* error) {
int main(int argc, char** argv) {
grpc_closure destroyed;
- grpc_core::ExecCtx _local_exec_ctx;
grpc_test_init(argc, argv);
grpc_init();
- g_pollset_set = grpc_pollset_set_create();
- g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
- grpc_pollset_init(g_pollset, &g_mu);
- grpc_pollset_set_add_pollset(g_pollset_set, g_pollset);
-
- test_succeeds();
- gpr_log(GPR_ERROR, "End of first test");
- test_fails();
- grpc_pollset_set_destroy(g_pollset_set);
- GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
- grpc_schedule_on_exec_ctx);
- grpc_pollset_shutdown(g_pollset, &destroyed);
+
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ g_pollset_set = grpc_pollset_set_create();
+ g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
+ grpc_pollset_init(g_pollset, &g_mu);
+ grpc_pollset_set_add_pollset(g_pollset_set, g_pollset);
+
+ test_succeeds();
+ gpr_log(GPR_ERROR, "End of first test");
+ test_fails();
+ grpc_pollset_set_destroy(g_pollset_set);
+ GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
+ grpc_schedule_on_exec_ctx);
+ grpc_pollset_shutdown(g_pollset, &destroyed);
+ }
grpc_shutdown();
gpr_free(g_pollset);
diff --git a/test/core/iomgr/tcp_posix_test.cc b/test/core/iomgr/tcp_posix_test.cc
index 614ceaa02d..b42fb588eb 100644
--- a/test/core/iomgr/tcp_posix_test.cc
+++ b/test/core/iomgr/tcp_posix_test.cc
@@ -538,18 +538,20 @@ static void destroy_pollset(void* p, grpc_error* error) {
int main(int argc, char** argv) {
grpc_closure destroyed;
- grpc_core::ExecCtx _local_exec_ctx;
grpc_test_init(argc, argv);
grpc_init();
- g_pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size());
- grpc_pollset_init(g_pollset, &g_mu);
- grpc_endpoint_tests(configs[0], g_pollset, g_mu);
- run_tests();
- GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
- grpc_schedule_on_exec_ctx);
- grpc_pollset_shutdown(g_pollset, &destroyed);
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ g_pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size());
+ grpc_pollset_init(g_pollset, &g_mu);
+ grpc_endpoint_tests(configs[0], g_pollset, g_mu);
+ run_tests();
+ GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
+ grpc_schedule_on_exec_ctx);
+ grpc_pollset_shutdown(g_pollset, &destroyed);
- grpc_core::ExecCtx::Get()->Flush();
+ grpc_core::ExecCtx::Get()->Flush();
+ }
grpc_shutdown();
gpr_free(g_pollset);
diff --git a/test/core/iomgr/tcp_server_posix_test.cc b/test/core/iomgr/tcp_server_posix_test.cc
index a4dfa9e772..28fc3601ad 100644
--- a/test/core/iomgr/tcp_server_posix_test.cc
+++ b/test/core/iomgr/tcp_server_posix_test.cc
@@ -423,7 +423,6 @@ static void destroy_pollset(void* p, grpc_error* error) {
int main(int argc, char** argv) {
grpc_closure destroyed;
- grpc_core::ExecCtx _local_exec_ctx;
grpc_arg chan_args[1];
chan_args[0].type = GRPC_ARG_INTEGER;
chan_args[0].key = const_cast<char*>(GRPC_ARG_EXPAND_WILDCARD_ADDRS);
@@ -436,58 +435,61 @@ int main(int argc, char** argv) {
static_cast<test_addrs*>(gpr_zalloc(sizeof(*dst_addrs)));
grpc_test_init(argc, argv);
grpc_init();
- g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
- grpc_pollset_init(g_pollset, &g_mu);
-
- test_no_op();
- test_no_op_with_start();
- test_no_op_with_port();
- test_no_op_with_port_and_start();
-
- if (getifaddrs(&ifa) != 0 || ifa == nullptr) {
- gpr_log(GPR_ERROR, "getifaddrs: %s", strerror(errno));
- return EXIT_FAILURE;
- }
- dst_addrs->naddrs = 0;
- for (ifa_it = ifa; ifa_it != nullptr && dst_addrs->naddrs < MAX_ADDRS;
- ifa_it = ifa_it->ifa_next) {
- if (ifa_it->ifa_addr == nullptr) {
- continue;
- } else if (ifa_it->ifa_addr->sa_family == AF_INET) {
- dst_addrs->addrs[dst_addrs->naddrs].addr.len = sizeof(struct sockaddr_in);
- } else if (ifa_it->ifa_addr->sa_family == AF_INET6) {
- dst_addrs->addrs[dst_addrs->naddrs].addr.len =
- sizeof(struct sockaddr_in6);
- } else {
- continue;
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
+ grpc_pollset_init(g_pollset, &g_mu);
+
+ test_no_op();
+ test_no_op_with_start();
+ test_no_op_with_port();
+ test_no_op_with_port_and_start();
+
+ if (getifaddrs(&ifa) != 0 || ifa == nullptr) {
+ gpr_log(GPR_ERROR, "getifaddrs: %s", strerror(errno));
+ return EXIT_FAILURE;
}
- memcpy(dst_addrs->addrs[dst_addrs->naddrs].addr.addr, ifa_it->ifa_addr,
- dst_addrs->addrs[dst_addrs->naddrs].addr.len);
- GPR_ASSERT(
- grpc_sockaddr_set_port(&dst_addrs->addrs[dst_addrs->naddrs].addr, 0));
- test_addr_init_str(&dst_addrs->addrs[dst_addrs->naddrs]);
- ++dst_addrs->naddrs;
- }
- freeifaddrs(ifa);
- ifa = nullptr;
-
- /* Connect to same addresses as listeners. */
- test_connect(1, nullptr, nullptr, false);
- test_connect(10, nullptr, nullptr, false);
+ dst_addrs->naddrs = 0;
+ for (ifa_it = ifa; ifa_it != nullptr && dst_addrs->naddrs < MAX_ADDRS;
+ ifa_it = ifa_it->ifa_next) {
+ if (ifa_it->ifa_addr == nullptr) {
+ continue;
+ } else if (ifa_it->ifa_addr->sa_family == AF_INET) {
+ dst_addrs->addrs[dst_addrs->naddrs].addr.len =
+ sizeof(struct sockaddr_in);
+ } else if (ifa_it->ifa_addr->sa_family == AF_INET6) {
+ dst_addrs->addrs[dst_addrs->naddrs].addr.len =
+ sizeof(struct sockaddr_in6);
+ } else {
+ continue;
+ }
+ memcpy(dst_addrs->addrs[dst_addrs->naddrs].addr.addr, ifa_it->ifa_addr,
+ dst_addrs->addrs[dst_addrs->naddrs].addr.len);
+ GPR_ASSERT(
+ grpc_sockaddr_set_port(&dst_addrs->addrs[dst_addrs->naddrs].addr, 0));
+ test_addr_init_str(&dst_addrs->addrs[dst_addrs->naddrs]);
+ ++dst_addrs->naddrs;
+ }
+ freeifaddrs(ifa);
+ ifa = nullptr;
- /* Set dst_addrs->addrs[i].len=0 for dst_addrs that are unreachable with a
- "::" listener. */
- test_connect(1, nullptr, dst_addrs, true);
+ /* Connect to same addresses as listeners. */
+ test_connect(1, nullptr, nullptr, false);
+ test_connect(10, nullptr, nullptr, false);
- /* Test connect(2) with dst_addrs. */
- test_connect(1, &channel_args, dst_addrs, false);
- /* Test connect(2) with dst_addrs. */
- test_connect(10, &channel_args, dst_addrs, false);
+ /* Set dst_addrs->addrs[i].len=0 for dst_addrs that are unreachable with a
+ "::" listener. */
+ test_connect(1, nullptr, dst_addrs, true);
- GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
- grpc_schedule_on_exec_ctx);
- grpc_pollset_shutdown(g_pollset, &destroyed);
+ /* Test connect(2) with dst_addrs. */
+ test_connect(1, &channel_args, dst_addrs, false);
+ /* Test connect(2) with dst_addrs. */
+ test_connect(10, &channel_args, dst_addrs, false);
+ GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
+ grpc_schedule_on_exec_ctx);
+ grpc_pollset_shutdown(g_pollset, &destroyed);
+ }
grpc_shutdown();
gpr_free(dst_addrs);
gpr_free(g_pollset);
diff --git a/test/core/iomgr/timer_list_test.cc b/test/core/iomgr/timer_list_test.cc
index 329b767f32..7ab4c4415c 100644
--- a/test/core/iomgr/timer_list_test.cc
+++ b/test/core/iomgr/timer_list_test.cc
@@ -25,6 +25,7 @@
#include <string.h>
+#include <grpc/grpc.h>
#include <grpc/support/log.h>
#include "src/core/lib/debug/trace.h"
#include "test/core/util/test_config.h"
@@ -151,9 +152,11 @@ void destruction_test(void) {
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_core::ExecCtx::GlobalInit();
gpr_set_log_verbosity(GPR_LOG_SEVERITY_DEBUG);
add_test();
destruction_test();
+ grpc_core::ExecCtx::GlobalShutdown();
return 0;
}
diff --git a/test/core/iomgr/udp_server_test.cc b/test/core/iomgr/udp_server_test.cc
index e271acbeef..379c50c09d 100644
--- a/test/core/iomgr/udp_server_test.cc
+++ b/test/core/iomgr/udp_server_test.cc
@@ -291,25 +291,27 @@ static void destroy_pollset(void* p, grpc_error* error) {
int main(int argc, char** argv) {
grpc_closure destroyed;
- grpc_core::ExecCtx _local_exec_ctx;
grpc_test_init(argc, argv);
grpc_init();
- g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
- grpc_pollset_init(g_pollset, &g_mu);
-
- test_no_op();
- test_no_op_with_start();
- test_no_op_with_port();
- test_no_op_with_port_and_socket_factory();
- test_no_op_with_port_and_start();
- test_receive(1);
- test_receive(10);
-
- GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
- grpc_schedule_on_exec_ctx);
- grpc_pollset_shutdown(g_pollset, &destroyed);
- grpc_core::ExecCtx::Get()->Flush();
- gpr_free(g_pollset);
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
+ grpc_pollset_init(g_pollset, &g_mu);
+
+ test_no_op();
+ test_no_op_with_start();
+ test_no_op_with_port();
+ test_no_op_with_port_and_socket_factory();
+ test_no_op_with_port_and_start();
+ test_receive(1);
+ test_receive(10);
+
+ GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
+ grpc_schedule_on_exec_ctx);
+ grpc_pollset_shutdown(g_pollset, &destroyed);
+ grpc_core::ExecCtx::Get()->Flush();
+ gpr_free(g_pollset);
+ }
grpc_shutdown();
return 0;
}
diff --git a/test/core/security/json_token_test.cc b/test/core/security/json_token_test.cc
index b717de06d9..57e2f4c978 100644
--- a/test/core/security/json_token_test.cc
+++ b/test/core/security/json_token_test.cc
@@ -483,6 +483,7 @@ static void test_parse_refresh_token_failure_no_refresh_token(void) {
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
test_parse_json_key_success();
test_parse_json_key_failure_bad_json();
test_parse_json_key_failure_no_type();
@@ -497,5 +498,6 @@ int main(int argc, char** argv) {
test_parse_refresh_token_failure_no_client_id();
test_parse_refresh_token_failure_no_client_secret();
test_parse_refresh_token_failure_no_refresh_token();
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/security/secure_endpoint_test.cc b/test/core/security/secure_endpoint_test.cc
index 694a8584ea..c8f4f32538 100644
--- a/test/core/security/secure_endpoint_test.cc
+++ b/test/core/security/secure_endpoint_test.cc
@@ -205,19 +205,21 @@ static void destroy_pollset(void* p, grpc_error* error) {
int main(int argc, char** argv) {
grpc_closure destroyed;
- grpc_core::ExecCtx _local_exec_ctx;
grpc_test_init(argc, argv);
-
grpc_init();
- g_pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size());
- grpc_pollset_init(g_pollset, &g_mu);
- grpc_endpoint_tests(configs[0], g_pollset, g_mu);
- grpc_endpoint_tests(configs[1], g_pollset, g_mu);
- test_leftover(configs[2], 1);
- test_leftover(configs[3], 1);
- GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
- grpc_schedule_on_exec_ctx);
- grpc_pollset_shutdown(g_pollset, &destroyed);
+
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ g_pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size());
+ grpc_pollset_init(g_pollset, &g_mu);
+ grpc_endpoint_tests(configs[0], g_pollset, g_mu);
+ grpc_endpoint_tests(configs[1], g_pollset, g_mu);
+ test_leftover(configs[2], 1);
+ test_leftover(configs[3], 1);
+ GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
+ grpc_schedule_on_exec_ctx);
+ grpc_pollset_shutdown(g_pollset, &destroyed);
+ }
grpc_shutdown();
diff --git a/test/core/security/ssl_server_fuzzer.cc b/test/core/security/ssl_server_fuzzer.cc
index df62dc17b8..9cf73fa871 100644
--- a/test/core/security/ssl_server_fuzzer.cc
+++ b/test/core/security/ssl_server_fuzzer.cc
@@ -55,63 +55,68 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
if (squelch) gpr_set_log_function(dont_log);
if (leak_check) grpc_memory_counters_init();
grpc_init();
- grpc_core::ExecCtx _local_exec_ctx;
-
- grpc_resource_quota* resource_quota =
- grpc_resource_quota_create("ssl_server_fuzzer");
- grpc_endpoint* mock_endpoint =
- grpc_mock_endpoint_create(discard_write, resource_quota);
- grpc_resource_quota_unref_internal(resource_quota);
-
- grpc_mock_endpoint_put_read(
- mock_endpoint, grpc_slice_from_copied_buffer((const char*)data, size));
-
- // Load key pair and establish server SSL credentials.
- grpc_ssl_pem_key_cert_pair pem_key_cert_pair;
- grpc_slice ca_slice, cert_slice, key_slice;
- ca_slice = grpc_slice_from_static_string(test_root_cert);
- cert_slice = grpc_slice_from_static_string(test_server1_cert);
- key_slice = grpc_slice_from_static_string(test_server1_key);
- const char* ca_cert = (const char*)GRPC_SLICE_START_PTR(ca_slice);
- pem_key_cert_pair.private_key = (const char*)GRPC_SLICE_START_PTR(key_slice);
- pem_key_cert_pair.cert_chain = (const char*)GRPC_SLICE_START_PTR(cert_slice);
- grpc_server_credentials* creds = grpc_ssl_server_credentials_create(
- ca_cert, &pem_key_cert_pair, 1, 0, nullptr);
-
- // Create security connector
- grpc_server_security_connector* sc = nullptr;
- grpc_security_status status =
- grpc_server_credentials_create_security_connector(creds, &sc);
- GPR_ASSERT(status == GRPC_SECURITY_OK);
- grpc_millis deadline = GPR_MS_PER_SEC + grpc_core::ExecCtx::Get()->Now();
-
- struct handshake_state state;
- state.done_callback_called = false;
- grpc_handshake_manager* handshake_mgr = grpc_handshake_manager_create();
- grpc_server_security_connector_add_handshakers(sc, handshake_mgr);
- grpc_handshake_manager_do_handshake(
- handshake_mgr, mock_endpoint, nullptr /* channel_args */, deadline,
- nullptr /* acceptor */, on_handshake_done, &state);
- grpc_core::ExecCtx::Get()->Flush();
-
- // If the given string happens to be part of the correct client hello, the
- // server will wait for more data. Explicitly fail the server by shutting down
- // the endpoint.
- if (!state.done_callback_called) {
- grpc_endpoint_shutdown(
- mock_endpoint, GRPC_ERROR_CREATE_FROM_STATIC_STRING("Explicit close"));
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+
+ grpc_resource_quota* resource_quota =
+ grpc_resource_quota_create("ssl_server_fuzzer");
+ grpc_endpoint* mock_endpoint =
+ grpc_mock_endpoint_create(discard_write, resource_quota);
+ grpc_resource_quota_unref_internal(resource_quota);
+
+ grpc_mock_endpoint_put_read(
+ mock_endpoint, grpc_slice_from_copied_buffer((const char*)data, size));
+
+ // Load key pair and establish server SSL credentials.
+ grpc_ssl_pem_key_cert_pair pem_key_cert_pair;
+ grpc_slice ca_slice, cert_slice, key_slice;
+ ca_slice = grpc_slice_from_static_string(test_root_cert);
+ cert_slice = grpc_slice_from_static_string(test_server1_cert);
+ key_slice = grpc_slice_from_static_string(test_server1_key);
+ const char* ca_cert = (const char*)GRPC_SLICE_START_PTR(ca_slice);
+ pem_key_cert_pair.private_key =
+ (const char*)GRPC_SLICE_START_PTR(key_slice);
+ pem_key_cert_pair.cert_chain =
+ (const char*)GRPC_SLICE_START_PTR(cert_slice);
+ grpc_server_credentials* creds = grpc_ssl_server_credentials_create(
+ ca_cert, &pem_key_cert_pair, 1, 0, nullptr);
+
+ // Create security connector
+ grpc_server_security_connector* sc = nullptr;
+ grpc_security_status status =
+ grpc_server_credentials_create_security_connector(creds, &sc);
+ GPR_ASSERT(status == GRPC_SECURITY_OK);
+ grpc_millis deadline = GPR_MS_PER_SEC + grpc_core::ExecCtx::Get()->Now();
+
+ struct handshake_state state;
+ state.done_callback_called = false;
+ grpc_handshake_manager* handshake_mgr = grpc_handshake_manager_create();
+ grpc_server_security_connector_add_handshakers(sc, handshake_mgr);
+ grpc_handshake_manager_do_handshake(
+ handshake_mgr, mock_endpoint, nullptr /* channel_args */, deadline,
+ nullptr /* acceptor */, on_handshake_done, &state);
grpc_core::ExecCtx::Get()->Flush();
- }
-
- GPR_ASSERT(state.done_callback_called);
- grpc_handshake_manager_destroy(handshake_mgr);
- GRPC_SECURITY_CONNECTOR_UNREF(&sc->base, "test");
- grpc_server_credentials_release(creds);
- grpc_slice_unref(cert_slice);
- grpc_slice_unref(key_slice);
- grpc_slice_unref(ca_slice);
- grpc_core::ExecCtx::Get()->Flush();
+ // If the given string happens to be part of the correct client hello, the
+ // server will wait for more data. Explicitly fail the server by shutting
+ // down the endpoint.
+ if (!state.done_callback_called) {
+ grpc_endpoint_shutdown(
+ mock_endpoint,
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Explicit close"));
+ grpc_core::ExecCtx::Get()->Flush();
+ }
+
+ GPR_ASSERT(state.done_callback_called);
+
+ grpc_handshake_manager_destroy(handshake_mgr);
+ GRPC_SECURITY_CONNECTOR_UNREF(&sc->base, "test");
+ grpc_server_credentials_release(creds);
+ grpc_slice_unref(cert_slice);
+ grpc_slice_unref(key_slice);
+ grpc_slice_unref(ca_slice);
+ grpc_core::ExecCtx::Get()->Flush();
+ }
grpc_shutdown();
if (leak_check) {
diff --git a/test/core/slice/b64_test.cc b/test/core/slice/b64_test.cc
index 08a5770b2a..e0c7ed361d 100644
--- a/test/core/slice/b64_test.cc
+++ b/test/core/slice/b64_test.cc
@@ -20,6 +20,7 @@
#include <string.h>
+#include <grpc/grpc.h>
#include <grpc/slice.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
@@ -201,6 +202,7 @@ static void test_unpadded_decode(void) {
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
test_simple_encode_decode_b64_no_multiline();
test_simple_encode_decode_b64_multiline();
test_simple_encode_decode_b64_urlsafe_no_multiline();
@@ -212,5 +214,6 @@ int main(int argc, char** argv) {
test_url_safe_unsafe_mismatch_failure();
test_rfc4648_test_vectors();
test_unpadded_decode();
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/slice/percent_encoding_test.cc b/test/core/slice/percent_encoding_test.cc
index 253240faad..11f3995f98 100644
--- a/test/core/slice/percent_encoding_test.cc
+++ b/test/core/slice/percent_encoding_test.cc
@@ -18,6 +18,7 @@
#include "src/core/lib/slice/percent_encoding.h"
+#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
@@ -118,6 +119,7 @@ static void test_nonconformant_vector(const char* encoded,
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
TEST_VECTOR(
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~",
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~",
@@ -140,5 +142,6 @@ int main(int argc, char** argv) {
grpc_url_percent_encoding_unreserved_bytes);
TEST_NONCONFORMANT_VECTOR("\0", "\0",
grpc_url_percent_encoding_unreserved_bytes);
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/slice/slice_buffer_test.cc b/test/core/slice/slice_buffer_test.cc
index 338e8079dc..e59986730b 100644
--- a/test/core/slice/slice_buffer_test.cc
+++ b/test/core/slice/slice_buffer_test.cc
@@ -16,6 +16,7 @@
*
*/
+#include <grpc/grpc.h>
#include <grpc/slice_buffer.h>
#include <grpc/support/log.h>
#include "test/core/util/test_config.h"
@@ -106,9 +107,11 @@ void test_slice_buffer_move_first() {
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
test_slice_buffer_add();
test_slice_buffer_move_first();
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/slice/slice_hash_table_test.cc b/test/core/slice/slice_hash_table_test.cc
index 26c2938782..1cbb241a98 100644
--- a/test/core/slice/slice_hash_table_test.cc
+++ b/test/core/slice/slice_hash_table_test.cc
@@ -231,8 +231,10 @@ static void test_slice_hash_table_not_eq() {
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_core::ExecCtx::GlobalInit();
test_slice_hash_table();
test_slice_hash_table_eq();
test_slice_hash_table_not_eq();
+ grpc_core::ExecCtx::GlobalShutdown();
return 0;
}
diff --git a/test/core/slice/slice_string_helpers_test.cc b/test/core/slice/slice_string_helpers_test.cc
index 260f8c80d5..f1d470461a 100644
--- a/test/core/slice/slice_string_helpers_test.cc
+++ b/test/core/slice/slice_string_helpers_test.cc
@@ -23,6 +23,7 @@
#include <stdlib.h>
#include <string.h>
+#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
@@ -130,7 +131,9 @@ static void test_strsplit(void) {
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
test_dump_slice();
test_strsplit();
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/slice/slice_test.cc b/test/core/slice/slice_test.cc
index 02f6b1ea79..e40154dd0e 100644
--- a/test/core/slice/slice_test.cc
+++ b/test/core/slice/slice_test.cc
@@ -292,6 +292,7 @@ static void test_static_slice_copy_interning(void) {
int main(int argc, char** argv) {
unsigned length;
grpc_test_init(argc, argv);
+ grpc_init();
test_slice_malloc_returns_something_sensible();
test_slice_new_returns_something_sensible();
test_slice_new_with_user_data();
@@ -305,5 +306,6 @@ int main(int argc, char** argv) {
test_slice_interning();
test_static_slice_interning();
test_static_slice_copy_interning();
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/surface/byte_buffer_reader_test.cc b/test/core/surface/byte_buffer_reader_test.cc
index f9ce98da21..b762fed941 100644
--- a/test/core/surface/byte_buffer_reader_test.cc
+++ b/test/core/surface/byte_buffer_reader_test.cc
@@ -265,6 +265,7 @@ static void test_byte_buffer_copy(void) {
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
test_read_one_slice();
test_read_one_slice_malloc();
test_read_none_compressed_slice();
@@ -274,5 +275,6 @@ int main(int argc, char** argv) {
test_byte_buffer_from_reader();
test_byte_buffer_copy();
test_readall();
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/surface/concurrent_connectivity_test.cc b/test/core/surface/concurrent_connectivity_test.cc
index 5771e2f240..f21086847b 100644
--- a/test/core/surface/concurrent_connectivity_test.cc
+++ b/test/core/surface/concurrent_connectivity_test.cc
@@ -224,10 +224,12 @@ int run_concurrent_connectivity_test() {
gpr_atm_rel_store(&args.stop, 1);
gpr_thd_join(server);
- grpc_core::ExecCtx _local_exec_ctx;
- grpc_pollset_shutdown(args.pollset,
- GRPC_CLOSURE_CREATE(done_pollset_shutdown, args.pollset,
- grpc_schedule_on_exec_ctx));
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ grpc_pollset_shutdown(
+ args.pollset, GRPC_CLOSURE_CREATE(done_pollset_shutdown, args.pollset,
+ grpc_schedule_on_exec_ctx));
+ }
grpc_shutdown();
return 0;
diff --git a/test/core/transport/byte_stream_test.cc b/test/core/transport/byte_stream_test.cc
index 593c2ae141..a0dbc79158 100644
--- a/test/core/transport/byte_stream_test.cc
+++ b/test/core/transport/byte_stream_test.cc
@@ -18,6 +18,7 @@
#include "src/core/lib/transport/byte_stream.h"
+#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/useful.h>
@@ -253,11 +254,13 @@ static void test_caching_byte_stream_shared_cache(void) {
}
int main(int argc, char** argv) {
+ grpc_init();
grpc_test_init(argc, argv);
test_slice_buffer_stream_basic();
test_slice_buffer_stream_shutdown();
test_caching_byte_stream_basic();
test_caching_byte_stream_reset();
test_caching_byte_stream_shared_cache();
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/transport/chttp2/bin_decoder_test.cc b/test/core/transport/chttp2/bin_decoder_test.cc
index 897d3008b9..4b65d7d3ca 100644
--- a/test/core/transport/chttp2/bin_decoder_test.cc
+++ b/test/core/transport/chttp2/bin_decoder_test.cc
@@ -20,6 +20,7 @@
#include <string.h>
+#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include "src/core/ext/transport/chttp2/transport/bin_encoder.h"
@@ -76,58 +77,61 @@ static grpc_slice base64_decode_with_length(const char* s,
s, grpc_chttp2_base64_decode_with_length(base64_encode(s), strlen(s)));
int main(int argc, char** argv) {
- grpc_core::ExecCtx _local_exec_ctx;
-
- /* ENCODE_AND_DECODE tests grpc_chttp2_base64_decode_with_length(), which
- takes encoded base64 strings without pad chars, but output length is
- required. */
- /* Base64 test vectors from RFC 4648 */
- ENCODE_AND_DECODE("");
- ENCODE_AND_DECODE("f");
- ENCODE_AND_DECODE("foo");
- ENCODE_AND_DECODE("fo");
- ENCODE_AND_DECODE("foob");
- ENCODE_AND_DECODE("fooba");
- ENCODE_AND_DECODE("foobar");
-
- ENCODE_AND_DECODE("\xc0\xc1\xc2\xc3\xc4\xc5");
-
- /* Base64 test vectors from RFC 4648, with pad chars */
- /* BASE64("") = "" */
- EXPECT_SLICE_EQ("", base64_decode(""));
- /* BASE64("f") = "Zg==" */
- EXPECT_SLICE_EQ("f", base64_decode("Zg=="));
- /* BASE64("fo") = "Zm8=" */
- EXPECT_SLICE_EQ("fo", base64_decode("Zm8="));
- /* BASE64("foo") = "Zm9v" */
- EXPECT_SLICE_EQ("foo", base64_decode("Zm9v"));
- /* BASE64("foob") = "Zm9vYg==" */
- EXPECT_SLICE_EQ("foob", base64_decode("Zm9vYg=="));
- /* BASE64("fooba") = "Zm9vYmE=" */
- EXPECT_SLICE_EQ("fooba", base64_decode("Zm9vYmE="));
- /* BASE64("foobar") = "Zm9vYmFy" */
- EXPECT_SLICE_EQ("foobar", base64_decode("Zm9vYmFy"));
-
- EXPECT_SLICE_EQ("\xc0\xc1\xc2\xc3\xc4\xc5", base64_decode("wMHCw8TF"));
-
- // Test illegal input length in grpc_chttp2_base64_decode
- EXPECT_SLICE_EQ("", base64_decode("a"));
- EXPECT_SLICE_EQ("", base64_decode("ab"));
- EXPECT_SLICE_EQ("", base64_decode("abc"));
-
- // Test illegal charactors in grpc_chttp2_base64_decode
- EXPECT_SLICE_EQ("", base64_decode("Zm:v"));
- EXPECT_SLICE_EQ("", base64_decode("Zm=v"));
-
- // Test output_length longer than max possible output length in
- // grpc_chttp2_base64_decode_with_length
- EXPECT_SLICE_EQ("", base64_decode_with_length("Zg", 2));
- EXPECT_SLICE_EQ("", base64_decode_with_length("Zm8", 3));
- EXPECT_SLICE_EQ("", base64_decode_with_length("Zm9v", 4));
-
- // Test illegal charactors in grpc_chttp2_base64_decode_with_length
- EXPECT_SLICE_EQ("", base64_decode_with_length("Zm:v", 3));
- EXPECT_SLICE_EQ("", base64_decode_with_length("Zm=v", 3));
-
+ grpc_init();
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+
+ /* ENCODE_AND_DECODE tests grpc_chttp2_base64_decode_with_length(), which
+ takes encoded base64 strings without pad chars, but output length is
+ required. */
+ /* Base64 test vectors from RFC 4648 */
+ ENCODE_AND_DECODE("");
+ ENCODE_AND_DECODE("f");
+ ENCODE_AND_DECODE("foo");
+ ENCODE_AND_DECODE("fo");
+ ENCODE_AND_DECODE("foob");
+ ENCODE_AND_DECODE("fooba");
+ ENCODE_AND_DECODE("foobar");
+
+ ENCODE_AND_DECODE("\xc0\xc1\xc2\xc3\xc4\xc5");
+
+ /* Base64 test vectors from RFC 4648, with pad chars */
+ /* BASE64("") = "" */
+ EXPECT_SLICE_EQ("", base64_decode(""));
+ /* BASE64("f") = "Zg==" */
+ EXPECT_SLICE_EQ("f", base64_decode("Zg=="));
+ /* BASE64("fo") = "Zm8=" */
+ EXPECT_SLICE_EQ("fo", base64_decode("Zm8="));
+ /* BASE64("foo") = "Zm9v" */
+ EXPECT_SLICE_EQ("foo", base64_decode("Zm9v"));
+ /* BASE64("foob") = "Zm9vYg==" */
+ EXPECT_SLICE_EQ("foob", base64_decode("Zm9vYg=="));
+ /* BASE64("fooba") = "Zm9vYmE=" */
+ EXPECT_SLICE_EQ("fooba", base64_decode("Zm9vYmE="));
+ /* BASE64("foobar") = "Zm9vYmFy" */
+ EXPECT_SLICE_EQ("foobar", base64_decode("Zm9vYmFy"));
+
+ EXPECT_SLICE_EQ("\xc0\xc1\xc2\xc3\xc4\xc5", base64_decode("wMHCw8TF"));
+
+ // Test illegal input length in grpc_chttp2_base64_decode
+ EXPECT_SLICE_EQ("", base64_decode("a"));
+ EXPECT_SLICE_EQ("", base64_decode("ab"));
+ EXPECT_SLICE_EQ("", base64_decode("abc"));
+
+ // Test illegal charactors in grpc_chttp2_base64_decode
+ EXPECT_SLICE_EQ("", base64_decode("Zm:v"));
+ EXPECT_SLICE_EQ("", base64_decode("Zm=v"));
+
+ // Test output_length longer than max possible output length in
+ // grpc_chttp2_base64_decode_with_length
+ EXPECT_SLICE_EQ("", base64_decode_with_length("Zg", 2));
+ EXPECT_SLICE_EQ("", base64_decode_with_length("Zm8", 3));
+ EXPECT_SLICE_EQ("", base64_decode_with_length("Zm9v", 4));
+
+ // Test illegal charactors in grpc_chttp2_base64_decode_with_length
+ EXPECT_SLICE_EQ("", base64_decode_with_length("Zm:v", 3));
+ EXPECT_SLICE_EQ("", base64_decode_with_length("Zm=v", 3));
+ }
+ grpc_shutdown();
return all_ok ? 0 : 1;
}
diff --git a/test/core/transport/chttp2/bin_encoder_test.cc b/test/core/transport/chttp2/bin_encoder_test.cc
index 78b8808c41..44f5de8a50 100644
--- a/test/core/transport/chttp2/bin_encoder_test.cc
+++ b/test/core/transport/chttp2/bin_encoder_test.cc
@@ -99,6 +99,8 @@ static void expect_binary_header(const char* hdr, int binary) {
}
int main(int argc, char** argv) {
+ grpc_init();
+
/* Base64 test vectors from RFC 4648, with padding removed */
/* BASE64("") = "" */
EXPECT_SLICE_EQ("", B64(""));
@@ -169,5 +171,6 @@ int main(int argc, char** argv) {
expect_binary_header("foo-bar", 0);
expect_binary_header("-bin", 0);
+ grpc_shutdown();
return all_ok ? 0 : 1;
}
diff --git a/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc b/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc
index 0dfd5ecc2d..dcec8b2230 100644
--- a/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc
+++ b/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc
@@ -37,13 +37,14 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
if (squelch) gpr_set_log_function(dont_log);
grpc_init();
grpc_chttp2_hpack_parser parser;
- grpc_core::ExecCtx _local_exec_ctx;
- grpc_chttp2_hpack_parser_init(&parser);
- parser.on_header = onhdr;
- GRPC_ERROR_UNREF(grpc_chttp2_hpack_parser_parse(
- &parser, grpc_slice_from_static_buffer(data, size)));
- grpc_chttp2_hpack_parser_destroy(&parser);
-
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ grpc_chttp2_hpack_parser_init(&parser);
+ parser.on_header = onhdr;
+ GRPC_ERROR_UNREF(grpc_chttp2_hpack_parser_parse(
+ &parser, grpc_slice_from_static_buffer(data, size)));
+ grpc_chttp2_hpack_parser_destroy(&parser);
+ }
grpc_shutdown();
return 0;
}
diff --git a/test/core/transport/chttp2/varint_test.cc b/test/core/transport/chttp2/varint_test.cc
index 413b461b3a..36760d0c72 100644
--- a/test/core/transport/chttp2/varint_test.cc
+++ b/test/core/transport/chttp2/varint_test.cc
@@ -18,6 +18,7 @@
#include "src/core/ext/transport/chttp2/transport/varint.h"
+#include <grpc/grpc.h>
#include <grpc/slice.h>
#include <grpc/support/log.h>
@@ -44,11 +45,13 @@ static void test_varint(uint32_t value, uint32_t prefix_bits, uint8_t prefix_or,
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
TEST_VARINT(0, 1, 0, "\x00");
TEST_VARINT(128, 1, 0, "\x7f\x01");
TEST_VARINT(16384, 1, 0, "\x7f\x81\x7f");
TEST_VARINT(2097152, 1, 0, "\x7f\x81\xff\x7f");
TEST_VARINT(268435456, 1, 0, "\x7f\x81\xff\xff\x7f");
TEST_VARINT(0xffffffff, 1, 0, "\x7f\x80\xff\xff\xff\x0f");
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/transport/connectivity_state_test.cc b/test/core/transport/connectivity_state_test.cc
index 99bd0fc65f..e1bc0c4eb7 100644
--- a/test/core/transport/connectivity_state_test.cc
+++ b/test/core/transport/connectivity_state_test.cc
@@ -134,11 +134,13 @@ static void test_subscribe_with_failure_then_destroy(void) {
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
grpc_core::testing::grpc_tracer_enable_flag(&grpc_connectivity_state_trace);
test_connectivity_state_name();
test_check();
test_subscribe_then_unsubscribe();
test_subscribe_then_destroy();
test_subscribe_with_failure_then_destroy();
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/transport/metadata_test.cc b/test/core/transport/metadata_test.cc
index e5bdc5901d..70d557b128 100644
--- a/test/core/transport/metadata_test.cc
+++ b/test/core/transport/metadata_test.cc
@@ -369,6 +369,7 @@ static void test_copied_static_metadata(bool dup_key, bool dup_value) {
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
test_no_op();
for (int k = 0; k <= 1; k++) {
for (int v = 0; v <= 1; v++) {
@@ -383,5 +384,6 @@ int main(int argc, char** argv) {
test_create_many_persistant_metadata();
test_things_stick_around();
test_user_data_works();
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/transport/stream_owned_slice_test.cc b/test/core/transport/stream_owned_slice_test.cc
index d25d83c2c6..7831f67a04 100644
--- a/test/core/transport/stream_owned_slice_test.cc
+++ b/test/core/transport/stream_owned_slice_test.cc
@@ -20,12 +20,14 @@
#include "test/core/util/test_config.h"
+#include <grpc/grpc.h>
#include <grpc/support/log.h>
static void do_nothing(void* arg, grpc_error* error) {}
int main(int argc, char** argv) {
grpc_test_init(argc, argv);
+ grpc_init();
uint8_t buffer[] = "abc123";
grpc_stream_refcount r;
@@ -39,5 +41,6 @@ int main(int argc, char** argv) {
grpc_slice_unref(slice);
GPR_ASSERT(r.refs.count == 1);
+ grpc_shutdown();
return 0;
}
diff --git a/test/core/util/one_corpus_entry_fuzzer.cc b/test/core/util/one_corpus_entry_fuzzer.cc
index c0b67da1e2..fc75125a9b 100644
--- a/test/core/util/one_corpus_entry_fuzzer.cc
+++ b/test/core/util/one_corpus_entry_fuzzer.cc
@@ -18,7 +18,10 @@
#include <stdbool.h>
+#include <grpc/grpc.h>
+
#include <grpc/support/log.h>
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/load_file.h"
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size);
@@ -30,10 +33,17 @@ int main(int argc, char** argv) {
grpc_slice buffer;
squelch = false;
leak_check = false;
+ /* TODO(yashkt) Calling grpc_init breaks tests. Fix the tests and replace
+ * grpc_core::ExecCtx::GlobalInit with grpc_init and GlobalShutdown with
+ * grpc_shutdown */
+ grpc_core::ExecCtx::GlobalInit();
GPR_ASSERT(
GRPC_LOG_IF_ERROR("load_file", grpc_load_file(argv[1], 0, &buffer)));
LLVMFuzzerTestOneInput(GRPC_SLICE_START_PTR(buffer),
GRPC_SLICE_LENGTH(buffer));
+ grpc_core::ExecCtx::GlobalShutdown();
+ grpc_core::ExecCtx::GlobalInit();
grpc_slice_unref(buffer);
+ grpc_core::ExecCtx::GlobalShutdown();
return 0;
}
diff --git a/test/core/util/port_server_client.cc b/test/core/util/port_server_client.cc
index 9d0cb20bbd..705286c6d4 100644
--- a/test/core/util/port_server_client.cc
+++ b/test/core/util/port_server_client.cc
@@ -194,54 +194,55 @@ int grpc_pick_port_using_server(void) {
grpc_httpcli_context context;
grpc_httpcli_request req;
portreq pr;
- grpc_core::ExecCtx _local_exec_ctx;
grpc_closure* shutdown_closure;
grpc_init();
+ {
+ grpc_core::ExecCtx _local_exec_ctx;
+ memset(&pr, 0, sizeof(pr));
+ memset(&req, 0, sizeof(req));
+ grpc_pollset* pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size());
+ grpc_pollset_init(pollset, &pr.mu);
+ pr.pops = grpc_polling_entity_create_from_pollset(pollset);
+ shutdown_closure = GRPC_CLOSURE_CREATE(destroy_pops_and_shutdown, &pr.pops,
+ grpc_schedule_on_exec_ctx);
+ pr.port = -1;
+ pr.server = const_cast<char*>(GRPC_PORT_SERVER_ADDRESS);
+ pr.ctx = &context;
+
+ req.host = const_cast<char*>(GRPC_PORT_SERVER_ADDRESS);
+ req.http.path = const_cast<char*>("/get");
- memset(&pr, 0, sizeof(pr));
- memset(&req, 0, sizeof(req));
- grpc_pollset* pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size());
- grpc_pollset_init(pollset, &pr.mu);
- pr.pops = grpc_polling_entity_create_from_pollset(pollset);
- shutdown_closure = GRPC_CLOSURE_CREATE(destroy_pops_and_shutdown, &pr.pops,
- grpc_schedule_on_exec_ctx);
- pr.port = -1;
- pr.server = const_cast<char*>(GRPC_PORT_SERVER_ADDRESS);
- pr.ctx = &context;
-
- req.host = const_cast<char*>(GRPC_PORT_SERVER_ADDRESS);
- req.http.path = const_cast<char*>("/get");
-
- grpc_httpcli_context_init(&context);
- grpc_resource_quota* resource_quota =
- grpc_resource_quota_create("port_server_client/pick");
- grpc_httpcli_get(
- &context, &pr.pops, resource_quota, &req,
- grpc_core::ExecCtx::Get()->Now() + 30 * GPR_MS_PER_SEC,
- GRPC_CLOSURE_CREATE(got_port_from_server, &pr, grpc_schedule_on_exec_ctx),
- &pr.response);
- grpc_resource_quota_unref_internal(resource_quota);
- grpc_core::ExecCtx::Get()->Flush();
- gpr_mu_lock(pr.mu);
- while (pr.port == -1) {
- grpc_pollset_worker* worker = nullptr;
- if (!GRPC_LOG_IF_ERROR(
- "pollset_work",
- grpc_pollset_work(
- grpc_polling_entity_pollset(&pr.pops), &worker,
- grpc_core::ExecCtx::Get()->Now() + GPR_MS_PER_SEC))) {
- pr.port = 0;
+ grpc_httpcli_context_init(&context);
+ grpc_resource_quota* resource_quota =
+ grpc_resource_quota_create("port_server_client/pick");
+ grpc_httpcli_get(&context, &pr.pops, resource_quota, &req,
+ grpc_core::ExecCtx::Get()->Now() + 30 * GPR_MS_PER_SEC,
+ GRPC_CLOSURE_CREATE(got_port_from_server, &pr,
+ grpc_schedule_on_exec_ctx),
+ &pr.response);
+ grpc_resource_quota_unref_internal(resource_quota);
+ grpc_core::ExecCtx::Get()->Flush();
+ gpr_mu_lock(pr.mu);
+ while (pr.port == -1) {
+ grpc_pollset_worker* worker = nullptr;
+ if (!GRPC_LOG_IF_ERROR(
+ "pollset_work",
+ grpc_pollset_work(
+ grpc_polling_entity_pollset(&pr.pops), &worker,
+ grpc_core::ExecCtx::Get()->Now() + GPR_MS_PER_SEC))) {
+ pr.port = 0;
+ }
}
- }
- gpr_mu_unlock(pr.mu);
+ gpr_mu_unlock(pr.mu);
- grpc_http_response_destroy(&pr.response);
- grpc_httpcli_context_destroy(&context);
- grpc_pollset_shutdown(grpc_polling_entity_pollset(&pr.pops),
- shutdown_closure);
+ grpc_http_response_destroy(&pr.response);
+ grpc_httpcli_context_destroy(&context);
+ grpc_pollset_shutdown(grpc_polling_entity_pollset(&pr.pops),
+ shutdown_closure);
- grpc_core::ExecCtx::Get()->Flush();
+ grpc_core::ExecCtx::Get()->Flush();
+ }
grpc_shutdown();
return pr.port;