Small fixes

pull/4097/head
Craig Tiller 9 years ago
parent 575b4200a7
commit 82e249b816
  1. 11
      src/core/transport/chttp2/hpack_table.c
  2. 4
      test/core/end2end/fixtures/proxy.c
  3. 7
      test/core/transport/chttp2/hpack_parser_test.c
  4. 27
      test/core/transport/chttp2/hpack_table_test.c

@ -294,10 +294,10 @@ int grpc_chttp2_hptbl_add(grpc_chttp2_hptbl *tbl, grpc_mdelem *md) {
GRPC_CHTTP2_HPACK_ENTRY_OVERHEAD; GRPC_CHTTP2_HPACK_ENTRY_OVERHEAD;
if (tbl->current_table_bytes > tbl->max_bytes) { if (tbl->current_table_bytes > tbl->max_bytes) {
gpr_log( gpr_log(GPR_ERROR,
GPR_ERROR, "HPACK max table size reduced to %d but not reflected by hpack "
"HPACK max table size reduced to %d but not reflected by hpack stream", "stream (still at %d)",
tbl->max_bytes); tbl->max_bytes, tbl->current_table_bytes);
return 0; return 0;
} }
@ -324,7 +324,8 @@ int grpc_chttp2_hptbl_add(grpc_chttp2_hptbl *tbl, grpc_mdelem *md) {
} }
/* copy the finalized entry in */ /* copy the finalized entry in */
tbl->ents[(tbl->first_ent + tbl->num_ents) % tbl->cap_entries] = GRPC_MDELEM_REF(md); tbl->ents[(tbl->first_ent + tbl->num_ents) % tbl->cap_entries] =
GRPC_MDELEM_REF(md);
/* update accounting values */ /* update accounting values */
tbl->num_ents++; tbl->num_ents++;

