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

Side by Side Diff: net/quic/quic_headers_stream_test.cc

Issue 1009543004: Create a Perspective enum to use instead of a bool is_server to improve (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added NET_EXPORT_PRIVATE to fix compiler error 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 unified diff | Download patch
« no previous file with comments | « net/quic/quic_headers_stream.cc ('k') | net/quic/quic_http_stream_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/quic_headers_stream.h" 5 #include "net/quic/quic_headers_stream.h"
6 6
7 #include "net/quic/quic_utils.h" 7 #include "net/quic/quic_utils.h"
8 #include "net/quic/spdy_utils.h" 8 #include "net/quic/spdy_utils.h"
9 #include "net/quic/test_tools/quic_connection_peer.h" 9 #include "net/quic/test_tools/quic_connection_peer.h"
10 #include "net/quic/test_tools/quic_session_peer.h" 10 #include "net/quic/test_tools/quic_session_peer.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 uint32 max_age, 69 uint32 max_age,
70 uint16 port, 70 uint16 port,
71 StringPiece protocol_id, 71 StringPiece protocol_id,
72 StringPiece host, 72 StringPiece host,
73 StringPiece origin)); 73 StringPiece origin));
74 MOCK_METHOD2(OnUnknownFrame, bool(SpdyStreamId stream_id, int frame_type)); 74 MOCK_METHOD2(OnUnknownFrame, bool(SpdyStreamId stream_id, int frame_type));
75 }; 75 };
76 76
77 // Run all tests with each version, and client or server 77 // Run all tests with each version, and client or server
78 struct TestParams { 78 struct TestParams {
79 TestParams(QuicVersion version, bool is_server) 79 TestParams(QuicVersion version, Perspective perspective)
80 : version(version), is_server(is_server) {} 80 : version(version), perspective(perspective) {}
81 81
82 friend ostream& operator<<(ostream& os, const TestParams& p) { 82 friend ostream& operator<<(ostream& os, const TestParams& p) {
83 os << "{ version: " << QuicVersionToString(p.version); 83 os << "{ version: " << QuicVersionToString(p.version);
84 os << ", is_server: " << p.is_server << " }"; 84 os << ", perspective: " << p.perspective << " }";
85 return os; 85 return os;
86 } 86 }
87 87
88 QuicVersion version; 88 QuicVersion version;
89 bool is_server; 89 Perspective perspective;
90 }; 90 };
91 91
92 // Constructs various test permutations. 92 // Constructs various test permutations.
93 vector<TestParams> GetTestParams() { 93 vector<TestParams> GetTestParams() {
94 vector<TestParams> params; 94 vector<TestParams> params;
95 QuicVersionVector all_supported_versions = QuicSupportedVersions(); 95 QuicVersionVector all_supported_versions = QuicSupportedVersions();
96 for (const QuicVersion version : all_supported_versions) { 96 for (const QuicVersion version : all_supported_versions) {
97 params.push_back(TestParams(version, false)); 97 params.push_back(TestParams(version, Perspective::IS_CLIENT));
98 params.push_back(TestParams(version, true)); 98 params.push_back(TestParams(version, Perspective::IS_SERVER));
99 } 99 }
100 return params; 100 return params;
101 } 101 }
102 102
103 class QuicHeadersStreamTest : public ::testing::TestWithParam<TestParams> { 103 class QuicHeadersStreamTest : public ::testing::TestWithParam<TestParams> {
104 public: 104 public:
105 QuicHeadersStreamTest() 105 QuicHeadersStreamTest()
106 : connection_(new StrictMock<MockConnection>(is_server(), GetVersion())), 106 : connection_(
107 new StrictMock<MockConnection>(perspective(), GetVersion())),
107 session_(connection_), 108 session_(connection_),
108 headers_stream_(QuicSessionPeer::GetHeadersStream(&session_)), 109 headers_stream_(QuicSessionPeer::GetHeadersStream(&session_)),
109 body_("hello world"), 110 body_("hello world"),
110 framer_(version() > QUIC_VERSION_23 ? SPDY4 : SPDY3) { 111 framer_(version() > QUIC_VERSION_23 ? SPDY4 : SPDY3) {
111 headers_[":version"] = "HTTP/1.1"; 112 headers_[":version"] = "HTTP/1.1";
112 headers_[":status"] = "200 Ok"; 113 headers_[":status"] = "200 Ok";
113 headers_["content-length"] = "11"; 114 headers_["content-length"] = "11";
114 framer_.set_visitor(&visitor_); 115 framer_.set_visitor(&visitor_);
115 EXPECT_EQ(version(), session_.connection()->version()); 116 EXPECT_EQ(version(), session_.connection()->version());
116 EXPECT_TRUE(headers_stream_ != nullptr); 117 EXPECT_TRUE(headers_stream_ != nullptr);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 void CheckHeaders() { 191 void CheckHeaders() {
191 SpdyHeaderBlock headers; 192 SpdyHeaderBlock headers;
192 EXPECT_EQ(saved_header_data_.length(), 193 EXPECT_EQ(saved_header_data_.length(),
193 framer_.ParseHeaderBlockInBuffer(saved_header_data_.data(), 194 framer_.ParseHeaderBlockInBuffer(saved_header_data_.data(),
194 saved_header_data_.length(), 195 saved_header_data_.length(),
195 &headers)); 196 &headers));
196 EXPECT_EQ(headers_, headers); 197 EXPECT_EQ(headers_, headers);
197 saved_header_data_.clear(); 198 saved_header_data_.clear();
198 } 199 }
199 200
200 bool is_server() { return GetParam().is_server; } 201 Perspective perspective() { return GetParam().perspective; }
201 202
202 QuicVersion version() { return GetParam().version; } 203 QuicVersion version() { return GetParam().version; }
203 204
204 QuicVersionVector GetVersion() { 205 QuicVersionVector GetVersion() {
205 QuicVersionVector versions; 206 QuicVersionVector versions;
206 versions.push_back(version()); 207 versions.push_back(version());
207 return versions; 208 return versions;
208 } 209 }
209 210
210 void CloseConnection() { 211 void CloseConnection() {
(...skipping 26 matching lines...) Expand all
237 238
238 TEST_P(QuicHeadersStreamTest, EffectivePriority) { 239 TEST_P(QuicHeadersStreamTest, EffectivePriority) {
239 EXPECT_EQ(0u, headers_stream_->EffectivePriority()); 240 EXPECT_EQ(0u, headers_stream_->EffectivePriority());
240 } 241 }
241 242
242 TEST_P(QuicHeadersStreamTest, WriteHeaders) { 243 TEST_P(QuicHeadersStreamTest, WriteHeaders) {
243 for (QuicStreamId stream_id = kClientDataStreamId1; 244 for (QuicStreamId stream_id = kClientDataStreamId1;
244 stream_id < kClientDataStreamId3; stream_id += 2) { 245 stream_id < kClientDataStreamId3; stream_id += 2) {
245 for (int count = 0; count < 2; ++count) { 246 for (int count = 0; count < 2; ++count) {
246 bool fin = (count == 0); 247 bool fin = (count == 0);
247 if (is_server()) { 248 if (perspective() == Perspective::IS_SERVER) {
248 WriteHeadersAndExpectSynReply(stream_id, fin); 249 WriteHeadersAndExpectSynReply(stream_id, fin);
249 } else { 250 } else {
250 for (QuicPriority priority = 0; priority < 7; ++priority) { 251 for (QuicPriority priority = 0; priority < 7; ++priority) {
251 // TODO(rch): implement priorities correctly. 252 // TODO(rch): implement priorities correctly.
252 WriteHeadersAndExpectSynStream(stream_id, fin, 0); 253 WriteHeadersAndExpectSynStream(stream_id, fin, 0);
253 } 254 }
254 } 255 }
255 } 256 }
256 } 257 }
257 } 258 }
258 259
259 TEST_P(QuicHeadersStreamTest, ProcessRawData) { 260 TEST_P(QuicHeadersStreamTest, ProcessRawData) {
260 for (QuicStreamId stream_id = kClientDataStreamId1; 261 for (QuicStreamId stream_id = kClientDataStreamId1;
261 stream_id < kClientDataStreamId3; stream_id += 2) { 262 stream_id < kClientDataStreamId3; stream_id += 2) {
262 for (int count = 0; count < 2; ++count) { 263 for (int count = 0; count < 2; ++count) {
263 bool fin = (count == 0); 264 bool fin = (count == 0);
264 for (QuicPriority priority = 0; priority < 7; ++priority) { 265 for (QuicPriority priority = 0; priority < 7; ++priority) {
265 // Replace with "WriteHeadersAndSaveData" 266 // Replace with "WriteHeadersAndSaveData"
266 scoped_ptr<SpdySerializedFrame> frame; 267 scoped_ptr<SpdySerializedFrame> frame;
267 if (is_server()) { 268 if (perspective() == Perspective::IS_SERVER) {
268 if (version() > QUIC_VERSION_23) { 269 if (version() > QUIC_VERSION_23) {
269 SpdyHeadersIR headers_frame(stream_id); 270 SpdyHeadersIR headers_frame(stream_id);
270 headers_frame.set_name_value_block(headers_); 271 headers_frame.set_name_value_block(headers_);
271 headers_frame.set_fin(fin); 272 headers_frame.set_fin(fin);
272 headers_frame.set_has_priority(true); 273 headers_frame.set_has_priority(true);
273 frame.reset(framer_.SerializeFrame(headers_frame)); 274 frame.reset(framer_.SerializeFrame(headers_frame));
274 } else { 275 } else {
275 SpdySynStreamIR syn_stream(stream_id); 276 SpdySynStreamIR syn_stream(stream_id);
276 syn_stream.set_name_value_block(headers_); 277 syn_stream.set_name_value_block(headers_);
277 syn_stream.set_fin(fin); 278 syn_stream.set_fin(fin);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 headers_["key0"] = string(1 << 13, '.'); 312 headers_["key0"] = string(1 << 13, '.');
312 headers_["key1"] = string(1 << 13, '.'); 313 headers_["key1"] = string(1 << 13, '.');
313 headers_["key2"] = string(1 << 13, '.'); 314 headers_["key2"] = string(1 << 13, '.');
314 for (QuicStreamId stream_id = kClientDataStreamId1; 315 for (QuicStreamId stream_id = kClientDataStreamId1;
315 stream_id < kClientDataStreamId3; stream_id += 2) { 316 stream_id < kClientDataStreamId3; stream_id += 2) {
316 for (int count = 0; count < 2; ++count) { 317 for (int count = 0; count < 2; ++count) {
317 bool fin = (count == 0); 318 bool fin = (count == 0);
318 for (QuicPriority priority = 0; priority < 7; ++priority) { 319 for (QuicPriority priority = 0; priority < 7; ++priority) {
319 // Replace with "WriteHeadersAndSaveData" 320 // Replace with "WriteHeadersAndSaveData"
320 scoped_ptr<SpdySerializedFrame> frame; 321 scoped_ptr<SpdySerializedFrame> frame;
321 if (is_server()) { 322 if (perspective() == Perspective::IS_SERVER) {
322 if (version() > QUIC_VERSION_23) { 323 if (version() > QUIC_VERSION_23) {
323 SpdyHeadersIR headers_frame(stream_id); 324 SpdyHeadersIR headers_frame(stream_id);
324 headers_frame.set_name_value_block(headers_); 325 headers_frame.set_name_value_block(headers_);
325 headers_frame.set_fin(fin); 326 headers_frame.set_fin(fin);
326 headers_frame.set_has_priority(true); 327 headers_frame.set_has_priority(true);
327 frame.reset(framer_.SerializeFrame(headers_frame)); 328 frame.reset(framer_.SerializeFrame(headers_frame));
328 } else { 329 } else {
329 SpdySynStreamIR syn_stream(stream_id); 330 SpdySynStreamIR syn_stream(stream_id);
330 syn_stream.set_name_value_block(headers_); 331 syn_stream.set_name_value_block(headers_);
331 syn_stream.set_fin(fin); 332 syn_stream.set_fin(fin);
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 } 458 }
458 459
459 TEST_P(QuicHeadersStreamTest, NoConnectionLevelFlowControl) { 460 TEST_P(QuicHeadersStreamTest, NoConnectionLevelFlowControl) {
460 EXPECT_FALSE(ReliableQuicStreamPeer::StreamContributesToConnectionFlowControl( 461 EXPECT_FALSE(ReliableQuicStreamPeer::StreamContributesToConnectionFlowControl(
461 headers_stream_)); 462 headers_stream_));
462 } 463 }
463 464
464 } // namespace 465 } // namespace
465 } // namespace test 466 } // namespace test
466 } // namespace net 467 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_headers_stream.cc ('k') | net/quic/quic_http_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698