| OLD | NEW |
| 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/core/quic_packet_generator.h" | 5 #include "net/quic/core/quic_packet_generator.h" |
| 6 | 6 |
| 7 #include <cstdint> | 7 #include <cstdint> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 394 PacketContents contents; | 394 PacketContents contents; |
| 395 contents.num_stream_frames = 1; | 395 contents.num_stream_frames = 1; |
| 396 CheckPacketContains(contents, 0); | 396 CheckPacketContains(contents, 0); |
| 397 | 397 |
| 398 ASSERT_EQ(1u, packets_.size()); | 398 ASSERT_EQ(1u, packets_.size()); |
| 399 ASSERT_EQ(kDefaultMaxPacketSize, generator_.GetCurrentMaxPacketLength()); | 399 ASSERT_EQ(kDefaultMaxPacketSize, generator_.GetCurrentMaxPacketLength()); |
| 400 EXPECT_EQ(kDefaultMaxPacketSize, packets_[0].encrypted_length); | 400 EXPECT_EQ(kDefaultMaxPacketSize, packets_[0].encrypted_length); |
| 401 } | 401 } |
| 402 | 402 |
| 403 TEST_F(QuicPacketGeneratorTest, ConsumeData_EmptyData) { | 403 TEST_F(QuicPacketGeneratorTest, ConsumeData_EmptyData) { |
| 404 EXPECT_DFATAL(generator_.ConsumeData(kHeadersStreamId, MakeIOVector(""), 0, | 404 EXPECT_QUIC_BUG(generator_.ConsumeData(kHeadersStreamId, MakeIOVector(""), 0, |
| 405 false, nullptr), | 405 false, nullptr), |
| 406 "Attempt to consume empty data without FIN."); | 406 "Attempt to consume empty data without FIN."); |
| 407 } | 407 } |
| 408 | 408 |
| 409 TEST_F(QuicPacketGeneratorTest, | 409 TEST_F(QuicPacketGeneratorTest, |
| 410 ConsumeDataMultipleTimes_WritableAndShouldNotFlush) { | 410 ConsumeDataMultipleTimes_WritableAndShouldNotFlush) { |
| 411 delegate_.SetCanWriteAnything(); | 411 delegate_.SetCanWriteAnything(); |
| 412 generator_.StartBatchOperations(); | 412 generator_.StartBatchOperations(); |
| 413 | 413 |
| 414 generator_.ConsumeData(kHeadersStreamId, MakeIOVector("foo"), 2, true, | 414 generator_.ConsumeData(kHeadersStreamId, MakeIOVector("foo"), 2, true, |
| 415 nullptr); | 415 nullptr); |
| 416 QuicConsumedData consumed = | 416 QuicConsumedData consumed = |
| (...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 835 .WillOnce(Return(QuicFrame(&ack_frame_))); | 835 .WillOnce(Return(QuicFrame(&ack_frame_))); |
| 836 EXPECT_CALL(delegate_, PopulateStopWaitingFrame(_)); | 836 EXPECT_CALL(delegate_, PopulateStopWaitingFrame(_)); |
| 837 // Generator should have queued control frames, and creator should be empty. | 837 // Generator should have queued control frames, and creator should be empty. |
| 838 EXPECT_TRUE(generator_.HasQueuedFrames()); | 838 EXPECT_TRUE(generator_.HasQueuedFrames()); |
| 839 EXPECT_FALSE(creator_->HasPendingFrames()); | 839 EXPECT_FALSE(creator_->HasPendingFrames()); |
| 840 | 840 |
| 841 // This will not serialize any packets, because of the invalid frame. | 841 // This will not serialize any packets, because of the invalid frame. |
| 842 EXPECT_CALL(delegate_, | 842 EXPECT_CALL(delegate_, |
| 843 OnUnrecoverableError(QUIC_FAILED_TO_SERIALIZE_PACKET, _, | 843 OnUnrecoverableError(QUIC_FAILED_TO_SERIALIZE_PACKET, _, |
| 844 ConnectionCloseSource::FROM_SELF)); | 844 ConnectionCloseSource::FROM_SELF)); |
| 845 EXPECT_DFATAL(generator_.FinishBatchOperations(), | 845 EXPECT_QUIC_BUG(generator_.FinishBatchOperations(), |
| 846 "packet_number_length 1 is too small " | 846 "packet_number_length 1 is too small " |
| 847 "for least_unacked_delta: 1001"); | 847 "for least_unacked_delta: 1001"); |
| 848 } | 848 } |
| 849 | 849 |
| 850 TEST_F(QuicPacketGeneratorTest, SetCurrentPath) { | 850 TEST_F(QuicPacketGeneratorTest, SetCurrentPath) { |
| 851 delegate_.SetCanWriteAnything(); | 851 delegate_.SetCanWriteAnything(); |
| 852 generator_.StartBatchOperations(); | 852 generator_.StartBatchOperations(); |
| 853 | 853 |
| 854 QuicConsumedData consumed = generator_.ConsumeData( | 854 QuicConsumedData consumed = generator_.ConsumeData( |
| 855 kHeadersStreamId, MakeIOVector("foo"), 2, true, nullptr); | 855 kHeadersStreamId, MakeIOVector("foo"), 2, true, nullptr); |
| 856 EXPECT_EQ(3u, consumed.bytes_consumed); | 856 EXPECT_EQ(3u, consumed.bytes_consumed); |
| 857 EXPECT_TRUE(consumed.fin_consumed); | 857 EXPECT_TRUE(consumed.fin_consumed); |
| 858 EXPECT_TRUE(generator_.HasQueuedFrames()); | 858 EXPECT_TRUE(generator_.HasQueuedFrames()); |
| 859 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(creator_)); | 859 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(creator_)); |
| 860 // Does not change current path. | 860 // Does not change current path. |
| 861 generator_.SetCurrentPath(kDefaultPathId, 1, 0); | 861 generator_.SetCurrentPath(kDefaultPathId, 1, 0); |
| 862 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(creator_)); | 862 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(creator_)); |
| 863 | 863 |
| 864 // Try to switch path when a packet is under construction. | 864 // Try to switch path when a packet is under construction. |
| 865 QuicPathId kTestPathId1 = 1; | 865 QuicPathId kTestPathId1 = 1; |
| 866 EXPECT_DFATAL(generator_.SetCurrentPath(kTestPathId1, 1, 0), | 866 EXPECT_QUIC_BUG(generator_.SetCurrentPath(kTestPathId1, 1, 0), |
| 867 "Unable to change paths when a packet is under construction"); | 867 "Unable to change paths when a packet is under construction"); |
| 868 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(creator_)); | 868 EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(creator_)); |
| 869 | 869 |
| 870 // Try to switch path after current open packet gets serialized. | 870 // Try to switch path after current open packet gets serialized. |
| 871 EXPECT_CALL(delegate_, OnSerializedPacket(_)) | 871 EXPECT_CALL(delegate_, OnSerializedPacket(_)) |
| 872 .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket)); | 872 .WillOnce(Invoke(this, &QuicPacketGeneratorTest::SavePacket)); |
| 873 generator_.FlushAllQueuedFrames(); | 873 generator_.FlushAllQueuedFrames(); |
| 874 EXPECT_FALSE(generator_.HasQueuedFrames()); | 874 EXPECT_FALSE(generator_.HasQueuedFrames()); |
| 875 generator_.SetCurrentPath(kTestPathId1, 1, 0); | 875 generator_.SetCurrentPath(kTestPathId1, 1, 0); |
| 876 EXPECT_EQ(kTestPathId1, QuicPacketCreatorPeer::GetCurrentPath(creator_)); | 876 EXPECT_EQ(kTestPathId1, QuicPacketCreatorPeer::GetCurrentPath(creator_)); |
| 877 } | 877 } |
| 878 | 878 |
| 879 } // namespace test | 879 } // namespace test |
| 880 } // namespace net | 880 } // namespace net |
| OLD | NEW |