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.h" | 5 #include "net/quic/quic_connection.h" |
6 | 6 |
7 #include <ostream> | 7 #include <ostream> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 955 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
966 | 966 |
967 const QuicStopWaitingFrame InitStopWaitingFrame( | 967 const QuicStopWaitingFrame InitStopWaitingFrame( |
968 QuicPacketNumber least_unacked) { | 968 QuicPacketNumber least_unacked) { |
969 QuicStopWaitingFrame frame; | 969 QuicStopWaitingFrame frame; |
970 frame.least_unacked = least_unacked; | 970 frame.least_unacked = least_unacked; |
971 return frame; | 971 return frame; |
972 } | 972 } |
973 | 973 |
974 // Explicitly nack a packet. | 974 // Explicitly nack a packet. |
975 void NackPacket(QuicPacketNumber missing, QuicAckFrame* frame) { | 975 void NackPacket(QuicPacketNumber missing, QuicAckFrame* frame) { |
976 frame->missing_packets.insert(missing); | 976 frame->missing_packets.Add(missing); |
977 frame->entropy_hash ^= | 977 frame->entropy_hash ^= |
978 QuicConnectionPeer::PacketEntropy(&connection_, missing); | 978 QuicConnectionPeer::PacketEntropy(&connection_, missing); |
979 } | 979 } |
980 | 980 |
981 // Undo nacking a packet within the frame. | 981 // Undo nacking a packet within the frame. |
982 void AckPacket(QuicPacketNumber arrived, QuicAckFrame* frame) { | 982 void AckPacket(QuicPacketNumber arrived, QuicAckFrame* frame) { |
983 EXPECT_THAT(frame->missing_packets, Contains(arrived)); | 983 EXPECT_TRUE(frame->missing_packets.Contains(arrived)); |
984 frame->missing_packets.erase(arrived); | 984 frame->missing_packets.Remove(arrived); |
985 frame->entropy_hash ^= | 985 frame->entropy_hash ^= |
986 QuicConnectionPeer::PacketEntropy(&connection_, arrived); | 986 QuicConnectionPeer::PacketEntropy(&connection_, arrived); |
987 } | 987 } |
988 | 988 |
989 void TriggerConnectionClose() { | 989 void TriggerConnectionClose() { |
990 // Send an erroneous packet to close the connection. | 990 // Send an erroneous packet to close the connection. |
991 EXPECT_CALL(visitor_, | 991 EXPECT_CALL(visitor_, |
992 OnConnectionClosed(QUIC_INVALID_PACKET_HEADER, false)); | 992 OnConnectionClosed(QUIC_INVALID_PACKET_HEADER, false)); |
993 // Call ProcessDataPacket rather than ProcessPacket, as we should not get a | 993 // Call ProcessDataPacket rather than ProcessPacket, as we should not get a |
994 // packet call to the visitor. | 994 // packet call to the visitor. |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1145 factory_, Perspective::IS_CLIENT, version()); | 1145 factory_, Perspective::IS_CLIENT, version()); |
1146 EXPECT_EQ(Perspective::IS_CLIENT, connection.perspective()); | 1146 EXPECT_EQ(Perspective::IS_CLIENT, connection.perspective()); |
1147 EXPECT_EQ(lower_max_packet_size, connection.max_packet_length()); | 1147 EXPECT_EQ(lower_max_packet_size, connection.max_packet_length()); |
1148 } | 1148 } |
1149 | 1149 |
1150 TEST_P(QuicConnectionTest, PacketsInOrder) { | 1150 TEST_P(QuicConnectionTest, PacketsInOrder) { |
1151 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); | 1151 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
1152 | 1152 |
1153 ProcessPacket(1); | 1153 ProcessPacket(1); |
1154 EXPECT_EQ(1u, outgoing_ack()->largest_observed); | 1154 EXPECT_EQ(1u, outgoing_ack()->largest_observed); |
1155 EXPECT_EQ(0u, outgoing_ack()->missing_packets.size()); | 1155 EXPECT_TRUE(outgoing_ack()->missing_packets.Empty()); |
1156 | 1156 |
1157 ProcessPacket(2); | 1157 ProcessPacket(2); |
1158 EXPECT_EQ(2u, outgoing_ack()->largest_observed); | 1158 EXPECT_EQ(2u, outgoing_ack()->largest_observed); |
1159 EXPECT_EQ(0u, outgoing_ack()->missing_packets.size()); | 1159 EXPECT_TRUE(outgoing_ack()->missing_packets.Empty()); |
1160 | 1160 |
1161 ProcessPacket(3); | 1161 ProcessPacket(3); |
1162 EXPECT_EQ(3u, outgoing_ack()->largest_observed); | 1162 EXPECT_EQ(3u, outgoing_ack()->largest_observed); |
1163 EXPECT_EQ(0u, outgoing_ack()->missing_packets.size()); | 1163 EXPECT_TRUE(outgoing_ack()->missing_packets.Empty()); |
1164 } | 1164 } |
1165 | 1165 |
1166 TEST_P(QuicConnectionTest, PacketsOutOfOrder) { | 1166 TEST_P(QuicConnectionTest, PacketsOutOfOrder) { |
1167 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); | 1167 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
1168 | 1168 |
1169 ProcessPacket(3); | 1169 ProcessPacket(3); |
1170 EXPECT_EQ(3u, outgoing_ack()->largest_observed); | 1170 EXPECT_EQ(3u, outgoing_ack()->largest_observed); |
1171 EXPECT_TRUE(IsMissing(2)); | 1171 EXPECT_TRUE(IsMissing(2)); |
1172 EXPECT_TRUE(IsMissing(1)); | 1172 EXPECT_TRUE(IsMissing(1)); |
1173 | 1173 |
(...skipping 2850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4024 QuicEncryptedPacket encrypted(nullptr, 0); | 4024 QuicEncryptedPacket encrypted(nullptr, 0); |
4025 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, encrypted); | 4025 connection_.ProcessUdpPacket(kSelfAddress, kPeerAddress, encrypted); |
4026 } | 4026 } |
4027 | 4027 |
4028 TEST_P(QuicConnectionTest, MissingPacketsBeforeLeastUnacked) { | 4028 TEST_P(QuicConnectionTest, MissingPacketsBeforeLeastUnacked) { |
4029 // Set the packet number of the ack packet to be least unacked (4). | 4029 // Set the packet number of the ack packet to be least unacked (4). |
4030 QuicPacketCreatorPeer::SetPacketNumber(&peer_creator_, 3); | 4030 QuicPacketCreatorPeer::SetPacketNumber(&peer_creator_, 3); |
4031 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); | 4031 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
4032 QuicStopWaitingFrame frame = InitStopWaitingFrame(4); | 4032 QuicStopWaitingFrame frame = InitStopWaitingFrame(4); |
4033 ProcessStopWaitingPacket(&frame); | 4033 ProcessStopWaitingPacket(&frame); |
4034 EXPECT_TRUE(outgoing_ack()->missing_packets.empty()); | 4034 EXPECT_TRUE(outgoing_ack()->missing_packets.Empty()); |
4035 } | 4035 } |
4036 | 4036 |
4037 TEST_P(QuicConnectionTest, ReceivedEntropyHashCalculation) { | 4037 TEST_P(QuicConnectionTest, ReceivedEntropyHashCalculation) { |
4038 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AtLeast(1)); | 4038 EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(AtLeast(1)); |
4039 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); | 4039 EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); |
4040 ProcessDataPacket(1, 1, kEntropyFlag); | 4040 ProcessDataPacket(1, 1, kEntropyFlag); |
4041 ProcessDataPacket(4, 1, kEntropyFlag); | 4041 ProcessDataPacket(4, 1, kEntropyFlag); |
4042 ProcessDataPacket(3, 1, !kEntropyFlag); | 4042 ProcessDataPacket(3, 1, !kEntropyFlag); |
4043 ProcessDataPacket(7, 1, kEntropyFlag); | 4043 ProcessDataPacket(7, 1, kEntropyFlag); |
4044 EXPECT_EQ(146u, outgoing_ack()->entropy_hash); | 4044 EXPECT_EQ(146u, outgoing_ack()->entropy_hash); |
(...skipping 773 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4818 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(1); | 4818 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(1); |
4819 connection_.SendGoAway(QUIC_PEER_GOING_AWAY, kHeadersStreamId, "Going Away."); | 4819 connection_.SendGoAway(QUIC_PEER_GOING_AWAY, kHeadersStreamId, "Going Away."); |
4820 EXPECT_TRUE(connection_.goaway_sent()); | 4820 EXPECT_TRUE(connection_.goaway_sent()); |
4821 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(0); | 4821 EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(0); |
4822 connection_.SendGoAway(QUIC_PEER_GOING_AWAY, kHeadersStreamId, "Going Away."); | 4822 connection_.SendGoAway(QUIC_PEER_GOING_AWAY, kHeadersStreamId, "Going Away."); |
4823 } | 4823 } |
4824 | 4824 |
4825 } // namespace | 4825 } // namespace |
4826 } // namespace test | 4826 } // namespace test |
4827 } // namespace net | 4827 } // namespace net |
OLD | NEW |