aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/core/httpcli
diff options
context:
space:
mode:
Diffstat (limited to 'test/core/httpcli')
-rw-r--r--test/core/httpcli/httpcli_test.c56
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);