Fix tests to call grpc_init and grpc_shutdown before using exec_ctx

pull/13058/head
Yash Tibrewal 8 years ago
parent 3285f4c732
commit 81fc8c9c33
  1. 2
      include/grpc/impl/codegen/port_platform.h
  2. 6
      include/grpc/support/tls.h
  3. 8
      src/core/lib/iomgr/block_annotate.h
  4. 2
      src/core/lib/iomgr/exec_ctx.h
  5. 12
      src/core/lib/iomgr/iomgr.cc
  6. 3
      src/core/lib/iomgr/load_file.cc
  7. 13
      src/core/lib/surface/init.cc
  8. 3
      test/core/backoff/backoff_test.cc
  9. 4
      test/core/bad_client/tests/badreq.cc
  10. 3
      test/core/bad_client/tests/connection_prefix.cc
  11. 3
      test/core/bad_client/tests/head_of_line_blocking.cc
  12. 2
      test/core/bad_client/tests/headers.cc
  13. 2
      test/core/bad_client/tests/initial_settings_frame.cc
  14. 2
      test/core/bad_client/tests/server_registered_method.cc
  15. 4
      test/core/bad_client/tests/simple_request.cc
  16. 2
      test/core/bad_client/tests/unknown_frame.cc
  17. 3
      test/core/bad_client/tests/window_overflow.cc
  18. 4
      test/core/client_channel/parse_address_test.cc
  19. 2
      test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc
  20. 7
      test/core/client_channel/uri_fuzzer_test.cc
  21. 3
      test/core/client_channel/uri_parser_test.cc
  22. 2
      test/core/end2end/bad_server_response_test.cc
  23. 1
      test/core/end2end/fixtures/h2_sockpair+trace.cc
  24. 2
      test/core/end2end/fuzzers/api_fuzzer.cc
  25. 7
      test/core/end2end/fuzzers/client_fuzzer.cc
  26. 4
      test/core/end2end/fuzzers/server_fuzzer.cc
  27. 2
      test/core/http/format_request_test.cc
  28. 9
      test/core/http/httpcli_test.cc
  29. 3
      test/core/http/httpscli_test.cc
  30. 3
      test/core/http/parser_test.cc
  31. 5
      test/core/iomgr/endpoint_pair_test.cc
  32. 2
      test/core/iomgr/ev_epollsig_linux_test.cc
  33. 2
      test/core/iomgr/fd_conservation_posix_test.cc
  34. 5
      test/core/iomgr/fd_posix_test.cc
  35. 3
      test/core/iomgr/load_file_test.cc
  36. 5
      test/core/iomgr/pollset_set_test.cc
  37. 4
      test/core/iomgr/resolve_address_posix_test.cc
  38. 2
      test/core/iomgr/resolve_address_test.cc
  39. 5
      test/core/iomgr/tcp_client_posix_test.cc
  40. 4
      test/core/iomgr/tcp_posix_test.cc
  41. 8
      test/core/iomgr/tcp_server_posix_test.cc
  42. 3
      test/core/iomgr/timer_list_test.cc
  43. 4
      test/core/iomgr/udp_server_test.cc
  44. 2
      test/core/security/json_token_test.cc
  45. 6
      test/core/security/secure_endpoint_test.cc
  46. 15
      test/core/security/ssl_server_fuzzer.cc
  47. 3
      test/core/slice/b64_test.cc
  48. 3
      test/core/slice/percent_encoding_test.cc
  49. 3
      test/core/slice/slice_buffer_test.cc
  50. 2
      test/core/slice/slice_hash_table_test.cc
  51. 3
      test/core/slice/slice_string_helpers_test.cc
  52. 2
      test/core/slice/slice_test.cc
  53. 2
      test/core/surface/byte_buffer_reader_test.cc
  54. 6
      test/core/surface/concurrent_connectivity_test.cc
  55. 3
      test/core/transport/byte_stream_test.cc
  56. 6
      test/core/transport/chttp2/bin_decoder_test.cc
  57. 3
      test/core/transport/chttp2/bin_encoder_test.cc
  58. 3
      test/core/transport/chttp2/hpack_parser_fuzzer_test.cc
  59. 3
      test/core/transport/chttp2/varint_test.cc
  60. 2
      test/core/transport/connectivity_state_test.cc
  61. 2
      test/core/transport/metadata_test.cc
  62. 3
      test/core/transport/stream_owned_slice_test.cc
  63. 10
      test/core/util/one_corpus_entry_fuzzer.cc
  64. 11
      test/core/util/port_server_client.cc

@ -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

@ -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);

@ -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 */

