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

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

Issue 798873005: Remove unused original transmission stats from QuicAckNotifier. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@removing_quic_version_21_83551025
Patch Set: Created 5 years, 11 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_ack_notifier_test.cc ('k') | net/quic/quic_crypto_server_stream.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_connection.h" 5 #include "net/quic/quic_connection.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
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 4129 matching lines...) Expand 10 before | Expand all | Expand 10 after
4140 EXPECT_TRUE(writer_->IsWriteBlocked()); 4140 EXPECT_TRUE(writer_->IsWriteBlocked());
4141 TriggerConnectionClose(); 4141 TriggerConnectionClose();
4142 EXPECT_EQ(1u, writer_->packets_write_attempts()); 4142 EXPECT_EQ(1u, writer_->packets_write_attempts());
4143 } 4143 }
4144 4144
4145 TEST_P(QuicConnectionTest, AckNotifierTriggerCallback) { 4145 TEST_P(QuicConnectionTest, AckNotifierTriggerCallback) {
4146 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 4146 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
4147 4147
4148 // Create a delegate which we expect to be called. 4148 // Create a delegate which we expect to be called.
4149 scoped_refptr<MockAckNotifierDelegate> delegate(new MockAckNotifierDelegate); 4149 scoped_refptr<MockAckNotifierDelegate> delegate(new MockAckNotifierDelegate);
4150 EXPECT_CALL(*delegate.get(), OnAckNotification(_, _, _, _, _)).Times(1); 4150 EXPECT_CALL(*delegate.get(), OnAckNotification(_, _, _)).Times(1);
4151 4151
4152 // Send some data, which will register the delegate to be notified. 4152 // Send some data, which will register the delegate to be notified.
4153 connection_.SendStreamDataWithString(1, "foo", 0, !kFin, delegate.get()); 4153 connection_.SendStreamDataWithString(1, "foo", 0, !kFin, delegate.get());
4154 4154
4155 // Process an ACK from the server which should trigger the callback. 4155 // Process an ACK from the server which should trigger the callback.
4156 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); 4156 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _));
4157 QuicAckFrame frame = InitAckFrame(1); 4157 QuicAckFrame frame = InitAckFrame(1);
4158 ProcessAckPacket(&frame); 4158 ProcessAckPacket(&frame);
4159 } 4159 }
4160 4160
4161 TEST_P(QuicConnectionTest, AckNotifierFailToTriggerCallback) { 4161 TEST_P(QuicConnectionTest, AckNotifierFailToTriggerCallback) {
4162 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 4162 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
4163 4163
4164 // Create a delegate which we don't expect to be called. 4164 // Create a delegate which we don't expect to be called.
4165 scoped_refptr<MockAckNotifierDelegate> delegate(new MockAckNotifierDelegate); 4165 scoped_refptr<MockAckNotifierDelegate> delegate(new MockAckNotifierDelegate);
4166 EXPECT_CALL(*delegate.get(), OnAckNotification(_, _, _, _, _)).Times(0); 4166 EXPECT_CALL(*delegate.get(), OnAckNotification(_, _, _)).Times(0);
4167 4167
4168 // Send some data, which will register the delegate to be notified. This will 4168 // Send some data, which will register the delegate to be notified. This will
4169 // not be ACKed and so the delegate should never be called. 4169 // not be ACKed and so the delegate should never be called.
4170 connection_.SendStreamDataWithString(1, "foo", 0, !kFin, delegate.get()); 4170 connection_.SendStreamDataWithString(1, "foo", 0, !kFin, delegate.get());
4171 4171
4172 // Send some other data which we will ACK. 4172 // Send some other data which we will ACK.
4173 connection_.SendStreamDataWithString(1, "foo", 0, !kFin, nullptr); 4173 connection_.SendStreamDataWithString(1, "foo", 0, !kFin, nullptr);
4174 connection_.SendStreamDataWithString(1, "bar", 0, !kFin, nullptr); 4174 connection_.SendStreamDataWithString(1, "bar", 0, !kFin, nullptr);
4175 4175
4176 // Now we receive ACK for packets 2 and 3, but importantly missing packet 1 4176 // Now we receive ACK for packets 2 and 3, but importantly missing packet 1
4177 // which we registered to be notified about. 4177 // which we registered to be notified about.
4178 QuicAckFrame frame = InitAckFrame(3); 4178 QuicAckFrame frame = InitAckFrame(3);
4179 NackPacket(1, &frame); 4179 NackPacket(1, &frame);
4180 SequenceNumberSet lost_packets; 4180 SequenceNumberSet lost_packets;
4181 lost_packets.insert(1); 4181 lost_packets.insert(1);
4182 EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _)) 4182 EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _))
4183 .WillOnce(Return(lost_packets)); 4183 .WillOnce(Return(lost_packets));
4184 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); 4184 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _));
4185 ProcessAckPacket(&frame); 4185 ProcessAckPacket(&frame);
4186 } 4186 }
4187 4187
4188 TEST_P(QuicConnectionTest, AckNotifierCallbackAfterRetransmission) { 4188 TEST_P(QuicConnectionTest, AckNotifierCallbackAfterRetransmission) {
4189 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 4189 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
4190 4190
4191 // Create a delegate which we expect to be called. 4191 // Create a delegate which we expect to be called.
4192 scoped_refptr<MockAckNotifierDelegate> delegate(new MockAckNotifierDelegate); 4192 scoped_refptr<MockAckNotifierDelegate> delegate(new MockAckNotifierDelegate);
4193 EXPECT_CALL(*delegate.get(), OnAckNotification(_, _, _, _, _)).Times(1); 4193 EXPECT_CALL(*delegate.get(), OnAckNotification(_, _, _)).Times(1);
4194 4194
4195 // Send four packets, and register to be notified on ACK of packet 2. 4195 // Send four packets, and register to be notified on ACK of packet 2.
4196 connection_.SendStreamDataWithString(3, "foo", 0, !kFin, nullptr); 4196 connection_.SendStreamDataWithString(3, "foo", 0, !kFin, nullptr);
4197 connection_.SendStreamDataWithString(3, "bar", 0, !kFin, delegate.get()); 4197 connection_.SendStreamDataWithString(3, "bar", 0, !kFin, delegate.get());
4198 connection_.SendStreamDataWithString(3, "baz", 0, !kFin, nullptr); 4198 connection_.SendStreamDataWithString(3, "baz", 0, !kFin, nullptr);
4199 connection_.SendStreamDataWithString(3, "qux", 0, !kFin, nullptr); 4199 connection_.SendStreamDataWithString(3, "qux", 0, !kFin, nullptr);
4200 4200
4201 // Now we receive ACK for packets 1, 3, and 4 and lose 2. 4201 // Now we receive ACK for packets 1, 3, and 4 and lose 2.
4202 QuicAckFrame frame = InitAckFrame(4); 4202 QuicAckFrame frame = InitAckFrame(4);
4203 NackPacket(2, &frame); 4203 NackPacket(2, &frame);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
4240 clock_.AdvanceTime(DefaultRetransmissionTime()); 4240 clock_.AdvanceTime(DefaultRetransmissionTime());
4241 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true)); 4241 EXPECT_CALL(*send_algorithm_, OnRetransmissionTimeout(true));
4242 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, 2u, _, _)); 4242 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, 2u, _, _));
4243 connection_.GetRetransmissionAlarm()->Fire(); 4243 connection_.GetRetransmissionAlarm()->Fire();
4244 EXPECT_EQ(2u, writer_->header().packet_sequence_number); 4244 EXPECT_EQ(2u, writer_->header().packet_sequence_number);
4245 // We do not raise the high water mark yet. 4245 // We do not raise the high water mark yet.
4246 EXPECT_EQ(1u, stop_waiting()->least_unacked); 4246 EXPECT_EQ(1u, stop_waiting()->least_unacked);
4247 4247
4248 // Ack the original packet, which will revert the RTO. 4248 // Ack the original packet, which will revert the RTO.
4249 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 4249 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
4250 EXPECT_CALL(*delegate.get(), OnAckNotification(1, _, 1, _, _)); 4250 EXPECT_CALL(*delegate.get(), OnAckNotification(1, _, _));
4251 EXPECT_CALL(*send_algorithm_, RevertRetransmissionTimeout()); 4251 EXPECT_CALL(*send_algorithm_, RevertRetransmissionTimeout());
4252 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); 4252 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _));
4253 QuicAckFrame ack_frame = InitAckFrame(1); 4253 QuicAckFrame ack_frame = InitAckFrame(1);
4254 ProcessAckPacket(&ack_frame); 4254 ProcessAckPacket(&ack_frame);
4255 4255
4256 // Delegate is not notified again when the retransmit is acked. 4256 // Delegate is not notified again when the retransmit is acked.
4257 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); 4257 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _));
4258 QuicAckFrame second_ack_frame = InitAckFrame(2); 4258 QuicAckFrame second_ack_frame = InitAckFrame(2);
4259 ProcessAckPacket(&second_ack_frame); 4259 ProcessAckPacket(&second_ack_frame);
4260 } 4260 }
(...skipping 21 matching lines...) Expand all
4282 lost_packets.insert(2); 4282 lost_packets.insert(2);
4283 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 4283 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
4284 EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _)) 4284 EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _))
4285 .WillOnce(Return(lost_packets)); 4285 .WillOnce(Return(lost_packets));
4286 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); 4286 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _));
4287 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)); 4287 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _));
4288 ProcessAckPacket(&frame); 4288 ProcessAckPacket(&frame);
4289 4289
4290 // Now we get an ACK for packet 2, which was previously nacked. 4290 // Now we get an ACK for packet 2, which was previously nacked.
4291 SequenceNumberSet no_lost_packets; 4291 SequenceNumberSet no_lost_packets;
4292 EXPECT_CALL(*delegate.get(), OnAckNotification(1, _, 1, _, _)); 4292 EXPECT_CALL(*delegate.get(), OnAckNotification(1, _, _));
4293 EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _)) 4293 EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _))
4294 .WillOnce(Return(no_lost_packets)); 4294 .WillOnce(Return(no_lost_packets));
4295 QuicAckFrame second_ack_frame = InitAckFrame(4); 4295 QuicAckFrame second_ack_frame = InitAckFrame(4);
4296 ProcessAckPacket(&second_ack_frame); 4296 ProcessAckPacket(&second_ack_frame);
4297 4297
4298 // Verify that the delegate is not notified again when the 4298 // Verify that the delegate is not notified again when the
4299 // retransmit is acked. 4299 // retransmit is acked.
4300 EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _)) 4300 EXPECT_CALL(*loss_algorithm_, DetectLostPackets(_, _, _, _))
4301 .WillOnce(Return(no_lost_packets)); 4301 .WillOnce(Return(no_lost_packets));
4302 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); 4302 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _));
4303 QuicAckFrame third_ack_frame = InitAckFrame(5); 4303 QuicAckFrame third_ack_frame = InitAckFrame(5);
4304 ProcessAckPacket(&third_ack_frame); 4304 ProcessAckPacket(&third_ack_frame);
4305 } 4305 }
4306 4306
4307 TEST_P(QuicConnectionTest, AckNotifierFECTriggerCallback) { 4307 TEST_P(QuicConnectionTest, AckNotifierFECTriggerCallback) {
4308 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 4308 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
4309 4309
4310 // Create a delegate which we expect to be called. 4310 // Create a delegate which we expect to be called.
4311 scoped_refptr<MockAckNotifierDelegate> delegate( 4311 scoped_refptr<MockAckNotifierDelegate> delegate(
4312 new MockAckNotifierDelegate); 4312 new MockAckNotifierDelegate);
4313 EXPECT_CALL(*delegate.get(), OnAckNotification(_, _, _, _, _)).Times(1); 4313 EXPECT_CALL(*delegate.get(), OnAckNotification(_, _, _)).Times(1);
4314 4314
4315 // Send some data, which will register the delegate to be notified. 4315 // Send some data, which will register the delegate to be notified.
4316 connection_.SendStreamDataWithString(1, "foo", 0, !kFin, delegate.get()); 4316 connection_.SendStreamDataWithString(1, "foo", 0, !kFin, delegate.get());
4317 connection_.SendStreamDataWithString(2, "bar", 0, !kFin, nullptr); 4317 connection_.SendStreamDataWithString(2, "bar", 0, !kFin, nullptr);
4318 4318
4319 // Process an ACK from the server with a revived packet, which should trigger 4319 // Process an ACK from the server with a revived packet, which should trigger
4320 // the callback. 4320 // the callback.
4321 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); 4321 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _));
4322 QuicAckFrame frame = InitAckFrame(2); 4322 QuicAckFrame frame = InitAckFrame(2);
4323 NackPacket(1, &frame); 4323 NackPacket(1, &frame);
4324 frame.revived_packets.insert(1); 4324 frame.revived_packets.insert(1);
4325 ProcessAckPacket(&frame); 4325 ProcessAckPacket(&frame);
4326 // If the ack is processed again, the notifier should not be called again. 4326 // If the ack is processed again, the notifier should not be called again.
4327 ProcessAckPacket(&frame); 4327 ProcessAckPacket(&frame);
4328 } 4328 }
4329 4329
4330 TEST_P(QuicConnectionTest, AckNotifierCallbackAfterFECRecovery) { 4330 TEST_P(QuicConnectionTest, AckNotifierCallbackAfterFECRecovery) {
4331 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 4331 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
4332 EXPECT_CALL(visitor_, OnCanWrite()); 4332 EXPECT_CALL(visitor_, OnCanWrite());
4333 4333
4334 // Create a delegate which we expect to be called. 4334 // Create a delegate which we expect to be called.
4335 scoped_refptr<MockAckNotifierDelegate> delegate(new MockAckNotifierDelegate); 4335 scoped_refptr<MockAckNotifierDelegate> delegate(new MockAckNotifierDelegate);
4336 EXPECT_CALL(*delegate.get(), OnAckNotification(_, _, _, _, _)).Times(1); 4336 EXPECT_CALL(*delegate.get(), OnAckNotification(_, _, _)).Times(1);
4337 4337
4338 // Expect ACKs for 1 packet. 4338 // Expect ACKs for 1 packet.
4339 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); 4339 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _));
4340 4340
4341 // Send one packet, and register to be notified on ACK. 4341 // Send one packet, and register to be notified on ACK.
4342 connection_.SendStreamDataWithString(1, "foo", 0, !kFin, delegate.get()); 4342 connection_.SendStreamDataWithString(1, "foo", 0, !kFin, delegate.get());
4343 4343
4344 // Ack packet gets dropped, but we receive an FEC packet that covers it. 4344 // Ack packet gets dropped, but we receive an FEC packet that covers it.
4345 // Should recover the Ack packet and trigger the notification callback. 4345 // Should recover the Ack packet and trigger the notification callback.
4346 QuicFrames frames; 4346 QuicFrames frames;
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
4519 // Regression test for b/18594622 4519 // Regression test for b/18594622
4520 scoped_refptr<MockAckNotifierDelegate> delegate(new MockAckNotifierDelegate); 4520 scoped_refptr<MockAckNotifierDelegate> delegate(new MockAckNotifierDelegate);
4521 EXPECT_DFATAL( 4521 EXPECT_DFATAL(
4522 connection_.SendStreamDataWithString(3, "", 0, !kFin, delegate.get()), 4522 connection_.SendStreamDataWithString(3, "", 0, !kFin, delegate.get()),
4523 "Attempt to send empty stream frame"); 4523 "Attempt to send empty stream frame");
4524 } 4524 }
4525 4525
4526 } // namespace 4526 } // namespace
4527 } // namespace test 4527 } // namespace test
4528 } // namespace net 4528 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_ack_notifier_test.cc ('k') | net/quic/quic_crypto_server_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698