OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/socket/websocket_transport_client_socket_pool.h" | 5 #include "net/socket/websocket_transport_client_socket_pool.h" |
6 | 6 |
7 #include <queue> | 7 #include <queue> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
563 handle.Init("a", params_, LOW, callback.callback(), &pool, BoundNetLog()); | 563 handle.Init("a", params_, LOW, callback.callback(), &pool, BoundNetLog()); |
564 EXPECT_EQ(ERR_IO_PENDING, rv); | 564 EXPECT_EQ(ERR_IO_PENDING, rv); |
565 EXPECT_FALSE(handle.is_initialized()); | 565 EXPECT_FALSE(handle.is_initialized()); |
566 EXPECT_FALSE(handle.socket()); | 566 EXPECT_FALSE(handle.socket()); |
567 | 567 |
568 EXPECT_EQ(OK, callback.WaitForResult()); | 568 EXPECT_EQ(OK, callback.WaitForResult()); |
569 EXPECT_TRUE(handle.is_initialized()); | 569 EXPECT_TRUE(handle.is_initialized()); |
570 EXPECT_TRUE(handle.socket()); | 570 EXPECT_TRUE(handle.socket()); |
571 IPEndPoint endpoint; | 571 IPEndPoint endpoint; |
572 handle.socket()->GetLocalAddress(&endpoint); | 572 handle.socket()->GetLocalAddress(&endpoint); |
573 EXPECT_EQ(kIPv4AddressSize, endpoint.address().size()); | 573 EXPECT_EQ(kIPv4AddressSize, endpoint.address().bytes().size()); |
574 EXPECT_EQ(2, client_socket_factory_.allocation_count()); | 574 EXPECT_EQ(2, client_socket_factory_.allocation_count()); |
575 } | 575 } |
576 | 576 |
577 // Test the case of the IPv6 address being slow, thus falling back to trying to | 577 // Test the case of the IPv6 address being slow, thus falling back to trying to |
578 // connect to the IPv4 address, but having the connect to the IPv6 address | 578 // connect to the IPv4 address, but having the connect to the IPv6 address |
579 // finish first. | 579 // finish first. |
580 TEST_F(WebSocketTransportClientSocketPoolTest, | 580 TEST_F(WebSocketTransportClientSocketPoolTest, |
581 IPv6FallbackSocketIPv6FinishesFirst) { | 581 IPv6FallbackSocketIPv6FinishesFirst) { |
582 WebSocketTransportClientSocketPool pool(kMaxSockets, | 582 WebSocketTransportClientSocketPool pool(kMaxSockets, |
583 kMaxSocketsPerGroup, | 583 kMaxSocketsPerGroup, |
(...skipping 21 matching lines...) Expand all Loading... |
605 handle.Init("a", params_, LOW, callback.callback(), &pool, BoundNetLog()); | 605 handle.Init("a", params_, LOW, callback.callback(), &pool, BoundNetLog()); |
606 EXPECT_EQ(ERR_IO_PENDING, rv); | 606 EXPECT_EQ(ERR_IO_PENDING, rv); |
607 EXPECT_FALSE(handle.is_initialized()); | 607 EXPECT_FALSE(handle.is_initialized()); |
608 EXPECT_FALSE(handle.socket()); | 608 EXPECT_FALSE(handle.socket()); |
609 | 609 |
610 EXPECT_EQ(OK, callback.WaitForResult()); | 610 EXPECT_EQ(OK, callback.WaitForResult()); |
611 EXPECT_TRUE(handle.is_initialized()); | 611 EXPECT_TRUE(handle.is_initialized()); |
612 EXPECT_TRUE(handle.socket()); | 612 EXPECT_TRUE(handle.socket()); |
613 IPEndPoint endpoint; | 613 IPEndPoint endpoint; |
614 handle.socket()->GetLocalAddress(&endpoint); | 614 handle.socket()->GetLocalAddress(&endpoint); |
615 EXPECT_EQ(kIPv6AddressSize, endpoint.address().size()); | 615 EXPECT_EQ(kIPv6AddressSize, endpoint.address().bytes().size()); |
616 EXPECT_EQ(2, client_socket_factory_.allocation_count()); | 616 EXPECT_EQ(2, client_socket_factory_.allocation_count()); |
617 } | 617 } |
618 | 618 |
619 TEST_F(WebSocketTransportClientSocketPoolTest, | 619 TEST_F(WebSocketTransportClientSocketPoolTest, |
620 IPv6NoIPv4AddressesToFallbackTo) { | 620 IPv6NoIPv4AddressesToFallbackTo) { |
621 WebSocketTransportClientSocketPool pool(kMaxSockets, | 621 WebSocketTransportClientSocketPool pool(kMaxSockets, |
622 kMaxSocketsPerGroup, | 622 kMaxSocketsPerGroup, |
623 host_resolver_.get(), | 623 host_resolver_.get(), |
624 &client_socket_factory_, | 624 &client_socket_factory_, |
625 NULL); | 625 NULL); |
(...skipping 11 matching lines...) Expand all Loading... |
637 handle.Init("a", params_, LOW, callback.callback(), &pool, BoundNetLog()); | 637 handle.Init("a", params_, LOW, callback.callback(), &pool, BoundNetLog()); |
638 EXPECT_EQ(ERR_IO_PENDING, rv); | 638 EXPECT_EQ(ERR_IO_PENDING, rv); |
639 EXPECT_FALSE(handle.is_initialized()); | 639 EXPECT_FALSE(handle.is_initialized()); |
640 EXPECT_FALSE(handle.socket()); | 640 EXPECT_FALSE(handle.socket()); |
641 | 641 |
642 EXPECT_EQ(OK, callback.WaitForResult()); | 642 EXPECT_EQ(OK, callback.WaitForResult()); |
643 EXPECT_TRUE(handle.is_initialized()); | 643 EXPECT_TRUE(handle.is_initialized()); |
644 EXPECT_TRUE(handle.socket()); | 644 EXPECT_TRUE(handle.socket()); |
645 IPEndPoint endpoint; | 645 IPEndPoint endpoint; |
646 handle.socket()->GetLocalAddress(&endpoint); | 646 handle.socket()->GetLocalAddress(&endpoint); |
647 EXPECT_EQ(kIPv6AddressSize, endpoint.address().size()); | 647 EXPECT_EQ(kIPv6AddressSize, endpoint.address().bytes().size()); |
648 EXPECT_EQ(1, client_socket_factory_.allocation_count()); | 648 EXPECT_EQ(1, client_socket_factory_.allocation_count()); |
649 } | 649 } |
650 | 650 |
651 TEST_F(WebSocketTransportClientSocketPoolTest, IPv4HasNoFallback) { | 651 TEST_F(WebSocketTransportClientSocketPoolTest, IPv4HasNoFallback) { |
652 WebSocketTransportClientSocketPool pool(kMaxSockets, | 652 WebSocketTransportClientSocketPool pool(kMaxSockets, |
653 kMaxSocketsPerGroup, | 653 kMaxSocketsPerGroup, |
654 host_resolver_.get(), | 654 host_resolver_.get(), |
655 &client_socket_factory_, | 655 &client_socket_factory_, |
656 NULL); | 656 NULL); |
657 | 657 |
658 client_socket_factory_.set_default_client_socket_type( | 658 client_socket_factory_.set_default_client_socket_type( |
659 MockTransportClientSocketFactory::MOCK_DELAYED_CLIENT_SOCKET); | 659 MockTransportClientSocketFactory::MOCK_DELAYED_CLIENT_SOCKET); |
660 | 660 |
661 // Resolve an AddressList with only IPv4 addresses. | 661 // Resolve an AddressList with only IPv4 addresses. |
662 host_resolver_->rules()->AddIPLiteralRule("*", "1.1.1.1", std::string()); | 662 host_resolver_->rules()->AddIPLiteralRule("*", "1.1.1.1", std::string()); |
663 | 663 |
664 TestCompletionCallback callback; | 664 TestCompletionCallback callback; |
665 ClientSocketHandle handle; | 665 ClientSocketHandle handle; |
666 int rv = | 666 int rv = |
667 handle.Init("a", params_, LOW, callback.callback(), &pool, BoundNetLog()); | 667 handle.Init("a", params_, LOW, callback.callback(), &pool, BoundNetLog()); |
668 EXPECT_EQ(ERR_IO_PENDING, rv); | 668 EXPECT_EQ(ERR_IO_PENDING, rv); |
669 EXPECT_FALSE(handle.is_initialized()); | 669 EXPECT_FALSE(handle.is_initialized()); |
670 EXPECT_FALSE(handle.socket()); | 670 EXPECT_FALSE(handle.socket()); |
671 | 671 |
672 EXPECT_EQ(OK, callback.WaitForResult()); | 672 EXPECT_EQ(OK, callback.WaitForResult()); |
673 EXPECT_TRUE(handle.is_initialized()); | 673 EXPECT_TRUE(handle.is_initialized()); |
674 EXPECT_TRUE(handle.socket()); | 674 EXPECT_TRUE(handle.socket()); |
675 IPEndPoint endpoint; | 675 IPEndPoint endpoint; |
676 handle.socket()->GetLocalAddress(&endpoint); | 676 handle.socket()->GetLocalAddress(&endpoint); |
677 EXPECT_EQ(kIPv4AddressSize, endpoint.address().size()); | 677 EXPECT_EQ(kIPv4AddressSize, endpoint.address().bytes().size()); |
678 EXPECT_EQ(1, client_socket_factory_.allocation_count()); | 678 EXPECT_EQ(1, client_socket_factory_.allocation_count()); |
679 } | 679 } |
680 | 680 |
681 // If all IPv6 addresses fail to connect synchronously, then IPv4 connections | 681 // If all IPv6 addresses fail to connect synchronously, then IPv4 connections |
682 // proceeed immediately. | 682 // proceeed immediately. |
683 TEST_F(WebSocketTransportClientSocketPoolTest, IPv6InstantFail) { | 683 TEST_F(WebSocketTransportClientSocketPoolTest, IPv6InstantFail) { |
684 WebSocketTransportClientSocketPool pool(kMaxSockets, | 684 WebSocketTransportClientSocketPool pool(kMaxSockets, |
685 kMaxSocketsPerGroup, | 685 kMaxSocketsPerGroup, |
686 host_resolver_.get(), | 686 host_resolver_.get(), |
687 &client_socket_factory_, | 687 &client_socket_factory_, |
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1112 EXPECT_EQ(OK, request(1)->WaitForResult()); | 1112 EXPECT_EQ(OK, request(1)->WaitForResult()); |
1113 // Third socket should still be waiting for endpoint. | 1113 // Third socket should still be waiting for endpoint. |
1114 ASSERT_FALSE(request(2)->handle()->is_initialized()); | 1114 ASSERT_FALSE(request(2)->handle()->is_initialized()); |
1115 EXPECT_EQ(LOAD_STATE_WAITING_FOR_AVAILABLE_SOCKET, | 1115 EXPECT_EQ(LOAD_STATE_WAITING_FOR_AVAILABLE_SOCKET, |
1116 request(2)->handle()->GetLoadState()); | 1116 request(2)->handle()->GetLoadState()); |
1117 } | 1117 } |
1118 | 1118 |
1119 } // namespace | 1119 } // namespace |
1120 | 1120 |
1121 } // namespace net | 1121 } // namespace net |
OLD | NEW |