aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/core/transport/chttp2/hpack_encoder_test.c
diff options
context:
space:
mode:
authorGravatar yang-g <yangg@google.com>2016-03-30 15:57:02 -0700
committerGravatar yang-g <yangg@google.com>2016-03-30 15:57:02 -0700
commita863b8e4ef911c1d18808822f5524b891e7f486f (patch)
treebb6a349220406ae39e01ba3843e22306d6368e24 /test/core/transport/chttp2/hpack_encoder_test.c
parentcb7a80266b4fb867481807dc439d3c002f74d466 (diff)
tests
Diffstat (limited to 'test/core/transport/chttp2/hpack_encoder_test.c')
-rw-r--r--test/core/transport/chttp2/hpack_encoder_test.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/core/transport/chttp2/hpack_encoder_test.c b/test/core/transport/chttp2/hpack_encoder_test.c
index 818ce09a7c..1cddecb850 100644
--- a/test/core/transport/chttp2/hpack_encoder_test.c
+++ b/test/core/transport/chttp2/hpack_encoder_test.c
@@ -179,6 +179,34 @@ static void test_decode_table_overflow(void) {
verify(0, 0, 0, "000007 0104 deadbeef 40 026161 026261", 1, "aa", "ba");
}
+static void verify_table_size_change_match_elem_size(const char *key,
+ const char *value) {
+ gpr_slice_buffer output;
+ grpc_mdelem *elem = grpc_mdelem_from_strings(key, value);
+ size_t elem_size = grpc_mdelem_get_size_in_hpack_table(elem);
+ size_t initial_table_size = g_compressor.table_size;
+ grpc_linked_mdelem *e = gpr_malloc(sizeof(*e));
+ grpc_metadata_batch b;
+ grpc_metadata_batch_init(&b);
+ e[0].md = elem;
+ e[0].prev = NULL;
+ e[0].next = NULL;
+ b.list.head = &e[0];
+ b.list.tail = &e[0];
+ gpr_slice_buffer_init(&output);
+
+ grpc_chttp2_encode_header(&g_compressor, 0xdeadbeef, &b, 0, &output);
+ gpr_slice_buffer_destroy(&output);
+ grpc_metadata_batch_destroy(&b);
+
+ GPR_ASSERT(g_compressor.table_size == elem_size + initial_table_size);
+}
+
+static void test_encode_header_size(void) {
+ verify_table_size_change_match_elem_size("hello", "world");
+ verify_table_size_change_match_elem_size("hello-bin", "world");
+}
+
static void run_test(void (*test)(), const char *name) {
gpr_log(GPR_INFO, "RUN TEST: %s", name);
grpc_chttp2_hpack_compressor_init(&g_compressor);
@@ -193,6 +221,7 @@ int main(int argc, char **argv) {
grpc_init();
TEST(test_basic_headers);
TEST(test_decode_table_overflow);
+ TEST(test_encode_header_size);
grpc_shutdown();
for (i = 0; i < num_to_delete; i++) {
gpr_free(to_delete[i]);