diff options
Diffstat (limited to 'test/core/transport/chttp2/hpack_encoder_test.cc')
-rw-r--r-- | test/core/transport/chttp2/hpack_encoder_test.cc | 91 |
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) { |