@ -157,9 +157,7 @@ static void unrefpc(proxy_call *pc, const char *reason) {
} }
} }
static void refpc(proxy_call *pc, const char *reason) { static void refpc(proxy_call *pc, const char *reason) { gpr_ref(&pc->refs); }
gpr_ref(&pc->refs);
}
static void on_c2p_sent_initial_metadata(void *arg, int success) { static void on_c2p_sent_initial_metadata(void *arg, int success) {
proxy_call *pc = arg; proxy_call *pc = arg;

@ -151,8 +151,8 @@ static void test_vectors(grpc_slice_split_mode mode) {
grpc_chttp2_hpack_parser_destroy(&parser); grpc_chttp2_hpack_parser_destroy(&parser);
grpc_chttp2_hpack_parser_init(&parser, mdctx); grpc_chttp2_hpack_parser_init(&parser, mdctx);
grpc_chttp2_hptbl_set_max_bytes(&parser.table, 256); grpc_chttp2_hptbl_set_max_bytes(&parser.table, 256);
grpc_chttp2_hptbl_set_current_table_size(&parser.table, 256); grpc_chttp2_hptbl_set_current_table_size(&parser.table, 256);
/* D.5.1 */ /* D.5.1 */
test_vector(&parser, mode, test_vector(&parser, mode,
"4803 3330 3258 0770 7269 7661 7465 611d" "4803 3330 3258 0770 7269 7661 7465 611d"
@ -185,7 +185,8 @@ grpc_chttp2_hptbl_set_current_table_size(&parser.table, 256);
grpc_chttp2_hpack_parser_destroy(&parser); grpc_chttp2_hpack_parser_destroy(&parser);
grpc_chttp2_hpack_parser_init(&parser, mdctx); grpc_chttp2_hpack_parser_init(&parser, mdctx);
parser.table.max_bytes = 256; grpc_chttp2_hptbl_set_max_bytes(&parser.table, 256);
grpc_chttp2_hptbl_set_current_table_size(&parser.table, 256);
/* D.6.1 */ /* D.6.1 */
test_vector(&parser, mode, test_vector(&parser, mode,
"4882 6402 5885 aec3 771a 4b61 96d0 7abe" "4882 6402 5885 aec3 771a 4b61 96d0 7abe"

@ -143,10 +143,12 @@ static void test_many_additions(void) {
grpc_chttp2_hptbl_init(&tbl, mdctx); grpc_chttp2_hptbl_init(&tbl, mdctx);
for (i = 0; i < 1000000; i++) { for (i = 0; i < 1000000; i++) {
grpc_mdelem *elem;
gpr_asprintf(&key, "K:%d", i); gpr_asprintf(&key, "K:%d", i);
gpr_asprintf(&value, "VALUE:%d", i); gpr_asprintf(&value, "VALUE:%d", i);
GPR_ASSERT(grpc_chttp2_hptbl_add( elem = grpc_mdelem_from_strings(mdctx, key, value);
&tbl, grpc_mdelem_from_strings(mdctx, key, value))); GPR_ASSERT(grpc_chttp2_hptbl_add(&tbl, elem));
GRPC_MDELEM_UNREF(elem);
assert_index(&tbl, 1 + GRPC_CHTTP2_LAST_STATIC_ENTRY, key, value); assert_index(&tbl, 1 + GRPC_CHTTP2_LAST_STATIC_ENTRY, key, value);
gpr_free(key); gpr_free(key);
gpr_free(value); gpr_free(value);
@ -177,18 +179,22 @@ static void test_find(void) {
gpr_uint32 i; gpr_uint32 i;
char buffer[32]; char buffer[32];
grpc_mdctx *mdctx; grpc_mdctx *mdctx;
grpc_mdelem *elem;
grpc_chttp2_hptbl_find_result r; grpc_chttp2_hptbl_find_result r;
LOG_TEST("test_find"); LOG_TEST("test_find");
mdctx = grpc_mdctx_create(); mdctx = grpc_mdctx_create();
grpc_chttp2_hptbl_init(&tbl, mdctx); grpc_chttp2_hptbl_init(&tbl, mdctx);
GPR_ASSERT(grpc_chttp2_hptbl_add( elem = grpc_mdelem_from_strings(mdctx, "abc", "xyz");
&tbl, grpc_mdelem_from_strings(mdctx, "abc", "xyz"))); GPR_ASSERT(grpc_chttp2_hptbl_add(&tbl, elem));
GPR_ASSERT(grpc_chttp2_hptbl_add( GRPC_MDELEM_UNREF(elem);
&tbl, grpc_mdelem_from_strings(mdctx, "abc", "123"))); elem = grpc_mdelem_from_strings(mdctx, "abc", "123");
GPR_ASSERT( GPR_ASSERT(grpc_chttp2_hptbl_add(&tbl, elem));
grpc_chttp2_hptbl_add(&tbl, grpc_mdelem_from_strings(mdctx, "x", "1"))); GRPC_MDELEM_UNREF(elem);
elem = grpc_mdelem_from_strings(mdctx, "x", "1");
GPR_ASSERT(grpc_chttp2_hptbl_add(&tbl, elem));
GRPC_MDELEM_UNREF(elem);
r = find_simple(&tbl, "abc", "123"); r = find_simple(&tbl, "abc", "123");
GPR_ASSERT(r.index == 2 + GRPC_CHTTP2_LAST_STATIC_ENTRY); GPR_ASSERT(r.index == 2 + GRPC_CHTTP2_LAST_STATIC_ENTRY);
@ -237,8 +243,9 @@ static void test_find(void) {
/* overflow the string buffer, check find still works */ /* overflow the string buffer, check find still works */
for (i = 0; i < 10000; i++) { for (i = 0; i < 10000; i++) {
gpr_ltoa(i, buffer); gpr_ltoa(i, buffer);
GPR_ASSERT(grpc_chttp2_hptbl_add( elem = grpc_mdelem_from_strings(mdctx, "test", buffer);
&tbl, grpc_mdelem_from_strings(mdctx, "test", buffer))); GPR_ASSERT(grpc_chttp2_hptbl_add(&tbl, elem));
GRPC_MDELEM_UNREF(elem);
} }
r = find_simple(&tbl, "abc", "123"); r = find_simple(&tbl, "abc", "123");

Loading…
Cancel
Save