Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(530)

Side by Side Diff: net/socket/transport_client_socket_pool_unittest.cc

Issue 8898036: base::Bind: Convert proxy_resolving_client_socket.[cc,h] and deps. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/transport_client_socket_pool.h" 5 #include "net/socket/transport_client_socket_pool.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
csilv 2011/12/14 20:10:19 #include base/bind.h, base/bind_helpers.h
James Hawkins 2011/12/14 20:59:05 Done.
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
11 #include "base/threading/platform_thread.h" 11 #include "base/threading/platform_thread.h"
12 #include "net/base/ip_endpoint.h" 12 #include "net/base/ip_endpoint.h"
13 #include "net/base/mock_host_resolver.h" 13 #include "net/base/mock_host_resolver.h"
14 #include "net/base/net_errors.h" 14 #include "net/base/net_errors.h"
15 #include "net/base/net_util.h" 15 #include "net/base/net_util.h"
16 #include "net/base/sys_addrinfo.h" 16 #include "net/base/sys_addrinfo.h"
17 #include "net/base/test_completion_callback.h" 17 #include "net/base/test_completion_callback.h"
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 ai = ai->ai_next; 494 ai = ai->ai_next;
495 EXPECT_EQ(AF_INET, ai->ai_family); 495 EXPECT_EQ(AF_INET, ai->ai_family);
496 ai = ai->ai_next; 496 ai = ai->ai_next;
497 EXPECT_EQ(AF_INET6, ai->ai_family); 497 EXPECT_EQ(AF_INET6, ai->ai_family);
498 ai = ai->ai_next; 498 ai = ai->ai_next;
499 EXPECT_EQ(AF_INET6, ai->ai_family); 499 EXPECT_EQ(AF_INET6, ai->ai_family);
500 EXPECT_TRUE(ai->ai_next == NULL); 500 EXPECT_TRUE(ai->ai_next == NULL);
501 } 501 }
502 502
503 TEST_F(TransportClientSocketPoolTest, Basic) { 503 TEST_F(TransportClientSocketPoolTest, Basic) {
504 TestOldCompletionCallback callback; 504 TestCompletionCallback callback;
505 ClientSocketHandle handle; 505 ClientSocketHandle handle;
506 int rv = handle.Init("a", low_params_, LOW, &callback, &pool_, BoundNetLog()); 506 int rv = handle.Init("a", low_params_, LOW, callback.callback(), &pool_,
507 BoundNetLog());
507 EXPECT_EQ(ERR_IO_PENDING, rv); 508 EXPECT_EQ(ERR_IO_PENDING, rv);
508 EXPECT_FALSE(handle.is_initialized()); 509 EXPECT_FALSE(handle.is_initialized());
509 EXPECT_FALSE(handle.socket()); 510 EXPECT_FALSE(handle.socket());
510 511
511 EXPECT_EQ(OK, callback.WaitForResult()); 512 EXPECT_EQ(OK, callback.WaitForResult());
512 EXPECT_TRUE(handle.is_initialized()); 513 EXPECT_TRUE(handle.is_initialized());
513 EXPECT_TRUE(handle.socket()); 514 EXPECT_TRUE(handle.socket());
514 515
515 handle.Reset(); 516 handle.Reset();
516 } 517 }
517 518
518 TEST_F(TransportClientSocketPoolTest, InitHostResolutionFailure) { 519 TEST_F(TransportClientSocketPoolTest, InitHostResolutionFailure) {
519 host_resolver_->rules()->AddSimulatedFailure("unresolvable.host.name"); 520 host_resolver_->rules()->AddSimulatedFailure("unresolvable.host.name");
520 TestOldCompletionCallback callback; 521 TestCompletionCallback callback;
521 ClientSocketHandle handle; 522 ClientSocketHandle handle;
522 HostPortPair host_port_pair("unresolvable.host.name", 80); 523 HostPortPair host_port_pair("unresolvable.host.name", 80);
523 scoped_refptr<TransportSocketParams> dest(new TransportSocketParams( 524 scoped_refptr<TransportSocketParams> dest(new TransportSocketParams(
524 host_port_pair, kDefaultPriority, false, false)); 525 host_port_pair, kDefaultPriority, false, false));
525 EXPECT_EQ(ERR_IO_PENDING, 526 EXPECT_EQ(ERR_IO_PENDING,
526 handle.Init("a", dest, kDefaultPriority, &callback, &pool_, 527 handle.Init("a", dest, kDefaultPriority, callback.callback(),
527 BoundNetLog())); 528 &pool_, BoundNetLog()));
528 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, callback.WaitForResult()); 529 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, callback.WaitForResult());
529 } 530 }
530 531
531 TEST_F(TransportClientSocketPoolTest, InitConnectionFailure) { 532 TEST_F(TransportClientSocketPoolTest, InitConnectionFailure) {
532 client_socket_factory_.set_client_socket_type( 533 client_socket_factory_.set_client_socket_type(
533 MockClientSocketFactory::MOCK_FAILING_CLIENT_SOCKET); 534 MockClientSocketFactory::MOCK_FAILING_CLIENT_SOCKET);
534 TestOldCompletionCallback callback; 535 TestCompletionCallback callback;
535 ClientSocketHandle handle; 536 ClientSocketHandle handle;
536 EXPECT_EQ(ERR_IO_PENDING, handle.Init("a", params_, kDefaultPriority, 537 EXPECT_EQ(ERR_IO_PENDING,
537 &callback, &pool_, BoundNetLog())); 538 handle.Init("a", params_, kDefaultPriority, callback.callback(),
539 &pool_, BoundNetLog()));
538 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult()); 540 EXPECT_EQ(ERR_CONNECTION_FAILED, callback.WaitForResult());
539 541
540 // Make the host resolutions complete synchronously this time. 542 // Make the host resolutions complete synchronously this time.
541 host_resolver_->set_synchronous_mode(true); 543 host_resolver_->set_synchronous_mode(true);
542 EXPECT_EQ(ERR_CONNECTION_FAILED, handle.Init("a", params_, 544 EXPECT_EQ(ERR_CONNECTION_FAILED,
543 kDefaultPriority, &callback, 545 handle.Init("a", params_, kDefaultPriority, callback.callback(),
544 &pool_, BoundNetLog())); 546 &pool_, BoundNetLog()));
545 } 547 }
546 548
547 TEST_F(TransportClientSocketPoolTest, PendingRequests) { 549 TEST_F(TransportClientSocketPoolTest, PendingRequests) {
548 // First request finishes asynchronously. 550 // First request finishes asynchronously.
549 EXPECT_EQ(ERR_IO_PENDING, StartRequest("a", kDefaultPriority)); 551 EXPECT_EQ(ERR_IO_PENDING, StartRequest("a", kDefaultPriority));
550 EXPECT_EQ(OK, (*requests())[0]->WaitForResult()); 552 EXPECT_EQ(OK, (*requests())[0]->WaitForResult());
551 553
552 // Make all subsequent host resolutions complete synchronously. 554 // Make all subsequent host resolutions complete synchronously.
553 host_resolver_->set_synchronous_mode(true); 555 host_resolver_->set_synchronous_mode(true);
554 556
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 client_socket_factory_.allocation_count()); 639 client_socket_factory_.allocation_count());
638 640
639 // First asynchronous request, and then last 5 pending requests. 641 // First asynchronous request, and then last 5 pending requests.
640 EXPECT_EQ(6U, completion_count()); 642 EXPECT_EQ(6U, completion_count());
641 } 643 }
642 644
643 // This test will start up a RequestSocket() and then immediately Cancel() it. 645 // This test will start up a RequestSocket() and then immediately Cancel() it.
644 // The pending host resolution will eventually complete, and destroy the 646 // The pending host resolution will eventually complete, and destroy the
645 // ClientSocketPool which will crash if the group was not cleared properly. 647 // ClientSocketPool which will crash if the group was not cleared properly.
646 TEST_F(TransportClientSocketPoolTest, CancelRequestClearGroup) { 648 TEST_F(TransportClientSocketPoolTest, CancelRequestClearGroup) {
647 TestOldCompletionCallback callback; 649 TestCompletionCallback callback;
648 ClientSocketHandle handle; 650 ClientSocketHandle handle;
649 EXPECT_EQ(ERR_IO_PENDING, handle.Init("a", params_, kDefaultPriority, 651 EXPECT_EQ(ERR_IO_PENDING,
650 &callback, &pool_, BoundNetLog())); 652 handle.Init("a", params_, kDefaultPriority, callback.callback(),
653 &pool_, BoundNetLog()));
651 handle.Reset(); 654 handle.Reset();
652 } 655 }
653 656
654 TEST_F(TransportClientSocketPoolTest, TwoRequestsCancelOne) { 657 TEST_F(TransportClientSocketPoolTest, TwoRequestsCancelOne) {
655 ClientSocketHandle handle; 658 ClientSocketHandle handle;
656 TestOldCompletionCallback callback; 659 TestCompletionCallback callback;
657 ClientSocketHandle handle2; 660 ClientSocketHandle handle2;
658 TestOldCompletionCallback callback2; 661 TestCompletionCallback callback2;
659 662
660 EXPECT_EQ(ERR_IO_PENDING, handle.Init("a", params_, kDefaultPriority, 663 EXPECT_EQ(ERR_IO_PENDING,
661 &callback, &pool_, BoundNetLog())); 664 handle.Init("a", params_, kDefaultPriority, callback.callback(),
662 EXPECT_EQ(ERR_IO_PENDING, handle2.Init("a", params_, kDefaultPriority, 665 &pool_, BoundNetLog()));
663 &callback2, &pool_, BoundNetLog())); 666 EXPECT_EQ(ERR_IO_PENDING,
667 handle2.Init("a", params_, kDefaultPriority, callback2.callback(),
668 &pool_, BoundNetLog()));
664 669
665 handle.Reset(); 670 handle.Reset();
666 671
667 EXPECT_EQ(OK, callback2.WaitForResult()); 672 EXPECT_EQ(OK, callback2.WaitForResult());
668 handle2.Reset(); 673 handle2.Reset();
669 } 674 }
670 675
671 TEST_F(TransportClientSocketPoolTest, ConnectCancelConnect) { 676 TEST_F(TransportClientSocketPoolTest, ConnectCancelConnect) {
672 client_socket_factory_.set_client_socket_type( 677 client_socket_factory_.set_client_socket_type(
673 MockClientSocketFactory::MOCK_PENDING_CLIENT_SOCKET); 678 MockClientSocketFactory::MOCK_PENDING_CLIENT_SOCKET);
674 ClientSocketHandle handle; 679 ClientSocketHandle handle;
675 TestOldCompletionCallback callback; 680 TestCompletionCallback callback;
676 EXPECT_EQ(ERR_IO_PENDING, handle.Init("a", params_, kDefaultPriority, 681 EXPECT_EQ(ERR_IO_PENDING,
677 &callback, &pool_, BoundNetLog())); 682 handle.Init("a", params_, kDefaultPriority, callback.callback(),
683 &pool_, BoundNetLog()));
678 684
679 handle.Reset(); 685 handle.Reset();
680 686
681 TestOldCompletionCallback callback2; 687 TestCompletionCallback callback2;
682 EXPECT_EQ(ERR_IO_PENDING, handle.Init("a", params_, kDefaultPriority, 688 EXPECT_EQ(ERR_IO_PENDING,
683 &callback2, &pool_, BoundNetLog())); 689 handle.Init("a", params_, kDefaultPriority, callback2.callback(),
690 &pool_, BoundNetLog()));
684 691
685 host_resolver_->set_synchronous_mode(true); 692 host_resolver_->set_synchronous_mode(true);
686 // At this point, handle has two ConnectingSockets out for it. Due to the 693 // At this point, handle has two ConnectingSockets out for it. Due to the
687 // setting the mock resolver into synchronous mode, the host resolution for 694 // setting the mock resolver into synchronous mode, the host resolution for
688 // both will return in the same loop of the MessageLoop. The client socket 695 // both will return in the same loop of the MessageLoop. The client socket
689 // is a pending socket, so the Connect() will asynchronously complete on the 696 // is a pending socket, so the Connect() will asynchronously complete on the
690 // next loop of the MessageLoop. That means that the first 697 // next loop of the MessageLoop. That means that the first
691 // ConnectingSocket will enter OnIOComplete, and then the second one will. 698 // ConnectingSocket will enter OnIOComplete, and then the second one will.
692 // If the first one is not cancelled, it will advance the load state, and 699 // If the first one is not cancelled, it will advance the load state, and
693 // then the second one will crash. 700 // then the second one will crash.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
750 EXPECT_EQ(11, GetOrderOfRequest(12)); 757 EXPECT_EQ(11, GetOrderOfRequest(12));
751 EXPECT_EQ(8, GetOrderOfRequest(13)); 758 EXPECT_EQ(8, GetOrderOfRequest(13));
752 EXPECT_EQ(12, GetOrderOfRequest(14)); 759 EXPECT_EQ(12, GetOrderOfRequest(14));
753 EXPECT_EQ(13, GetOrderOfRequest(15)); 760 EXPECT_EQ(13, GetOrderOfRequest(15));
754 EXPECT_EQ(15, GetOrderOfRequest(16)); 761 EXPECT_EQ(15, GetOrderOfRequest(16));
755 762
756 // Make sure we test order of all requests made. 763 // Make sure we test order of all requests made.
757 EXPECT_EQ(ClientSocketPoolTest::kIndexOutOfBounds, GetOrderOfRequest(17)); 764 EXPECT_EQ(ClientSocketPoolTest::kIndexOutOfBounds, GetOrderOfRequest(17));
758 } 765 }
759 766
760 class RequestSocketCallback : public CallbackRunner< Tuple1<int> > { 767 class RequestSocketCallback : public TestCompletionCallbackBase {
761 public: 768 public:
762 RequestSocketCallback(ClientSocketHandle* handle, 769 RequestSocketCallback(ClientSocketHandle* handle,
763 TransportClientSocketPool* pool) 770 TransportClientSocketPool* pool)
764 : handle_(handle), 771 : handle_(handle),
765 pool_(pool), 772 pool_(pool),
766 within_callback_(false) {} 773 within_callback_(false),
774 ALLOW_THIS_IN_INITIALIZER_LIST(callback_(
775 base::Bind(&RequestSocketCallback::OnComplete,
776 base::Unretained(this)))) {
777 }
767 778
768 virtual void RunWithParams(const Tuple1<int>& params) { 779 virtual ~RequestSocketCallback() {}
769 callback_.RunWithParams(params); 780
770 ASSERT_EQ(OK, params.a); 781 const CompletionCallback& callback() const { return callback_; }
782
783 private:
784 void OnComplete(int result) {
785 ASSERT_EQ(OK, result);
771 786
772 if (!within_callback_) { 787 if (!within_callback_) {
773 // Don't allow reuse of the socket. Disconnect it and then release it and 788 // Don't allow reuse of the socket. Disconnect it and then release it and
774 // run through the MessageLoop once to get it completely released. 789 // run through the MessageLoop once to get it completely released.
775 handle_->socket()->Disconnect(); 790 handle_->socket()->Disconnect();
776 handle_->Reset(); 791 handle_->Reset();
777 { 792 {
778 MessageLoop::ScopedNestableTaskAllower nestable( 793 MessageLoop::ScopedNestableTaskAllower nestable(
779 MessageLoop::current()); 794 MessageLoop::current());
780 MessageLoop::current()->RunAllPending(); 795 MessageLoop::current()->RunAllPending();
781 } 796 }
782 within_callback_ = true; 797 within_callback_ = true;
783 scoped_refptr<TransportSocketParams> dest(new TransportSocketParams( 798 scoped_refptr<TransportSocketParams> dest(new TransportSocketParams(
784 HostPortPair("www.google.com", 80), LOWEST, false, false)); 799 HostPortPair("www.google.com", 80), LOWEST, false, false));
785 int rv = handle_->Init("a", dest, LOWEST, this, pool_, BoundNetLog()); 800 int rv = handle_->Init("a", dest, LOWEST, callback(), pool_,
801 BoundNetLog());
786 EXPECT_EQ(OK, rv); 802 EXPECT_EQ(OK, rv);
787 } 803 }
788 } 804 }
789 805
790 int WaitForResult() {
791 return callback_.WaitForResult();
792 }
793
794 private:
795 ClientSocketHandle* const handle_; 806 ClientSocketHandle* const handle_;
796 TransportClientSocketPool* const pool_; 807 TransportClientSocketPool* const pool_;
797 bool within_callback_; 808 bool within_callback_;
798 TestOldCompletionCallback callback_; 809 CompletionCallback callback_;
810
811 DISALLOW_COPY_AND_ASSIGN(RequestSocketCallback);
799 }; 812 };
800 813
801 TEST_F(TransportClientSocketPoolTest, RequestTwice) { 814 TEST_F(TransportClientSocketPoolTest, RequestTwice) {
802 ClientSocketHandle handle; 815 ClientSocketHandle handle;
803 RequestSocketCallback callback(&handle, &pool_); 816 RequestSocketCallback callback(&handle, &pool_);
804 scoped_refptr<TransportSocketParams> dest(new TransportSocketParams( 817 scoped_refptr<TransportSocketParams> dest(new TransportSocketParams(
805 HostPortPair("www.google.com", 80), LOWEST, false, false)); 818 HostPortPair("www.google.com", 80), LOWEST, false, false));
806 int rv = handle.Init("a", dest, LOWEST, &callback, &pool_, 819 int rv = handle.Init("a", dest, LOWEST, callback.callback(), &pool_,
807 BoundNetLog()); 820 BoundNetLog());
808 ASSERT_EQ(ERR_IO_PENDING, rv); 821 ASSERT_EQ(ERR_IO_PENDING, rv);
809 822
810 // The callback is going to request "www.google.com". We want it to complete 823 // The callback is going to request "www.google.com". We want it to complete
811 // synchronously this time. 824 // synchronously this time.
812 host_resolver_->set_synchronous_mode(true); 825 host_resolver_->set_synchronous_mode(true);
813 826
814 EXPECT_EQ(OK, callback.WaitForResult()); 827 EXPECT_EQ(OK, callback.WaitForResult());
815 828
816 handle.Reset(); 829 handle.Reset();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 870
858 // Queue up all the requests 871 // Queue up all the requests
859 for (int i = 0; i < kNumRequests; i++) 872 for (int i = 0; i < kNumRequests; i++)
860 EXPECT_EQ(ERR_IO_PENDING, StartRequest("a", kDefaultPriority)); 873 EXPECT_EQ(ERR_IO_PENDING, StartRequest("a", kDefaultPriority));
861 874
862 for (int i = 0; i < kNumRequests; i++) 875 for (int i = 0; i < kNumRequests; i++)
863 EXPECT_EQ(ERR_CONNECTION_FAILED, (*requests())[i]->WaitForResult()); 876 EXPECT_EQ(ERR_CONNECTION_FAILED, (*requests())[i]->WaitForResult());
864 } 877 }
865 878
866 TEST_F(TransportClientSocketPoolTest, ResetIdleSocketsOnIPAddressChange) { 879 TEST_F(TransportClientSocketPoolTest, ResetIdleSocketsOnIPAddressChange) {
867 TestOldCompletionCallback callback; 880 TestCompletionCallback callback;
868 ClientSocketHandle handle; 881 ClientSocketHandle handle;
869 int rv = handle.Init("a", low_params_, LOW, &callback, &pool_, BoundNetLog()); 882 int rv = handle.Init("a", low_params_, LOW, callback.callback(), &pool_,
883 BoundNetLog());
870 EXPECT_EQ(ERR_IO_PENDING, rv); 884 EXPECT_EQ(ERR_IO_PENDING, rv);
871 EXPECT_FALSE(handle.is_initialized()); 885 EXPECT_FALSE(handle.is_initialized());
872 EXPECT_FALSE(handle.socket()); 886 EXPECT_FALSE(handle.socket());
873 887
874 EXPECT_EQ(OK, callback.WaitForResult()); 888 EXPECT_EQ(OK, callback.WaitForResult());
875 EXPECT_TRUE(handle.is_initialized()); 889 EXPECT_TRUE(handle.is_initialized());
876 EXPECT_TRUE(handle.socket()); 890 EXPECT_TRUE(handle.socket());
877 891
878 handle.Reset(); 892 handle.Reset();
879 893
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 MockClientSocketFactory::ClientSocketType* cases[2] = { 926 MockClientSocketFactory::ClientSocketType* cases[2] = {
913 case1_types, 927 case1_types,
914 case2_types 928 case2_types
915 }; 929 };
916 930
917 for (size_t index = 0; index < arraysize(cases); ++index) { 931 for (size_t index = 0; index < arraysize(cases); ++index) {
918 client_socket_factory_.set_client_socket_types(cases[index], 2); 932 client_socket_factory_.set_client_socket_types(cases[index], 2);
919 933
920 EXPECT_EQ(0, pool_.IdleSocketCount()); 934 EXPECT_EQ(0, pool_.IdleSocketCount());
921 935
922 TestOldCompletionCallback callback; 936 TestCompletionCallback callback;
923 ClientSocketHandle handle; 937 ClientSocketHandle handle;
924 int rv = handle.Init("b", low_params_, LOW, &callback, &pool_, 938 int rv = handle.Init("b", low_params_, LOW, callback.callback(), &pool_,
925 BoundNetLog()); 939 BoundNetLog());
926 EXPECT_EQ(ERR_IO_PENDING, rv); 940 EXPECT_EQ(ERR_IO_PENDING, rv);
927 EXPECT_FALSE(handle.is_initialized()); 941 EXPECT_FALSE(handle.is_initialized());
928 EXPECT_FALSE(handle.socket()); 942 EXPECT_FALSE(handle.socket());
929 943
930 // Create the first socket, set the timer. 944 // Create the first socket, set the timer.
931 MessageLoop::current()->RunAllPending(); 945 MessageLoop::current()->RunAllPending();
932 946
933 // Wait for the backup socket timer to fire. 947 // Wait for the backup socket timer to fire.
934 base::PlatformThread::Sleep( 948 base::PlatformThread::Sleep(
(...skipping 19 matching lines...) Expand all
954 // of the backup socket, but then we cancelled the request after that. 968 // of the backup socket, but then we cancelled the request after that.
955 TEST_F(TransportClientSocketPoolTest, BackupSocketCancel) { 969 TEST_F(TransportClientSocketPoolTest, BackupSocketCancel) {
956 client_socket_factory_.set_client_socket_type( 970 client_socket_factory_.set_client_socket_type(
957 MockClientSocketFactory::MOCK_STALLED_CLIENT_SOCKET); 971 MockClientSocketFactory::MOCK_STALLED_CLIENT_SOCKET);
958 972
959 enum { CANCEL_BEFORE_WAIT, CANCEL_AFTER_WAIT }; 973 enum { CANCEL_BEFORE_WAIT, CANCEL_AFTER_WAIT };
960 974
961 for (int index = CANCEL_BEFORE_WAIT; index < CANCEL_AFTER_WAIT; ++index) { 975 for (int index = CANCEL_BEFORE_WAIT; index < CANCEL_AFTER_WAIT; ++index) {
962 EXPECT_EQ(0, pool_.IdleSocketCount()); 976 EXPECT_EQ(0, pool_.IdleSocketCount());
963 977
964 TestOldCompletionCallback callback; 978 TestCompletionCallback callback;
965 ClientSocketHandle handle; 979 ClientSocketHandle handle;
966 int rv = handle.Init("c", low_params_, LOW, &callback, &pool_, 980 int rv = handle.Init("c", low_params_, LOW, callback.callback(), &pool_,
967 BoundNetLog()); 981 BoundNetLog());
968 EXPECT_EQ(ERR_IO_PENDING, rv); 982 EXPECT_EQ(ERR_IO_PENDING, rv);
969 EXPECT_FALSE(handle.is_initialized()); 983 EXPECT_FALSE(handle.is_initialized());
970 EXPECT_FALSE(handle.socket()); 984 EXPECT_FALSE(handle.socket());
971 985
972 // Create the first socket, set the timer. 986 // Create the first socket, set the timer.
973 MessageLoop::current()->RunAllPending(); 987 MessageLoop::current()->RunAllPending();
974 988
975 if (index == CANCEL_AFTER_WAIT) { 989 if (index == CANCEL_AFTER_WAIT) {
976 // Wait for the backup socket timer to fire. 990 // Wait for the backup socket timer to fire.
(...skipping 22 matching lines...) Expand all
999 // The first socket will not connect. 1013 // The first socket will not connect.
1000 MockClientSocketFactory::MOCK_STALLED_CLIENT_SOCKET, 1014 MockClientSocketFactory::MOCK_STALLED_CLIENT_SOCKET,
1001 // The second socket will fail immediately. 1015 // The second socket will fail immediately.
1002 MockClientSocketFactory::MOCK_FAILING_CLIENT_SOCKET 1016 MockClientSocketFactory::MOCK_FAILING_CLIENT_SOCKET
1003 }; 1017 };
1004 1018
1005 client_socket_factory_.set_client_socket_types(case_types, 2); 1019 client_socket_factory_.set_client_socket_types(case_types, 2);
1006 1020
1007 EXPECT_EQ(0, pool_.IdleSocketCount()); 1021 EXPECT_EQ(0, pool_.IdleSocketCount());
1008 1022
1009 TestOldCompletionCallback callback; 1023 TestCompletionCallback callback;
1010 ClientSocketHandle handle; 1024 ClientSocketHandle handle;
1011 int rv = handle.Init("b", low_params_, LOW, &callback, &pool_, BoundNetLog()); 1025 int rv = handle.Init("b", low_params_, LOW, callback.callback(), &pool_,
1026 BoundNetLog());
1012 EXPECT_EQ(ERR_IO_PENDING, rv); 1027 EXPECT_EQ(ERR_IO_PENDING, rv);
1013 EXPECT_FALSE(handle.is_initialized()); 1028 EXPECT_FALSE(handle.is_initialized());
1014 EXPECT_FALSE(handle.socket()); 1029 EXPECT_FALSE(handle.socket());
1015 1030
1016 // Create the first socket, set the timer. 1031 // Create the first socket, set the timer.
1017 MessageLoop::current()->RunAllPending(); 1032 MessageLoop::current()->RunAllPending();
1018 1033
1019 // Wait for the backup socket timer to fire. 1034 // Wait for the backup socket timer to fire.
1020 base::PlatformThread::Sleep(ClientSocketPool::kMaxConnectRetryIntervalMs); 1035 base::PlatformThread::Sleep(ClientSocketPool::kMaxConnectRetryIntervalMs);
1021 1036
(...skipping 23 matching lines...) Expand all
1045 MockClientSocketFactory::MOCK_DELAYED_CLIENT_SOCKET, 1060 MockClientSocketFactory::MOCK_DELAYED_CLIENT_SOCKET,
1046 // The second socket will not connect. 1061 // The second socket will not connect.
1047 MockClientSocketFactory::MOCK_FAILING_CLIENT_SOCKET 1062 MockClientSocketFactory::MOCK_FAILING_CLIENT_SOCKET
1048 }; 1063 };
1049 1064
1050 client_socket_factory_.set_client_socket_types(case_types, 2); 1065 client_socket_factory_.set_client_socket_types(case_types, 2);
1051 client_socket_factory_.set_delay_ms(5000); 1066 client_socket_factory_.set_delay_ms(5000);
1052 1067
1053 EXPECT_EQ(0, pool_.IdleSocketCount()); 1068 EXPECT_EQ(0, pool_.IdleSocketCount());
1054 1069
1055 TestOldCompletionCallback callback; 1070 TestCompletionCallback callback;
1056 ClientSocketHandle handle; 1071 ClientSocketHandle handle;
1057 int rv = handle.Init("b", low_params_, LOW, &callback, &pool_, BoundNetLog()); 1072 int rv = handle.Init("b", low_params_, LOW, callback.callback(), &pool_,
1073 BoundNetLog());
1058 EXPECT_EQ(ERR_IO_PENDING, rv); 1074 EXPECT_EQ(ERR_IO_PENDING, rv);
1059 EXPECT_FALSE(handle.is_initialized()); 1075 EXPECT_FALSE(handle.is_initialized());
1060 EXPECT_FALSE(handle.socket()); 1076 EXPECT_FALSE(handle.socket());
1061 1077
1062 // Create the first socket, set the timer. 1078 // Create the first socket, set the timer.
1063 MessageLoop::current()->RunAllPending(); 1079 MessageLoop::current()->RunAllPending();
1064 1080
1065 // Wait for the backup socket timer to fire. 1081 // Wait for the backup socket timer to fire.
1066 base::PlatformThread::Sleep(ClientSocketPool::kMaxConnectRetryIntervalMs); 1082 base::PlatformThread::Sleep(ClientSocketPool::kMaxConnectRetryIntervalMs);
1067 1083
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1099 // This is the IPv4 socket. 1115 // This is the IPv4 socket.
1100 MockClientSocketFactory::MOCK_PENDING_CLIENT_SOCKET 1116 MockClientSocketFactory::MOCK_PENDING_CLIENT_SOCKET
1101 }; 1117 };
1102 1118
1103 client_socket_factory_.set_client_socket_types(case_types, 2); 1119 client_socket_factory_.set_client_socket_types(case_types, 2);
1104 1120
1105 // Resolve an AddressList with a IPv6 address first and then a IPv4 address. 1121 // Resolve an AddressList with a IPv6 address first and then a IPv4 address.
1106 host_resolver_->rules()->AddIPLiteralRule( 1122 host_resolver_->rules()->AddIPLiteralRule(
1107 "*", "2:abcd::3:4:ff,2.2.2.2", ""); 1123 "*", "2:abcd::3:4:ff,2.2.2.2", "");
1108 1124
1109 TestOldCompletionCallback callback; 1125 TestCompletionCallback callback;
1110 ClientSocketHandle handle; 1126 ClientSocketHandle handle;
1111 int rv = handle.Init("a", low_params_, LOW, &callback, &pool, BoundNetLog()); 1127 int rv = handle.Init("a", low_params_, LOW, callback.callback(), &pool,
1128 BoundNetLog());
1112 EXPECT_EQ(ERR_IO_PENDING, rv); 1129 EXPECT_EQ(ERR_IO_PENDING, rv);
1113 EXPECT_FALSE(handle.is_initialized()); 1130 EXPECT_FALSE(handle.is_initialized());
1114 EXPECT_FALSE(handle.socket()); 1131 EXPECT_FALSE(handle.socket());
1115 1132
1116 EXPECT_EQ(OK, callback.WaitForResult()); 1133 EXPECT_EQ(OK, callback.WaitForResult());
1117 EXPECT_TRUE(handle.is_initialized()); 1134 EXPECT_TRUE(handle.is_initialized());
1118 EXPECT_TRUE(handle.socket()); 1135 EXPECT_TRUE(handle.socket());
1119 IPEndPoint endpoint; 1136 IPEndPoint endpoint;
1120 handle.socket()->GetLocalAddress(&endpoint); 1137 handle.socket()->GetLocalAddress(&endpoint);
1121 EXPECT_EQ(kIPv4AddressSize, endpoint.address().size()); 1138 EXPECT_EQ(kIPv4AddressSize, endpoint.address().size());
(...skipping 21 matching lines...) Expand all
1143 }; 1160 };
1144 1161
1145 client_socket_factory_.set_client_socket_types(case_types, 2); 1162 client_socket_factory_.set_client_socket_types(case_types, 2);
1146 client_socket_factory_.set_delay_ms( 1163 client_socket_factory_.set_delay_ms(
1147 TransportConnectJob::kIPv6FallbackTimerInMs + 50); 1164 TransportConnectJob::kIPv6FallbackTimerInMs + 50);
1148 1165
1149 // Resolve an AddressList with a IPv6 address first and then a IPv4 address. 1166 // Resolve an AddressList with a IPv6 address first and then a IPv4 address.
1150 host_resolver_->rules()->AddIPLiteralRule( 1167 host_resolver_->rules()->AddIPLiteralRule(
1151 "*", "2:abcd::3:4:ff,2.2.2.2", ""); 1168 "*", "2:abcd::3:4:ff,2.2.2.2", "");
1152 1169
1153 TestOldCompletionCallback callback; 1170 TestCompletionCallback callback;
1154 ClientSocketHandle handle; 1171 ClientSocketHandle handle;
1155 int rv = handle.Init("a", low_params_, LOW, &callback, &pool, BoundNetLog()); 1172 int rv = handle.Init("a", low_params_, LOW, callback.callback(), &pool,
1173 BoundNetLog());
1156 EXPECT_EQ(ERR_IO_PENDING, rv); 1174 EXPECT_EQ(ERR_IO_PENDING, rv);
1157 EXPECT_FALSE(handle.is_initialized()); 1175 EXPECT_FALSE(handle.is_initialized());
1158 EXPECT_FALSE(handle.socket()); 1176 EXPECT_FALSE(handle.socket());
1159 1177
1160 EXPECT_EQ(OK, callback.WaitForResult()); 1178 EXPECT_EQ(OK, callback.WaitForResult());
1161 EXPECT_TRUE(handle.is_initialized()); 1179 EXPECT_TRUE(handle.is_initialized());
1162 EXPECT_TRUE(handle.socket()); 1180 EXPECT_TRUE(handle.socket());
1163 IPEndPoint endpoint; 1181 IPEndPoint endpoint;
1164 handle.socket()->GetLocalAddress(&endpoint); 1182 handle.socket()->GetLocalAddress(&endpoint);
1165 EXPECT_EQ(kIPv6AddressSize, endpoint.address().size()); 1183 EXPECT_EQ(kIPv6AddressSize, endpoint.address().size());
(...skipping 10 matching lines...) Expand all
1176 &client_socket_factory_, 1194 &client_socket_factory_,
1177 NULL); 1195 NULL);
1178 1196
1179 client_socket_factory_.set_client_socket_type( 1197 client_socket_factory_.set_client_socket_type(
1180 MockClientSocketFactory::MOCK_DELAYED_CLIENT_SOCKET); 1198 MockClientSocketFactory::MOCK_DELAYED_CLIENT_SOCKET);
1181 1199
1182 // Resolve an AddressList with only IPv6 addresses. 1200 // Resolve an AddressList with only IPv6 addresses.
1183 host_resolver_->rules()->AddIPLiteralRule( 1201 host_resolver_->rules()->AddIPLiteralRule(
1184 "*", "2:abcd::3:4:ff,3:abcd::3:4:ff", ""); 1202 "*", "2:abcd::3:4:ff,3:abcd::3:4:ff", "");
1185 1203
1186 TestOldCompletionCallback callback; 1204 TestCompletionCallback callback;
1187 ClientSocketHandle handle; 1205 ClientSocketHandle handle;
1188 int rv = handle.Init("a", low_params_, LOW, &callback, &pool, BoundNetLog()); 1206 int rv = handle.Init("a", low_params_, LOW, callback.callback(), &pool,
1207 BoundNetLog());
1189 EXPECT_EQ(ERR_IO_PENDING, rv); 1208 EXPECT_EQ(ERR_IO_PENDING, rv);
1190 EXPECT_FALSE(handle.is_initialized()); 1209 EXPECT_FALSE(handle.is_initialized());
1191 EXPECT_FALSE(handle.socket()); 1210 EXPECT_FALSE(handle.socket());
1192 1211
1193 EXPECT_EQ(OK, callback.WaitForResult()); 1212 EXPECT_EQ(OK, callback.WaitForResult());
1194 EXPECT_TRUE(handle.is_initialized()); 1213 EXPECT_TRUE(handle.is_initialized());
1195 EXPECT_TRUE(handle.socket()); 1214 EXPECT_TRUE(handle.socket());
1196 IPEndPoint endpoint; 1215 IPEndPoint endpoint;
1197 handle.socket()->GetLocalAddress(&endpoint); 1216 handle.socket()->GetLocalAddress(&endpoint);
1198 EXPECT_EQ(kIPv6AddressSize, endpoint.address().size()); 1217 EXPECT_EQ(kIPv6AddressSize, endpoint.address().size());
(...skipping 10 matching lines...) Expand all
1209 &client_socket_factory_, 1228 &client_socket_factory_,
1210 NULL); 1229 NULL);
1211 1230
1212 client_socket_factory_.set_client_socket_type( 1231 client_socket_factory_.set_client_socket_type(
1213 MockClientSocketFactory::MOCK_DELAYED_CLIENT_SOCKET); 1232 MockClientSocketFactory::MOCK_DELAYED_CLIENT_SOCKET);
1214 1233
1215 // Resolve an AddressList with only IPv4 addresses. 1234 // Resolve an AddressList with only IPv4 addresses.
1216 host_resolver_->rules()->AddIPLiteralRule( 1235 host_resolver_->rules()->AddIPLiteralRule(
1217 "*", "1.1.1.1", ""); 1236 "*", "1.1.1.1", "");
1218 1237
1219 TestOldCompletionCallback callback; 1238 TestCompletionCallback callback;
1220 ClientSocketHandle handle; 1239 ClientSocketHandle handle;
1221 int rv = handle.Init("a", low_params_, LOW, &callback, &pool, BoundNetLog()); 1240 int rv = handle.Init("a", low_params_, LOW, callback.callback(), &pool,
1241 BoundNetLog());
1222 EXPECT_EQ(ERR_IO_PENDING, rv); 1242 EXPECT_EQ(ERR_IO_PENDING, rv);
1223 EXPECT_FALSE(handle.is_initialized()); 1243 EXPECT_FALSE(handle.is_initialized());
1224 EXPECT_FALSE(handle.socket()); 1244 EXPECT_FALSE(handle.socket());
1225 1245
1226 EXPECT_EQ(OK, callback.WaitForResult()); 1246 EXPECT_EQ(OK, callback.WaitForResult());
1227 EXPECT_TRUE(handle.is_initialized()); 1247 EXPECT_TRUE(handle.is_initialized());
1228 EXPECT_TRUE(handle.socket()); 1248 EXPECT_TRUE(handle.socket());
1229 IPEndPoint endpoint; 1249 IPEndPoint endpoint;
1230 handle.socket()->GetLocalAddress(&endpoint); 1250 handle.socket()->GetLocalAddress(&endpoint);
1231 EXPECT_EQ(kIPv4AddressSize, endpoint.address().size()); 1251 EXPECT_EQ(kIPv4AddressSize, endpoint.address().size());
1232 EXPECT_EQ(1, client_socket_factory_.allocation_count()); 1252 EXPECT_EQ(1, client_socket_factory_.allocation_count());
1233 } 1253 }
1234 1254
1235 } // namespace 1255 } // namespace
1236 1256
1237 } // namespace net 1257 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698