@ -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_);

@ -84,6 +84,8 @@ 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_core::ExecCtx _local_exec_ctx(0);
grpc_timer_manager_shutdown();
grpc_iomgr_platform_flush();
grpc_executor_shutdown();
@ -119,10 +121,12 @@ void grpc_iomgr_shutdown() {
dump_objects("LEAKED");
abort();
}
gpr_timespec short_deadline = gpr_time_add(
gpr_now(GPR_CLOCK_REALTIME), gpr_time_from_millis(100, GPR_TIMESPAN));
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 (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
@ -139,7 +143,7 @@ void grpc_iomgr_shutdown() {
gpr_mu_unlock(&g_mu);
grpc_timer_list_shutdown();
grpc_core::ExecCtx::Get()->Flush();
}
/* ensure all threads have left g_mu */
gpr_mu_lock(&g_mu);

@ -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;
}

@ -153,24 +153,29 @@ 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_core::ExecCtx _local_exec_ctx(0);
grpc_executor_shutdown();
grpc_timer_manager_set_threading(false); // shutdown timer_manager thread
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_mdctx_global_shutdown();
grpc_handshaker_factory_registry_shutdown();
grpc_slice_intern_shutdown();
grpc_stats_shutdown();
}
}
gpr_mu_unlock(&g_init_mu);
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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();
}

@ -147,6 +147,7 @@ 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;
@ -170,6 +171,7 @@ int main(int argc, char** argv) {
grpc_channel_args_destroy(result);
GRPC_RESOLVER_UNREF(resolver, "test");
GRPC_COMBINER_UNREF(g_combiner, "test");
}
grpc_shutdown();
gpr_mu_destroy(&g_mu);

@ -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,6 +34,9 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
memcpy(s, data, size);
s[size] = 0;
grpc_init();
{
grpc_core::ExecCtx _local_exec_ctx;
grpc_uri* x;
if ((x = grpc_uri_parse(s, 1))) {
@ -40,5 +44,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
}
gpr_free(s);
}
grpc_shutdown();
return 0;
}

@ -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;
}

@ -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;
}

@ -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 */

@ -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);

@ -43,6 +43,7 @@ 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);
@ -85,7 +86,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
op->reserved = nullptr;
op++;
op->op = GRPC_OP_RECV_INITIAL_METADATA;
op->data.recv_initial_metadata.recv_initial_metadata = &initial_metadata_recv;
op->data.recv_initial_metadata.recv_initial_metadata =
&initial_metadata_recv;
op->flags = 0;
op->reserved = nullptr;
op++;
@ -125,7 +127,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
}
}
done:
done:
if (requested_calls) {
grpc_call_cancel(call, nullptr);
}
@ -149,6 +151,7 @@ done:
if (response_payload_recv != nullptr) {
grpc_byte_buffer_destroy(response_payload_recv);
}
}
grpc_shutdown();
if (leak_check) {
counters = grpc_memory_counters_snapshot();

@ -41,6 +41,7 @@ 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);
@ -96,7 +97,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
}
}
done:
done:
if (call1 != nullptr) grpc_call_unref(call1);
grpc_call_details_destroy(&call_details1);
grpc_metadata_array_destroy(&request_metadata1);
@ -115,6 +116,7 @@ done:
}
grpc_server_destroy(server);
grpc_completion_queue_destroy(cq);
}
grpc_shutdown();
if (leak_check) {
counters = grpc_memory_counters_snapshot();

@ -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;
}

@ -141,9 +141,12 @@ static void destroy_pops(void* p, grpc_error* error) {
}
int main(int argc, char** argv) {
gpr_subprocess* server;
grpc_test_init(argc, argv);
grpc_init();
{
grpc_closure destroyed;
grpc_core::ExecCtx _local_exec_ctx;
gpr_subprocess* server;
char* me = argv[0];
char* lslash = strrchr(me, '/');
char* args[4];
@ -181,8 +184,6 @@ int main(int argc, char** argv) {
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()));
@ -196,7 +197,7 @@ int main(int argc, char** argv) {
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));

@ -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_shutdown();
gpr_free(grpc_polling_entity_pollset(&g_pops));

@ -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;
}

@ -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();
{
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);

@ -301,6 +301,7 @@ int main(int argc, char** argv) {
const char* poll_strategy = nullptr;
grpc_test_init(argc, argv);
grpc_init();
{
grpc_core::ExecCtx _local_exec_ctx;
poll_strategy = grpc_get_poll_strategy_name();
@ -313,6 +314,7 @@ int main(int argc, char** argv) {
"strategy. and the current strategy is: '%s'",
poll_strategy);
}
}
grpc_shutdown();
return 0;

