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

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

Issue 11377096: Change from re-transmitting an packet with a retransmit number to sending a new packet with a new s… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 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 | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_connection.cc ('k') | net/quic/quic_connection_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 "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 "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 void SendAck() { 47 void SendAck() {
48 QuicConnectionPeer::SendAck(this); 48 QuicConnectionPeer::SendAck(this);
49 } 49 }
50 50
51 void SetScheduler(QuicSendScheduler* scheduler) { 51 void SetScheduler(QuicSendScheduler* scheduler) {
52 QuicConnectionPeer::SetScheduler(this, scheduler); 52 QuicConnectionPeer::SetScheduler(this, scheduler);
53 } 53 }
54 54
55 bool SendPacket(QuicPacketSequenceNumber sequence_number, 55 bool SendPacket(QuicPacketSequenceNumber sequence_number,
56 QuicPacket* packet, 56 QuicPacket* packet,
57 bool resend, 57 bool should_resend,
58 bool force) { 58 bool force,
59 return QuicConnection::SendPacket(sequence_number, packet, resend, force); 59 bool is_retransmit) {
60 return QuicConnection::SendPacket(
61 sequence_number, packet, should_resend, force, is_retransmit);
60 } 62 }
61 }; 63 };
62 64
63 class TestConnectionHelper : public QuicConnectionHelper { 65 class TestConnectionHelper : public QuicConnectionHelper {
64 public: 66 public:
65 TestConnectionHelper(base::TaskRunner* runner, 67 TestConnectionHelper(base::TaskRunner* runner,
66 QuicClock* clock, 68 QuicClock* clock,
67 MockUDPClientSocket* socket) 69 MockUDPClientSocket* socket)
68 : QuicConnectionHelper(runner, clock, socket) { 70 : QuicConnectionHelper(runner, clock, socket) {
69 } 71 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 frame1_(1, false, 0, data1) { 106 frame1_(1, false, 0, data1) {
105 connection_.set_visitor(&visitor_); 107 connection_.set_visitor(&visitor_);
106 connection_.SetScheduler(scheduler_); 108 connection_.SetScheduler(scheduler_);
107 } 109 }
108 110
109 QuicPacket* ConstructDataPacket(QuicPacketSequenceNumber number, 111 QuicPacket* ConstructDataPacket(QuicPacketSequenceNumber number,
110 QuicFecGroupNumber fec_group) { 112 QuicFecGroupNumber fec_group) {
111 header_.guid = guid_; 113 header_.guid = guid_;
112 header_.packet_sequence_number = number; 114 header_.packet_sequence_number = number;
113 header_.transmission_time = 0; 115 header_.transmission_time = 0;
114 header_.retransmission_count = 0;
115 header_.flags = PACKET_FLAGS_NONE; 116 header_.flags = PACKET_FLAGS_NONE;
116 header_.fec_group = fec_group; 117 header_.fec_group = fec_group;
117 118
118 QuicFrames frames; 119 QuicFrames frames;
119 QuicFrame frame(&frame1_); 120 QuicFrame frame(&frame1_);
120 frames.push_back(frame); 121 frames.push_back(frame);
121 QuicPacket* packet; 122 QuicPacket* packet;
122 framer_.ConstructFragementDataPacket(header_, frames, &packet); 123 framer_.ConstructFrameDataPacket(header_, frames, &packet);
123 return packet; 124 return packet;
124 } 125 }
125 126
126 QuicGuid guid_; 127 QuicGuid guid_;
127 QuicFramer framer_; 128 QuicFramer framer_;
128 QuicPacketCreator creator_; 129 QuicPacketCreator creator_;
129 QuicPacketHeader header_; 130 QuicPacketHeader header_;
130 131
131 BoundNetLog net_log_; 132 BoundNetLog net_log_;
132 StaticSocketDataProvider empty_data_; 133 StaticSocketDataProvider empty_data_;
(...skipping 25 matching lines...) Expand all
158 helper_->SetSendAlarm(0); 159 helper_->SetSendAlarm(0);
159 helper_->UnregisterSendAlarmIfRegistered() ; 160 helper_->UnregisterSendAlarmIfRegistered() ;
160 EXPECT_FALSE(helper_->IsSendAlarmSet()); 161 EXPECT_FALSE(helper_->IsSendAlarmSet());
161 } 162 }
162 163
163 TEST_F(QuicConnectionHelperTest, TestResend) { 164 TEST_F(QuicConnectionHelperTest, TestResend) {
164 //FLAGS_fake_packet_loss_percentage = 100; 165 //FLAGS_fake_packet_loss_percentage = 100;
165 const uint64 kDefaultResendTimeMs = 500; 166 const uint64 kDefaultResendTimeMs = 500;
166 167
167 connection_.SendStreamData(1, "foo", 0, false, NULL); 168 connection_.SendStreamData(1, "foo", 0, false, NULL);
168 EXPECT_EQ(0u, helper_->header()->retransmission_count);
169 EXPECT_EQ(0u, helper_->header()->transmission_time); 169 EXPECT_EQ(0u, helper_->header()->transmission_time);
170 170
171 runner_->RunNextTask(); 171 runner_->RunNextTask();
172 172 EXPECT_EQ(2u, helper_->header()->packet_sequence_number);
173 EXPECT_EQ(1u, helper_->header()->retransmission_count);
174 EXPECT_EQ(kDefaultResendTimeMs * 1000, 173 EXPECT_EQ(kDefaultResendTimeMs * 1000,
175 helper_->header()->transmission_time); 174 helper_->header()->transmission_time);
176 } 175 }
177 176
178 TEST_F(QuicConnectionHelperTest, InitialTimeout) { 177 TEST_F(QuicConnectionHelperTest, InitialTimeout) {
179 // Verify that a single task was posted. 178 // Verify that a single task was posted.
180 EXPECT_EQ(1u, runner_->tasks()->size()); 179 EXPECT_EQ(1u, runner_->tasks()->size());
181 EXPECT_EQ(base::TimeDelta::FromMicroseconds(kDefaultTimeout), 180 EXPECT_EQ(base::TimeDelta::FromMicroseconds(kDefaultTimeout),
182 runner_->GetTask(0).delta); 181 runner_->GetTask(0).delta);
183 182
(...skipping 26 matching lines...) Expand all
210 EXPECT_CALL(visitor_, ConnectionClose(QUIC_CONNECTION_TIMED_OUT, false)); 209 EXPECT_CALL(visitor_, ConnectionClose(QUIC_CONNECTION_TIMED_OUT, false));
211 runner_->RunNextTask(); 210 runner_->RunNextTask();
212 EXPECT_EQ(kDefaultTimeout + 5000, clock_.NowInUsec()); 211 EXPECT_EQ(kDefaultTimeout + 5000, clock_.NowInUsec());
213 EXPECT_FALSE(connection_.connected()); 212 EXPECT_FALSE(connection_.connected());
214 } 213 }
215 214
216 TEST_F(QuicConnectionHelperTest, SendSchedulerDelayThenSend) { 215 TEST_F(QuicConnectionHelperTest, SendSchedulerDelayThenSend) {
217 // Test that if we send a packet with a delay, it ends up queued. 216 // Test that if we send a packet with a delay, it ends up queued.
218 scoped_ptr<QuicPacket> packet(ConstructDataPacket(1, 0)); 217 scoped_ptr<QuicPacket> packet(ConstructDataPacket(1, 0));
219 EXPECT_CALL(*scheduler_, TimeUntilSend(true)).WillOnce(testing::Return(1)); 218 EXPECT_CALL(*scheduler_, TimeUntilSend(true)).WillOnce(testing::Return(1));
220 bool resend = true; 219
220 bool should_resend = true;
221 bool force = false; 221 bool force = false;
222 connection_.SendPacket(1, packet.get(), resend, force); 222 bool is_retransmit = false;
223 connection_.SendPacket(1, packet.get(), should_resend, force, is_retransmit);
223 EXPECT_EQ(1u, connection_.NumQueuedPackets()); 224 EXPECT_EQ(1u, connection_.NumQueuedPackets());
224 225
225 // Advance the clock to fire the alarm, and configure the scheduler 226 // Advance the clock to fire the alarm, and configure the scheduler
226 // to permit the packet to be sent. 227 // to permit the packet to be sent.
227 EXPECT_CALL(*scheduler_, TimeUntilSend(true)).WillOnce(testing::Return(0)); 228 EXPECT_CALL(*scheduler_, TimeUntilSend(true)).WillOnce(testing::Return(0));
228 runner_->RunNextTask(); 229 runner_->RunNextTask();
229 EXPECT_EQ(0u, connection_.NumQueuedPackets()); 230 EXPECT_EQ(0u, connection_.NumQueuedPackets());
230 } 231 }
231 232
232 } // namespace test 233 } // namespace test
233 234
234 } // namespace net 235 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_connection.cc ('k') | net/quic/quic_connection_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698