Index: net/spdy/hpack/hpack_header_table_test.cc |
diff --git a/net/spdy/hpack/hpack_header_table_test.cc b/net/spdy/hpack/hpack_header_table_test.cc |
index b79b7a717f96e7fe3c1fbcf3e86a7e182fe248e1..3a470365f042f1b726da9af8d03af17c42a1d9eb 100644 |
--- a/net/spdy/hpack/hpack_header_table_test.cc |
+++ b/net/spdy/hpack/hpack_header_table_test.cc |
@@ -12,6 +12,7 @@ |
#include "base/macros.h" |
#include "net/spdy/hpack/hpack_constants.h" |
#include "net/spdy/hpack/hpack_entry.h" |
+#include "net/spdy/spdy_flags.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace net { |
@@ -258,6 +259,41 @@ TEST_F(HpackHeaderTableTest, EntryIndexing) { |
} |
TEST_F(HpackHeaderTableTest, SetSizes) { |
+ FLAGS_chromium_reloadable_flag_increase_hpack_table_size = true; |
+ string key = "key", value = "value"; |
+ const HpackEntry* entry1 = table_.TryAddEntry(key, value); |
+ const HpackEntry* entry2 = table_.TryAddEntry(key, value); |
+ const HpackEntry* entry3 = table_.TryAddEntry(key, value); |
+ |
+ // Set exactly large enough. No Evictions. |
+ size_t max_size = entry1->Size() + entry2->Size() + entry3->Size(); |
+ table_.SetMaxSize(max_size); |
+ EXPECT_EQ(3u, peer_.dynamic_entries().size()); |
+ |
+ // Set just too small. One eviction. |
+ max_size = entry1->Size() + entry2->Size() + entry3->Size() - 1; |
+ table_.SetMaxSize(max_size); |
+ EXPECT_EQ(2u, peer_.dynamic_entries().size()); |
+ |
+ // Changing SETTINGS_HEADER_TABLE_SIZE. |
+ EXPECT_EQ(kDefaultHeaderTableSizeSetting, table_.settings_size_bound()); |
+ // In production, the size passed to SetSettingsHeaderTableSize is never |
+ // larger than table_.settings_size_bound(). |
+ table_.SetSettingsHeaderTableSize(kDefaultHeaderTableSizeSetting * 3 + 1); |
+ EXPECT_EQ(kDefaultHeaderTableSizeSetting * 3 + 1, table_.max_size()); |
+ |
+ // SETTINGS_HEADER_TABLE_SIZE upper-bounds |table_.max_size()|, |
+ // and will force evictions. |
+ max_size = entry3->Size() - 1; |
+ table_.SetSettingsHeaderTableSize(max_size); |
+ EXPECT_EQ(max_size, table_.max_size()); |
+ EXPECT_EQ(max_size, table_.settings_size_bound()); |
+ EXPECT_EQ(0u, peer_.dynamic_entries().size()); |
+} |
+ |
+TEST_F(HpackHeaderTableTest, SetSizesOld) { |
+ FLAGS_chromium_reloadable_flag_increase_hpack_table_size = false; |
+ |
string key = "key", value = "value"; |
const HpackEntry* entry1 = table_.TryAddEntry(key, value); |
const HpackEntry* entry2 = table_.TryAddEntry(key, value); |