| Index: net/spdy/fuzzing/hpack_fuzz_util_test.cc
|
| diff --git a/net/spdy/fuzzing/hpack_fuzz_util_test.cc b/net/spdy/fuzzing/hpack_fuzz_util_test.cc
|
| deleted file mode 100644
|
| index bbc72dfdbb07c44604f877bbe772b371d5168cb6..0000000000000000000000000000000000000000
|
| --- a/net/spdy/fuzzing/hpack_fuzz_util_test.cc
|
| +++ /dev/null
|
| @@ -1,147 +0,0 @@
|
| -// Copyright 2014 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 "net/spdy/fuzzing/hpack_fuzz_util.h"
|
| -
|
| -#include <map>
|
| -
|
| -#include "base/base_paths.h"
|
| -#include "base/files/file.h"
|
| -#include "base/files/file_util.h"
|
| -#include "base/path_service.h"
|
| -#include "net/spdy/spdy_test_utils.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace net {
|
| -namespace test {
|
| -
|
| -using std::map;
|
| -using test::a2b_hex;
|
| -
|
| -TEST(HpackFuzzUtilTest, GeneratorContextInitialization) {
|
| - HpackFuzzUtil::GeneratorContext context;
|
| - HpackFuzzUtil::InitializeGeneratorContext(&context);
|
| -
|
| - // Context was seeded with initial name & value fixtures.
|
| - EXPECT_LT(0u, context.names.size());
|
| - EXPECT_LT(0u, context.values.size());
|
| -}
|
| -
|
| -TEST(HpackFuzzUtil, GeneratorContextExpansion) {
|
| - HpackFuzzUtil::GeneratorContext context;
|
| -
|
| - SpdyHeaderBlock headers = HpackFuzzUtil::NextGeneratedHeaderSet(&context);
|
| -
|
| - // Headers were generated, and the generator context was expanded.
|
| - EXPECT_LT(0u, headers.size());
|
| - EXPECT_LT(0u, context.names.size());
|
| - EXPECT_LT(0u, context.values.size());
|
| -}
|
| -
|
| -// TODO(jgraettinger): A better test would mock a random generator and
|
| -// evaluate SampleExponential along fixed points of the [0,1] domain.
|
| -TEST(HpackFuzzUtilTest, SampleExponentialRegression) {
|
| - // TODO(jgraettinger): Upstream uses a seeded random generator here to pin
|
| - // the behavior of SampleExponential. Chromium's random generation utilities
|
| - // are strongly secure, but provide no way to seed the generator.
|
| - for (size_t i = 0; i != 100; ++i) {
|
| - EXPECT_GE(30u, HpackFuzzUtil::SampleExponential(10, 30));
|
| - }
|
| -}
|
| -
|
| -TEST(HpackFuzzUtilTest, ParsesSequenceOfHeaderBlocks) {
|
| - char fixture[] =
|
| - "\x00\x00\x00\x05""aaaaa"
|
| - "\x00\x00\x00\x04""bbbb"
|
| - "\x00\x00\x00\x03""ccc"
|
| - "\x00\x00\x00\x02""dd"
|
| - "\x00\x00\x00\x01""e"
|
| - "\x00\x00\x00\x00"""
|
| - "\x00\x00\x00\x03""fin";
|
| -
|
| - HpackFuzzUtil::Input input;
|
| - input.input.assign(fixture, arraysize(fixture) - 1);
|
| -
|
| - SpdyStringPiece block;
|
| -
|
| - EXPECT_TRUE(HpackFuzzUtil::NextHeaderBlock(&input, &block));
|
| - EXPECT_EQ("aaaaa", block);
|
| - EXPECT_TRUE(HpackFuzzUtil::NextHeaderBlock(&input, &block));
|
| - EXPECT_EQ("bbbb", block);
|
| - EXPECT_TRUE(HpackFuzzUtil::NextHeaderBlock(&input, &block));
|
| - EXPECT_EQ("ccc", block);
|
| - EXPECT_TRUE(HpackFuzzUtil::NextHeaderBlock(&input, &block));
|
| - EXPECT_EQ("dd", block);
|
| - EXPECT_TRUE(HpackFuzzUtil::NextHeaderBlock(&input, &block));
|
| - EXPECT_EQ("e", block);
|
| - EXPECT_TRUE(HpackFuzzUtil::NextHeaderBlock(&input, &block));
|
| - EXPECT_EQ("", block);
|
| - EXPECT_TRUE(HpackFuzzUtil::NextHeaderBlock(&input, &block));
|
| - EXPECT_EQ("fin", block);
|
| - EXPECT_FALSE(HpackFuzzUtil::NextHeaderBlock(&input, &block));
|
| -}
|
| -
|
| -TEST(HpackFuzzUtilTest, SerializedHeaderBlockPrefixes) {
|
| - EXPECT_EQ(SpdyString("\x00\x00\x00\x00", 4),
|
| - HpackFuzzUtil::HeaderBlockPrefix(0));
|
| - EXPECT_EQ(SpdyString("\x00\x00\x00\x05", 4),
|
| - HpackFuzzUtil::HeaderBlockPrefix(5));
|
| - EXPECT_EQ("\x4f\xb3\x0a\x91", HpackFuzzUtil::HeaderBlockPrefix(1337133713));
|
| -}
|
| -
|
| -TEST(HpackFuzzUtilTest, PassValidInputThroughAllStages) {
|
| - // Example lifted from HpackDecoderTest.SectionD4RequestHuffmanExamples.
|
| - SpdyString input = a2b_hex("828684418cf1e3c2e5f23a6ba0ab90f4ff");
|
| -
|
| - HpackFuzzUtil::FuzzerContext context;
|
| - HpackFuzzUtil::InitializeFuzzerContext(&context);
|
| -
|
| - EXPECT_TRUE(
|
| - HpackFuzzUtil::RunHeaderBlockThroughFuzzerStages(&context, input));
|
| -
|
| - SpdyHeaderBlock expect;
|
| - expect[":method"] = "GET";
|
| - expect[":scheme"] = "http";
|
| - expect[":path"] = "/";
|
| - expect[":authority"] = "www.example.com";
|
| - EXPECT_EQ(expect, context.third_stage->decoded_block());
|
| -}
|
| -
|
| -TEST(HpackFuzzUtilTest, ValidFuzzExamplesRegressionTest) {
|
| - base::FilePath source_root;
|
| - ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &source_root));
|
| -
|
| - // Load the example fixtures versioned with the source tree.
|
| - HpackFuzzUtil::Input input;
|
| - ASSERT_TRUE(base::ReadFileToString(
|
| - source_root.Append(FILE_PATH_LITERAL("net"))
|
| - .Append(FILE_PATH_LITERAL("data"))
|
| - .Append(FILE_PATH_LITERAL("spdy_tests"))
|
| - .Append(FILE_PATH_LITERAL("examples_07.hpack")),
|
| - &input.input));
|
| -
|
| - HpackFuzzUtil::FuzzerContext context;
|
| - HpackFuzzUtil::InitializeFuzzerContext(&context);
|
| -
|
| - SpdyStringPiece block;
|
| - while (HpackFuzzUtil::NextHeaderBlock(&input, &block)) {
|
| - // As these are valid examples, all fuzz stages should succeed.
|
| - EXPECT_TRUE(HpackFuzzUtil::RunHeaderBlockThroughFuzzerStages(
|
| - &context, block));
|
| - }
|
| -}
|
| -
|
| -TEST(HpackFuzzUtilTest, FlipBitsMutatesBuffer) {
|
| - char buffer[] = "testbuffer1234567890";
|
| - SpdyString unmodified(buffer, arraysize(buffer) - 1);
|
| -
|
| - EXPECT_EQ(unmodified, buffer);
|
| - HpackFuzzUtil::FlipBits(reinterpret_cast<uint8_t*>(buffer),
|
| - arraysize(buffer) - 1, 1);
|
| - EXPECT_NE(unmodified, buffer);
|
| -}
|
| -
|
| -} // namespace test
|
| -} // namespace net
|
|
|