11 #include <glog/logging.h> 22 using namespace folly;
36 table_.add(header.
copy());
46 CHECK_EQ(context.
getIndex(method), 3);
52 for (
int i = 1;
i <= 10;
i++) {
54 "value" + folly::to<string>(
i));
71 const HPACKHeader& last = table.getHeader(table.size());
74 CHECK_EQ(table.size(), 61);
75 CHECK_EQ(methodPost,
HPACKHeader(
":method",
"POST"));
76 CHECK_EQ(first.
name.
get(),
":authority");
77 CHECK_EQ(last.
name.
get(),
"www-authenticate");
82 for (std::pair<
HPACKHeaderName, std::list<uint32_t>> entry : table.names()) {
88 static_table_is_header_code_in_table_with_non_empty_value) {
91 const HPACKHeader& staticTableHeader = table.getHeader(
i);
94 StaticHeaderTable::isHeaderCodeInTableWithNonEmptyValue(
113 vector<HPACKHeader> req;
114 req.push_back(
HPACKHeader(
"accept-encoding",
"gzip"));
115 req.push_back(
HPACKHeader(
"accept-encoding",
"sdch,gzip"));
116 unique_ptr<IOBuf> encoded = encoder.
encode(req);
121 unique_ptr<IOBuf> encoded2 = encoder.
encode(req);
122 EXPECT_LT(encoded2->computeChainDataLength(),
124 EXPECT_GT(encoded2->computeChainDataLength(), 0);
133 vector<HPACKHeader> headers;
134 headers.push_back(
HPACKHeader(
":path",
"verylargeheader"));
137 auto buf = encoder.
encode(headers);
149 vector<HPACKHeader> headers;
150 headers.push_back(
HPACKHeader(
"x-fb-debug",
"test"));
152 unique_ptr<IOBuf> encoded = encoder.
encode(headers);
170 vector<HPACKHeader> headers;
171 headers.push_back(
HPACKHeader(
"x-fb-random",
"bla"));
172 unique_ptr<IOBuf> encoded = encoder.
encode(headers);
201 checkError(buf.get(), HPACK::DecodeError::BUFFER_UNDERFLOW);
208 checkError(buf.get(), HPACK::DecodeError::INVALID_INDEX);
214 checkError(buf.get(), HPACK::DecodeError::BUFFER_UNDERFLOW);
218 checkError(buf.get(), HPACK::DecodeError::BUFFER_UNDERFLOW);
224 checkError(buf.get(), HPACK::DecodeError::BUFFER_UNDERFLOW);
231 checkError(buf.get(), HPACK::DecodeError::BUFFER_UNDERFLOW);
237 checkError(buf.get(), HPACK::DecodeError::INVALID_TABLE_SIZE);
252 checkError(buf.get(), HPACK::DecodeError::INTEGER_OVERFLOW);
261 CHECK_GT(header1.
bytes(), 128);
262 CHECK_LT(header2.
bytes(), 128);
264 vector<HPACKHeader> headers;
268 encoder.encode(headers);
270 CHECK_EQ(encoder.getIndex(headers[1]), 0);
271 CHECK_EQ(encoder.getIndex(headers[0]), 62);
277 vector<HPACKHeader> headers;
278 bool setDecoderSize = GetParam();
280 if (setDecoderSize) {
283 headers.push_back(
HPACKHeader(
"x-fb-random",
"bla"));
284 unique_ptr<IOBuf> encoded = encoder.
encode(headers);
293 if (setDecoderSize) {
302 ::testing::Values(
true,
false));
const uint32_t kTableSize
HPACK::DecodeError getError() const
const Instruction INDEX_REF
static std::unique_ptr< IOBuf > create(std::size_t capacity)
#define EXPECT_EQ(val1, val2)
void appendChain(std::unique_ptr< IOBuf > &&iobuf)
constexpr detail::Map< Move > move
—— Concurrent Priority Queue Implementation ——
constexpr auto size(C const &c) -> decltype(c.size())
unique_ptr< HPACKDecoder::headers_t > decode(HPACKDecoder &decoder, const IOBuf *buffer)
const HPACKHeader & getHeader(uint32_t index)
uint32_t getIndex(const HPACKHeader &header) const
std::size_t length() const
void setHeaderTableSize(uint32_t size)
TEST_P(HPACKContextTests, ContextUpdate)
void checkError(const IOBuf *buf, const HPACK::DecodeError err)
INSTANTIATE_TEST_CASE_P(Context, HPACKContextTests,::testing::Values(true, false))
const HeaderTable & getTable() const
void add(const HPACKHeader &header)
TEST_F(AsyncSSLSocketWriteTest, write_coalescing1)
std::unique_ptr< folly::IOBuf > encode(const std::vector< HPACKHeader > &headers, uint32_t headroom=0)
std::size_t computeChainDataLength() const
TestContext(uint32_t tableSize)
#define EXPECT_TRUE(condition)
void setHeaderTableMaxSize(uint32_t maxSize)
bool isStatic(uint32_t index) const
#define EXPECT_FALSE(condition)
#define EXPECT_LT(val1, val2)
PUSHMI_INLINE_VAR constexpr detail::get_fn< T > get
void append(std::size_t amount)
constexpr detail::First first
#define EXPECT_GT(val1, val2)