summaryrefslogtreecommitdiff
path: root/chromium/net/third_party/quiche/src/quic/core/qpack/qpack_required_insert_count_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/third_party/quiche/src/quic/core/qpack/qpack_required_insert_count_test.cc')
-rw-r--r--chromium/net/third_party/quiche/src/quic/core/qpack/qpack_required_insert_count_test.cc125
1 files changed, 0 insertions, 125 deletions
diff --git a/chromium/net/third_party/quiche/src/quic/core/qpack/qpack_required_insert_count_test.cc b/chromium/net/third_party/quiche/src/quic/core/qpack/qpack_required_insert_count_test.cc
deleted file mode 100644
index 3fa71468931..00000000000
--- a/chromium/net/third_party/quiche/src/quic/core/qpack/qpack_required_insert_count_test.cc
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright (c) 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "quic/core/qpack/qpack_required_insert_count.h"
-
-#include "absl/base/macros.h"
-#include "quic/platform/api/quic_test.h"
-
-namespace quic {
-namespace test {
-namespace {
-
-TEST(QpackRequiredInsertCountTest, QpackEncodeRequiredInsertCount) {
- EXPECT_EQ(0u, QpackEncodeRequiredInsertCount(0, 0));
- EXPECT_EQ(0u, QpackEncodeRequiredInsertCount(0, 8));
- EXPECT_EQ(0u, QpackEncodeRequiredInsertCount(0, 1024));
-
- EXPECT_EQ(2u, QpackEncodeRequiredInsertCount(1, 8));
- EXPECT_EQ(5u, QpackEncodeRequiredInsertCount(20, 8));
- EXPECT_EQ(7u, QpackEncodeRequiredInsertCount(106, 10));
-}
-
-// For testing valid decodings, the Encoded Required Insert Count is calculated
-// from Required Insert Count, so that there is an expected value to compare
-// the decoded value against, and so that intricate inequalities can be
-// documented.
-struct {
- uint64_t required_insert_count;
- uint64_t max_entries;
- uint64_t total_number_of_inserts;
-} kTestData[] = {
- // Maximum dynamic table capacity is zero.
- {0, 0, 0},
- // No dynamic entries in header.
- {0, 100, 0},
- {0, 100, 500},
- // Required Insert Count has not wrapped around yet, no entries evicted.
- {15, 100, 25},
- {20, 100, 10},
- // Required Insert Count has not wrapped around yet, some entries evicted.
- {90, 100, 110},
- // Required Insert Count has wrapped around.
- {234, 100, 180},
- // Required Insert Count has wrapped around many times.
- {5678, 100, 5701},
- // Lowest and highest possible Required Insert Count values
- // for given MaxEntries and total number of insertions.
- {401, 100, 500},
- {600, 100, 500}};
-
-TEST(QpackRequiredInsertCountTest, QpackDecodeRequiredInsertCount) {
- for (size_t i = 0; i < ABSL_ARRAYSIZE(kTestData); ++i) {
- const uint64_t required_insert_count = kTestData[i].required_insert_count;
- const uint64_t max_entries = kTestData[i].max_entries;
- const uint64_t total_number_of_inserts =
- kTestData[i].total_number_of_inserts;
-
- if (required_insert_count != 0) {
- // Dynamic entries cannot be referenced if dynamic table capacity is zero.
- ASSERT_LT(0u, max_entries) << i;
- // Entry |total_number_of_inserts - 1 - max_entries| and earlier entries
- // are evicted. Entry |required_insert_count - 1| is referenced. No
- // evicted entry can be referenced.
- ASSERT_LT(total_number_of_inserts, required_insert_count + max_entries)
- << i;
- // Entry |required_insert_count - 1 - max_entries| and earlier entries are
- // evicted, entry |total_number_of_inserts - 1| is the last acknowledged
- // entry. Every evicted entry must be acknowledged.
- ASSERT_LE(required_insert_count, total_number_of_inserts + max_entries)
- << i;
- }
-
- uint64_t encoded_required_insert_count =
- QpackEncodeRequiredInsertCount(required_insert_count, max_entries);
-
- // Initialize to a value different from the expected output to confirm that
- // QpackDecodeRequiredInsertCount() modifies the value of
- // |decoded_required_insert_count|.
- uint64_t decoded_required_insert_count = required_insert_count + 1;
- EXPECT_TRUE(QpackDecodeRequiredInsertCount(
- encoded_required_insert_count, max_entries, total_number_of_inserts,
- &decoded_required_insert_count))
- << i;
-
- EXPECT_EQ(decoded_required_insert_count, required_insert_count) << i;
- }
-}
-
-// Failures are tested with hardcoded values for encoded required insert count,
-// to provide test coverage for values that would never be produced by a well
-// behaved encoding function.
-struct {
- uint64_t encoded_required_insert_count;
- uint64_t max_entries;
- uint64_t total_number_of_inserts;
-} kInvalidTestData[] = {
- // Maximum dynamic table capacity is zero, yet header block
- // claims to have a reference to a dynamic table entry.
- {1, 0, 0},
- {9, 0, 0},
- // Examples from
- // https://github.com/quicwg/base-drafts/issues/2112#issue-389626872.
- {1, 10, 2},
- {18, 10, 2},
- // Encoded Required Insert Count value too small or too large
- // for given MaxEntries and total number of insertions.
- {400, 100, 500},
- {601, 100, 500}};
-
-TEST(QpackRequiredInsertCountTest, DecodeRequiredInsertCountError) {
- for (size_t i = 0; i < ABSL_ARRAYSIZE(kInvalidTestData); ++i) {
- uint64_t decoded_required_insert_count = 0;
- EXPECT_FALSE(QpackDecodeRequiredInsertCount(
- kInvalidTestData[i].encoded_required_insert_count,
- kInvalidTestData[i].max_entries,
- kInvalidTestData[i].total_number_of_inserts,
- &decoded_required_insert_count))
- << i;
- }
-}
-
-} // namespace
-} // namespace test
-} // namespace quic