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 526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 callback.callback(), &pool, BoundNetLog()); | 537 callback.callback(), &pool, BoundNetLog()); |
538 EXPECT_EQ(ERR_IO_PENDING, rv); | 538 EXPECT_EQ(ERR_IO_PENDING, rv); |
539 EXPECT_FALSE(handle.is_initialized()); | 539 EXPECT_FALSE(handle.is_initialized()); |
540 EXPECT_FALSE(handle.socket()); | 540 EXPECT_FALSE(handle.socket()); |
541 | 541 |
542 EXPECT_EQ(OK, callback.WaitForResult()); | 542 EXPECT_EQ(OK, callback.WaitForResult()); |
543 EXPECT_TRUE(handle.is_initialized()); | 543 EXPECT_TRUE(handle.is_initialized()); |
544 EXPECT_TRUE(handle.socket()); | 544 EXPECT_TRUE(handle.socket()); |
545 IPEndPoint endpoint; | 545 IPEndPoint endpoint; |
546 handle.socket()->GetLocalAddress(&endpoint); | 546 handle.socket()->GetLocalAddress(&endpoint); |
547 EXPECT_EQ(kIPv4AddressSize, endpoint.address().size()); | 547 EXPECT_TRUE(endpoint.address().IsIPv4()); |
548 EXPECT_EQ(2, client_socket_factory_.allocation_count()); | 548 EXPECT_EQ(2, client_socket_factory_.allocation_count()); |
549 } | 549 } |
550 | 550 |
551 // Test the case of the IPv6 address being slow, thus falling back to trying to | 551 // Test the case of the IPv6 address being slow, thus falling back to trying to |
552 // connect to the IPv4 address, but having the connect to the IPv6 address | 552 // connect to the IPv4 address, but having the connect to the IPv6 address |
553 // finish first. | 553 // finish first. |
554 TEST_F(WebSocketTransportClientSocketPoolTest, | 554 TEST_F(WebSocketTransportClientSocketPoolTest, |
555 IPv6FallbackSocketIPv6FinishesFirst) { | 555 IPv6FallbackSocketIPv6FinishesFirst) { |
556 WebSocketTransportClientSocketPool pool(kMaxSockets, | 556 WebSocketTransportClientSocketPool pool(kMaxSockets, |
557 kMaxSocketsPerGroup, | 557 kMaxSocketsPerGroup, |
(...skipping 22 matching lines...) Expand all Loading... |
580 callback.callback(), &pool, BoundNetLog()); | 580 callback.callback(), &pool, BoundNetLog()); |
581 EXPECT_EQ(ERR_IO_PENDING, rv); | 581 EXPECT_EQ(ERR_IO_PENDING, rv); |
582 EXPECT_FALSE(handle.is_initialized()); | 582 EXPECT_FALSE(handle.is_initialized()); |
583 EXPECT_FALSE(handle.socket()); | 583 EXPECT_FALSE(handle.socket()); |
584 | 584 |
585 EXPECT_EQ(OK, callback.WaitForResult()); | 585 EXPECT_EQ(OK, callback.WaitForResult()); |
586 EXPECT_TRUE(handle.is_initialized()); | 586 EXPECT_TRUE(handle.is_initialized()); |
587 EXPECT_TRUE(handle.socket()); | 587 EXPECT_TRUE(handle.socket()); |
588 IPEndPoint endpoint; | 588 IPEndPoint endpoint; |
589 handle.socket()->GetLocalAddress(&endpoint); | 589 handle.socket()->GetLocalAddress(&endpoint); |
590 EXPECT_EQ(kIPv6AddressSize, endpoint.address().size()); | 590 EXPECT_TRUE(endpoint.address().IsIPv6()); |
591 EXPECT_EQ(2, client_socket_factory_.allocation_count()); | 591 EXPECT_EQ(2, client_socket_factory_.allocation_count()); |
592 } | 592 } |
593 | 593 |
594 TEST_F(WebSocketTransportClientSocketPoolTest, | 594 TEST_F(WebSocketTransportClientSocketPoolTest, |
595 IPv6NoIPv4AddressesToFallbackTo) { | 595 IPv6NoIPv4AddressesToFallbackTo) { |
596 WebSocketTransportClientSocketPool pool(kMaxSockets, | 596 WebSocketTransportClientSocketPool pool(kMaxSockets, |
597 kMaxSocketsPerGroup, | 597 kMaxSocketsPerGroup, |
598 host_resolver_.get(), | 598 host_resolver_.get(), |
599 &client_socket_factory_, | 599 &client_socket_factory_, |
600 NULL); | 600 NULL); |
(...skipping 12 matching lines...) Expand all Loading... |
613 callback.callback(), &pool, BoundNetLog()); | 613 callback.callback(), &pool, BoundNetLog()); |
614 EXPECT_EQ(ERR_IO_PENDING, rv); | 614 EXPECT_EQ(ERR_IO_PENDING, rv); |
615 EXPECT_FALSE(handle.is_initialized()); | 615 EXPECT_FALSE(handle.is_initialized()); |
616 EXPECT_FALSE(handle.socket()); | 616 EXPECT_FALSE(handle.socket()); |
617 | 617 |
618 EXPECT_EQ(OK, callback.WaitForResult()); | 618 EXPECT_EQ(OK, callback.WaitForResult()); |
619 EXPECT_TRUE(handle.is_initialized()); | 619 EXPECT_TRUE(handle.is_initialized()); |
620 EXPECT_TRUE(handle.socket()); | 620 EXPECT_TRUE(handle.socket()); |
621 IPEndPoint endpoint; | 621 IPEndPoint endpoint; |
622 handle.socket()->GetLocalAddress(&endpoint); | 622 handle.socket()->GetLocalAddress(&endpoint); |
623 EXPECT_EQ(kIPv6AddressSize, endpoint.address().size()); | 623 EXPECT_TRUE(endpoint.address().IsIPv6()); |
624 EXPECT_EQ(1, client_socket_factory_.allocation_count()); | 624 EXPECT_EQ(1, client_socket_factory_.allocation_count()); |
625 } | 625 } |
626 | 626 |
627 TEST_F(WebSocketTransportClientSocketPoolTest, IPv4HasNoFallback) { | 627 TEST_F(WebSocketTransportClientSocketPoolTest, IPv4HasNoFallback) { |
628 WebSocketTransportClientSocketPool pool(kMaxSockets, | 628 WebSocketTransportClientSocketPool pool(kMaxSockets, |
629 kMaxSocketsPerGroup, | 629 kMaxSocketsPerGroup, |
630 host_resolver_.get(), | 630 host_resolver_.get(), |
631 &client_socket_factory_, | 631 &client_socket_factory_, |
632 NULL); | 632 NULL); |
633 | 633 |
(...skipping 10 matching lines...) Expand all Loading... |
644 callback.callback(), &pool, BoundNetLog()); | 644 callback.callback(), &pool, BoundNetLog()); |
645 EXPECT_EQ(ERR_IO_PENDING, rv); | 645 EXPECT_EQ(ERR_IO_PENDING, rv); |
646 EXPECT_FALSE(handle.is_initialized()); | 646 EXPECT_FALSE(handle.is_initialized()); |
647 EXPECT_FALSE(handle.socket()); | 647 EXPECT_FALSE(handle.socket()); |
648 | 648 |
649 EXPECT_EQ(OK, callback.WaitForResult()); | 649 EXPECT_EQ(OK, callback.WaitForResult()); |
650 EXPECT_TRUE(handle.is_initialized()); | 650 EXPECT_TRUE(handle.is_initialized()); |
651 EXPECT_TRUE(handle.socket()); | 651 EXPECT_TRUE(handle.socket()); |
652 IPEndPoint endpoint; | 652 IPEndPoint endpoint; |
653 handle.socket()->GetLocalAddress(&endpoint); | 653 handle.socket()->GetLocalAddress(&endpoint); |
654 EXPECT_EQ(kIPv4AddressSize, endpoint.address().size()); | 654 EXPECT_TRUE(endpoint.address().IsIPv4()); |
655 EXPECT_EQ(1, client_socket_factory_.allocation_count()); | 655 EXPECT_EQ(1, client_socket_factory_.allocation_count()); |
656 } | 656 } |
657 | 657 |
658 // If all IPv6 addresses fail to connect synchronously, then IPv4 connections | 658 // If all IPv6 addresses fail to connect synchronously, then IPv4 connections |
659 // proceeed immediately. | 659 // proceeed immediately. |
660 TEST_F(WebSocketTransportClientSocketPoolTest, IPv6InstantFail) { | 660 TEST_F(WebSocketTransportClientSocketPoolTest, IPv6InstantFail) { |
661 WebSocketTransportClientSocketPool pool(kMaxSockets, | 661 WebSocketTransportClientSocketPool pool(kMaxSockets, |
662 kMaxSocketsPerGroup, | 662 kMaxSocketsPerGroup, |
663 host_resolver_.get(), | 663 host_resolver_.get(), |
664 &client_socket_factory_, | 664 &client_socket_factory_, |
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1094 EXPECT_EQ(OK, request(1)->WaitForResult()); | 1094 EXPECT_EQ(OK, request(1)->WaitForResult()); |
1095 // Third socket should still be waiting for endpoint. | 1095 // Third socket should still be waiting for endpoint. |
1096 ASSERT_FALSE(request(2)->handle()->is_initialized()); | 1096 ASSERT_FALSE(request(2)->handle()->is_initialized()); |
1097 EXPECT_EQ(LOAD_STATE_WAITING_FOR_AVAILABLE_SOCKET, | 1097 EXPECT_EQ(LOAD_STATE_WAITING_FOR_AVAILABLE_SOCKET, |
1098 request(2)->handle()->GetLoadState()); | 1098 request(2)->handle()->GetLoadState()); |
1099 } | 1099 } |
1100 | 1100 |
1101 } // namespace | 1101 } // namespace |
1102 | 1102 |
1103 } // namespace net | 1103 } // namespace net |
OLD | NEW |