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

Unified Diff: net/quic/quic_connection_test.cc

Issue 11439003: Revert 171096 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/quic_connection_helper_test.cc ('k') | net/quic/quic_framer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_connection_test.cc
===================================================================
--- net/quic/quic_connection_test.cc (revision 171102)
+++ net/quic/quic_connection_test.cc (working copy)
@@ -16,12 +16,10 @@
//DECLARE_int32(fake_packet_loss_percentage);
-using base::StringPiece;
using std::map;
using testing::_;
using testing::ContainerEq;
using testing::Return;
-using testing::StrictMock;
namespace net {
@@ -189,7 +187,7 @@
: guid_(42),
framer_(QuicDecrypter::Create(kNULL), QuicEncrypter::Create(kNULL)),
creator_(guid_, &framer_),
- scheduler_(new StrictMock<MockScheduler>),
+ scheduler_(new MockScheduler()),
helper_(new TestConnectionHelper(&clock_)),
connection_(guid_, IPEndPoint(), helper_),
frame1_(1, false, 0, data1),
@@ -212,7 +210,6 @@
void ProcessPacket(QuicPacketSequenceNumber number) {
EXPECT_CALL(visitor_, OnPacket(_, _, _, _))
.WillOnce(Return(accept_packet_));
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
ProcessDataPacket(number, 0);
}
@@ -221,11 +218,9 @@
if (expect_revival) {
EXPECT_CALL(visitor_, OnPacket(_, _, _, _)).Times(2).WillRepeatedly(
Return(accept_packet_));
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _)).Times(2);
} else {
EXPECT_CALL(visitor_, OnPacket(_, _, _, _)).WillOnce(
Return(accept_packet_));
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
}
ProcessDataPacket(number, 1);
}
@@ -244,7 +239,6 @@
if (expect_revival) {
EXPECT_CALL(visitor_, OnPacket(_, _, _, _)).WillOnce(
Return(accept_packet_));
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
}
// Construct the decrypted data packet so we can compute the correct
@@ -277,31 +271,32 @@
delete fec_packet;
}
- void SendStreamDataToPeer(QuicStreamId id, StringPiece data,
- QuicStreamOffset offset, bool fin,
- QuicPacketSequenceNumber* last_packet) {
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
- connection_.SendStreamData(id, data, offset, fin, last_packet);
- }
- void SendAckPacketToPeer() {
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
- connection_.SendAck();
- }
-
- void ProcessAckPacket(QuicAckFrame* frame, bool expect_success = true) {
- if (expect_success) {
- EXPECT_CALL(*scheduler_, OnIncomingAckFrame(_));
- }
+ void SendAckPacket(QuicAckFrame* frame) {
scoped_ptr<QuicPacket> packet(creator_.AckPacket(frame).second);
scoped_ptr<QuicEncryptedPacket> encrypted(framer_.EncryptPacket(*packet));
connection_.ProcessUdpPacket(IPEndPoint(), IPEndPoint(), *encrypted);
}
+ void SendAckPacket(QuicPacketSequenceNumber least_unacked) {
+ QuicAckFrame frame(0, QuicTime(), least_unacked);
+ SendAckPacket(&frame);
+ }
+
bool IsMissing(QuicPacketSequenceNumber number) {
- return !last_frame()->received_info.ContainsAck(number);
+ return last_frame()->received_info.missing_packets.find(number) !=
+ last_frame()->received_info.missing_packets.end();
}
+ size_t NonRetransmittingSize() {
+ return last_frame()->sent_info.non_retransmiting.size();
+ }
+
+ bool NonRetransmitting(QuicPacketSequenceNumber number) {
+ return last_frame()->sent_info.non_retransmiting.find(number) !=
+ last_frame()->sent_info.non_retransmiting.end();
+ }
+
QuicPacket* ConstructDataPacket(QuicPacketSequenceNumber number,
QuicFecGroupNumber fec_group) {
header_.guid = guid_;
@@ -339,50 +334,50 @@
TEST_F(QuicConnectionTest, PacketsInOrder) {
ProcessPacket(1);
EXPECT_EQ(1u, last_frame()->received_info.largest_received);
- EXPECT_EQ(1u, last_frame()->received_info.received_packet_times.size());
+ EXPECT_EQ(0u, last_frame()->received_info.missing_packets.size());
ProcessPacket(2);
EXPECT_EQ(2u, last_frame()->received_info.largest_received);
- EXPECT_EQ(2u, last_frame()->received_info.received_packet_times.size());
+ EXPECT_EQ(0u, last_frame()->received_info.missing_packets.size());
ProcessPacket(3);
EXPECT_EQ(3u, last_frame()->received_info.largest_received);
- EXPECT_EQ(3u, last_frame()->received_info.received_packet_times.size());
+ EXPECT_EQ(0u, last_frame()->received_info.missing_packets.size());
}
TEST_F(QuicConnectionTest, PacketsRejected) {
ProcessPacket(1);
EXPECT_EQ(1u, last_frame()->received_info.largest_received);
- EXPECT_EQ(1u, last_frame()->received_info.received_packet_times.size());
+ EXPECT_EQ(0u, last_frame()->received_info.missing_packets.size());
accept_packet_ = false;
ProcessPacket(2);
// We should not have an ack for two.
EXPECT_EQ(1u, last_frame()->received_info.largest_received);
- EXPECT_EQ(1u, last_frame()->received_info.received_packet_times.size());
+ EXPECT_EQ(0u, last_frame()->received_info.missing_packets.size());
}
TEST_F(QuicConnectionTest, PacketsOutOfOrder) {
ProcessPacket(3);
EXPECT_EQ(3u, last_frame()->received_info.largest_received);
- EXPECT_EQ(1u, last_frame()->received_info.received_packet_times.size());
+ EXPECT_EQ(2u, last_frame()->received_info.missing_packets.size());
EXPECT_TRUE(IsMissing(2));
EXPECT_TRUE(IsMissing(1));
ProcessPacket(2);
EXPECT_EQ(3u, last_frame()->received_info.largest_received);
- EXPECT_EQ(2u, last_frame()->received_info.received_packet_times.size());
+ EXPECT_EQ(1u, last_frame()->received_info.missing_packets.size());
EXPECT_TRUE(IsMissing(1));
ProcessPacket(1);
EXPECT_EQ(3u, last_frame()->received_info.largest_received);
- EXPECT_EQ(3u, last_frame()->received_info.received_packet_times.size());
+ EXPECT_EQ(0u, last_frame()->received_info.missing_packets.size());
}
TEST_F(QuicConnectionTest, DuplicatePacket) {
ProcessPacket(3);
EXPECT_EQ(3u, last_frame()->received_info.largest_received);
- EXPECT_EQ(1u, last_frame()->received_info.received_packet_times.size());
+ EXPECT_EQ(2u, last_frame()->received_info.missing_packets.size());
EXPECT_TRUE(IsMissing(2));
EXPECT_TRUE(IsMissing(1));
@@ -390,26 +385,85 @@
// the visitor OnPacket() will be called.
ProcessDataPacket(3, 0);
EXPECT_EQ(3u, last_frame()->received_info.largest_received);
- EXPECT_EQ(1u, last_frame()->received_info.received_packet_times.size());
+ EXPECT_EQ(2u, last_frame()->received_info.missing_packets.size());
EXPECT_TRUE(IsMissing(2));
EXPECT_TRUE(IsMissing(1));
}
+TEST_F(QuicConnectionTest, LatePacketMarkedWillNotResend) {
+ ProcessPacket(5);
+ // Now send non-resending information, that we're not going to resend 3.
+ // The far end should stop waiting for it.
+ QuicPacketSequenceNumber largest_received = 0;
+ QuicTime time_received;
+ QuicPacketSequenceNumber least_unacked = 1;
+ QuicAckFrame frame(largest_received, time_received, least_unacked);
+ frame.sent_info.non_retransmiting.insert(3);
+ SendAckPacket(&frame);
+ // Force an ack to be sent.
+ connection_.SendAck();
+ EXPECT_EQ(5u, last_frame()->received_info.largest_received);
+ EXPECT_EQ(2u, last_frame()->received_info.missing_packets.size());
+ EXPECT_TRUE(IsMissing(4));
+ EXPECT_TRUE(IsMissing(2));
+
+ // Send packet 3 again, but do not set the expectation that
+ // the visitor OnPacket() will be called.
+ ProcessDataPacket(3, 0);
+ connection_.SendAck();
+ EXPECT_EQ(5u, last_frame()->received_info.largest_received);
+ EXPECT_EQ(2u, last_frame()->received_info.missing_packets.size());
+ EXPECT_TRUE(IsMissing(4));
+ EXPECT_TRUE(IsMissing(2));
+}
+
+TEST_F(QuicConnectionTest, PacketsOutOfOrderWithAdditionsAndNonResend) {
+ ProcessPacket(3);
+ EXPECT_EQ(3u, last_frame()->received_info.largest_received);
+ EXPECT_EQ(2u, last_frame()->received_info.missing_packets.size());
+ EXPECT_TRUE(IsMissing(2));
+ EXPECT_TRUE(IsMissing(1));
+
+ ProcessPacket(2);
+ EXPECT_EQ(3u, last_frame()->received_info.largest_received);
+ EXPECT_EQ(1u, last_frame()->received_info.missing_packets.size());
+ EXPECT_TRUE(IsMissing(1));
+
+ ProcessPacket(6);
+ EXPECT_EQ(6u, last_frame()->received_info.largest_received);
+ EXPECT_EQ(3u, last_frame()->received_info.missing_packets.size());
+ EXPECT_TRUE(IsMissing(1));
+ EXPECT_TRUE(IsMissing(4));
+ EXPECT_TRUE(IsMissing(5));
+
+ // Now send non-resending information, that we're not going to resend 4.
+ // The far end should stop waiting for it.
+ // In sending the ack, we also have sent packet 1, so we'll stop waiting for
+ // that as well.
+ QuicAckFrame frame(0, QuicTime(), 1);
+ frame.sent_info.non_retransmiting.insert(4);
+ SendAckPacket(&frame);
+ // Force an ack to be sent.
+ connection_.SendAck();
+ EXPECT_EQ(1u, last_frame()->received_info.missing_packets.size());
+ EXPECT_TRUE(IsMissing(5));
+}
+
TEST_F(QuicConnectionTest, PacketsOutOfOrderWithAdditionsAndLeastAwaiting) {
ProcessPacket(3);
EXPECT_EQ(3u, last_frame()->received_info.largest_received);
- EXPECT_EQ(1u, last_frame()->received_info.received_packet_times.size());
+ EXPECT_EQ(2u, last_frame()->received_info.missing_packets.size());
EXPECT_TRUE(IsMissing(2));
EXPECT_TRUE(IsMissing(1));
ProcessPacket(2);
EXPECT_EQ(3u, last_frame()->received_info.largest_received);
- EXPECT_EQ(2u, last_frame()->received_info.received_packet_times.size());
+ EXPECT_EQ(1u, last_frame()->received_info.missing_packets.size());
EXPECT_TRUE(IsMissing(1));
ProcessPacket(5);
EXPECT_EQ(5u, last_frame()->received_info.largest_received);
- EXPECT_EQ(3u, last_frame()->received_info.received_packet_times.size());
+ EXPECT_EQ(2u, last_frame()->received_info.missing_packets.size());
EXPECT_TRUE(IsMissing(1));
EXPECT_TRUE(IsMissing(4));
@@ -418,53 +472,50 @@
// awaiting' is 4. The connection should then realize 1 will not be
// retransmitted, and will remove it from the missing list.
QuicAckFrame frame(0, QuicTime(), 4);
- ProcessAckPacket(&frame);
+ SendAckPacket(&frame);
// Force an ack to be sent.
- SendAckPacketToPeer();
- EXPECT_EQ(2u, last_frame()->received_info.received_packet_times.size());
+ connection_.SendAck();
+ EXPECT_EQ(1u, last_frame()->received_info.missing_packets.size());
EXPECT_TRUE(IsMissing(4));
}
TEST_F(QuicConnectionTest, RejectPacketTooFarOut) {
// Call ProcessDataPacket rather than ProcessPacket, as we should not get a
// packet call to the visitor.
- ProcessDataPacket(6000, 0);
+ ProcessDataPacket(6000, 0);;
- SendAckPacketToPeer(); // Packet 2
+ connection_.SendAck(); // Packet 2
EXPECT_EQ(0u, last_frame()->received_info.largest_received);
}
TEST_F(QuicConnectionTest, LeastUnackedLower) {
- SendStreamDataToPeer(1, "foo", 0, false, NULL);
- SendStreamDataToPeer(1, "bar", 3, false, NULL);
- SendStreamDataToPeer(1, "eep", 6, false, NULL);
+ connection_.SendStreamData(1, "foo", 0, false, NULL);
+ connection_.SendStreamData(1, "bar", 3, false, NULL);
+ connection_.SendStreamData(1, "eep", 6, false, NULL);
// Start out saying the least unacked is 2
creator_.set_sequence_number(5);
QuicAckFrame frame(0, QuicTime(), 2);
- ProcessAckPacket(&frame);
+ SendAckPacket(&frame);
// Change it to 1, but lower the sequence number to fake out-of-order packets.
// This should be fine.
creator_.set_sequence_number(1);
QuicAckFrame frame2(0, QuicTime(), 1);
- // The scheduler will not process out of order acks.
- ProcessAckPacket(&frame2, false);
+ SendAckPacket(&frame2);
// Now claim it's one, but set the ordering so it was sent "after" the first
// one. This should cause a connection error.
EXPECT_CALL(visitor_, ConnectionClose(QUIC_INVALID_ACK_DATA, false));
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
creator_.set_sequence_number(7);
- ProcessAckPacket(&frame2, false);
+ SendAckPacket(&frame2);
}
TEST_F(QuicConnectionTest, AckUnsentData) {
// Ack a packet which has not been sent.
EXPECT_CALL(visitor_, ConnectionClose(QUIC_INVALID_ACK_DATA, false));
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
QuicAckFrame frame(1, QuicTime(), 0);
- ProcessAckPacket(&frame, false);
+ SendAckPacket(&frame);
}
TEST_F(QuicConnectionTest, AckAll) {
@@ -472,45 +523,61 @@
creator_.set_sequence_number(1);
QuicAckFrame frame1(1, QuicTime(), 1);
- ProcessAckPacket(&frame1);
+ SendAckPacket(&frame1);
// Send an ack with least_unacked == 0, which indicates that all packets
// we have sent have been acked.
QuicAckFrame frame2(1, QuicTime(), 0);
- ProcessAckPacket(&frame2);
+ SendAckPacket(&frame2);
}
// This test is meant to validate that we can't overwhelm the far end with a ton
-// of acks.
+// of missing packets.
// We will likely fix the protocol to allow more than 190 in flight, and the
// test will need to be adjusted accordingly.
-TEST_F(QuicConnectionTest, TooManyAcked) {
- SendStreamDataToPeer(1, "foo", 0, false, NULL);
+TEST_F(QuicConnectionTest, TooManyMissing) {
+ connection_.SendStreamData(1, "foo", 0, false, NULL);
EXPECT_CALL(visitor_, ConnectionClose(QUIC_PACKET_TOO_LARGE, false));
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
- QuicAckFrame frame(0, QuicTime(), 0);
- for (int i = 1; i < 5001; ++i) {
- frame.received_info.RecordAck(i, QuicTime::FromMilliseconds(i));
+ QuicAckFrame frame(1, QuicTime(), 0);
+ for (int i = 0; i < 5001; ++i) {
+ frame.received_info.missing_packets.insert(i);
}
- ProcessAckPacket(&frame, false);
+ SendAckPacket(&frame);
}
+// See comment for TooManyMissing above.
+TEST_F(QuicConnectionTest, TooManyNonRetransmitting) {
+ connection_.SendStreamData(1, "foo", 0, false, NULL);
+
+ EXPECT_CALL(visitor_, ConnectionClose(QUIC_PACKET_TOO_LARGE, false));
+ QuicAckFrame frame(1, QuicTime(), 0);
+ for (int i = 0; i < 5001; ++i) {
+ frame.sent_info.non_retransmiting.insert(i);
+ }
+ SendAckPacket(&frame);
+}
+
TEST_F(QuicConnectionTest, BasicSending) {
QuicPacketSequenceNumber last_packet;
- SendStreamDataToPeer(1, "foo", 0, false, &last_packet); // Packet 1
+ connection_.SendStreamData(1, "foo", 0, false, &last_packet); // Packet 1
EXPECT_EQ(1u, last_packet);
- SendAckPacketToPeer(); // Packet 2
+ connection_.SendAck(); // Packet 2
EXPECT_EQ(1u, last_frame()->sent_info.least_unacked);
- SendAckPacketToPeer(); // Packet 3
+ connection_.SendAck(); // Packet 3
EXPECT_EQ(1u, last_frame()->sent_info.least_unacked);
+ EXPECT_EQ(1u, NonRetransmittingSize());
+ EXPECT_TRUE(NonRetransmitting(2));
- SendStreamDataToPeer(1u, "bar", 3, false, &last_packet); // Packet 4
+ connection_.SendStreamData(1, "bar", 3, false, &last_packet); // Packet 4
EXPECT_EQ(4u, last_packet);
- SendAckPacketToPeer(); // Packet 5
+ connection_.SendAck(); // Packet 5
EXPECT_EQ(1u, last_frame()->sent_info.least_unacked);
+ EXPECT_EQ(2u, NonRetransmittingSize());
+ EXPECT_TRUE(NonRetransmitting(2));
+ EXPECT_TRUE(NonRetransmitting(3));
QuicConnectionVisitorInterface::AckedPackets expected_acks;
expected_acks.insert(1);
@@ -518,12 +585,14 @@
// Client acks up to packet 3
EXPECT_CALL(visitor_, OnAck(ContainerEq(expected_acks)));
QuicAckFrame frame(3, QuicTime(), 0);
- ProcessAckPacket(&frame);
- SendAckPacketToPeer(); // Packet 6
+ SendAckPacket(&frame);
+ connection_.SendAck(); // Packet 6
// As soon as we've acked one, we skip ack packets 2 and 3 and note lack of
// ack for 4.
EXPECT_EQ(4u, last_frame()->sent_info.least_unacked);
+ EXPECT_EQ(1u, NonRetransmittingSize());
+ EXPECT_TRUE(NonRetransmitting(5));
expected_acks.clear();
expected_acks.insert(4);
@@ -531,41 +600,43 @@
// Client acks up to packet 4, the last packet
EXPECT_CALL(visitor_, OnAck(ContainerEq(expected_acks)));
QuicAckFrame frame2(6, QuicTime(), 0);
- ProcessAckPacket(&frame2);
- SendAckPacketToPeer(); // Packet 7
+ SendAckPacket(&frame2);
+ connection_.SendAck(); // Packet 7
// The least packet awaiting ack should now be the special value of 0
EXPECT_EQ(0u, last_frame()->sent_info.least_unacked);
+ EXPECT_EQ(0u, NonRetransmittingSize());
// If we force an ack, we shouldn't change our retransmit state.
- SendAckPacketToPeer(); // Packet 8
+ connection_.SendAck(); // Packet 8
EXPECT_EQ(0u, last_frame()->sent_info.least_unacked);
+ EXPECT_EQ(0u, NonRetransmittingSize());
// But if we send more data it should.
- SendStreamDataToPeer(1, "eep", 6, false, &last_packet); // Packet 9
+ connection_.SendStreamData(1, "eep", 6, false, &last_packet); // Packet 9
EXPECT_EQ(9u, last_packet);
- SendAckPacketToPeer(); // Packet10
+ connection_.SendAck(); // Packet10
EXPECT_EQ(9u, last_frame()->sent_info.least_unacked);
}
// Test sending multiple acks from the connection to the session.
TEST_F(QuicConnectionTest, MultipleAcks) {
QuicPacketSequenceNumber last_packet;
- SendStreamDataToPeer(1u, "foo", 0, false, &last_packet); // Packet 1
+ connection_.SendStreamData(1, "foo", 0, false, &last_packet); // Packet 1
EXPECT_EQ(1u, last_packet);
- SendStreamDataToPeer(3u, "foo", 0, false, &last_packet); // Packet 2
+ connection_.SendStreamData(3, "foo", 0, false, &last_packet); // Packet 2
EXPECT_EQ(2u, last_packet);
- SendAckPacketToPeer(); // Packet 3
- SendStreamDataToPeer(5u, "foo", 0, false, &last_packet); // Packet 4
+ connection_.SendAck(); // Packet 3
+ connection_.SendStreamData(5, "foo", 0, false, &last_packet); // Packet 4
EXPECT_EQ(4u, last_packet);
- SendStreamDataToPeer(1u, "foo", 3, false, &last_packet); // Packet 5
+ connection_.SendStreamData(1, "foo", 3, false, &last_packet); // Packet 5
EXPECT_EQ(5u, last_packet);
- SendStreamDataToPeer(3u, "foo", 3, false, &last_packet); // Packet 6
+ connection_.SendStreamData(3, "foo", 3, false, &last_packet); // Packet 6
EXPECT_EQ(6u, last_packet);
- // Client will ack packets 1, [!2], 3, 4, 5
+ // Client will acks packets 1, [!2], 3, 4, 5
QuicAckFrame frame1(5, QuicTime(), 0);
- frame1.received_info.received_packet_times.erase(2);
+ frame1.received_info.missing_packets.insert(2);
// The connection should pass up acks for 1, 4, 5. 2 is not acked, and 3 was
// an ackframe so should not be passed up.
@@ -575,7 +646,7 @@
expected_acks.insert(5);
EXPECT_CALL(visitor_, OnAck(ContainerEq(expected_acks)));
- ProcessAckPacket(&frame1);
+ SendAckPacket(&frame1);
// Now the client implicitly acks 2, and explicitly acks 6
QuicAckFrame frame2(6, QuicTime(), 0);
@@ -585,7 +656,7 @@
expected_acks.insert(6);
EXPECT_CALL(visitor_, OnAck(ContainerEq(expected_acks)));
- ProcessAckPacket(&frame2);
+ SendAckPacket(&frame2);
}
TEST_F(QuicConnectionTest, ReviveMissingPacketAfterFecPacket) {
@@ -629,14 +700,13 @@
QuicTime default_resend_time = clock_.Now().Add(kDefaultResendTime);
- SendStreamDataToPeer(1, "foo", 0, false, NULL);
+ connection_.SendStreamData(1, "foo", 0, false, NULL);
EXPECT_EQ(1u, last_header()->packet_sequence_number);
EXPECT_EQ(1u, helper_->resend_alarms().size());
EXPECT_EQ(default_resend_time,
helper_->resend_alarms().find(1)->second);
// Simulate the resend alarm firing
clock_.AdvanceTime(kDefaultResendTime);
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
connection_.MaybeResendPacket(1);
EXPECT_EQ(2u, last_header()->packet_sequence_number);
}
@@ -645,7 +715,7 @@
TEST_F(QuicConnectionTest, DISABLED_TestQueued) {
EXPECT_EQ(0u, connection_.NumQueuedPackets());
helper_->set_blocked(true);
- SendStreamDataToPeer(1, "foo", 0, false, NULL);
+ connection_.SendStreamData(1, "foo", 0, false, NULL);
EXPECT_EQ(1u, connection_.NumQueuedPackets());
// Attempt to send all packets, but since we're actually still
@@ -667,15 +737,14 @@
ASSERT_EQ(1u, connection_.NumFecGroups());
// Now send non-fec protected ack packet and close the group
- QuicAckFrame frame(0, QuicTime(), 5);
- ProcessAckPacket(&frame);
+ SendAckPacket(5);
ASSERT_EQ(0u, connection_.NumFecGroups());
}
TEST_F(QuicConnectionTest, NoCongestionInfo) {
TestCollector* collector(new TestCollector(NULL));
connection_.SetCollector(collector);
- SendAckPacketToPeer();
+ connection_.SendAck();
EXPECT_EQ(kNone, last_frame()->congestion_info.type);
}
@@ -685,7 +754,7 @@
info.fix_rate.bitrate_in_bytes_per_second = 123;
TestCollector* collector(new TestCollector(&info));
connection_.SetCollector(collector);
- SendAckPacketToPeer();
+ connection_.SendAck();
EXPECT_EQ(kFixRate, last_frame()->congestion_info.type);
EXPECT_EQ(info.fix_rate.bitrate_in_bytes_per_second,
last_frame()->congestion_info.fix_rate.bitrate_in_bytes_per_second);
@@ -694,7 +763,7 @@
TEST_F(QuicConnectionTest, UpdateCongestionInfo) {
TestCollector* collector(new TestCollector(NULL));
connection_.SetCollector(collector);
- SendAckPacketToPeer();
+ connection_.SendAck();
EXPECT_CALL(*collector, RecordIncomingPacket(_, _, _, _));
ProcessPacket(1);
}
@@ -702,7 +771,7 @@
TEST_F(QuicConnectionTest, DontUpdateCongestionInfoForRevived) {
TestCollector* collector(new TestCollector(NULL));
connection_.SetCollector(collector);
- SendAckPacketToPeer();
+ connection_.SendAck();
// Process an FEC packet, and revive the missing data packet
// but only contact the collector once.
EXPECT_CALL(*collector, RecordIncomingPacket(_, _, _, _));
@@ -712,7 +781,6 @@
TEST_F(QuicConnectionTest, InitialTimeout) {
EXPECT_TRUE(connection_.connected());
EXPECT_CALL(visitor_, ConnectionClose(QUIC_CONNECTION_TIMED_OUT, false));
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
QuicTime default_timeout = clock_.Now().Add(
QuicTime::Delta::FromMicroseconds(kDefaultTimeoutUs));
@@ -734,7 +802,7 @@
clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(5));
// Send an ack so we don't set the resend alarm.
- SendAckPacketToPeer();
+ connection_.SendAck();
EXPECT_EQ(default_timeout, helper_->timeout_alarm());
// The original alarm will fire. We should not time out because we had a
@@ -749,7 +817,6 @@
// This time, we should time out.
EXPECT_CALL(visitor_, ConnectionClose(QUIC_CONNECTION_TIMED_OUT, false));
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
clock_.AdvanceTime(QuicTime::Delta::FromMilliseconds(5));
EXPECT_EQ(default_timeout.Add(QuicTime::Delta::FromMilliseconds(5)),
clock_.Now());
@@ -763,7 +830,6 @@
scoped_ptr<QuicPacket> packet(ConstructDataPacket(1, 0));
EXPECT_CALL(*scheduler_, TimeUntilSend(true)).WillOnce(testing::Return(
QuicTime::Delta()));
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
connection_.SendPacket(1, packet.get(), true, false, false);
EXPECT_EQ(0u, connection_.NumQueuedPackets());
}
@@ -782,7 +848,6 @@
// Test that if we force send a packet, it is not queued.
scoped_ptr<QuicPacket> packet(ConstructDataPacket(1, 0));
EXPECT_CALL(*scheduler_, TimeUntilSend(true)).Times(0);
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
connection_.SendPacket(1, packet.get(), true, true, false);
EXPECT_EQ(0u, connection_.NumQueuedPackets());
}
@@ -811,7 +876,6 @@
EXPECT_CALL(*scheduler_, TimeUntilSend(true)).WillOnce(testing::Return(
QuicTime::Delta()));
clock_.AdvanceTime(QuicTime::Delta::FromMicroseconds(1));
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
connection_.OnCanWrite();
EXPECT_EQ(0u, connection_.NumQueuedPackets());
}
@@ -858,10 +922,11 @@
// Now send non-retransmitting information, that we're not going to resend 3.
// The far end should stop waiting for it.
QuicAckFrame frame(0, QuicTime(), 1);
+ frame.sent_info.non_retransmiting.insert(3);
+ EXPECT_CALL(*scheduler_, OnIncomingAckFrame(testing::_));
EXPECT_CALL(*scheduler_, TimeUntilSend(true)).WillRepeatedly(testing::Return(
QuicTime::Delta()));
- EXPECT_CALL(*scheduler_, SentPacket(_, _, _));
- ProcessAckPacket(&frame);
+ SendAckPacket(&frame);
EXPECT_EQ(0u, connection_.NumQueuedPackets());
// Ensure alarm is not set
@@ -878,9 +943,11 @@
// Now send non-resending information, that we're not going to resend 3.
// The far end should stop waiting for it.
QuicAckFrame frame(0, QuicTime(), 1);
+ frame.sent_info.non_retransmiting.insert(3);
+ EXPECT_CALL(*scheduler_, OnIncomingAckFrame(testing::_));
EXPECT_CALL(*scheduler_, TimeUntilSend(true)).WillOnce(testing::Return(
QuicTime::Delta::FromMicroseconds(1)));
- ProcessAckPacket(&frame);
+ SendAckPacket(&frame);
EXPECT_EQ(1u, connection_.NumQueuedPackets());
}
« no previous file with comments | « net/quic/quic_connection_helper_test.cc ('k') | net/quic/quic_framer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698