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

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

Issue 887243005: Move is_fec_packet from QuicPacket to SerializedPacket in order to allow (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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_framer.cc ('k') | net/quic/quic_protocol.h » ('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 "net/quic/quic_framer.h" 5 #include "net/quic/quic_framer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 packet_count_(0), 164 packet_count_(0),
165 frame_count_(0), 165 frame_count_(0),
166 fec_count_(0), 166 fec_count_(0),
167 complete_packets_(0), 167 complete_packets_(0),
168 revived_packets_(0), 168 revived_packets_(0),
169 accept_packet_(true), 169 accept_packet_(true),
170 accept_public_header_(true) { 170 accept_public_header_(true) {
171 } 171 }
172 172
173 ~TestQuicVisitor() override { 173 ~TestQuicVisitor() override {
174 STLDeleteElements(&stream_frames_); 174 stream_frames_.clear();
175 STLDeleteElements(&ack_frames_); 175 STLDeleteElements(&ack_frames_);
176 STLDeleteElements(&stop_waiting_frames_); 176 STLDeleteElements(&stop_waiting_frames_);
177 STLDeleteElements(&ping_frames_); 177 STLDeleteElements(&ping_frames_);
178 STLDeleteElements(&fec_data_); 178 STLDeleteElements(&fec_data_);
179 STLDeleteElements(&stream_data_);
179 } 180 }
180 181
181 void OnError(QuicFramer* f) override { 182 void OnError(QuicFramer* f) override {
182 DVLOG(1) << "QuicFramer Error: " << QuicUtils::ErrorToString(f->error()) 183 DVLOG(1) << "QuicFramer Error: " << QuicUtils::ErrorToString(f->error())
183 << " (" << f->error() << ")"; 184 << " (" << f->error() << ")";
184 ++error_count_; 185 ++error_count_;
185 } 186 }
186 187
187 void OnPacket() override {} 188 void OnPacket() override {}
188 189
(...skipping 27 matching lines...) Expand all
216 void OnDecryptedPacket(EncryptionLevel level) override {} 217 void OnDecryptedPacket(EncryptionLevel level) override {}
217 218
218 bool OnPacketHeader(const QuicPacketHeader& header) override { 219 bool OnPacketHeader(const QuicPacketHeader& header) override {
219 ++packet_count_; 220 ++packet_count_;
220 header_.reset(new QuicPacketHeader(header)); 221 header_.reset(new QuicPacketHeader(header));
221 return accept_packet_; 222 return accept_packet_;
222 } 223 }
223 224
224 bool OnStreamFrame(const QuicStreamFrame& frame) override { 225 bool OnStreamFrame(const QuicStreamFrame& frame) override {
225 ++frame_count_; 226 ++frame_count_;
226 stream_frames_.push_back(new QuicStreamFrame(frame)); 227 // Save a copy of the data so it is valid after the packet is processed.
228 stream_data_.push_back(frame.GetDataAsString());
229 QuicStreamFrame stream_frame(frame);
230 // Make sure that the stream frame points to this data.
231 stream_frame.data.Clear();
232 stream_frame.data.Append(const_cast<char*>(stream_data_.back()->data()),
233 stream_data_.back()->size());
234 stream_frames_.push_back(stream_frame);
227 return true; 235 return true;
228 } 236 }
229 237
230 void OnFecProtectedPayload(StringPiece payload) override { 238 void OnFecProtectedPayload(StringPiece payload) override {
231 fec_protected_payload_ = payload.as_string(); 239 fec_protected_payload_ = payload.as_string();
232 } 240 }
233 241
234 bool OnAckFrame(const QuicAckFrame& frame) override { 242 bool OnAckFrame(const QuicAckFrame& frame) override {
235 ++frame_count_; 243 ++frame_count_;
236 ack_frames_.push_back(new QuicAckFrame(frame)); 244 ack_frames_.push_back(new QuicAckFrame(frame));
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 int fec_count_; 297 int fec_count_;
290 int complete_packets_; 298 int complete_packets_;
291 int revived_packets_; 299 int revived_packets_;
292 bool accept_packet_; 300 bool accept_packet_;
293 bool accept_public_header_; 301 bool accept_public_header_;
294 302
295 scoped_ptr<QuicPacketHeader> header_; 303 scoped_ptr<QuicPacketHeader> header_;
296 scoped_ptr<QuicPacketPublicHeader> public_header_; 304 scoped_ptr<QuicPacketPublicHeader> public_header_;
297 scoped_ptr<QuicPublicResetPacket> public_reset_packet_; 305 scoped_ptr<QuicPublicResetPacket> public_reset_packet_;
298 scoped_ptr<QuicVersionNegotiationPacket> version_negotiation_packet_; 306 scoped_ptr<QuicVersionNegotiationPacket> version_negotiation_packet_;
299 vector<QuicStreamFrame*> stream_frames_; 307 vector<QuicStreamFrame> stream_frames_;
300 vector<QuicAckFrame*> ack_frames_; 308 vector<QuicAckFrame*> ack_frames_;
301 vector<QuicStopWaitingFrame*> stop_waiting_frames_; 309 vector<QuicStopWaitingFrame*> stop_waiting_frames_;
302 vector<QuicPingFrame*> ping_frames_; 310 vector<QuicPingFrame*> ping_frames_;
303 vector<QuicFecData*> fec_data_; 311 vector<QuicFecData*> fec_data_;
304 string fec_protected_payload_; 312 string fec_protected_payload_;
305 QuicRstStreamFrame rst_stream_frame_; 313 QuicRstStreamFrame rst_stream_frame_;
306 QuicConnectionCloseFrame connection_close_frame_; 314 QuicConnectionCloseFrame connection_close_frame_;
307 QuicGoAwayFrame goaway_frame_; 315 QuicGoAwayFrame goaway_frame_;
308 QuicWindowUpdateFrame window_update_frame_; 316 QuicWindowUpdateFrame window_update_frame_;
309 QuicBlockedFrame blocked_frame_; 317 QuicBlockedFrame blocked_frame_;
318 vector<string*> stream_data_;
310 }; 319 };
311 320
312 class QuicFramerTest : public ::testing::TestWithParam<QuicVersion> { 321 class QuicFramerTest : public ::testing::TestWithParam<QuicVersion> {
313 public: 322 public:
314 QuicFramerTest() 323 QuicFramerTest()
315 : encrypter_(new test::TestEncrypter()), 324 : encrypter_(new test::TestEncrypter()),
316 decrypter_(new test::TestDecrypter()), 325 decrypter_(new test::TestDecrypter()),
317 start_(QuicTime::Zero().Add(QuicTime::Delta::FromMicroseconds(0x10))), 326 start_(QuicTime::Zero().Add(QuicTime::Delta::FromMicroseconds(0x10))),
318 framer_(QuicSupportedVersions(), start_, true) { 327 framer_(QuicSupportedVersions(), start_, true) {
319 version_ = GetParam(); 328 version_ = GetParam();
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 size_t len, 408 size_t len,
400 string expected_error, 409 string expected_error,
401 QuicErrorCode error_code) { 410 QuicErrorCode error_code) {
402 QuicEncryptedPacket encrypted(AsChars(packet), len, false); 411 QuicEncryptedPacket encrypted(AsChars(packet), len, false);
403 EXPECT_FALSE(framer_.ProcessPacket(encrypted)) << "len: " << len; 412 EXPECT_FALSE(framer_.ProcessPacket(encrypted)) << "len: " << len;
404 EXPECT_EQ(expected_error, framer_.detailed_error()) << "len: " << len; 413 EXPECT_EQ(expected_error, framer_.detailed_error()) << "len: " << len;
405 EXPECT_EQ(error_code, framer_.error()) << "len: " << len; 414 EXPECT_EQ(error_code, framer_.error()) << "len: " << len;
406 } 415 }
407 416
408 // Checks if the supplied string matches data in the supplied StreamFrame. 417 // Checks if the supplied string matches data in the supplied StreamFrame.
409 void CheckStreamFrameData(string str, QuicStreamFrame* frame) { 418 void CheckStreamFrameData(string str, const QuicStreamFrame& frame) {
410 scoped_ptr<string> frame_data(frame->GetDataAsString()); 419 scoped_ptr<string> frame_data(frame.GetDataAsString());
411 EXPECT_EQ(str, *frame_data); 420 EXPECT_EQ(str, *frame_data);
412 } 421 }
413 422
414 void CheckStreamFrameBoundaries(unsigned char* packet, 423 void CheckStreamFrameBoundaries(unsigned char* packet,
415 size_t stream_id_size, 424 size_t stream_id_size,
416 bool include_version) { 425 bool include_version) {
417 // Now test framing boundaries. 426 // Now test framing boundaries.
418 for (size_t i = kQuicFrameTypeSize; i < GetMinStreamFrameSize(); ++i) { 427 for (size_t i = kQuicFrameTypeSize; i < GetMinStreamFrameSize(); ++i) {
419 string expected_error; 428 string expected_error;
420 if (i < kQuicFrameTypeSize + stream_id_size) { 429 if (i < kQuicFrameTypeSize + stream_id_size) {
(...skipping 837 matching lines...) Expand 10 before | Expand all | Expand 10 after
1258 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 1267 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
1259 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 1268 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
1260 1269
1261 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 1270 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
1262 ASSERT_TRUE(visitor_.header_.get()); 1271 ASSERT_TRUE(visitor_.header_.get());
1263 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion)); 1272 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
1264 1273
1265 ASSERT_EQ(1u, visitor_.stream_frames_.size()); 1274 ASSERT_EQ(1u, visitor_.stream_frames_.size());
1266 EXPECT_EQ(0u, visitor_.ack_frames_.size()); 1275 EXPECT_EQ(0u, visitor_.ack_frames_.size());
1267 EXPECT_EQ(static_cast<uint64>(0x01020304), 1276 EXPECT_EQ(static_cast<uint64>(0x01020304),
1268 visitor_.stream_frames_[0]->stream_id); 1277 visitor_.stream_frames_[0].stream_id);
1269 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); 1278 EXPECT_TRUE(visitor_.stream_frames_[0].fin);
1270 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), 1279 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), visitor_.stream_frames_[0].offset);
1271 visitor_.stream_frames_[0]->offset);
1272 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); 1280 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]);
1273 1281
1274 // Now test framing boundaries. 1282 // Now test framing boundaries.
1275 CheckStreamFrameBoundaries(packet, kQuicMaxStreamIdSize, !kIncludeVersion); 1283 CheckStreamFrameBoundaries(packet, kQuicMaxStreamIdSize, !kIncludeVersion);
1276 } 1284 }
1277 1285
1278 TEST_P(QuicFramerTest, StreamFrame3ByteStreamId) { 1286 TEST_P(QuicFramerTest, StreamFrame3ByteStreamId) {
1279 unsigned char packet[] = { 1287 unsigned char packet[] = {
1280 // public flags (8 byte connection_id) 1288 // public flags (8 byte connection_id)
1281 0x3C, 1289 0x3C,
(...skipping 23 matching lines...) Expand all
1305 1313
1306 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 1314 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
1307 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 1315 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
1308 1316
1309 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 1317 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
1310 ASSERT_TRUE(visitor_.header_.get()); 1318 ASSERT_TRUE(visitor_.header_.get());
1311 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion)); 1319 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
1312 1320
1313 ASSERT_EQ(1u, visitor_.stream_frames_.size()); 1321 ASSERT_EQ(1u, visitor_.stream_frames_.size());
1314 EXPECT_EQ(0u, visitor_.ack_frames_.size()); 1322 EXPECT_EQ(0u, visitor_.ack_frames_.size());
1315 EXPECT_EQ(GG_UINT64_C(0x00020304), 1323 EXPECT_EQ(GG_UINT64_C(0x00020304), visitor_.stream_frames_[0].stream_id);
1316 visitor_.stream_frames_[0]->stream_id); 1324 EXPECT_TRUE(visitor_.stream_frames_[0].fin);
1317 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); 1325 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), visitor_.stream_frames_[0].offset);
1318 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654),
1319 visitor_.stream_frames_[0]->offset);
1320 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); 1326 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]);
1321 1327
1322 // Now test framing boundaries. 1328 // Now test framing boundaries.
1323 const size_t stream_id_size = 3; 1329 const size_t stream_id_size = 3;
1324 CheckStreamFrameBoundaries(packet, stream_id_size, !kIncludeVersion); 1330 CheckStreamFrameBoundaries(packet, stream_id_size, !kIncludeVersion);
1325 } 1331 }
1326 1332
1327 TEST_P(QuicFramerTest, StreamFrame2ByteStreamId) { 1333 TEST_P(QuicFramerTest, StreamFrame2ByteStreamId) {
1328 unsigned char packet[] = { 1334 unsigned char packet[] = {
1329 // public flags (8 byte connection_id) 1335 // public flags (8 byte connection_id)
(...skipping 25 matching lines...) Expand all
1355 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 1361 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
1356 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 1362 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
1357 1363
1358 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 1364 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
1359 ASSERT_TRUE(visitor_.header_.get()); 1365 ASSERT_TRUE(visitor_.header_.get());
1360 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion)); 1366 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
1361 1367
1362 ASSERT_EQ(1u, visitor_.stream_frames_.size()); 1368 ASSERT_EQ(1u, visitor_.stream_frames_.size());
1363 EXPECT_EQ(0u, visitor_.ack_frames_.size()); 1369 EXPECT_EQ(0u, visitor_.ack_frames_.size());
1364 EXPECT_EQ(static_cast<uint64>(0x00000304), 1370 EXPECT_EQ(static_cast<uint64>(0x00000304),
1365 visitor_.stream_frames_[0]->stream_id); 1371 visitor_.stream_frames_[0].stream_id);
1366 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); 1372 EXPECT_TRUE(visitor_.stream_frames_[0].fin);
1367 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), 1373 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), visitor_.stream_frames_[0].offset);
1368 visitor_.stream_frames_[0]->offset);
1369 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); 1374 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]);
1370 1375
1371 // Now test framing boundaries. 1376 // Now test framing boundaries.
1372 const size_t stream_id_size = 2; 1377 const size_t stream_id_size = 2;
1373 CheckStreamFrameBoundaries(packet, stream_id_size, !kIncludeVersion); 1378 CheckStreamFrameBoundaries(packet, stream_id_size, !kIncludeVersion);
1374 } 1379 }
1375 1380
1376 TEST_P(QuicFramerTest, StreamFrame1ByteStreamId) { 1381 TEST_P(QuicFramerTest, StreamFrame1ByteStreamId) {
1377 unsigned char packet[] = { 1382 unsigned char packet[] = {
1378 // public flags (8 byte connection_id) 1383 // public flags (8 byte connection_id)
(...skipping 25 matching lines...) Expand all
1404 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 1409 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
1405 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 1410 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
1406 1411
1407 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 1412 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
1408 ASSERT_TRUE(visitor_.header_.get()); 1413 ASSERT_TRUE(visitor_.header_.get());
1409 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion)); 1414 EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion));
1410 1415
1411 ASSERT_EQ(1u, visitor_.stream_frames_.size()); 1416 ASSERT_EQ(1u, visitor_.stream_frames_.size());
1412 EXPECT_EQ(0u, visitor_.ack_frames_.size()); 1417 EXPECT_EQ(0u, visitor_.ack_frames_.size());
1413 EXPECT_EQ(static_cast<uint64>(0x00000004), 1418 EXPECT_EQ(static_cast<uint64>(0x00000004),
1414 visitor_.stream_frames_[0]->stream_id); 1419 visitor_.stream_frames_[0].stream_id);
1415 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); 1420 EXPECT_TRUE(visitor_.stream_frames_[0].fin);
1416 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), 1421 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), visitor_.stream_frames_[0].offset);
1417 visitor_.stream_frames_[0]->offset);
1418 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); 1422 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]);
1419 1423
1420 // Now test framing boundaries. 1424 // Now test framing boundaries.
1421 const size_t stream_id_size = 1; 1425 const size_t stream_id_size = 1;
1422 CheckStreamFrameBoundaries(packet, stream_id_size, !kIncludeVersion); 1426 CheckStreamFrameBoundaries(packet, stream_id_size, !kIncludeVersion);
1423 } 1427 }
1424 1428
1425 TEST_P(QuicFramerTest, StreamFrameWithVersion) { 1429 TEST_P(QuicFramerTest, StreamFrameWithVersion) {
1426 unsigned char packet[] = { 1430 unsigned char packet[] = {
1427 // public flags (version, 8 byte connection_id) 1431 // public flags (version, 8 byte connection_id)
(...skipping 29 matching lines...) Expand all
1457 1461
1458 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 1462 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
1459 ASSERT_TRUE(visitor_.header_.get()); 1463 ASSERT_TRUE(visitor_.header_.get());
1460 EXPECT_TRUE(visitor_.header_->public_header.version_flag); 1464 EXPECT_TRUE(visitor_.header_->public_header.version_flag);
1461 EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]); 1465 EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]);
1462 EXPECT_TRUE(CheckDecryption(encrypted, kIncludeVersion)); 1466 EXPECT_TRUE(CheckDecryption(encrypted, kIncludeVersion));
1463 1467
1464 ASSERT_EQ(1u, visitor_.stream_frames_.size()); 1468 ASSERT_EQ(1u, visitor_.stream_frames_.size());
1465 EXPECT_EQ(0u, visitor_.ack_frames_.size()); 1469 EXPECT_EQ(0u, visitor_.ack_frames_.size());
1466 EXPECT_EQ(static_cast<uint64>(0x01020304), 1470 EXPECT_EQ(static_cast<uint64>(0x01020304),
1467 visitor_.stream_frames_[0]->stream_id); 1471 visitor_.stream_frames_[0].stream_id);
1468 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); 1472 EXPECT_TRUE(visitor_.stream_frames_[0].fin);
1469 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), 1473 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), visitor_.stream_frames_[0].offset);
1470 visitor_.stream_frames_[0]->offset);
1471 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); 1474 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]);
1472 1475
1473 // Now test framing boundaries. 1476 // Now test framing boundaries.
1474 CheckStreamFrameBoundaries(packet, kQuicMaxStreamIdSize, kIncludeVersion); 1477 CheckStreamFrameBoundaries(packet, kQuicMaxStreamIdSize, kIncludeVersion);
1475 } 1478 }
1476 1479
1477 TEST_P(QuicFramerTest, RejectPacket) { 1480 TEST_P(QuicFramerTest, RejectPacket) {
1478 visitor_.accept_packet_ = false; 1481 visitor_.accept_packet_ = false;
1479 1482
1480 unsigned char packet[] = { 1483 unsigned char packet[] = {
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1576 EXPECT_TRUE(visitor_.header_->entropy_flag); 1579 EXPECT_TRUE(visitor_.header_->entropy_flag);
1577 EXPECT_EQ(1 << (header.packet_sequence_number % 8), 1580 EXPECT_EQ(1 << (header.packet_sequence_number % 8),
1578 visitor_.header_->entropy_hash); 1581 visitor_.header_->entropy_hash);
1579 EXPECT_EQ(GG_UINT64_C(0x123456789ABC), 1582 EXPECT_EQ(GG_UINT64_C(0x123456789ABC),
1580 visitor_.header_->packet_sequence_number); 1583 visitor_.header_->packet_sequence_number);
1581 EXPECT_EQ(NOT_IN_FEC_GROUP, visitor_.header_->is_in_fec_group); 1584 EXPECT_EQ(NOT_IN_FEC_GROUP, visitor_.header_->is_in_fec_group);
1582 EXPECT_EQ(0x00u, visitor_.header_->fec_group); 1585 EXPECT_EQ(0x00u, visitor_.header_->fec_group);
1583 1586
1584 ASSERT_EQ(1u, visitor_.stream_frames_.size()); 1587 ASSERT_EQ(1u, visitor_.stream_frames_.size());
1585 EXPECT_EQ(0u, visitor_.ack_frames_.size()); 1588 EXPECT_EQ(0u, visitor_.ack_frames_.size());
1586 EXPECT_EQ(GG_UINT64_C(0x01020304), visitor_.stream_frames_[0]->stream_id); 1589 EXPECT_EQ(GG_UINT64_C(0x01020304), visitor_.stream_frames_[0].stream_id);
1587 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); 1590 EXPECT_TRUE(visitor_.stream_frames_[0].fin);
1588 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), 1591 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), visitor_.stream_frames_[0].offset);
1589 visitor_.stream_frames_[0]->offset);
1590 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); 1592 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]);
1591 } 1593 }
1592 1594
1593 TEST_P(QuicFramerTest, StreamFrameInFecGroup) { 1595 TEST_P(QuicFramerTest, StreamFrameInFecGroup) {
1594 unsigned char packet[] = { 1596 unsigned char packet[] = {
1595 // public flags (8 byte connection_id) 1597 // public flags (8 byte connection_id)
1596 0x3C, 1598 0x3C,
1597 // connection_id 1599 // connection_id
1598 0x10, 0x32, 0x54, 0x76, 1600 0x10, 0x32, 0x54, 0x76,
1599 0x98, 0xBA, 0xDC, 0xFE, 1601 0x98, 0xBA, 0xDC, 0xFE,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1632 const size_t fec_offset = 1634 const size_t fec_offset =
1633 GetStartOfFecProtectedData(PACKET_8BYTE_CONNECTION_ID, 1635 GetStartOfFecProtectedData(PACKET_8BYTE_CONNECTION_ID,
1634 !kIncludeVersion, 1636 !kIncludeVersion,
1635 PACKET_6BYTE_SEQUENCE_NUMBER); 1637 PACKET_6BYTE_SEQUENCE_NUMBER);
1636 EXPECT_EQ( 1638 EXPECT_EQ(
1637 string(AsChars(packet) + fec_offset, arraysize(packet) - fec_offset), 1639 string(AsChars(packet) + fec_offset, arraysize(packet) - fec_offset),
1638 visitor_.fec_protected_payload_); 1640 visitor_.fec_protected_payload_);
1639 1641
1640 ASSERT_EQ(1u, visitor_.stream_frames_.size()); 1642 ASSERT_EQ(1u, visitor_.stream_frames_.size());
1641 EXPECT_EQ(0u, visitor_.ack_frames_.size()); 1643 EXPECT_EQ(0u, visitor_.ack_frames_.size());
1642 EXPECT_EQ(GG_UINT64_C(0x01020304), visitor_.stream_frames_[0]->stream_id); 1644 EXPECT_EQ(GG_UINT64_C(0x01020304), visitor_.stream_frames_[0].stream_id);
1643 EXPECT_TRUE(visitor_.stream_frames_[0]->fin); 1645 EXPECT_TRUE(visitor_.stream_frames_[0].fin);
1644 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), 1646 EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), visitor_.stream_frames_[0].offset);
1645 visitor_.stream_frames_[0]->offset);
1646 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]); 1647 CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]);
1647 } 1648 }
1648 1649
1649 TEST_P(QuicFramerTest, AckFrameTwoTimestamp) { 1650 TEST_P(QuicFramerTest, AckFrameTwoTimestamp) {
1650 unsigned char packet[] = { 1651 unsigned char packet[] = {
1651 // public flags (8 byte connection_id) 1652 // public flags (8 byte connection_id)
1652 0x3C, 1653 0x3C,
1653 // connection_id 1654 // connection_id
1654 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE, 1655 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
1655 // packet sequence number 1656 // packet sequence number
(...skipping 2273 matching lines...) Expand 10 before | Expand all | Expand 10 after
3929 // first fec protected packet offset 3930 // first fec protected packet offset
3930 0x01, 3931 0x01,
3931 3932
3932 // redundancy 3933 // redundancy
3933 'a', 'b', 'c', 'd', 3934 'a', 'b', 'c', 'd',
3934 'e', 'f', 'g', 'h', 3935 'e', 'f', 'g', 'h',
3935 'i', 'j', 'k', 'l', 3936 'i', 'j', 'k', 'l',
3936 'm', 'n', 'o', 'p', 3937 'm', 'n', 'o', 'p',
3937 }; 3938 };
3938 3939
3939 scoped_ptr<QuicPacket> raw( 3940 scoped_ptr<QuicPacket> raw(new QuicPacket(
3940 QuicPacket::NewDataPacket(AsChars(packet), arraysize(packet), false, 3941 AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
3941 PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, 3942 !kIncludeVersion, PACKET_6BYTE_SEQUENCE_NUMBER));
3942 PACKET_6BYTE_SEQUENCE_NUMBER));
3943 scoped_ptr<QuicEncryptedPacket> encrypted( 3943 scoped_ptr<QuicEncryptedPacket> encrypted(
3944 framer_.EncryptPacket(ENCRYPTION_NONE, sequence_number, *raw)); 3944 framer_.EncryptPacket(ENCRYPTION_NONE, sequence_number, *raw));
3945 3945
3946 ASSERT_TRUE(encrypted.get() != nullptr); 3946 ASSERT_TRUE(encrypted.get() != nullptr);
3947 EXPECT_TRUE(CheckEncryption(sequence_number, raw.get())); 3947 EXPECT_TRUE(CheckEncryption(sequence_number, raw.get()));
3948 } 3948 }
3949 3949
3950 TEST_P(QuicFramerTest, EncryptPacketWithVersionFlag) { 3950 TEST_P(QuicFramerTest, EncryptPacketWithVersionFlag) {
3951 QuicPacketSequenceNumber sequence_number = GG_UINT64_C(0x123456789ABC); 3951 QuicPacketSequenceNumber sequence_number = GG_UINT64_C(0x123456789ABC);
3952 unsigned char packet[] = { 3952 unsigned char packet[] = {
(...skipping 12 matching lines...) Expand all
3965 // first fec protected packet offset 3965 // first fec protected packet offset
3966 0x01, 3966 0x01,
3967 3967
3968 // redundancy 3968 // redundancy
3969 'a', 'b', 'c', 'd', 3969 'a', 'b', 'c', 'd',
3970 'e', 'f', 'g', 'h', 3970 'e', 'f', 'g', 'h',
3971 'i', 'j', 'k', 'l', 3971 'i', 'j', 'k', 'l',
3972 'm', 'n', 'o', 'p', 3972 'm', 'n', 'o', 'p',
3973 }; 3973 };
3974 3974
3975 scoped_ptr<QuicPacket> raw( 3975 scoped_ptr<QuicPacket> raw(new QuicPacket(
3976 QuicPacket::NewDataPacket(AsChars(packet), arraysize(packet), false, 3976 AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
3977 PACKET_8BYTE_CONNECTION_ID, kIncludeVersion, 3977 kIncludeVersion, PACKET_6BYTE_SEQUENCE_NUMBER));
3978 PACKET_6BYTE_SEQUENCE_NUMBER));
3979 scoped_ptr<QuicEncryptedPacket> encrypted( 3978 scoped_ptr<QuicEncryptedPacket> encrypted(
3980 framer_.EncryptPacket(ENCRYPTION_NONE, sequence_number, *raw)); 3979 framer_.EncryptPacket(ENCRYPTION_NONE, sequence_number, *raw));
3981 3980
3982 ASSERT_TRUE(encrypted.get() != nullptr); 3981 ASSERT_TRUE(encrypted.get() != nullptr);
3983 EXPECT_TRUE(CheckEncryption(sequence_number, raw.get())); 3982 EXPECT_TRUE(CheckEncryption(sequence_number, raw.get()));
3984 } 3983 }
3985 3984
3986 TEST_P(QuicFramerTest, AckTruncationLargePacket) { 3985 TEST_P(QuicFramerTest, AckTruncationLargePacket) {
3987 QuicPacketHeader header; 3986 QuicPacketHeader header;
3988 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210); 3987 header.public_header.connection_id = GG_UINT64_C(0xFEDCBA9876543210);
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
4237 EXPECT_CALL(visitor, OnPacketComplete()); 4236 EXPECT_CALL(visitor, OnPacketComplete());
4238 EXPECT_CALL(visitor, OnUnauthenticatedPublicHeader(_)).WillOnce(Return(true)); 4237 EXPECT_CALL(visitor, OnUnauthenticatedPublicHeader(_)).WillOnce(Return(true));
4239 4238
4240 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); 4239 QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
4241 EXPECT_TRUE(framer_.ProcessPacket(encrypted)); 4240 EXPECT_TRUE(framer_.ProcessPacket(encrypted));
4242 EXPECT_EQ(QUIC_NO_ERROR, framer_.error()); 4241 EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
4243 } 4242 }
4244 4243
4245 } // namespace test 4244 } // namespace test
4246 } // namespace net 4245 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_framer.cc ('k') | net/quic/quic_protocol.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698