| 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/quic_connection_helper.h" | 5 #include "net/quic/quic_connection_helper.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "net/base/net_errors.h" | 9 #include "net/base/net_errors.h" |
| 10 #include "net/quic/crypto/quic_decrypter.h" | 10 #include "net/quic/crypto/quic_decrypter.h" |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 PacketToWrite(IoMode mode, QuicEncryptedPacket* packet) | 52 PacketToWrite(IoMode mode, QuicEncryptedPacket* packet) |
| 53 : mode(mode), | 53 : mode(mode), |
| 54 packet(packet) { | 54 packet(packet) { |
| 55 } | 55 } |
| 56 IoMode mode; | 56 IoMode mode; |
| 57 QuicEncryptedPacket* packet; | 57 QuicEncryptedPacket* packet; |
| 58 }; | 58 }; |
| 59 | 59 |
| 60 QuicConnectionHelperTest() | 60 QuicConnectionHelperTest() |
| 61 : guid_(2), | 61 : guid_(2), |
| 62 framer_(kQuicVersion1, | 62 framer_(kQuicVersion1, QuicTime::Zero(), false), |
| 63 QuicDecrypter::Create(kNULL), | |
| 64 QuicEncrypter::Create(kNULL), | |
| 65 QuicTime::Zero(), | |
| 66 false), | |
| 67 net_log_(BoundNetLog()), | 63 net_log_(BoundNetLog()), |
| 68 frame_(1, false, 0, kData) { | 64 frame_(1, false, 0, kData) { |
| 69 Initialize(); | 65 Initialize(); |
| 70 } | 66 } |
| 71 | 67 |
| 72 ~QuicConnectionHelperTest() { | 68 ~QuicConnectionHelperTest() { |
| 73 for (size_t i = 0; i < writes_.size(); i++) { | 69 for (size_t i = 0; i < writes_.size(); i++) { |
| 74 delete writes_[i].packet; | 70 delete writes_[i].packet; |
| 75 } | 71 } |
| 76 } | 72 } |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 QuicCongestionFeedbackFrame feedback; | 141 QuicCongestionFeedbackFrame feedback; |
| 146 feedback.type = kTCP; | 142 feedback.type = kTCP; |
| 147 feedback.tcp.accumulated_number_of_lost_packets = 0; | 143 feedback.tcp.accumulated_number_of_lost_packets = 0; |
| 148 feedback.tcp.receive_window = 16000 << 4; | 144 feedback.tcp.receive_window = 16000 << 4; |
| 149 | 145 |
| 150 QuicFrames frames; | 146 QuicFrames frames; |
| 151 frames.push_back(QuicFrame(&ack)); | 147 frames.push_back(QuicFrame(&ack)); |
| 152 frames.push_back(QuicFrame(&feedback)); | 148 frames.push_back(QuicFrame(&feedback)); |
| 153 scoped_ptr<QuicPacket> packet( | 149 scoped_ptr<QuicPacket> packet( |
| 154 framer_.ConstructFrameDataPacket(header_, frames).packet); | 150 framer_.ConstructFrameDataPacket(header_, frames).packet); |
| 155 return framer_.EncryptPacket(header_.packet_sequence_number, *packet); | 151 return framer_.EncryptPacket( |
| 152 ENCRYPTION_NONE, header_.packet_sequence_number, *packet); |
| 156 } | 153 } |
| 157 | 154 |
| 158 // Returns a newly created packet to send a connection close frame. | 155 // Returns a newly created packet to send a connection close frame. |
| 159 QuicEncryptedPacket* ConstructClosePacket( | 156 QuicEncryptedPacket* ConstructClosePacket( |
| 160 QuicPacketSequenceNumber sequence_number, | 157 QuicPacketSequenceNumber sequence_number, |
| 161 QuicPacketSequenceNumber least_waiting) { | 158 QuicPacketSequenceNumber least_waiting) { |
| 162 InitializeHeader(sequence_number); | 159 InitializeHeader(sequence_number); |
| 163 | 160 |
| 164 QuicFrames frames; | 161 QuicFrames frames; |
| 165 QuicAckFrame ack(0, QuicTime::Zero(), least_waiting + 1); | 162 QuicAckFrame ack(0, QuicTime::Zero(), least_waiting + 1); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 193 header_.fec_flag = false; | 190 header_.fec_flag = false; |
| 194 header_.fec_group = 0; | 191 header_.fec_group = 0; |
| 195 } | 192 } |
| 196 | 193 |
| 197 QuicEncryptedPacket* ConstructPacket(const QuicPacketHeader& header, | 194 QuicEncryptedPacket* ConstructPacket(const QuicPacketHeader& header, |
| 198 const QuicFrame& frame) { | 195 const QuicFrame& frame) { |
| 199 QuicFrames frames; | 196 QuicFrames frames; |
| 200 frames.push_back(frame); | 197 frames.push_back(frame); |
| 201 scoped_ptr<QuicPacket> packet( | 198 scoped_ptr<QuicPacket> packet( |
| 202 framer_.ConstructFrameDataPacket(header_, frames).packet); | 199 framer_.ConstructFrameDataPacket(header_, frames).packet); |
| 203 return framer_.EncryptPacket(header_.packet_sequence_number, *packet); | 200 return framer_.EncryptPacket( |
| 201 ENCRYPTION_NONE, header_.packet_sequence_number, *packet); |
| 204 } | 202 } |
| 205 | 203 |
| 206 QuicGuid guid_; | 204 QuicGuid guid_; |
| 207 QuicFramer framer_; | 205 QuicFramer framer_; |
| 208 QuicPacketHeader header_; | 206 QuicPacketHeader header_; |
| 209 BoundNetLog net_log_; | 207 BoundNetLog net_log_; |
| 210 QuicStreamFrame frame_; | 208 QuicStreamFrame frame_; |
| 211 scoped_ptr<StaticSocketDataProvider> socket_data_; | 209 scoped_ptr<StaticSocketDataProvider> socket_data_; |
| 212 std::vector<PacketToWrite> writes_; | 210 std::vector<PacketToWrite> writes_; |
| 213 }; | 211 }; |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 TEST_F(QuicConnectionHelperTest, SendSchedulerDelayThenSend) { | 404 TEST_F(QuicConnectionHelperTest, SendSchedulerDelayThenSend) { |
| 407 AddWrite(SYNCHRONOUS, ConstructDataPacket(1)); | 405 AddWrite(SYNCHRONOUS, ConstructDataPacket(1)); |
| 408 Initialize(); | 406 Initialize(); |
| 409 | 407 |
| 410 // Test that if we send a packet with a delay, it ends up queued. | 408 // Test that if we send a packet with a delay, it ends up queued. |
| 411 EXPECT_CALL( | 409 EXPECT_CALL( |
| 412 *send_algorithm_, TimeUntilSend(_, NOT_RETRANSMISSION, _)).WillOnce( | 410 *send_algorithm_, TimeUntilSend(_, NOT_RETRANSMISSION, _)).WillOnce( |
| 413 testing::Return(QuicTime::Delta::FromMicroseconds(1))); | 411 testing::Return(QuicTime::Delta::FromMicroseconds(1))); |
| 414 | 412 |
| 415 QuicPacket* packet = ConstructRawDataPacket(1); | 413 QuicPacket* packet = ConstructRawDataPacket(1); |
| 416 connection_->SendOrQueuePacket(1, packet, 0, HAS_RETRANSMITTABLE_DATA); | 414 connection_->SendOrQueuePacket( |
| 415 ENCRYPTION_NONE, 1, packet, 0, HAS_RETRANSMITTABLE_DATA); |
| 417 EXPECT_CALL(*send_algorithm_, SentPacket(_, 1, _, NOT_RETRANSMISSION)); | 416 EXPECT_CALL(*send_algorithm_, SentPacket(_, 1, _, NOT_RETRANSMISSION)); |
| 418 EXPECT_EQ(1u, connection_->NumQueuedPackets()); | 417 EXPECT_EQ(1u, connection_->NumQueuedPackets()); |
| 419 | 418 |
| 420 // Advance the clock to fire the alarm, and configure the scheduler | 419 // Advance the clock to fire the alarm, and configure the scheduler |
| 421 // to permit the packet to be sent. | 420 // to permit the packet to be sent. |
| 422 EXPECT_CALL( | 421 EXPECT_CALL( |
| 423 *send_algorithm_, TimeUntilSend(_, NOT_RETRANSMISSION, _)).WillRepeatedly( | 422 *send_algorithm_, TimeUntilSend(_, NOT_RETRANSMISSION, _)).WillRepeatedly( |
| 424 testing::Return(QuicTime::Delta::Zero())); | 423 testing::Return(QuicTime::Delta::Zero())); |
| 425 EXPECT_CALL(visitor_, OnCanWrite()).WillOnce(testing::Return(true)); | 424 EXPECT_CALL(visitor_, OnCanWrite()).WillOnce(testing::Return(true)); |
| 426 runner_->RunNextTask(); | 425 runner_->RunNextTask(); |
| 427 EXPECT_EQ(0u, connection_->NumQueuedPackets()); | 426 EXPECT_EQ(0u, connection_->NumQueuedPackets()); |
| 428 EXPECT_TRUE(AtEof()); | 427 EXPECT_TRUE(AtEof()); |
| 429 } | 428 } |
| 430 | 429 |
| 431 } // namespace test | 430 } // namespace test |
| 432 } // namespace net | 431 } // namespace net |
| OLD | NEW |