aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/httpcli/httpcli.c
diff options
context:
space:
mode:
authorGravatar ctiller <ctiller@google.com>2014-12-17 17:03:15 -0800
committerGravatar Michael Lumish <mlumish@google.com>2014-12-19 13:08:41 -0800
commit40260c4d5b607a5808b7e48511baa732b70468fc (patch)
tree6db4ec3e51356cddaa92f646738461f65064d8a5 /src/core/httpcli/httpcli.c
parent246ec3bd3a386a7ccf8516425214b7ac368436a9 (diff)
Allow overriding httpcli behavior by tests.
Change on 2014/12/17 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82379331
Diffstat (limited to 'src/core/httpcli/httpcli.c')
-rw-r--r--src/core/httpcli/httpcli.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/core/httpcli/httpcli.c b/src/core/httpcli/httpcli.c
index bbca57b7dd..06d73e40f5 100644
--- a/src/core/httpcli/httpcli.c
+++ b/src/core/httpcli/httpcli.c
@@ -62,6 +62,9 @@ typedef struct {
void *user_data;
} internal_request;
+static grpc_httpcli_get_override g_get_override = NULL;
+static grpc_httpcli_post_override g_post_override = NULL;
+
static void next_address(internal_request *req);
static void finish(internal_request *req, int success) {
@@ -217,7 +220,12 @@ static void on_resolved(void *arg, grpc_resolved_addresses *addresses) {
void grpc_httpcli_get(const grpc_httpcli_request *request,
gpr_timespec deadline,
grpc_httpcli_response_cb on_response, void *user_data) {
- internal_request *req = gpr_malloc(sizeof(internal_request));
+ internal_request *req;
+ if (g_get_override &&
+ g_get_override(request, deadline, on_response, user_data)) {
+ return;
+ }
+ req = gpr_malloc(sizeof(internal_request));
memset(req, 0, sizeof(*req));
req->request_text = grpc_httpcli_format_get_request(request);
grpc_httpcli_parser_init(&req->parser);
@@ -237,7 +245,12 @@ void grpc_httpcli_post(const grpc_httpcli_request *request,
const char *body_bytes, size_t body_size,
gpr_timespec deadline,
grpc_httpcli_response_cb on_response, void *user_data) {
- internal_request *req = gpr_malloc(sizeof(internal_request));
+ internal_request *req;
+ if (g_post_override && g_post_override(request, body_bytes, body_size,
+ deadline, on_response, user_data)) {
+ return;
+ }
+ req = gpr_malloc(sizeof(internal_request));
memset(req, 0, sizeof(*req));
req->request_text =
grpc_httpcli_format_post_request(request, body_bytes, body_size);
@@ -253,3 +266,9 @@ void grpc_httpcli_post(const grpc_httpcli_request *request,
grpc_resolve_address(request->host, req->use_ssl ? "https" : "http",
on_resolved, req);
}
+
+void grpc_httpcli_set_override(grpc_httpcli_get_override get,
+ grpc_httpcli_post_override post) {
+ g_get_override = get;
+ g_post_override = post;
+}