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 "content/browser/renderer_host/p2p/socket_host_udp.h" | 5 #include "content/browser/renderer_host/p2p/socket_host_udp.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <deque> | 8 #include <deque> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); | 348 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); |
349 socket_host_->Send(dest2_, packet, options, 0); | 349 socket_host_->Send(dest2_, packet, options, 0); |
350 } | 350 } |
351 | 351 |
352 // Verify throttler not allowing unlimited sending of ICE messages to | 352 // Verify throttler not allowing unlimited sending of ICE messages to |
353 // any destination. | 353 // any destination. |
354 TEST_F(P2PSocketHostUdpTest, ThrottleAfterLimit) { | 354 TEST_F(P2PSocketHostUdpTest, ThrottleAfterLimit) { |
355 EXPECT_CALL( | 355 EXPECT_CALL( |
356 sender_, | 356 sender_, |
357 Send(MatchMessage(static_cast<uint32_t>(P2PMsg_OnSendComplete::ID)))) | 357 Send(MatchMessage(static_cast<uint32_t>(P2PMsg_OnSendComplete::ID)))) |
358 .Times(2) | 358 .Times(3) |
359 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true))); | 359 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true))); |
360 | 360 |
361 rtc::PacketOptions options; | 361 rtc::PacketOptions options; |
362 std::vector<char> packet1; | 362 std::vector<char> packet1; |
363 CreateStunRequest(&packet1); | 363 CreateStunRequest(&packet1); |
364 throttler_.SetSendIceBandwidth(packet1.size() * 2); | 364 throttler_.SetSendIceBandwidth(packet1.size() * 2); |
365 socket_host_->Send(dest1_, packet1, options, 0); | 365 socket_host_->Send(dest1_, packet1, options, 0); |
366 socket_host_->Send(dest2_, packet1, options, 0); | 366 socket_host_->Send(dest2_, packet1, options, 0); |
367 | 367 |
368 net::IPEndPoint dest3 = ParseAddress(kTestIpAddress1, 2222); | 368 net::IPEndPoint dest3 = ParseAddress(kTestIpAddress1, 2222); |
369 // This packet must be dropped by the throttler. | 369 // This packet must be dropped by the throttler. |
370 socket_host_->Send(dest3, packet1, options, 0); | 370 socket_host_->Send(dest3, packet1, options, 0); |
371 ASSERT_EQ(sent_packets_.size(), 2U); | 371 ASSERT_EQ(sent_packets_.size(), 2U); |
372 } | 372 } |
373 | 373 |
374 // Verify we can send packets to a known destination when ICE throttling is | 374 // Verify we can send packets to a known destination when ICE throttling is |
375 // active. | 375 // active. |
376 TEST_F(P2PSocketHostUdpTest, ThrottleAfterLimitAfterReceive) { | 376 TEST_F(P2PSocketHostUdpTest, ThrottleAfterLimitAfterReceive) { |
377 // Receive packet from |dest1_|. | 377 // Receive packet from |dest1_|. |
378 std::vector<char> request_packet; | 378 std::vector<char> request_packet; |
379 CreateStunRequest(&request_packet); | 379 CreateStunRequest(&request_packet); |
380 | 380 |
381 EXPECT_CALL(sender_, Send(MatchPacketMessage(request_packet))) | 381 EXPECT_CALL(sender_, Send(MatchPacketMessage(request_packet))) |
382 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); | 382 .WillOnce(DoAll(DeleteArg<0>(), Return(true))); |
383 socket_->ReceivePacket(dest1_, request_packet); | 383 socket_->ReceivePacket(dest1_, request_packet); |
384 | 384 |
385 EXPECT_CALL( | 385 EXPECT_CALL( |
386 sender_, | 386 sender_, |
387 Send(MatchMessage(static_cast<uint32_t>(P2PMsg_OnSendComplete::ID)))) | 387 Send(MatchMessage(static_cast<uint32_t>(P2PMsg_OnSendComplete::ID)))) |
388 .Times(4) | 388 .Times(6) |
389 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true))); | 389 .WillRepeatedly(DoAll(DeleteArg<0>(), Return(true))); |
390 | 390 |
391 rtc::PacketOptions options; | 391 rtc::PacketOptions options; |
392 std::vector<char> packet1; | 392 std::vector<char> packet1; |
393 CreateStunRequest(&packet1); | 393 CreateStunRequest(&packet1); |
394 throttler_.SetSendIceBandwidth(packet1.size()); | 394 throttler_.SetSendIceBandwidth(packet1.size()); |
395 // |dest1_| is known address, throttling will not be applied. | 395 // |dest1_| is known address, throttling will not be applied. |
396 socket_host_->Send(dest1_, packet1, options, 0); | 396 socket_host_->Send(dest1_, packet1, options, 0); |
397 // Trying to send the packet to dest1_ in the same window. It should go. | 397 // Trying to send the packet to dest1_ in the same window. It should go. |
398 socket_host_->Send(dest1_, packet1, options, 0); | 398 socket_host_->Send(dest1_, packet1, options, 0); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 std::unique_ptr<P2PSocketHostUdp> socket_host( | 502 std::unique_ptr<P2PSocketHostUdp> socket_host( |
503 new P2PSocketHostUdp(&sender, 0, &throttler, fake_socket_factory)); | 503 new P2PSocketHostUdp(&sender, 0, &throttler, fake_socket_factory)); |
504 net::IPEndPoint local_address = | 504 net::IPEndPoint local_address = |
505 ParseAddress(kTestLocalIpAddress, invalid_port); | 505 ParseAddress(kTestLocalIpAddress, invalid_port); |
506 bool rv = socket_host->Init(local_address, min_port, max_port, | 506 bool rv = socket_host->Init(local_address, min_port, max_port, |
507 P2PHostAndIPEndPoint()); | 507 P2PHostAndIPEndPoint()); |
508 EXPECT_FALSE(rv); | 508 EXPECT_FALSE(rv); |
509 } | 509 } |
510 | 510 |
511 } // namespace content | 511 } // namespace content |
OLD | NEW |