@ -31,6 +31,7 @@ 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
@ -49,6 +50,7 @@ int main(int argc, char** argv) {
}
grpc_resource_quota_unref(resource_quota);
}
grpc_shutdown();
return 0;

@ -513,9 +513,10 @@ 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();
{
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();
@ -525,7 +526,7 @@ int main(int argc, char** argv) {
grpc_pollset_shutdown(g_pollset, &destroyed);
grpc_core::ExecCtx::Get()->Flush();
gpr_free(g_pollset);
}
grpc_shutdown();
return 0;
}

@ -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;
}

@ -421,9 +421,10 @@ 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();
{
grpc_core::ExecCtx _local_exec_ctx;
const char* poll_strategy = grpc_get_poll_strategy_name();
if (poll_strategy != nullptr &&
@ -438,7 +439,7 @@ int main(int argc, char** argv) {
"strategy. and the current strategy is: '%s'",
poll_strategy);
}
}
grpc_shutdown();
return 0;
}

@ -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_shutdown();
return 0;

@ -242,6 +242,7 @@ 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();
@ -252,6 +253,7 @@ int main(int argc, char** argv) {
test_invalid_ip_addresses();
test_unparseable_hostports();
grpc_executor_shutdown();
}
grpc_shutdown();
return 0;

@ -188,9 +188,11 @@ 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();
{
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);
@ -203,6 +205,7 @@ int main(int argc, char** argv) {
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);

@ -538,9 +538,10 @@ 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();
{
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);
@ -550,6 +551,7 @@ int main(int argc, char** argv) {
grpc_pollset_shutdown(g_pollset, &destroyed);
grpc_core::ExecCtx::Get()->Flush();
}
grpc_shutdown();
gpr_free(g_pollset);

@ -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,6 +435,8 @@ int main(int argc, char** argv) {
static_cast<test_addrs*>(gpr_zalloc(sizeof(*dst_addrs)));
grpc_test_init(argc, argv);
grpc_init();
{
grpc_core::ExecCtx _local_exec_ctx;
g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
grpc_pollset_init(g_pollset, &g_mu);
@ -454,7 +455,8 @@ int main(int argc, char** argv) {
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);
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);
@ -487,7 +489,7 @@ int main(int argc, char** argv) {
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);

@ -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;
}

@ -291,9 +291,10 @@ 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();
{
grpc_core::ExecCtx _local_exec_ctx;
g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
grpc_pollset_init(g_pollset, &g_mu);
@ -310,6 +311,7 @@ int main(int argc, char** argv) {
grpc_pollset_shutdown(g_pollset, &destroyed);
grpc_core::ExecCtx::Get()->Flush();
gpr_free(g_pollset);
}
grpc_shutdown();
return 0;
}

@ -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;
}

@ -205,10 +205,11 @@ 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();
{
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);
@ -218,6 +219,7 @@ int main(int argc, char** argv) {
GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
grpc_schedule_on_exec_ctx);
grpc_pollset_shutdown(g_pollset, &destroyed);
}
grpc_shutdown();

@ -55,6 +55,7 @@ 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 =
@ -73,8 +74,10 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
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);
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);
@ -95,11 +98,12 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
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.
// 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"));
mock_endpoint,
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Explicit close"));
grpc_core::ExecCtx::Get()->Flush();
}
@ -112,6 +116,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
grpc_slice_unref(key_slice);
grpc_slice_unref(ca_slice);
grpc_core::ExecCtx::Get()->Flush();
}
grpc_shutdown();
if (leak_check) {

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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_pollset_shutdown(
args.pollset, GRPC_CLOSURE_CREATE(done_pollset_shutdown, args.pollset,
grpc_schedule_on_exec_ctx));
}
grpc_shutdown();
return 0;

@ -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;
}

@ -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,6 +77,8 @@ 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_init();
{
grpc_core::ExecCtx _local_exec_ctx;
/* ENCODE_AND_DECODE tests grpc_chttp2_base64_decode_with_length(), which
@ -128,6 +131,7 @@ int main(int argc, char** argv) {
// 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;
}

@ -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;
}

@ -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_shutdown();
return 0;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -194,11 +194,11 @@ 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());
@ -216,10 +216,10 @@ int grpc_pick_port_using_server(void) {
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_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),
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();
@ -242,6 +242,7 @@ int grpc_pick_port_using_server(void) {
shutdown_closure);
grpc_core::ExecCtx::Get()->Flush();
}
grpc_shutdown();
return pr.port;

Loading…
Cancel
Save