Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 #include "net/quic/quic_multipath_sent_packet_manager.h" | |
|
Zhongyi Shi
2016/07/25 22:30:34
ditto
| |
| 2 | |
| 3 #include "net/quic/test_tools/quic_multipath_sent_packet_manager_peer.h" | |
| 4 #include "net/quic/test_tools/quic_test_utils.h" | |
| 5 #include "net/test/gtest_util.h" | |
| 6 #include "testing/gmock/include/gmock/gmock.h" | |
| 7 #include "testing/gtest/include/gtest/gtest.h" | |
| 8 | |
| 9 using testing::Return; | |
| 10 using testing::StrictMock; | |
| 11 using testing::_; | |
| 12 | |
| 13 namespace net { | |
| 14 namespace test { | |
| 15 | |
| 16 namespace { | |
| 17 | |
| 18 const QuicPathId kTestPathId1 = 1; | |
| 19 const QuicPathId kTestPathId2 = 2; | |
| 20 const QuicPathId kTestPathId3 = 3; | |
| 21 | |
| 22 class QuicMultipathSentPacketManagerTest : public testing::Test { | |
| 23 public: | |
| 24 QuicMultipathSentPacketManagerTest() | |
| 25 : manager_0_(new StrictMock<MockSentPacketManager>), | |
| 26 manager_1_(new StrictMock<MockSentPacketManager>), | |
| 27 manager_2_(new StrictMock<MockSentPacketManager>), | |
| 28 multipath_manager_(manager_0_, &delegate_) { | |
| 29 // Paths 0 and 1 are active, and path 2 is closing. | |
| 30 QuicMultipathSentPacketManagerPeer::AddPathWithActiveState( | |
| 31 &multipath_manager_, manager_1_); | |
| 32 QuicMultipathSentPacketManagerPeer::AddPathWithCloseState( | |
| 33 &multipath_manager_, manager_2_); | |
| 34 } | |
| 35 | |
| 36 ~QuicMultipathSentPacketManagerTest() override {} | |
| 37 | |
| 38 MockSentPacketManager* manager_0_; | |
| 39 MockSentPacketManager* manager_1_; | |
| 40 MockSentPacketManager* manager_2_; | |
| 41 QuicMultipathSentPacketManager multipath_manager_; | |
| 42 MockClock clock_; | |
| 43 StrictMock<MockConnectionCloseDelegate> delegate_; | |
| 44 }; | |
| 45 | |
| 46 TEST_F(QuicMultipathSentPacketManagerTest, SetFromConfig) { | |
| 47 EXPECT_CALL(*manager_0_, SetFromConfig(_)).Times(1); | |
| 48 EXPECT_CALL(*manager_1_, SetFromConfig(_)).Times(1); | |
| 49 EXPECT_CALL(*manager_2_, SetFromConfig(_)).Times(1); | |
| 50 QuicConfig config; | |
| 51 multipath_manager_.SetFromConfig(config); | |
| 52 } | |
| 53 | |
| 54 TEST_F(QuicMultipathSentPacketManagerTest, ResumeConnectionState) { | |
| 55 EXPECT_CALL(*manager_0_, ResumeConnectionState(_, true)); | |
| 56 multipath_manager_.ResumeConnectionState(CachedNetworkParameters(), true); | |
| 57 } | |
| 58 | |
| 59 TEST_F(QuicMultipathSentPacketManagerTest, SetNumOpenStreams) { | |
| 60 size_t kNumStreams = 10; | |
| 61 EXPECT_CALL(*manager_0_, SetNumOpenStreams(kNumStreams)); | |
| 62 EXPECT_CALL(*manager_1_, SetNumOpenStreams(kNumStreams)); | |
| 63 EXPECT_CALL(*manager_2_, SetNumOpenStreams(kNumStreams)); | |
| 64 multipath_manager_.SetNumOpenStreams(kNumStreams); | |
| 65 } | |
| 66 | |
| 67 TEST_F(QuicMultipathSentPacketManagerTest, SetMaxPacingRate) { | |
| 68 QuicBandwidth kBandwidth = QuicBandwidth::FromBitsPerSecond(1000); | |
| 69 EXPECT_CALL(*manager_0_, SetMaxPacingRate(kBandwidth)); | |
| 70 multipath_manager_.SetMaxPacingRate(kBandwidth); | |
| 71 } | |
| 72 | |
| 73 TEST_F(QuicMultipathSentPacketManagerTest, SetHandshakeConfirmed) { | |
| 74 EXPECT_CALL(*manager_0_, SetHandshakeConfirmed()); | |
| 75 multipath_manager_.SetHandshakeConfirmed(); | |
| 76 } | |
| 77 | |
| 78 TEST_F(QuicMultipathSentPacketManagerTest, OnIncomingAck) { | |
| 79 QuicAckFrame frame0; | |
| 80 QuicAckFrame frame1; | |
| 81 frame1.path_id = kTestPathId1; | |
| 82 QuicAckFrame frame2; | |
| 83 frame2.path_id = kTestPathId2; | |
| 84 QuicAckFrame frame3; | |
| 85 frame3.path_id = kTestPathId3; | |
| 86 EXPECT_CALL(*manager_0_, OnIncomingAck(_, QuicTime::Zero())); | |
| 87 EXPECT_CALL(*manager_1_, OnIncomingAck(_, QuicTime::Zero())); | |
| 88 EXPECT_CALL(*manager_2_, OnIncomingAck(_, QuicTime::Zero())).Times(0); | |
| 89 multipath_manager_.OnIncomingAck(frame0, QuicTime::Zero()); | |
| 90 multipath_manager_.OnIncomingAck(frame1, QuicTime::Zero()); | |
| 91 multipath_manager_.OnIncomingAck(frame2, QuicTime::Zero()); | |
| 92 multipath_manager_.OnIncomingAck(frame3, QuicTime::Zero()); | |
| 93 } | |
| 94 | |
| 95 TEST_F(QuicMultipathSentPacketManagerTest, IsUnacked) { | |
| 96 EXPECT_CALL(*manager_0_, IsUnacked(kDefaultPathId, 1)).WillOnce(Return(true)); | |
| 97 EXPECT_CALL(*manager_1_, IsUnacked(kTestPathId1, 2)).WillOnce(Return(false)); | |
| 98 EXPECT_CALL(*manager_2_, IsUnacked(kTestPathId2, 3)).WillOnce(Return(true)); | |
| 99 EXPECT_TRUE(multipath_manager_.IsUnacked(kDefaultPathId, 1)); | |
| 100 EXPECT_FALSE(multipath_manager_.IsUnacked(kTestPathId1, 2)); | |
| 101 EXPECT_TRUE(multipath_manager_.IsUnacked(kTestPathId2, 3)); | |
| 102 /* | |
| 103 EXPECT_DFATAL(multipath_manager_.IsUnacked(kTestPathId3, 4), ""); | |
| 104 */ | |
| 105 } | |
| 106 | |
| 107 TEST_F(QuicMultipathSentPacketManagerTest, HasRetransmittableFrames) { | |
| 108 EXPECT_CALL(*manager_0_, HasRetransmittableFrames(kDefaultPathId, 1)) | |
| 109 .WillOnce(Return(true)); | |
| 110 EXPECT_CALL(*manager_1_, HasRetransmittableFrames(kTestPathId1, 2)) | |
| 111 .WillOnce(Return(false)); | |
| 112 EXPECT_CALL(*manager_2_, HasRetransmittableFrames(kTestPathId2, 3)) | |
| 113 .WillOnce(Return(true)); | |
| 114 EXPECT_TRUE(multipath_manager_.HasRetransmittableFrames(kDefaultPathId, 1)); | |
| 115 EXPECT_FALSE(multipath_manager_.HasRetransmittableFrames(kTestPathId1, 2)); | |
| 116 EXPECT_TRUE(multipath_manager_.HasRetransmittableFrames(kTestPathId2, 3)); | |
| 117 /* | |
| 118 EXPECT_DFATAL(multipath_manager_.HasRetransmittableFrames(kTestPathId3, 4), | |
| 119 ""); | |
| 120 */ | |
| 121 } | |
| 122 | |
| 123 TEST_F(QuicMultipathSentPacketManagerTest, RetransmitUnackedPackets) { | |
| 124 EXPECT_CALL(*manager_0_, RetransmitUnackedPackets(HANDSHAKE_RETRANSMISSION)); | |
| 125 multipath_manager_.RetransmitUnackedPackets(HANDSHAKE_RETRANSMISSION); | |
| 126 } | |
| 127 | |
| 128 TEST_F(QuicMultipathSentPacketManagerTest, MaybeRetransmitTailLossProbe) { | |
| 129 EXPECT_CALL(*manager_0_, MaybeRetransmitTailLossProbe()) | |
| 130 .WillOnce(Return(false)); | |
| 131 EXPECT_CALL(*manager_1_, MaybeRetransmitTailLossProbe()) | |
| 132 .WillOnce(Return(false)); | |
| 133 EXPECT_FALSE(multipath_manager_.MaybeRetransmitTailLossProbe()); | |
| 134 EXPECT_CALL(*manager_0_, MaybeRetransmitTailLossProbe()) | |
| 135 .WillOnce(Return(false)); | |
| 136 EXPECT_CALL(*manager_1_, MaybeRetransmitTailLossProbe()) | |
| 137 .WillOnce(Return(true)); | |
| 138 EXPECT_TRUE(multipath_manager_.MaybeRetransmitTailLossProbe()); | |
| 139 } | |
| 140 | |
| 141 TEST_F(QuicMultipathSentPacketManagerTest, NeuterUnencryptedPackets) { | |
| 142 EXPECT_CALL(*manager_0_, NeuterUnencryptedPackets()); | |
| 143 multipath_manager_.NeuterUnencryptedPackets(); | |
| 144 } | |
| 145 | |
| 146 TEST_F(QuicMultipathSentPacketManagerTest, HasPendingRetransmissions) { | |
| 147 EXPECT_CALL(*manager_0_, HasPendingRetransmissions()).WillOnce(Return(true)); | |
| 148 EXPECT_TRUE(multipath_manager_.HasPendingRetransmissions()); | |
| 149 } | |
| 150 | |
| 151 TEST_F(QuicMultipathSentPacketManagerTest, NextPendingRetransmission) { | |
| 152 SerializedPacket packet(kDefaultPathId, 1, PACKET_6BYTE_PACKET_NUMBER, | |
| 153 nullptr, 1250, 0u, false, false); | |
| 154 PendingRetransmission retransmission( | |
| 155 packet.path_id, packet.packet_number, LOSS_RETRANSMISSION, | |
| 156 packet.retransmittable_frames, packet.has_crypto_handshake, | |
| 157 packet.num_padding_bytes, packet.encryption_level, | |
| 158 packet.packet_number_length); | |
| 159 EXPECT_CALL(*manager_0_, NextPendingRetransmission()) | |
| 160 .WillOnce(Return(retransmission)); | |
| 161 multipath_manager_.NextPendingRetransmission(); | |
| 162 } | |
| 163 | |
| 164 TEST_F(QuicMultipathSentPacketManagerTest, HasUnackedPackets) { | |
| 165 EXPECT_CALL(*manager_0_, HasUnackedPackets()).WillOnce(Return(false)); | |
| 166 EXPECT_CALL(*manager_1_, HasUnackedPackets()).WillOnce(Return(false)); | |
| 167 EXPECT_CALL(*manager_2_, HasUnackedPackets()).Times(0); | |
| 168 EXPECT_FALSE(multipath_manager_.HasUnackedPackets()); | |
| 169 EXPECT_CALL(*manager_0_, HasUnackedPackets()).WillOnce(Return(false)); | |
| 170 EXPECT_CALL(*manager_1_, HasUnackedPackets()).WillOnce(Return(true)); | |
| 171 EXPECT_TRUE(multipath_manager_.HasUnackedPackets()); | |
| 172 } | |
| 173 | |
| 174 TEST_F(QuicMultipathSentPacketManagerTest, GetLeastUnacked) { | |
| 175 EXPECT_CALL(*manager_0_, GetLeastUnacked(kDefaultPathId)).WillOnce(Return(2)); | |
| 176 EXPECT_CALL(*manager_1_, GetLeastUnacked(kTestPathId1)).WillOnce(Return(3)); | |
| 177 EXPECT_CALL(*manager_2_, GetLeastUnacked(kTestPathId2)).WillOnce(Return(4)); | |
| 178 EXPECT_EQ(2u, multipath_manager_.GetLeastUnacked(kDefaultPathId)); | |
| 179 EXPECT_EQ(3u, multipath_manager_.GetLeastUnacked(kTestPathId1)); | |
| 180 EXPECT_EQ(4u, multipath_manager_.GetLeastUnacked(kTestPathId2)); | |
| 181 EXPECT_EQ(0u, multipath_manager_.GetLeastUnacked(kTestPathId3)); | |
| 182 } | |
| 183 | |
| 184 TEST_F(QuicMultipathSentPacketManagerTest, OnPacketSent) { | |
| 185 SerializedPacket packet0(kDefaultPathId, 1, PACKET_6BYTE_PACKET_NUMBER, | |
| 186 nullptr, 1250, 0u, false, false); | |
| 187 SerializedPacket packet1(kTestPathId1, 1, PACKET_6BYTE_PACKET_NUMBER, nullptr, | |
| 188 1250, 0u, false, false); | |
| 189 SerializedPacket packet2(kTestPathId2, 1, PACKET_6BYTE_PACKET_NUMBER, nullptr, | |
| 190 1250, 0u, false, false); | |
| 191 SerializedPacket packet3(kTestPathId3, 1, PACKET_6BYTE_PACKET_NUMBER, nullptr, | |
| 192 1250, 0u, false, false); | |
| 193 EXPECT_CALL(*manager_0_, | |
| 194 OnPacketSent(&packet0, kInvalidPathId, 0, clock_.Now(), | |
| 195 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA)); | |
| 196 multipath_manager_.OnPacketSent(&packet0, kInvalidPathId, 0, clock_.Now(), | |
| 197 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); | |
| 198 EXPECT_CALL(*manager_1_, | |
| 199 OnPacketSent(&packet1, kInvalidPathId, 0, clock_.Now(), | |
| 200 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA)); | |
| 201 multipath_manager_.OnPacketSent(&packet1, kInvalidPathId, 0, clock_.Now(), | |
| 202 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA); | |
| 203 EXPECT_CALL(*manager_2_, OnPacketSent(_, _, _, _, _, _)).Times(0); | |
| 204 EXPECT_CALL(delegate_, | |
| 205 OnUnrecoverableError(QUIC_MULTIPATH_PATH_NOT_ACTIVE, _, _)); | |
| 206 /* | |
| 207 EXPECT_DFATAL(multipath_manager_.OnPacketSent( | |
| 208 &packet2, kInvalidPathId, 0, clock_.Now(), | |
| 209 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA), | |
| 210 ""); | |
| 211 */ | |
| 212 EXPECT_CALL(delegate_, | |
| 213 OnUnrecoverableError(QUIC_MULTIPATH_PATH_DOES_NOT_EXIST, _, _)); | |
| 214 /* | |
| 215 EXPECT_DFATAL(multipath_manager_.OnPacketSent( | |
| 216 &packet3, kInvalidPathId, 0, clock_.Now(), | |
| 217 NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA), | |
| 218 ""); | |
| 219 */ | |
| 220 } | |
| 221 | |
| 222 TEST_F(QuicMultipathSentPacketManagerTest, OnRetransmissionTimeout) { | |
| 223 QuicTime time0 = clock_.Now() + QuicTime::Delta::FromMilliseconds(50); | |
| 224 QuicTime time1 = clock_.Now() + QuicTime::Delta::FromMilliseconds(100); | |
| 225 EXPECT_CALL(*manager_0_, GetRetransmissionTime()).WillOnce(Return(time0)); | |
| 226 EXPECT_CALL(*manager_1_, GetRetransmissionTime()).WillOnce(Return(time1)); | |
| 227 EXPECT_CALL(*manager_0_, OnRetransmissionTimeout()); | |
| 228 multipath_manager_.OnRetransmissionTimeout(); | |
| 229 } | |
| 230 | |
| 231 TEST_F(QuicMultipathSentPacketManagerTest, TimeUntilSend) { | |
| 232 QuicPathId path_id = kInvalidPathId; | |
| 233 EXPECT_CALL(*manager_0_, | |
| 234 TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA, &path_id)) | |
| 235 .WillOnce(Return(QuicTime::Delta::FromMilliseconds(200))); | |
| 236 EXPECT_CALL(*manager_1_, | |
| 237 TimeUntilSend(clock_.Now(), HAS_RETRANSMITTABLE_DATA, &path_id)) | |
| 238 .WillOnce(Return(QuicTime::Delta::FromMilliseconds(100))); | |
| 239 EXPECT_EQ(QuicTime::Delta::FromMilliseconds(100), | |
| 240 multipath_manager_.TimeUntilSend( | |
| 241 clock_.Now(), HAS_RETRANSMITTABLE_DATA, &path_id)); | |
| 242 EXPECT_EQ(kTestPathId1, path_id); | |
| 243 } | |
| 244 | |
| 245 TEST_F(QuicMultipathSentPacketManagerTest, GetRetransmissionTime) { | |
| 246 QuicTime time0 = clock_.Now() + QuicTime::Delta::FromMilliseconds(200); | |
| 247 QuicTime time1 = clock_.Now() + QuicTime::Delta::FromMilliseconds(100); | |
| 248 EXPECT_CALL(*manager_0_, GetRetransmissionTime()).WillOnce(Return(time0)); | |
| 249 EXPECT_CALL(*manager_1_, GetRetransmissionTime()).WillOnce(Return(time1)); | |
| 250 EXPECT_EQ(time1, multipath_manager_.GetRetransmissionTime()); | |
| 251 } | |
| 252 | |
| 253 TEST_F(QuicMultipathSentPacketManagerTest, GetRttStats) { | |
| 254 EXPECT_CALL(*manager_0_, GetRttStats()); | |
| 255 multipath_manager_.GetRttStats(); | |
| 256 } | |
| 257 | |
| 258 TEST_F(QuicMultipathSentPacketManagerTest, BandwidthEstimate) { | |
| 259 QuicBandwidth bandwidth = QuicBandwidth::FromKBitsPerSecond(100); | |
| 260 EXPECT_CALL(*manager_0_, BandwidthEstimate()).WillOnce(Return(bandwidth)); | |
| 261 EXPECT_EQ(bandwidth, multipath_manager_.BandwidthEstimate()); | |
| 262 } | |
| 263 | |
| 264 TEST_F(QuicMultipathSentPacketManagerTest, GetCongestionWindowInTcpMss) { | |
| 265 EXPECT_CALL(*manager_0_, GetCongestionWindowInTcpMss()).WillOnce(Return(100)); | |
| 266 EXPECT_EQ(100u, multipath_manager_.GetCongestionWindowInTcpMss()); | |
| 267 } | |
| 268 | |
| 269 TEST_F(QuicMultipathSentPacketManagerTest, EstimateMaxPacketsInFlight) { | |
| 270 QuicByteCount max_packet_length = 1250; | |
| 271 EXPECT_CALL(*manager_0_, EstimateMaxPacketsInFlight(max_packet_length)) | |
| 272 .WillOnce(Return(100)); | |
| 273 EXPECT_CALL(*manager_1_, EstimateMaxPacketsInFlight(max_packet_length)) | |
| 274 .WillOnce(Return(200)); | |
| 275 EXPECT_CALL(*manager_2_, EstimateMaxPacketsInFlight(max_packet_length)) | |
| 276 .WillOnce(Return(300)); | |
| 277 EXPECT_EQ(300u, | |
| 278 multipath_manager_.EstimateMaxPacketsInFlight(max_packet_length)); | |
| 279 } | |
| 280 | |
| 281 TEST_F(QuicMultipathSentPacketManagerTest, GetSlowStartThresholdInTcpMss) { | |
| 282 EXPECT_CALL(*manager_0_, GetSlowStartThresholdInTcpMss()) | |
| 283 .WillOnce(Return(100)); | |
| 284 EXPECT_EQ(100u, multipath_manager_.GetSlowStartThresholdInTcpMss()); | |
| 285 } | |
| 286 | |
| 287 TEST_F(QuicMultipathSentPacketManagerTest, CancelRetransmissionsForStream) { | |
| 288 EXPECT_CALL(*manager_0_, CancelRetransmissionsForStream(1)); | |
| 289 EXPECT_CALL(*manager_1_, CancelRetransmissionsForStream(1)); | |
| 290 EXPECT_CALL(*manager_2_, CancelRetransmissionsForStream(1)); | |
| 291 multipath_manager_.CancelRetransmissionsForStream(1); | |
| 292 } | |
| 293 | |
| 294 TEST_F(QuicMultipathSentPacketManagerTest, OnConnectionMigration) { | |
| 295 EXPECT_CALL(*manager_0_, OnConnectionMigration(kDefaultPathId, PORT_CHANGE)); | |
| 296 EXPECT_CALL(*manager_2_, OnConnectionMigration(_, _)).Times(0); | |
| 297 multipath_manager_.OnConnectionMigration(kDefaultPathId, PORT_CHANGE); | |
| 298 EXPECT_CALL(delegate_, | |
| 299 OnUnrecoverableError(QUIC_MULTIPATH_PATH_NOT_ACTIVE, _, _)); | |
| 300 /* | |
| 301 EXPECT_DFATAL( | |
| 302 multipath_manager_.OnConnectionMigration(kTestPathId2, PORT_CHANGE), ""); | |
| 303 */ | |
| 304 EXPECT_CALL(delegate_, | |
| 305 OnUnrecoverableError(QUIC_MULTIPATH_PATH_DOES_NOT_EXIST, _, _)); | |
| 306 multipath_manager_.OnConnectionMigration(kTestPathId3, PORT_CHANGE); | |
| 307 } | |
| 308 | |
| 309 TEST_F(QuicMultipathSentPacketManagerTest, IsHandshakeConfirmed) { | |
| 310 EXPECT_CALL(*manager_0_, IsHandshakeConfirmed()).WillOnce(Return(true)); | |
| 311 EXPECT_TRUE(multipath_manager_.IsHandshakeConfirmed()); | |
| 312 } | |
| 313 | |
| 314 TEST_F(QuicMultipathSentPacketManagerTest, SetDebugDelegate) { | |
| 315 EXPECT_CALL(*manager_0_, SetDebugDelegate(nullptr)); | |
| 316 EXPECT_CALL(*manager_1_, SetDebugDelegate(nullptr)); | |
| 317 EXPECT_CALL(*manager_2_, SetDebugDelegate(nullptr)); | |
| 318 multipath_manager_.SetDebugDelegate(nullptr); | |
| 319 } | |
| 320 | |
| 321 TEST_F(QuicMultipathSentPacketManagerTest, GetLargestObserved) { | |
| 322 EXPECT_CALL(*manager_0_, GetLargestObserved(kDefaultPathId)) | |
| 323 .WillOnce(Return(10)); | |
| 324 EXPECT_CALL(*manager_1_, GetLargestObserved(kTestPathId1)) | |
| 325 .WillOnce(Return(11)); | |
| 326 EXPECT_CALL(*manager_2_, GetLargestObserved(kTestPathId2)) | |
| 327 .WillOnce(Return(12)); | |
| 328 EXPECT_EQ(10u, multipath_manager_.GetLargestObserved(kDefaultPathId)); | |
| 329 EXPECT_EQ(11u, multipath_manager_.GetLargestObserved(kTestPathId1)); | |
| 330 EXPECT_EQ(12u, multipath_manager_.GetLargestObserved(kTestPathId2)); | |
| 331 EXPECT_DFATAL(multipath_manager_.GetLargestObserved(kTestPathId3), ""); | |
| 332 } | |
| 333 | |
| 334 TEST_F(QuicMultipathSentPacketManagerTest, GetLargestSentPacket) { | |
| 335 EXPECT_CALL(*manager_0_, GetLargestSentPacket(kDefaultPathId)) | |
| 336 .WillOnce(Return(10)); | |
| 337 EXPECT_CALL(*manager_1_, GetLargestSentPacket(kTestPathId1)) | |
| 338 .WillOnce(Return(11)); | |
| 339 EXPECT_CALL(*manager_2_, GetLargestSentPacket(kTestPathId2)) | |
| 340 .WillOnce(Return(12)); | |
| 341 EXPECT_EQ(10u, multipath_manager_.GetLargestSentPacket(kDefaultPathId)); | |
| 342 EXPECT_EQ(11u, multipath_manager_.GetLargestSentPacket(kTestPathId1)); | |
| 343 EXPECT_EQ(12u, multipath_manager_.GetLargestSentPacket(kTestPathId2)); | |
| 344 EXPECT_EQ(0u, multipath_manager_.GetLargestSentPacket(kTestPathId3)); | |
| 345 } | |
| 346 | |
| 347 TEST_F(QuicMultipathSentPacketManagerTest, GetLeastPacketAwaitedByPeer) { | |
| 348 EXPECT_CALL(*manager_0_, GetLeastPacketAwaitedByPeer(kDefaultPathId)) | |
| 349 .WillOnce(Return(10)); | |
| 350 EXPECT_CALL(*manager_1_, GetLeastPacketAwaitedByPeer(kTestPathId1)) | |
| 351 .WillOnce(Return(11)); | |
| 352 EXPECT_CALL(*manager_2_, GetLeastPacketAwaitedByPeer(kTestPathId2)) | |
| 353 .WillOnce(Return(12)); | |
| 354 EXPECT_EQ(10u, | |
| 355 multipath_manager_.GetLeastPacketAwaitedByPeer(kDefaultPathId)); | |
| 356 EXPECT_EQ(11u, multipath_manager_.GetLeastPacketAwaitedByPeer(kTestPathId1)); | |
| 357 EXPECT_EQ(12u, multipath_manager_.GetLeastPacketAwaitedByPeer(kTestPathId2)); | |
| 358 EXPECT_EQ(0u, multipath_manager_.GetLeastPacketAwaitedByPeer(kTestPathId3)); | |
| 359 } | |
| 360 | |
| 361 TEST_F(QuicMultipathSentPacketManagerTest, SetNetworkChangeVisitor) { | |
| 362 EXPECT_CALL(*manager_0_, SetNetworkChangeVisitor(nullptr)); | |
| 363 EXPECT_CALL(*manager_1_, SetNetworkChangeVisitor(nullptr)); | |
| 364 multipath_manager_.SetNetworkChangeVisitor(nullptr); | |
| 365 } | |
| 366 | |
| 367 TEST_F(QuicMultipathSentPacketManagerTest, InSlowStart) { | |
| 368 EXPECT_CALL(*manager_0_, InSlowStart()).WillOnce(Return(true)); | |
| 369 EXPECT_TRUE(multipath_manager_.InSlowStart()); | |
| 370 } | |
| 371 | |
| 372 TEST_F(QuicMultipathSentPacketManagerTest, GetConsecutiveRtoCount) { | |
| 373 EXPECT_CALL(*manager_0_, GetConsecutiveRtoCount()).WillOnce(Return(4)); | |
| 374 EXPECT_EQ(4u, multipath_manager_.GetConsecutiveRtoCount()); | |
| 375 } | |
| 376 | |
| 377 TEST_F(QuicMultipathSentPacketManagerTest, GetConsecutiveTlpCount) { | |
| 378 EXPECT_CALL(*manager_0_, GetConsecutiveTlpCount()).WillOnce(Return(3)); | |
| 379 EXPECT_EQ(3u, multipath_manager_.GetConsecutiveTlpCount()); | |
| 380 } | |
| 381 | |
| 382 } // namespace | |
| 383 } // namespace test | |
| 384 } // namespace net | |
| OLD | NEW |