diff options
Diffstat (limited to 'test/core/httpcli')
-rw-r--r-- | test/core/httpcli/httpcli_test.c | 56 |
1 files changed, 39 insertions, 17 deletions
diff --git a/test/core/httpcli/httpcli_test.c b/test/core/httpcli/httpcli_test.c index 76820916a1..6e579bc045 100644 --- a/test/core/httpcli/httpcli_test.c +++ b/test/core/httpcli/httpcli_test.c @@ -35,6 +35,7 @@ #include <string.h> +#include <grpc/grpc.h> #include "src/core/iomgr/iomgr.h" #include <grpc/support/alloc.h> #include <grpc/support/log.h> @@ -44,14 +45,16 @@ #include "test/core/util/port.h" #include "test/core/util/test_config.h" -static gpr_event g_done; +static int g_done = 0; +static grpc_httpcli_context g_context; +static grpc_pollset g_pollset; static gpr_timespec n_seconds_time(int seconds) { return GRPC_TIMEOUT_SECONDS_TO_DEADLINE(seconds); } static void on_finish(void *arg, const grpc_httpcli_response *response) { - const char *expect = + const char *expect = "<html><head><title>Hello world!</title></head>" "<body><p>This is a test</p></body></html>"; GPR_ASSERT(arg == (void *)42); @@ -59,54 +62,69 @@ static void on_finish(void *arg, const grpc_httpcli_response *response) { GPR_ASSERT(response->status == 200); GPR_ASSERT(response->body_length == strlen(expect)); GPR_ASSERT(0 == memcmp(expect, response->body, response->body_length)); - gpr_event_set(&g_done, (void *)1); + gpr_mu_lock(GRPC_POLLSET_MU(&g_pollset)); + g_done = 1; + grpc_pollset_kick(&g_pollset); + gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); } static void test_get(int use_ssl, int port) { grpc_httpcli_request req; - char* host; + char *host; + g_done = 0; gpr_log(GPR_INFO, "running %s with use_ssl=%d.", "test_get", use_ssl); gpr_asprintf(&host, "localhost:%d", port); gpr_log(GPR_INFO, "requesting from %s", host); - gpr_event_init(&g_done); memset(&req, 0, sizeof(req)); req.host = host; req.path = "/get"; req.use_ssl = use_ssl; - grpc_httpcli_get(&req, n_seconds_time(15), on_finish, (void *)42); + grpc_httpcli_get(&g_context, &g_pollset, &req, n_seconds_time(15), on_finish, + (void *)42); + gpr_mu_lock(GRPC_POLLSET_MU(&g_pollset)); + while (!g_done) { + grpc_pollset_work(&g_pollset, n_seconds_time(20)); + } + gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); gpr_free(host); - GPR_ASSERT(gpr_event_wait(&g_done, n_seconds_time(20))); } static void test_post(int use_ssl, int port) { grpc_httpcli_request req; - char* host; + char *host; + g_done = 0; gpr_log(GPR_INFO, "running %s with use_ssl=%d.", "test_post", (int)use_ssl); gpr_asprintf(&host, "localhost:%d", port); gpr_log(GPR_INFO, "posting to %s", host); - gpr_event_init(&g_done); memset(&req, 0, sizeof(req)); req.host = host; req.path = "/post"; req.use_ssl = use_ssl; - grpc_httpcli_post(&req, "hello", 5, n_seconds_time(15), on_finish, - (void *)42); - GPR_ASSERT(gpr_event_wait(&g_done, n_seconds_time(20))); + grpc_httpcli_post(&g_context, &g_pollset, &req, "hello", 5, + n_seconds_time(15), on_finish, (void *)42); + gpr_mu_lock(GRPC_POLLSET_MU(&g_pollset)); + while (!g_done) { + grpc_pollset_work(&g_pollset, n_seconds_time(20)); + } + gpr_mu_unlock(GRPC_POLLSET_MU(&g_pollset)); + gpr_free(host); } +static void destroy_pollset(void *ignored) { grpc_pollset_destroy(&g_pollset); } + int main(int argc, char **argv) { - gpr_subprocess* server; + gpr_subprocess *server; char *me = argv[0]; char *lslash = strrchr(me, '/'); - char* args[4]; + char *args[4]; char root[1024]; int port = grpc_pick_unused_port_or_die(); @@ -122,7 +140,7 @@ int main(int argc, char **argv) { gpr_asprintf(&args[0], "%s/../../test/core/httpcli/test_server.py", root); args[1] = "--port"; gpr_asprintf(&args[2], "%d", port); - server = gpr_subprocess_create(3, (const char**)args); + server = gpr_subprocess_create(3, (const char **)args); GPR_ASSERT(server); gpr_free(args[0]); gpr_free(args[2]); @@ -130,12 +148,16 @@ int main(int argc, char **argv) { gpr_sleep_until(gpr_time_add(gpr_now(), gpr_time_from_seconds(5))); grpc_test_init(argc, argv); - grpc_iomgr_init(); + grpc_init(); + grpc_httpcli_context_init(&g_context); + grpc_pollset_init(&g_pollset); test_get(0, port); test_post(0, port); - grpc_iomgr_shutdown(); + grpc_httpcli_context_destroy(&g_context); + grpc_pollset_shutdown(&g_pollset, destroy_pollset, NULL); + grpc_shutdown(); gpr_subprocess_destroy(server); |