diff options
Diffstat (limited to 'test/core')
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; |