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

Side by Side Diff: net/spdy/spdy_framer_test.cc

Issue 723343002: Update from https://crrev.com/304121 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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/spdy/spdy_framer.cc ('k') | net/spdy/spdy_headers_block_parser_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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <algorithm> 5 #include <algorithm>
6 #include <iostream> 6 #include <iostream>
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 void OnSetting(SpdySettingsIds id, uint8 flags, uint32 value) override { 147 void OnSetting(SpdySettingsIds id, uint8 flags, uint32 value) override {
148 LOG(FATAL); 148 LOG(FATAL);
149 } 149 }
150 void OnPing(SpdyPingId unique_id, bool is_ack) override { LOG(FATAL); } 150 void OnPing(SpdyPingId unique_id, bool is_ack) override { LOG(FATAL); }
151 void OnSettingsEnd() override { LOG(FATAL); } 151 void OnSettingsEnd() override { LOG(FATAL); }
152 void OnGoAway(SpdyStreamId last_accepted_stream_id, 152 void OnGoAway(SpdyStreamId last_accepted_stream_id,
153 SpdyGoAwayStatus status) override { 153 SpdyGoAwayStatus status) override {
154 LOG(FATAL); 154 LOG(FATAL);
155 } 155 }
156 156
157 void OnHeaders(SpdyStreamId stream_id, bool fin, bool end) override { 157 void OnHeaders(SpdyStreamId stream_id, bool has_priority,
158 SpdyPriority priority, bool fin, bool end) override {
158 SpdyFramer framer(version_); 159 SpdyFramer framer(version_);
159 framer.set_enable_compression(false); 160 framer.set_enable_compression(false);
160 SpdyHeadersIR headers(stream_id); 161 SpdyHeadersIR headers(stream_id);
162 headers.set_has_priority(has_priority);
163 if (headers.has_priority()) {
164 headers.set_priority(priority);
165 }
161 headers.set_fin(fin); 166 headers.set_fin(fin);
162 scoped_ptr<SpdyFrame> frame(framer.SerializeHeaders(headers)); 167 scoped_ptr<SpdyFrame> frame(framer.SerializeHeaders(headers));
163 ResetBuffer(); 168 ResetBuffer();
164 memcpy(buffer_.get(), frame->data(), framer.GetHeadersMinimumSize()); 169 memcpy(buffer_.get(), frame->data(), framer.GetHeadersMinimumSize());
165 size_ += framer.GetHeadersMinimumSize(); 170 size_ += framer.GetHeadersMinimumSize();
166 } 171 }
167 172
168 virtual void OnWindowUpdate(SpdyStreamId stream_id, int delta_window_size) { 173 virtual void OnWindowUpdate(SpdyStreamId stream_id, int delta_window_size) {
169 LOG(FATAL); 174 LOG(FATAL);
170 } 175 }
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 ++settings_ack_sent_; 387 ++settings_ack_sent_;
383 } 388 }
384 389
385 void OnPing(SpdyPingId unique_id, bool is_ack) override { DLOG(FATAL); } 390 void OnPing(SpdyPingId unique_id, bool is_ack) override { DLOG(FATAL); }
386 391
387 void OnGoAway(SpdyStreamId last_accepted_stream_id, 392 void OnGoAway(SpdyStreamId last_accepted_stream_id,
388 SpdyGoAwayStatus status) override { 393 SpdyGoAwayStatus status) override {
389 ++goaway_count_; 394 ++goaway_count_;
390 } 395 }
391 396
392 void OnHeaders(SpdyStreamId stream_id, bool fin, bool end) override { 397 void OnHeaders(SpdyStreamId stream_id, bool has_priority,
398 SpdyPriority priority, bool fin, bool end) override {
393 ++headers_frame_count_; 399 ++headers_frame_count_;
394 InitHeaderStreaming(HEADERS, stream_id); 400 InitHeaderStreaming(HEADERS, stream_id);
395 if (fin) { 401 if (fin) {
396 ++fin_flag_count_; 402 ++fin_flag_count_;
397 } 403 }
398 } 404 }
399 405
400 void OnWindowUpdate(SpdyStreamId stream_id, 406 void OnWindowUpdate(SpdyStreamId stream_id,
401 uint32 delta_window_size) override { 407 uint32 delta_window_size) override {
402 last_window_update_stream_ = stream_id; 408 last_window_update_stream_ = stream_id;
(...skipping 815 matching lines...) Expand 10 before | Expand all | Expand 10 after
1218 1224
1219 TestSpdyVisitor visitor(spdy_version_); 1225 TestSpdyVisitor visitor(spdy_version_);
1220 if (IsSpdy2()) { 1226 if (IsSpdy2()) {
1221 visitor.SimulateInFramer(kV2Input, sizeof(kV2Input)); 1227 visitor.SimulateInFramer(kV2Input, sizeof(kV2Input));
1222 } else if (IsSpdy3()) { 1228 } else if (IsSpdy3()) {
1223 visitor.SimulateInFramer(kV3Input, sizeof(kV3Input)); 1229 visitor.SimulateInFramer(kV3Input, sizeof(kV3Input));
1224 } else { 1230 } else {
1225 visitor.SimulateInFramer(kV4Input, sizeof(kV4Input)); 1231 visitor.SimulateInFramer(kV4Input, sizeof(kV4Input));
1226 } 1232 }
1227 1233
1228 EXPECT_EQ(2, visitor.syn_frame_count_);
1229 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 1234 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
1230 EXPECT_EQ(1, visitor.headers_frame_count_);
1231 EXPECT_EQ(24, visitor.data_bytes_); 1235 EXPECT_EQ(24, visitor.data_bytes_);
1232
1233 EXPECT_EQ(0, visitor.error_count_); 1236 EXPECT_EQ(0, visitor.error_count_);
1234 EXPECT_EQ(2, visitor.fin_frame_count_); 1237 EXPECT_EQ(2, visitor.fin_frame_count_);
1235 1238
1236 if (IsSpdy4()) { 1239 if (IsSpdy4()) {
1240 EXPECT_EQ(3, visitor.headers_frame_count_);
1241 EXPECT_EQ(0, visitor.syn_frame_count_);
1237 base::StringPiece reset_stream = "RESETSTREAM"; 1242 base::StringPiece reset_stream = "RESETSTREAM";
1238 EXPECT_EQ(reset_stream, visitor.fin_opaque_data_); 1243 EXPECT_EQ(reset_stream, visitor.fin_opaque_data_);
1239 } else { 1244 } else {
1245 EXPECT_EQ(1, visitor.headers_frame_count_);
1246 EXPECT_EQ(2, visitor.syn_frame_count_);
1240 EXPECT_TRUE(visitor.fin_opaque_data_.empty()); 1247 EXPECT_TRUE(visitor.fin_opaque_data_.empty());
1241 } 1248 }
1242 1249
1243 EXPECT_EQ(0, visitor.fin_flag_count_); 1250 EXPECT_EQ(0, visitor.fin_flag_count_);
1244 EXPECT_EQ(0, visitor.zero_length_data_frame_count_); 1251 EXPECT_EQ(0, visitor.zero_length_data_frame_count_);
1245 EXPECT_EQ(4, visitor.data_frame_count_); 1252 EXPECT_EQ(4, visitor.data_frame_count_);
1246 visitor.fin_opaque_data_.clear(); 1253 visitor.fin_opaque_data_.clear();
1247 } 1254 }
1248 1255
1249 // Test that the FIN flag on a data frame signifies EOF. 1256 // Test that the FIN flag on a data frame signifies EOF.
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
1332 TestSpdyVisitor visitor(spdy_version_); 1339 TestSpdyVisitor visitor(spdy_version_);
1333 if (IsSpdy2()) { 1340 if (IsSpdy2()) {
1334 visitor.SimulateInFramer(kV2Input, sizeof(kV2Input)); 1341 visitor.SimulateInFramer(kV2Input, sizeof(kV2Input));
1335 } else if (IsSpdy3()) { 1342 } else if (IsSpdy3()) {
1336 visitor.SimulateInFramer(kV3Input, sizeof(kV3Input)); 1343 visitor.SimulateInFramer(kV3Input, sizeof(kV3Input));
1337 } else { 1344 } else {
1338 visitor.SimulateInFramer(kV4Input, sizeof(kV4Input)); 1345 visitor.SimulateInFramer(kV4Input, sizeof(kV4Input));
1339 } 1346 }
1340 1347
1341 EXPECT_EQ(0, visitor.error_count_); 1348 EXPECT_EQ(0, visitor.error_count_);
1342 EXPECT_EQ(1, visitor.syn_frame_count_);
1343 if (IsSpdy4()) { 1349 if (IsSpdy4()) {
1350 EXPECT_EQ(0, visitor.syn_frame_count_);
1344 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 1351 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
1345 EXPECT_EQ(1, visitor.headers_frame_count_); 1352 EXPECT_EQ(2, visitor.headers_frame_count_);
1346 } else { 1353 } else {
1354 EXPECT_EQ(1, visitor.syn_frame_count_);
1347 EXPECT_EQ(1, visitor.syn_reply_frame_count_); 1355 EXPECT_EQ(1, visitor.syn_reply_frame_count_);
1348 EXPECT_EQ(0, visitor.headers_frame_count_); 1356 EXPECT_EQ(0, visitor.headers_frame_count_);
1349 } 1357 }
1350 EXPECT_EQ(16, visitor.data_bytes_); 1358 EXPECT_EQ(16, visitor.data_bytes_);
1351 EXPECT_EQ(0, visitor.fin_frame_count_); 1359 EXPECT_EQ(0, visitor.fin_frame_count_);
1352 EXPECT_EQ(0, visitor.fin_flag_count_); 1360 EXPECT_EQ(0, visitor.fin_flag_count_);
1353 EXPECT_EQ(1, visitor.zero_length_data_frame_count_); 1361 EXPECT_EQ(1, visitor.zero_length_data_frame_count_);
1354 EXPECT_EQ(2, visitor.data_frame_count_); 1362 EXPECT_EQ(2, visitor.data_frame_count_);
1355 } 1363 }
1356 1364
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1411 TestSpdyVisitor visitor(spdy_version_); 1419 TestSpdyVisitor visitor(spdy_version_);
1412 if (IsSpdy2()) { 1420 if (IsSpdy2()) {
1413 visitor.SimulateInFramer(kV2Input, sizeof(kV2Input)); 1421 visitor.SimulateInFramer(kV2Input, sizeof(kV2Input));
1414 } else if (IsSpdy3()) { 1422 } else if (IsSpdy3()) {
1415 visitor.SimulateInFramer(kV3Input, sizeof(kV3Input)); 1423 visitor.SimulateInFramer(kV3Input, sizeof(kV3Input));
1416 } else { 1424 } else {
1417 visitor.SimulateInFramer(kV4Input, sizeof(kV4Input)); 1425 visitor.SimulateInFramer(kV4Input, sizeof(kV4Input));
1418 } 1426 }
1419 1427
1420 EXPECT_EQ(0, visitor.error_count_); 1428 EXPECT_EQ(0, visitor.error_count_);
1421 EXPECT_EQ(1, visitor.syn_frame_count_);
1422 if (IsSpdy4()) { 1429 if (IsSpdy4()) {
1430 EXPECT_EQ(0, visitor.syn_frame_count_);
1423 EXPECT_EQ(0, visitor.syn_reply_frame_count_); 1431 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
1424 EXPECT_EQ(1, visitor.headers_frame_count_); 1432 EXPECT_EQ(2, visitor.headers_frame_count_);
1425 } else { 1433 } else {
1434 EXPECT_EQ(1, visitor.syn_frame_count_);
1426 EXPECT_EQ(1, visitor.syn_reply_frame_count_); 1435 EXPECT_EQ(1, visitor.syn_reply_frame_count_);
1427 EXPECT_EQ(0, visitor.headers_frame_count_); 1436 EXPECT_EQ(0, visitor.headers_frame_count_);
1428 } 1437 }
1429 EXPECT_EQ(0, visitor.data_bytes_); 1438 EXPECT_EQ(0, visitor.data_bytes_);
1430 EXPECT_EQ(0, visitor.fin_frame_count_); 1439 EXPECT_EQ(0, visitor.fin_frame_count_);
1431 EXPECT_EQ(1, visitor.fin_flag_count_); 1440 EXPECT_EQ(1, visitor.fin_flag_count_);
1432 EXPECT_EQ(1, visitor.zero_length_data_frame_count_); 1441 EXPECT_EQ(1, visitor.zero_length_data_frame_count_);
1433 EXPECT_EQ(0, visitor.data_frame_count_); 1442 EXPECT_EQ(0, visitor.data_frame_count_);
1434 } 1443 }
1435 1444
(...skipping 3767 matching lines...) Expand 10 before | Expand all | Expand 10 after
5203 if (!IsSpdy4() && flags & ~CONTROL_FLAG_FIN) { 5212 if (!IsSpdy4() && flags & ~CONTROL_FLAG_FIN) {
5204 EXPECT_CALL(visitor, OnError(_)); 5213 EXPECT_CALL(visitor, OnError(_));
5205 } else if (IsSpdy4() && flags & ~(CONTROL_FLAG_FIN | 5214 } else if (IsSpdy4() && flags & ~(CONTROL_FLAG_FIN |
5206 HEADERS_FLAG_END_HEADERS | 5215 HEADERS_FLAG_END_HEADERS |
5207 HEADERS_FLAG_END_SEGMENT | 5216 HEADERS_FLAG_END_SEGMENT |
5208 HEADERS_FLAG_PADDED | 5217 HEADERS_FLAG_PADDED |
5209 HEADERS_FLAG_PRIORITY)) { 5218 HEADERS_FLAG_PRIORITY)) {
5210 EXPECT_CALL(visitor, OnError(_)); 5219 EXPECT_CALL(visitor, OnError(_));
5211 } else { 5220 } else {
5212 if (spdy_version_ > SPDY3 && flags & HEADERS_FLAG_PRIORITY) { 5221 if (spdy_version_ > SPDY3 && flags & HEADERS_FLAG_PRIORITY) {
5213 EXPECT_CALL(visitor, OnSynStream(57, // stream id 5222 EXPECT_CALL(visitor, OnHeaders(57, // stream id
5214 0, // associated stream id 5223 true, // has priority?
5215 3, // priority 5224 3, // priority
5216 flags & CONTROL_FLAG_FIN, 5225 flags & CONTROL_FLAG_FIN, // fin?
5217 false)); // unidirectional 5226 (flags & HEADERS_FLAG_END_HEADERS) ||
5227 !IsSpdy4())); // end headers?
5218 } else { 5228 } else {
5219 EXPECT_CALL(visitor, OnHeaders(57, 5229 EXPECT_CALL(visitor, OnHeaders(57, false, 0,
5220 flags & CONTROL_FLAG_FIN, 5230 flags & CONTROL_FLAG_FIN,
5221 (flags & HEADERS_FLAG_END_HEADERS) || 5231 (flags & HEADERS_FLAG_END_HEADERS) ||
5222 !IsSpdy4())); 5232 !IsSpdy4()));
5223 } 5233 }
5224 EXPECT_CALL(visitor, OnControlFrameHeaderData(57, _, _)) 5234 EXPECT_CALL(visitor, OnControlFrameHeaderData(57, _, _))
5225 .WillRepeatedly(testing::Return(true)); 5235 .WillRepeatedly(testing::Return(true));
5226 if (flags & DATA_FLAG_FIN && (!IsSpdy4() || 5236 if (flags & DATA_FLAG_FIN && (!IsSpdy4() ||
5227 flags & HEADERS_FLAG_END_HEADERS)) { 5237 flags & HEADERS_FLAG_END_HEADERS)) {
5228 EXPECT_CALL(visitor, OnStreamFrameData(_, _, 0, true)); 5238 EXPECT_CALL(visitor, OnStreamFrameData(_, _, 0, true));
5229 } else { 5239 } else {
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
5384 SCOPED_TRACE(testing::Message() << "Flags " << flags); 5394 SCOPED_TRACE(testing::Message() << "Flags " << flags);
5385 5395
5386 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; 5396 testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
5387 testing::StrictMock<net::test::MockDebugVisitor> debug_visitor; 5397 testing::StrictMock<net::test::MockDebugVisitor> debug_visitor;
5388 SpdyFramer framer(spdy_version_); 5398 SpdyFramer framer(spdy_version_);
5389 framer.set_visitor(&visitor); 5399 framer.set_visitor(&visitor);
5390 framer.set_debug_visitor(&debug_visitor); 5400 framer.set_debug_visitor(&debug_visitor);
5391 5401
5392 EXPECT_CALL(debug_visitor, OnSendCompressedFrame(42, HEADERS, _, _)); 5402 EXPECT_CALL(debug_visitor, OnSendCompressedFrame(42, HEADERS, _, _));
5393 EXPECT_CALL(debug_visitor, OnReceiveCompressedFrame(42, HEADERS, _)); 5403 EXPECT_CALL(debug_visitor, OnReceiveCompressedFrame(42, HEADERS, _));
5394 EXPECT_CALL(visitor, OnHeaders(42, 0, false)); 5404 EXPECT_CALL(visitor, OnHeaders(42, false, 0, 0, false));
5395 EXPECT_CALL(visitor, OnControlFrameHeaderData(42, _, _)) 5405 EXPECT_CALL(visitor, OnControlFrameHeaderData(42, _, _))
5396 .WillRepeatedly(testing::Return(true)); 5406 .WillRepeatedly(testing::Return(true));
5397 5407
5398 SpdyHeadersIR headers_ir(42); 5408 SpdyHeadersIR headers_ir(42);
5399 headers_ir.SetHeader("foo", "bar"); 5409 headers_ir.SetHeader("foo", "bar");
5400 scoped_ptr<SpdyFrame> frame0(framer.SerializeHeaders(headers_ir)); 5410 scoped_ptr<SpdyFrame> frame0(framer.SerializeHeaders(headers_ir));
5401 SetFrameFlags(frame0.get(), 0, spdy_version_); 5411 SetFrameFlags(frame0.get(), 0, spdy_version_);
5402 5412
5403 SpdyContinuationIR continuation(42); 5413 SpdyContinuationIR continuation(42);
5404 continuation.SetHeader("foo", "bar"); 5414 continuation.SetHeader("foo", "bar");
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
5915 TestSpdyVisitor visitor(spdy_version_); 5925 TestSpdyVisitor visitor(spdy_version_);
5916 visitor.SimulateInFramer(kFrameData, sizeof(kFrameData)); 5926 visitor.SimulateInFramer(kFrameData, sizeof(kFrameData));
5917 5927
5918 EXPECT_EQ(SpdyFramer::SPDY_ERROR, visitor.framer_.state()); 5928 EXPECT_EQ(SpdyFramer::SPDY_ERROR, visitor.framer_.state());
5919 EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME, 5929 EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME,
5920 visitor.framer_.error_code()) 5930 visitor.framer_.error_code())
5921 << SpdyFramer::ErrorCodeToString(visitor.framer_.error_code()); 5931 << SpdyFramer::ErrorCodeToString(visitor.framer_.error_code());
5922 } 5932 }
5923 5933
5924 } // namespace net 5934 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_framer.cc ('k') | net/spdy/spdy_headers_block_parser_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698