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

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

Powered by Google App Engine
This is Rietveld 408576698