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

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

Issue 300683008: Land Recent QUIC Changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_connection.cc ('k') | net/quic/quic_data_stream_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.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 1415 matching lines...) Expand 10 before | Expand all | Expand 10 after
1426 // But if we send more data it should. 1426 // But if we send more data it should.
1427 SendStreamDataToPeer(1, "eep", 6, !kFin, &last_packet); // Packet 8 1427 SendStreamDataToPeer(1, "eep", 6, !kFin, &last_packet); // Packet 8
1428 EXPECT_EQ(8u, last_packet); 1428 EXPECT_EQ(8u, last_packet);
1429 SendAckPacketToPeer(); // Packet 9 1429 SendAckPacketToPeer(); // Packet 9
1430 EXPECT_EQ(7u, least_unacked()); 1430 EXPECT_EQ(7u, least_unacked());
1431 } 1431 }
1432 1432
1433 TEST_P(QuicConnectionTest, FECSending) { 1433 TEST_P(QuicConnectionTest, FECSending) {
1434 // All packets carry version info till version is negotiated. 1434 // All packets carry version info till version is negotiated.
1435 size_t payload_length; 1435 size_t payload_length;
1436 connection_.options()->max_packet_length = 1436 // GetPacketLengthForOneStream() assumes a stream offset of 0 in determining
1437 GetPacketLengthForOneStream( 1437 // packet length. The size of the offset field in a stream frame is 0 for
1438 // offset 0, and 2 for non-zero offsets up through 16K. Increase
1439 // max_packet_length by 2 so that subsequent packets containing subsequent
1440 // stream frames with non-zero offets will fit within the packet length.
1441 connection_.options()->max_packet_length = 2 + GetPacketLengthForOneStream(
1438 connection_.version(), kIncludeVersion, PACKET_1BYTE_SEQUENCE_NUMBER, 1442 connection_.version(), kIncludeVersion, PACKET_1BYTE_SEQUENCE_NUMBER,
1439 IN_FEC_GROUP, &payload_length); 1443 IN_FEC_GROUP, &payload_length);
1440 // And send FEC every two packets. 1444 // And send FEC every two packets.
1441 EXPECT_TRUE(QuicPacketCreatorPeer::SwitchFecProtectionOn( 1445 EXPECT_TRUE(QuicPacketCreatorPeer::SwitchFecProtectionOn(
1442 QuicConnectionPeer::GetPacketCreator(&connection_), 2)); 1446 QuicConnectionPeer::GetPacketCreator(&connection_), 2));
1443 1447
1444 // Send 4 data packets and 2 FEC packets. 1448 // Send 4 data packets and 2 FEC packets.
1445 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(6); 1449 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(6);
1446 // The first stream frame will consume 2 fewer bytes than the other three. 1450 // The first stream frame will have 2 fewer overhead bytes than the other 3.
1447 const string payload(payload_length * 4 - 6, 'a'); 1451 const string payload(payload_length * 4 + 2, 'a');
1448 connection_.SendStreamDataWithString(1, payload, 0, !kFin, NULL); 1452 connection_.SendStreamDataWithString(1, payload, 0, !kFin, NULL);
1449 // Expect the FEC group to be closed after SendStreamDataWithString. 1453 // Expect the FEC group to be closed after SendStreamDataWithString.
1450 EXPECT_FALSE(creator_.ShouldSendFec(true)); 1454 EXPECT_FALSE(creator_.ShouldSendFec(true));
1451 } 1455 }
1452 1456
1453 TEST_P(QuicConnectionTest, FECQueueing) { 1457 TEST_P(QuicConnectionTest, FECQueueing) {
1454 // All packets carry version info till version is negotiated. 1458 // All packets carry version info till version is negotiated.
1455 size_t payload_length; 1459 size_t payload_length;
1456 connection_.options()->max_packet_length = 1460 connection_.options()->max_packet_length =
1457 GetPacketLengthForOneStream( 1461 GetPacketLengthForOneStream(
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
1951 clock_.AdvanceTime(DefaultRetransmissionTime()); 1955 clock_.AdvanceTime(DefaultRetransmissionTime());
1952 connection_.GetRetransmissionAlarm()->Fire(); 1956 connection_.GetRetransmissionAlarm()->Fire();
1953 1957
1954 // Ack the sent packet before the callback returns, which happens in 1958 // Ack the sent packet before the callback returns, which happens in
1955 // rare circumstances with write blocked sockets. 1959 // rare circumstances with write blocked sockets.
1956 QuicAckFrame ack = InitAckFrame(1, 0); 1960 QuicAckFrame ack = InitAckFrame(1, 0);
1957 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _)); 1961 EXPECT_CALL(*send_algorithm_, OnCongestionEvent(true, _, _, _));
1958 ProcessAckPacket(&ack); 1962 ProcessAckPacket(&ack);
1959 1963
1960 connection_.OnPacketSent(WriteResult(WRITE_STATUS_OK, 0)); 1964 connection_.OnPacketSent(WriteResult(WRITE_STATUS_OK, 0));
1961 // The retransmission alarm should not be set because there are 1965 // There is now a pending packet, but with no retransmittable frames.
1962 // no unacked packets. 1966 EXPECT_TRUE(connection_.GetRetransmissionAlarm()->IsSet());
1963 EXPECT_FALSE(connection_.GetRetransmissionAlarm()->IsSet()); 1967 EXPECT_FALSE(connection_.sent_packet_manager().HasRetransmittableFrames(2));
1964 } 1968 }
1965 1969
1966 TEST_P(QuicConnectionTest, AlarmsWhenWriteBlocked) { 1970 TEST_P(QuicConnectionTest, AlarmsWhenWriteBlocked) {
1967 // Block the connection. 1971 // Block the connection.
1968 BlockOnNextWrite(); 1972 BlockOnNextWrite();
1969 connection_.SendStreamDataWithString(3, "foo", 0, !kFin, NULL); 1973 connection_.SendStreamDataWithString(3, "foo", 0, !kFin, NULL);
1970 EXPECT_EQ(1u, writer_->packets_write_attempts()); 1974 EXPECT_EQ(1u, writer_->packets_write_attempts());
1971 EXPECT_TRUE(writer_->IsWriteBlocked()); 1975 EXPECT_TRUE(writer_->IsWriteBlocked());
1972 1976
1973 // Set the send and resumption alarms. Fire the alarms and ensure they don't 1977 // Set the send and resumption alarms. Fire the alarms and ensure they don't
(...skipping 904 matching lines...) Expand 10 before | Expand all | Expand 10 after
2878 const string payload(payload_length, 'a'); 2882 const string payload(payload_length, 'a');
2879 EXPECT_EQ(0u, 2883 EXPECT_EQ(0u,
2880 connection_.SendStreamDataWithString(3, payload, 0, 2884 connection_.SendStreamDataWithString(3, payload, 0,
2881 !kFin, NULL).bytes_consumed); 2885 !kFin, NULL).bytes_consumed);
2882 EXPECT_EQ(0u, connection_.NumQueuedPackets()); 2886 EXPECT_EQ(0u, connection_.NumQueuedPackets());
2883 } 2887 }
2884 2888
2885 TEST_P(QuicConnectionTest, LoopThroughSendingPackets) { 2889 TEST_P(QuicConnectionTest, LoopThroughSendingPackets) {
2886 // All packets carry version info till version is negotiated. 2890 // All packets carry version info till version is negotiated.
2887 size_t payload_length; 2891 size_t payload_length;
2888 connection_.options()->max_packet_length = 2892 // GetPacketLengthForOneStream() assumes a stream offset of 0 in determining
2889 GetPacketLengthForOneStream( 2893 // packet length. The size of the offset field in a stream frame is 0 for
2894 // offset 0, and 2 for non-zero offsets up through 16K. Increase
2895 // max_packet_length by 2 so that subsequent packets containing subsequent
2896 // stream frames with non-zero offets will fit within the packet length.
2897 connection_.options()->max_packet_length = 2 + GetPacketLengthForOneStream(
2890 connection_.version(), kIncludeVersion, PACKET_1BYTE_SEQUENCE_NUMBER, 2898 connection_.version(), kIncludeVersion, PACKET_1BYTE_SEQUENCE_NUMBER,
2891 NOT_IN_FEC_GROUP, &payload_length); 2899 NOT_IN_FEC_GROUP, &payload_length);
2892 2900
2893 // Queue the first packet. 2901 // Queue the first packet.
2894 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(7); 2902 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(7);
2895 // The first stream frame will consume 2 fewer bytes than the other six. 2903 // The first stream frame will have 2 fewer overhead bytes than the other six.
2896 const string payload(payload_length * 7 - 12, 'a'); 2904 const string payload(payload_length * 7 + 2, 'a');
2897 EXPECT_EQ(payload.size(), 2905 EXPECT_EQ(payload.size(),
2898 connection_.SendStreamDataWithString(1, payload, 0, 2906 connection_.SendStreamDataWithString(1, payload, 0,
2899 !kFin, NULL).bytes_consumed); 2907 !kFin, NULL).bytes_consumed);
2900 } 2908 }
2901 2909
2902 TEST_P(QuicConnectionTest, SendDelayedAck) { 2910 TEST_P(QuicConnectionTest, SendDelayedAck) {
2903 QuicTime ack_time = clock_.ApproximateNow().Add(DefaultDelayedAckTime()); 2911 QuicTime ack_time = clock_.ApproximateNow().Add(DefaultDelayedAckTime());
2904 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); 2912 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
2905 EXPECT_FALSE(connection_.GetAckAlarm()->IsSet()); 2913 EXPECT_FALSE(connection_.GetAckAlarm()->IsSet());
2906 const uint8 tag = 0x07; 2914 const uint8 tag = 0x07;
(...skipping 1074 matching lines...) Expand 10 before | Expand all | Expand 10 after
3981 QuicBlockedFrame blocked; 3989 QuicBlockedFrame blocked;
3982 blocked.stream_id = 3; 3990 blocked.stream_id = 3;
3983 EXPECT_CALL(visitor_, OnBlockedFrames(_)); 3991 EXPECT_CALL(visitor_, OnBlockedFrames(_));
3984 ProcessFramePacket(QuicFrame(&blocked)); 3992 ProcessFramePacket(QuicFrame(&blocked));
3985 EXPECT_TRUE(ack_alarm->IsSet()); 3993 EXPECT_TRUE(ack_alarm->IsSet());
3986 } 3994 }
3987 3995
3988 } // namespace 3996 } // namespace
3989 } // namespace test 3997 } // namespace test
3990 } // namespace net 3998 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_connection.cc ('k') | net/quic/quic_data_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698