aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/core/transport/chttp2/hpack_encoder_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/core/transport/chttp2/hpack_encoder_test.cc')
-rw-r--r--test/core/transport/chttp2/hpack_encoder_test.cc91
1 files changed, 50 insertions, 41 deletions
diff --git a/test/core/transport/chttp2/hpack_encoder_test.cc b/test/core/transport/chttp2/hpack_encoder_test.cc
index d2dbd4a798..2d18b72504 100644
--- a/test/core/transport/chttp2/hpack_encoder_test.cc
+++ b/test/core/transport/chttp2/hpack_encoder_test.cc
@@ -51,8 +51,8 @@ typedef struct {
/* verify that the output generated by encoding the stream matches the
hexstring passed in */
-static void verify(const verify_params params, const char* expected,
- size_t nheaders, ...) {
+static void verify(grpc_exec_ctx* exec_ctx, const verify_params params,
+ const char* expected, size_t nheaders, ...) {
grpc_slice_buffer output;
grpc_slice merged;
grpc_slice expect = parse_hexstring(expected);
@@ -77,7 +77,8 @@ static void verify(const verify_params params, const char* expected,
value_slice = grpc_slice_intern(value_slice);
}
e[i].md = grpc_mdelem_from_slices(
- grpc_slice_intern(grpc_slice_from_static_string(key)), value_slice);
+ exec_ctx, grpc_slice_intern(grpc_slice_from_static_string(key)),
+ value_slice);
}
e[0].prev = nullptr;
e[nheaders - 1].next = nullptr;
@@ -105,10 +106,11 @@ static void verify(const verify_params params, const char* expected,
16384, /* max_frame_size */
&stats /* stats */
};
- grpc_chttp2_encode_header(&g_compressor, nullptr, 0, &b, &hopt, &output);
+ grpc_chttp2_encode_header(exec_ctx, &g_compressor, nullptr, 0, &b, &hopt,
+ &output);
merged = grpc_slice_merge(output.slices, output.count);
- grpc_slice_buffer_destroy_internal(&output);
- grpc_metadata_batch_destroy(&b);
+ grpc_slice_buffer_destroy_internal(exec_ctx, &output);
+ grpc_metadata_batch_destroy(exec_ctx, &b);
if (!grpc_slice_eq(merged, expect)) {
char* expect_str = grpc_dump_slice(expect, GPR_DUMP_HEX | GPR_DUMP_ASCII);
@@ -121,11 +123,11 @@ static void verify(const verify_params params, const char* expected,
g_failure = 1;
}
- grpc_slice_unref_internal(merged);
- grpc_slice_unref_internal(expect);
+ grpc_slice_unref_internal(exec_ctx, merged);
+ grpc_slice_unref_internal(exec_ctx, expect);
}
-static void test_basic_headers() {
+static void test_basic_headers(grpc_exec_ctx* exec_ctx) {
int i;
verify_params params = {
@@ -133,22 +135,24 @@ static void test_basic_headers() {
false,
false,
};
- verify(params, "000005 0104 deadbeef 40 0161 0161", 1, "a", "a");
- verify(params, "000001 0104 deadbeef be", 1, "a", "a");
- verify(params, "000001 0104 deadbeef be", 1, "a", "a");
- verify(params, "000006 0104 deadbeef be 40 0162 0163", 2, "a", "a", "b", "c");
- verify(params, "000002 0104 deadbeef bf be", 2, "a", "a", "b", "c");
- verify(params, "000004 0104 deadbeef 7f 00 0164", 1, "a", "d");
+ verify(exec_ctx, params, "000005 0104 deadbeef 40 0161 0161", 1, "a", "a");
+ verify(exec_ctx, params, "000001 0104 deadbeef be", 1, "a", "a");
+ verify(exec_ctx, params, "000001 0104 deadbeef be", 1, "a", "a");
+ verify(exec_ctx, params, "000006 0104 deadbeef be 40 0162 0163", 2, "a", "a",
+ "b", "c");
+ verify(exec_ctx, params, "000002 0104 deadbeef bf be", 2, "a", "a", "b", "c");
+ verify(exec_ctx, params, "000004 0104 deadbeef 7f 00 0164", 1, "a", "d");
/* flush out what's there to make a few values look very popular */
for (i = 0; i < 350; i++) {
- verify(params, "000003 0104 deadbeef c0 bf be", 3, "a", "a", "b", "c", "a",
- "d");
+ verify(exec_ctx, params, "000003 0104 deadbeef c0 bf be", 3, "a", "a", "b",
+ "c", "a", "d");
}
- verify(params, "000006 0104 deadbeef c0 00 016b 0176", 2, "a", "a", "k", "v");
+ verify(exec_ctx, params, "000006 0104 deadbeef c0 00 016b 0176", 2, "a", "a",
+ "k", "v");
/* this could be 000004 0104 deadbeef 0f 30 0176 also */
- verify(params, "000004 0104 deadbeef 0f 2f 0176", 1, "a", "v");
+ verify(exec_ctx, params, "000004 0104 deadbeef 0f 2f 0176", 1, "a", "v");
}
static void encode_int_to_str(int i, char* p) {
@@ -159,7 +163,7 @@ static void encode_int_to_str(int i, char* p) {
p[2] = 0;
}
-static void test_decode_table_overflow() {
+static void test_decode_table_overflow(grpc_exec_ctx* exec_ctx) {
int i;
char key[3], value[3];
char* expect;
@@ -188,24 +192,26 @@ static void test_decode_table_overflow() {
}
if (i > 0) {
- verify(params, expect, 2, "aa", "ba", key, value);
+ verify(exec_ctx, params, expect, 2, "aa", "ba", key, value);
} else {
- verify(params, expect, 1, key, value);
+ verify(exec_ctx, params, expect, 1, key, value);
}
gpr_free(expect);
}
/* if the above passes, then we must have just knocked this pair out of the
decoder stack, and so we'll be forced to re-encode it */
- verify(params, "000007 0104 deadbeef 40 026161 026261", 1, "aa", "ba");
+ verify(exec_ctx, params, "000007 0104 deadbeef 40 026161 026261", 1, "aa",
+ "ba");
}
-static void verify_table_size_change_match_elem_size(const char* key,
+static void verify_table_size_change_match_elem_size(grpc_exec_ctx* exec_ctx,
+ const char* key,
const char* value,
bool use_true_binary) {
grpc_slice_buffer output;
grpc_mdelem elem = grpc_mdelem_from_slices(
- grpc_slice_intern(grpc_slice_from_static_string(key)),
+ exec_ctx, grpc_slice_intern(grpc_slice_from_static_string(key)),
grpc_slice_intern(grpc_slice_from_static_string(value)));
size_t elem_size = grpc_mdelem_get_size_in_hpack_table(elem, use_true_binary);
size_t initial_table_size = g_compressor.table_size;
@@ -229,38 +235,41 @@ static void verify_table_size_change_match_elem_size(const char* key,
use_true_binary, /* use_true_binary_metadata */
16384, /* max_frame_size */
&stats /* stats */};
- grpc_chttp2_encode_header(&g_compressor, nullptr, 0, &b, &hopt, &output);
- grpc_slice_buffer_destroy_internal(&output);
- grpc_metadata_batch_destroy(&b);
+ grpc_chttp2_encode_header(exec_ctx, &g_compressor, nullptr, 0, &b, &hopt,
+ &output);
+ grpc_slice_buffer_destroy_internal(exec_ctx, &output);
+ grpc_metadata_batch_destroy(exec_ctx, &b);
GPR_ASSERT(g_compressor.table_size == elem_size + initial_table_size);
gpr_free(e);
}
-static void test_encode_header_size() {
- verify_table_size_change_match_elem_size("hello", "world", false);
- verify_table_size_change_match_elem_size("hello-bin", "world", false);
- verify_table_size_change_match_elem_size("true-binary-bin",
+static void test_encode_header_size(grpc_exec_ctx* exec_ctx) {
+ verify_table_size_change_match_elem_size(exec_ctx, "hello", "world", false);
+ verify_table_size_change_match_elem_size(exec_ctx, "hello-bin", "world",
+ false);
+ verify_table_size_change_match_elem_size(exec_ctx, "true-binary-bin",
"I_am_true_binary_value", true);
}
-static void test_interned_key_indexed() {
+static void test_interned_key_indexed(grpc_exec_ctx* exec_ctx) {
int i;
verify_params params = {false, false, true};
- verify(params, "000009 0104 deadbeef 40 0161 0162 0f2f 0163", 2, "a", "b",
- "a", "c");
+ verify(exec_ctx, params, "000009 0104 deadbeef 40 0161 0162 0f2f 0163", 2,
+ "a", "b", "a", "c");
for (i = 0; i < 10; i++) {
- verify(params, "000008 0104 deadbeef 0f2f 0162 0f2f 0163", 2, "a", "b", "a",
- "c");
+ verify(exec_ctx, params, "000008 0104 deadbeef 0f2f 0162 0f2f 0163", 2, "a",
+ "b", "a", "c");
}
}
-static void run_test(void (*test)(), const char* name) {
+static void run_test(void (*test)(grpc_exec_ctx* exec_ctx), const char* name) {
gpr_log(GPR_INFO, "RUN TEST: %s", name);
- grpc_core::ExecCtx exec_ctx;
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_chttp2_hpack_compressor_init(&g_compressor);
- test();
- grpc_chttp2_hpack_compressor_destroy(&g_compressor);
+ test(&exec_ctx);
+ grpc_chttp2_hpack_compressor_destroy(&exec_ctx, &g_compressor);
+ grpc_exec_ctx_finish(&exec_ctx);
}
int main(int argc, char** argv) {