Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(247)

Unified Diff: net/spdy/hpack_huffman_aggregator_test.cc

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/spdy/hpack_huffman_aggregator.cc ('k') | net/spdy/hpack_huffman_table.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/spdy/hpack_huffman_aggregator_test.cc
diff --git a/net/spdy/hpack_huffman_aggregator_test.cc b/net/spdy/hpack_huffman_aggregator_test.cc
deleted file mode 100644
index 23a9a43edb762e21553c8a99ed70c66645d723e1..0000000000000000000000000000000000000000
--- a/net/spdy/hpack_huffman_aggregator_test.cc
+++ /dev/null
@@ -1,204 +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/hpack_huffman_aggregator.h"
-
-#include "base/metrics/histogram.h"
-#include "base/metrics/statistics_recorder.h"
-#include "net/base/load_flags.h"
-#include "net/http/http_request_headers.h"
-#include "net/http/http_request_info.h"
-#include "net/http/http_response_headers.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace net {
-
-using ::testing::Each;
-using ::testing::ElementsAre;
-using ::testing::Eq;
-using ::testing::Pair;
-
-namespace {
-const char kHistogramName[] = "Net.SpdyHpackEncodedCharacterFrequency";
-} // namespace
-
-namespace test {
-
-class HpackHuffmanAggregatorPeer {
- public:
- explicit HpackHuffmanAggregatorPeer(HpackHuffmanAggregator* agg)
- : agg_(agg) {}
-
- std::vector<size_t>* counts() {
- return &agg_->counts_;
- }
- HpackHuffmanAggregator::OriginEncoders* encoders() {
- return &agg_->encoders_;
- }
- size_t total_counts() {
- return agg_->total_counts_;
- }
- void set_total_counts(size_t total_counts) {
- agg_->total_counts_ = total_counts;
- }
- void set_max_encoders(size_t max_encoders) {
- agg_->max_encoders_ = max_encoders;
- }
- static bool IsCrossOrigin(const HttpRequestInfo& request) {
- return HpackHuffmanAggregator::IsCrossOrigin(request);
- }
- static void CreateSpdyHeadersFromHttpResponse(
- const HttpResponseHeaders& headers,
- SpdyHeaderBlock* headers_out) {
- HpackHuffmanAggregator::CreateSpdyHeadersFromHttpResponse(
- headers, headers_out);
- }
- HpackEncoder* ObtainEncoder(const SpdySessionKey& key) {
- return agg_->ObtainEncoder(key);
- }
- void PublishCounts() {
- agg_->PublishCounts();
- }
-
- private:
- HpackHuffmanAggregator* agg_;
-};
-
-} // namespace test
-
-class HpackHuffmanAggregatorTest : public ::testing::Test {
- protected:
- HpackHuffmanAggregatorTest()
- : peer_(&agg_) {}
-
- HpackHuffmanAggregator agg_;
- test::HpackHuffmanAggregatorPeer peer_;
-};
-
-TEST_F(HpackHuffmanAggregatorTest, CrossOriginDetermination) {
- HttpRequestInfo request;
- request.url = GURL("https://www.foo.com/a/page");
-
- // Main load without referer.
- request.load_flags = LOAD_MAIN_FRAME;
- EXPECT_FALSE(peer_.IsCrossOrigin(request));
-
- // Non-main load without referer. Treated as cross-origin.
- request.load_flags = 0;
- EXPECT_TRUE(peer_.IsCrossOrigin(request));
-
- // Main load with different referer origin.
- request.load_flags = LOAD_MAIN_FRAME;
- request.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
- "https://www.bar.com/other/page");
- EXPECT_FALSE(peer_.IsCrossOrigin(request));
-
- // Non-main load with different referer orign.
- request.load_flags = 0;
- EXPECT_TRUE(peer_.IsCrossOrigin(request));
-
- // Non-main load with same referer orign.
- request.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
- "https://www.foo.com/other/page");
- EXPECT_FALSE(peer_.IsCrossOrigin(request));
-
- // Non-main load with same referer host but different schemes.
- request.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
- "http://www.foo.com/other/page");
- EXPECT_TRUE(peer_.IsCrossOrigin(request));
-}
-
-TEST_F(HpackHuffmanAggregatorTest, EncoderLRUQueue) {
- peer_.set_max_encoders(2);
-
- SpdySessionKey key1(HostPortPair("one.com", 443), ProxyServer::Direct(),
- PRIVACY_MODE_ENABLED);
- SpdySessionKey key2(HostPortPair("two.com", 443), ProxyServer::Direct(),
- PRIVACY_MODE_ENABLED);
- SpdySessionKey key3(HostPortPair("three.com", 443), ProxyServer::Direct(),
- PRIVACY_MODE_ENABLED);
-
- // Creates one.com.
- HpackEncoder* one = peer_.ObtainEncoder(key1);
- EXPECT_EQ(1u, peer_.encoders()->size());
-
- // Creates two.com. No evictions.
- HpackEncoder* two = peer_.ObtainEncoder(key2);
- EXPECT_EQ(2u, peer_.encoders()->size());
- EXPECT_NE(one, two);
-
- // Touch one.com.
- EXPECT_EQ(one, peer_.ObtainEncoder(key1));
-
- // Creates three.com. Evicts two.com, as it's least-recently used.
- HpackEncoder* three = peer_.ObtainEncoder(key3);
- EXPECT_EQ(one, peer_.ObtainEncoder(key1));
- EXPECT_NE(one, three);
- EXPECT_EQ(2u, peer_.encoders()->size());
-}
-
-TEST_F(HpackHuffmanAggregatorTest, PublishCounts) {
- (*peer_.counts())[0] = 1;
- (*peer_.counts())[255] = 10;
- (*peer_.counts())[128] = 101;
- peer_.set_total_counts(112);
-
- peer_.PublishCounts();
-
- // Internal counts were reset after being published.
- EXPECT_THAT(*peer_.counts(), Each(Eq(0u)));
- EXPECT_EQ(0u, peer_.total_counts());
-
- // Verify histogram counts match the expectation.
- scoped_ptr<base::HistogramSamples> samples =
- base::StatisticsRecorder::FindHistogram(kHistogramName)
- ->SnapshotSamples();
-
- EXPECT_EQ(0, samples->GetCount(0));
- EXPECT_EQ(1, samples->GetCount(1));
- EXPECT_EQ(101, samples->GetCount(129));
- EXPECT_EQ(10, samples->GetCount(256));
- EXPECT_EQ(112, samples->TotalCount());
-
- // Publish a second round of counts;
- (*peer_.counts())[1] = 32;
- (*peer_.counts())[128] = 5;
- peer_.set_total_counts(37);
-
- peer_.PublishCounts();
-
- // Verify they've been aggregated into the previous counts.
- samples = base::StatisticsRecorder::FindHistogram(kHistogramName)
- ->SnapshotSamples();
-
- EXPECT_EQ(0, samples->GetCount(0));
- EXPECT_EQ(1, samples->GetCount(1));
- EXPECT_EQ(32, samples->GetCount(2));
- EXPECT_EQ(106, samples->GetCount(129));
- EXPECT_EQ(10, samples->GetCount(256));
- EXPECT_EQ(149, samples->TotalCount());
-}
-
-TEST_F(HpackHuffmanAggregatorTest, CreateSpdyResponseHeaders) {
- char kRawHeaders[] =
- "HTTP/1.1 202 Accepted \0"
- "Content-TYPE : text/html; charset=utf-8 \0"
- "Set-Cookie: foo=bar \0"
- "Set-Cookie: baz=bing \0"
- "Cache-Control: pragma=no-cache \0"
- "Cache-CONTROL: expires=12345 \0\0";
-
- scoped_refptr<HttpResponseHeaders> parsed_headers(new HttpResponseHeaders(
- std::string(kRawHeaders, arraysize(kRawHeaders) - 1)));
-
- SpdyHeaderBlock headers;
- peer_.CreateSpdyHeadersFromHttpResponse(*parsed_headers, &headers);
- EXPECT_THAT(headers, ElementsAre(
- Pair(":status", "202"),
- Pair("cache-control", std::string("pragma=no-cache\0expires=12345", 29)),
- Pair("content-type", "text/html; charset=utf-8"),
- Pair("set-cookie", std::string("foo=bar\0baz=bing", 16))));
-}
-
-} // namespace net
« no previous file with comments | « net/spdy/hpack_huffman_aggregator.cc ('k') | net/spdy/hpack_huffman_table.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698