aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/core
diff options
context:
space:
mode:
Diffstat (limited to 'test/core')
-rw-r--r--test/core/channel/metadata_buffer_test.c201
-rw-r--r--test/core/end2end/tests/request_response_with_binary_metadata_and_payload.c19
-rw-r--r--test/core/end2end/tests/request_response_with_binary_metadata_and_payload_legacy.c20
-rw-r--r--test/core/end2end/tests/request_response_with_metadata_and_payload.c6
-rw-r--r--test/core/end2end/tests/request_response_with_metadata_and_payload_legacy.c8
-rw-r--r--test/core/end2end/tests/request_response_with_trailing_metadata_and_payload_legacy.c12
-rw-r--r--test/core/surface/lame_client_test.c2
7 files changed, 43 insertions, 225 deletions
diff --git a/test/core/channel/metadata_buffer_test.c b/test/core/channel/metadata_buffer_test.c
deleted file mode 100644
index 4fc434f9a5..0000000000
--- a/test/core/channel/metadata_buffer_test.c
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- *
- * Copyright 2015, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#include "src/core/channel/metadata_buffer.h"
-#include "src/core/support/string.h"
-#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
-#include "test/core/util/test_config.h"
-
-#include <string.h>
-#include <stdio.h>
-
-/* construct a buffer with some prefix followed by an integer converted to
- a string */
-static gpr_slice construct_buffer(size_t prefix_length, size_t index) {
- gpr_slice buffer = gpr_slice_malloc(prefix_length + GPR_LTOA_MIN_BUFSIZE);
- memset(GPR_SLICE_START_PTR(buffer), 'a', prefix_length);
- GPR_SLICE_SET_LENGTH(
- buffer,
- prefix_length +
- gpr_ltoa(index, (char *)GPR_SLICE_START_PTR(buffer) + prefix_length));
- return buffer;
-}
-
-static void do_nothing(void *ignored, grpc_op_error also_ignored) {}
-
-/* we need a fake channel & call stack, which is defined here */
-
-/* a fake channel needs to track some information about the test */
-typedef struct {
- size_t key_prefix_len;
- size_t value_prefix_len;
-} channel_data;
-
-static void fail_call_op(grpc_call_element *elem, grpc_call_element *from_elem,
- grpc_call_op *op) {
- abort();
-}
-
-/* verify that the metadata passed on during flush is the same as we expect */
-static void expect_call_op(grpc_call_element *elem,
- grpc_call_element *from_elem, grpc_call_op *op) {
- size_t *n = elem->call_data;
- channel_data *cd = elem->channel_data;
- gpr_slice key = construct_buffer(cd->key_prefix_len, *n);
- gpr_slice value = construct_buffer(cd->value_prefix_len, *n);
-
- GPR_ASSERT(op->type == GRPC_SEND_METADATA);
- GPR_ASSERT(op->dir == GRPC_CALL_DOWN);
- GPR_ASSERT(op->flags == *n);
- GPR_ASSERT(op->done_cb == do_nothing);
- GPR_ASSERT(op->user_data == (void *)(gpr_uintptr) * n);
- GPR_ASSERT(0 == gpr_slice_cmp(op->data.metadata->key->slice, key));
- GPR_ASSERT(0 == gpr_slice_cmp(op->data.metadata->value->slice, value));
-
- ++*n;
-
- gpr_slice_unref(key);
- gpr_slice_unref(value);
- grpc_mdelem_unref(op->data.metadata);
-}
-
-static void fail_channel_op(grpc_channel_element *elem,
- grpc_channel_element *from_elem,
- grpc_channel_op *op) {
- abort();
-}
-
-static void init_call_elem(grpc_call_element *elem,
- const void *transport_server_data) {
- *(size_t *)elem->call_data = 0;
-}
-
-static void destroy_call_elem(grpc_call_element *elem) {}
-
-static void init_channel_elem(grpc_channel_element *elem,
- const grpc_channel_args *args, grpc_mdctx *mdctx,
- int is_first, int is_last) {}
-
-static void destroy_channel_elem(grpc_channel_element *elem) {}
-
-static const grpc_channel_filter top_filter = {
- fail_call_op, fail_channel_op, sizeof(size_t),
- init_call_elem, destroy_call_elem, sizeof(channel_data),
- init_channel_elem, destroy_channel_elem, "top_filter"};
-
-static const grpc_channel_filter bottom_filter = {
- expect_call_op, fail_channel_op, sizeof(size_t),
- init_call_elem, destroy_call_elem, sizeof(channel_data),
- init_channel_elem, destroy_channel_elem, "bottom_filter"};
-
-static const grpc_channel_filter *filters[2] = {&top_filter, &bottom_filter};
-
-/* run a test with differently sized keys, and values, some number of times. */
-static void test_case(size_t key_prefix_len, size_t value_prefix_len,
- size_t num_calls) {
- size_t i;
- size_t got_calls;
- grpc_metadata_buffer buffer;
- grpc_channel_stack *stk;
- grpc_call_stack *call;
- grpc_mdctx *mdctx;
-
- gpr_log(GPR_INFO, "Test %d calls, {key,value}_prefix_len = {%d, %d}",
- (int)num_calls, (int)key_prefix_len, (int)value_prefix_len);
-
- mdctx = grpc_mdctx_create();
-
- grpc_metadata_buffer_init(&buffer);
-
- /* queue metadata elements */
- for (i = 0; i < num_calls; i++) {
- grpc_call_op op;
- gpr_slice key = construct_buffer(key_prefix_len, i);
- gpr_slice value = construct_buffer(value_prefix_len, i);
-
- op.type = GRPC_SEND_METADATA;
- op.dir = GRPC_CALL_DOWN;
- op.flags = i;
- op.data.metadata = grpc_mdelem_from_slices(mdctx, key, value);
- op.done_cb = do_nothing;
- op.user_data = (void *)(gpr_uintptr) i;
-
- grpc_metadata_buffer_queue(&buffer, &op);
- }
-
- /* construct a test channel, call stack */
- stk = gpr_malloc(grpc_channel_stack_size(filters, 2));
- grpc_channel_stack_init(filters, 2, NULL, mdctx, stk);
-
- for (i = 0; i < 2; i++) {
- channel_data *cd =
- (channel_data *)grpc_channel_stack_element(stk, i)->channel_data;
- cd->key_prefix_len = key_prefix_len;
- cd->value_prefix_len = value_prefix_len;
- }
-
- call = gpr_malloc(stk->call_stack_size);
- grpc_call_stack_init(stk, NULL, call);
-
- /* flush out metadata, verifying each element (see expect_call_op) */
- grpc_metadata_buffer_flush(&buffer, grpc_call_stack_element(call, 0));
-
- /* verify expect_call_op was called an appropriate number of times */
- got_calls = *(size_t *)grpc_call_stack_element(call, 1)->call_data;
- GPR_ASSERT(num_calls == got_calls);
-
- /* clean up the things */
- grpc_call_stack_destroy(call);
- gpr_free(call);
- grpc_channel_stack_destroy(stk);
- gpr_free(stk);
-
- grpc_metadata_buffer_destroy(&buffer, GRPC_OP_OK);
- grpc_mdctx_unref(mdctx);
-}
-
-int main(int argc, char **argv) {
- grpc_test_init(argc, argv);
- test_case(0, 0, 0);
- test_case(0, 0, 1);
- test_case(0, 0, 2);
- test_case(0, 0, 10000);
- test_case(10, 10, 1);
- test_case(10, 10, 2);
- test_case(10, 10, 10000);
- test_case(100, 100, 1);
- test_case(100, 100, 2);
- test_case(100, 100, 10000);
- return 0;
-}
diff --git a/test/core/end2end/tests/request_response_with_binary_metadata_and_payload.c b/test/core/end2end/tests/request_response_with_binary_metadata_and_payload.c
index a120f27596..0169d52059 100644
--- a/test/core/end2end/tests/request_response_with_binary_metadata_and_payload.c
+++ b/test/core/end2end/tests/request_response_with_binary_metadata_and_payload.c
@@ -115,14 +115,23 @@ static void test_request_response_with_metadata_and_payload(
grpc_byte_buffer_create(&response_payload_slice, 1);
gpr_timespec deadline = five_seconds_time();
grpc_metadata meta_c[2] = {
- {"key1-bin", "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc", 13},
- {"key2-bin", "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d",
- 14}};
+ {"key1-bin",
+ "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc",
+ 13,
+ {{NULL, NULL, NULL}}},
+ {"key2-bin",
+ "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d",
+ 14,
+ {{NULL, NULL, NULL}}}};
grpc_metadata meta_s[2] = {
{"key3-bin",
- "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee", 15},
+ "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee",
+ 15,
+ {{NULL, NULL, NULL}}},
{"key4-bin",
- "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff", 16}};
+ "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
+ 16,
+ {{NULL, NULL, NULL}}}};
grpc_end2end_test_fixture f = begin_test(config, __FUNCTION__, NULL, NULL);
cq_verifier *v_client = cq_verifier_create(f.client_cq);
cq_verifier *v_server = cq_verifier_create(f.server_cq);
diff --git a/test/core/end2end/tests/request_response_with_binary_metadata_and_payload_legacy.c b/test/core/end2end/tests/request_response_with_binary_metadata_and_payload_legacy.c
index 75fddeacb1..f0cb14ae3c 100644
--- a/test/core/end2end/tests/request_response_with_binary_metadata_and_payload_legacy.c
+++ b/test/core/end2end/tests/request_response_with_binary_metadata_and_payload_legacy.c
@@ -116,17 +116,25 @@ static void test_request_response_with_metadata_and_payload(
gpr_timespec deadline = five_seconds_time();
/* staggered lengths to ensure we hit various branches in base64 encode/decode
*/
- grpc_metadata meta1 = {
- "key1-bin", "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc", 13};
+ grpc_metadata meta1 = {"key1-bin",
+ "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc",
+ 13,
+ {{NULL, NULL, NULL}}};
grpc_metadata meta2 = {
- "key2-bin", "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d",
- 14};
+ "key2-bin",
+ "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d",
+ 14,
+ {{NULL, NULL, NULL}}};
grpc_metadata meta3 = {
"key3-bin",
- "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee", 15};
+ "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee",
+ 15,
+ {{NULL, NULL, NULL}}};
grpc_metadata meta4 = {
"key4-bin",
- "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff", 16};
+ "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
+ 16,
+ {{NULL, NULL, NULL}}};
grpc_end2end_test_fixture f = begin_test(config, __FUNCTION__, NULL, NULL);
cq_verifier *v_client = cq_verifier_create(f.client_cq);
cq_verifier *v_server = cq_verifier_create(f.server_cq);
diff --git a/test/core/end2end/tests/request_response_with_metadata_and_payload.c b/test/core/end2end/tests/request_response_with_metadata_and_payload.c
index d5f58d33b8..dc49242d39 100644
--- a/test/core/end2end/tests/request_response_with_metadata_and_payload.c
+++ b/test/core/end2end/tests/request_response_with_metadata_and_payload.c
@@ -114,8 +114,10 @@ static void test_request_response_with_metadata_and_payload(
grpc_byte_buffer *response_payload =
grpc_byte_buffer_create(&response_payload_slice, 1);
gpr_timespec deadline = five_seconds_time();
- grpc_metadata meta_c[2] = {{"key1", "val1", 4}, {"key2", "val2", 4}};
- grpc_metadata meta_s[2] = {{"key3", "val3", 4}, {"key4", "val4", 4}};
+ grpc_metadata meta_c[2] = {{"key1", "val1", 4, {{NULL, NULL, NULL}}},
+ {"key2", "val2", 4, {{NULL, NULL, NULL}}}};
+ grpc_metadata meta_s[2] = {{"key3", "val3", 4, {{NULL, NULL, NULL}}},
+ {"key4", "val4", 4, {{NULL, NULL, NULL}}}};
grpc_end2end_test_fixture f = begin_test(config, __FUNCTION__, NULL, NULL);
cq_verifier *v_client = cq_verifier_create(f.client_cq);
cq_verifier *v_server = cq_verifier_create(f.server_cq);
diff --git a/test/core/end2end/tests/request_response_with_metadata_and_payload_legacy.c b/test/core/end2end/tests/request_response_with_metadata_and_payload_legacy.c
index 91a0442d26..aaf8a53d52 100644
--- a/test/core/end2end/tests/request_response_with_metadata_and_payload_legacy.c
+++ b/test/core/end2end/tests/request_response_with_metadata_and_payload_legacy.c
@@ -114,10 +114,10 @@ static void test_request_response_with_metadata_and_payload(
grpc_byte_buffer *response_payload =
grpc_byte_buffer_create(&response_payload_slice, 1);
gpr_timespec deadline = five_seconds_time();
- grpc_metadata meta1 = {"key1", "val1", 4};
- grpc_metadata meta2 = {"key2", "val2", 4};
- grpc_metadata meta3 = {"key3", "val3", 4};
- grpc_metadata meta4 = {"key4", "val4", 4};
+ grpc_metadata meta1 = {"key1", "val1", 4, {{NULL, NULL, NULL}}};
+ grpc_metadata meta2 = {"key2", "val2", 4, {{NULL, NULL, NULL}}};
+ grpc_metadata meta3 = {"key3", "val3", 4, {{NULL, NULL, NULL}}};
+ grpc_metadata meta4 = {"key4", "val4", 4, {{NULL, NULL, NULL}}};
grpc_end2end_test_fixture f = begin_test(config, __FUNCTION__, NULL, NULL);
cq_verifier *v_client = cq_verifier_create(f.client_cq);
cq_verifier *v_server = cq_verifier_create(f.server_cq);
diff --git a/test/core/end2end/tests/request_response_with_trailing_metadata_and_payload_legacy.c b/test/core/end2end/tests/request_response_with_trailing_metadata_and_payload_legacy.c
index 6431ec5ad5..aaa6078fa6 100644
--- a/test/core/end2end/tests/request_response_with_trailing_metadata_and_payload_legacy.c
+++ b/test/core/end2end/tests/request_response_with_trailing_metadata_and_payload_legacy.c
@@ -114,12 +114,12 @@ static void test_request_response_with_metadata_and_payload(
grpc_byte_buffer *response_payload =
grpc_byte_buffer_create(&response_payload_slice, 1);
gpr_timespec deadline = five_seconds_time();
- grpc_metadata meta1 = {"key1", "val1", 4};
- grpc_metadata meta2 = {"key2", "val2", 4};
- grpc_metadata meta3 = {"key3", "val3", 4};
- grpc_metadata meta4 = {"key4", "val4", 4};
- grpc_metadata meta5 = {"key5", "val5", 4};
- grpc_metadata meta6 = {"key6", "val6", 4};
+ grpc_metadata meta1 = {"key1", "val1", 4, {{NULL, NULL, NULL}}};
+ grpc_metadata meta2 = {"key2", "val2", 4, {{NULL, NULL, NULL}}};
+ grpc_metadata meta3 = {"key3", "val3", 4, {{NULL, NULL, NULL}}};
+ grpc_metadata meta4 = {"key4", "val4", 4, {{NULL, NULL, NULL}}};
+ grpc_metadata meta5 = {"key5", "val5", 4, {{NULL, NULL, NULL}}};
+ grpc_metadata meta6 = {"key6", "val6", 4, {{NULL, NULL, NULL}}};
grpc_end2end_test_fixture f = begin_test(config, __FUNCTION__, NULL, NULL);
cq_verifier *v_client = cq_verifier_create(f.client_cq);
cq_verifier *v_server = cq_verifier_create(f.server_cq);
diff --git a/test/core/surface/lame_client_test.c b/test/core/surface/lame_client_test.c
index f0420896ee..0d37502924 100644
--- a/test/core/surface/lame_client_test.c
+++ b/test/core/surface/lame_client_test.c
@@ -42,7 +42,7 @@ static void *tag(gpr_intptr x) { return (void *)x; }
int main(int argc, char **argv) {
grpc_channel *chan;
grpc_call *call;
- grpc_metadata md = {"a", "b", 1};
+ grpc_metadata md = {"a", "b", 1, {{NULL, NULL, NULL}}};
grpc_completion_queue *cq;
cq_verifier *cqv;