18 #include <unordered_map>
20 #include <gtest/gtest.h>
22 #include "src/core/ext/transport/chttp2/transport/hpack_encoder_index.h"
28 bool intern_key,
bool intern_value) {
29 grpc_mdelem
elem = grpc_mdelem_from_slices(
32 size_t elem_size = MetadataSizeInHPackTable(
elem,
false);
33 size_t expected_size = 32 + strlen(
key) + strlen(
value);
35 GRPC_MDELEM_UNREF(
elem);
39 size_t value_len,
bool intern_key,
41 grpc_mdelem
elem = grpc_mdelem_from_slices(
46 size_t elem_size = MetadataSizeInHPackTable(
elem,
false);
48 reinterpret_cast<const char*
>(
value), value_len);
54 GRPC_MDELEM_UNREF(
elem);
65 #define BUFFER_SIZE 64
67 const bool intern_key = GetParam().intern_key;
68 const bool intern_value = GetParam().intern_value;
70 intern_key, intern_value);
79 verify_ascii_header_size(
"hello",
"world", intern_key, intern_value);
80 verify_ascii_header_size(
"hello",
"worldxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
81 intern_key, intern_value);
82 verify_ascii_header_size(
":scheme",
"http", intern_key, intern_value);
85 verify_binary_header_size(
"hello-bin", binary_value,
i, intern_key,
98 TEST(HPackEncoderIndexTest, SetAndGet) {
99 HPackEncoderIndex<TestKey, 64>
index;
100 std::default_random_engine rng;
101 std::unordered_map<uint32_t, uint32_t> last_index;
108 for (
auto p : last_index) {
109 auto r =
index.Lookup({p.first});
119 int main(
int argc,
char** argv) {