summaryrefslogtreecommitdiffstats
path: root/net/socket/client_socket_pool_base_unittest.cc
Commit message (Collapse)AuthorAgeFilesLines
* Improve the display of LoadLogs when truncation occurs.eroman@chromium.org2009-11-061-11/+11
| | | | | | | | | | | | | | Rather than drop all subsequent entries, we now preserve the final entry that was appended to the log. This way, even if entries have been dropped, we can still infer what the total time was, and what the exit condition was. Also makes LoadLog take the bound as a required parameter. BUG=none TEST=LoadLogUtilTest.DisplayOfTruncated Review URL: http://codereview.chromium.org/363025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31274 0039d316-1c4b-4281-b951-d872f2087c98
* Second patch in making destructors of refcounted objects private.jam@chromium.org2009-11-051-0/+2
| | | | | | | | BUG=26749 Review URL: http://codereview.chromium.org/368001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31165 0039d316-1c4b-4281-b951-d872f2087c98
* Add LoadLog to ClientSocket::Connect().willchan@chromium.org2009-11-021-2/+2
| | | | | | | | TODO: Use LoadLog in FLIP code. Review URL: http://codereview.chromium.org/344026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30765 0039d316-1c4b-4281-b951-d872f2087c98
* This is a second attempt at submitting this changelist. The original one wasmarkus@chromium.org2009-10-131-11/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | http://codereview.chromium.org/196053 It turns out, since none of our tests abstract time correctly, unittests are very sensitive to subtle changes in timing. This made some of the valgrind tests on Linux fail, and unfortunately, neither my desktop nor the trybots could reproduce the problem reliably. As far as I can tell, all the (design) bugs are in the unittests. The browser is actually fine. Tweaked the code a little more. Will resubmit and carefully monitor the buildbots. Original change description follows: When converting between units of time or data types of different precision, we have to be careful to consistently round in the same direction. Timeout checks usually check if Now() is less or equal to a deadline in order to determine if a timeout has occurred. This correctly handles the case where actual sleep times are equal or longer than requested sleep times. But if we round down when setting the sleep delay, this can result in unnecessary and expensive looping. Make sure, we always round up when converting to a format with less precision. BUG=none TEST=none Review URL: http://codereview.chromium.org/257044 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28801 0039d316-1c4b-4281-b951-d872f2087c98
* Avoid potential "NULL used as int" warnings by changing ASSERT_EQ(NULL, ...) ↵pkasting@chromium.org2009-09-291-6/+3
| | | | | | | | | to ASSERT_TRUE(... == NULL). Patch by Jacob Mandelson (see http://codereview.chromium.org/202057 ), r=me. BUG=none TEST=none git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27511 0039d316-1c4b-4281-b951-d872f2087c98
* Roll back Markus's CL ( http://codereview.chromium.org/196053)jshin@chromium.org2009-09-251-28/+11
| | | | | | | | | BUG=none TEST=UI test and valgrind test pass TBR=markus Review URL: http://codereview.chromium.org/222031 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27160 0039d316-1c4b-4281-b951-d872f2087c98
* When converting between units of time or data types of different precision,markus@chromium.org2009-09-241-11/+28
| | | | | | | | | | | | | | | | | | | we have to be careful to consistently round in the same direction. Timeout checks usually check if Now() is less or equal to a deadline in order to determine if a timeout has occurred. This correctly handles the case where actual sleep times are equal or longer than requested sleep times. But if we round down when setting the sleep delay, this can result in unnecessary and expensive looping. Make sure, we always round up when converting to a format with less precision. BUG=none TEST=none Review URL: http://codereview.chromium.org/196053 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27146 0039d316-1c4b-4281-b951-d872f2087c98
* Add methods for setting socket buffers to the Socket mbelshe@google.com2009-09-091-1/+3
| | | | | | | | | | | | class. Also add a few stats counters for TCP read/write stats. BUG=none TEST=none Review URL: http://codereview.chromium.org/199048 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25803 0039d316-1c4b-4281-b951-d872f2087c98
* Make GetLoadState virtual in ConnectJob().willchan@chromium.org2009-09-011-2/+8
| | | | | | | | | This will be necessary for SSLClientSocketPool since the SSLConnectJob will contain a ClientSocketHandle for the TCPClientSocketPool. SSLConnectJob::GetLoadState() will forward to ClientSocketHandle::GetLoadState() if the SSLConnectJob is waiting on requesting a TCP socket. BUG=http://crbug.com/13289. Review URL: http://codereview.chromium.org/176024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25032 0039d316-1c4b-4281-b951-d872f2087c98
* Control the amount of time to leave an unused socket idle before closing it.willchan@chromium.org2009-08-291-1/+61
| | | | | | | | | | This adds constructor arguments for socket idle timeouts. This allows me to control it for testing, and also makes it possible to run experiments on how long to enable it for. Currently I've set the timeout for unused sockets to 10 seconds, since that will cover 90% of the TCP RSTs we're seeing. We can probably increase this, but I'm waiting on histogram data to decide what to change it to. BUG=http://crbug.com/18192 Review URL: http://codereview.chromium.org/176021 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24847 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Fix a ton of compiler warnings."tony@chromium.org2009-08-281-3/+3
| | | | | | | | | | | This reverts commit r24792. TBR=estade Review URL: http://codereview.chromium.org/179028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24796 0039d316-1c4b-4281-b951-d872f2087c98
* Fix a ton of compiler warnings.estade@chromium.org2009-08-281-3/+3
| | | | | | | | | | | | | | | Most of these are classes with virtual methods lacking virtual destructors or NULL used in non-pointer context. BUG=none TEST=app_unittests && base_unittests --gtest_filter=-ConditionVariableTest.LargeFastTaskTest patch by Jacob Mandelson <jlmjlm [at] gmail> http://codereview.chromium.org/171028/show git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24792 0039d316-1c4b-4281-b951-d872f2087c98
* Add instrumentation to ClientSocketPool, that writes to LoadLog.eroman@chromium.org2009-08-201-19/+153
| | | | | | | | BUG=http://crbug.com/14478 Review URL: http://codereview.chromium.org/174101 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23855 0039d316-1c4b-4281-b951-d872f2087c98
* Make ClientSocketHandle::Init() typesafe.willchan@chromium.org2009-08-191-89/+102
| | | | | | | | | | | Introduce a REGISTER_SOCKET_PARAMS_FOR_POOL macro to register valid SocketParams for a ClientSocketPool subtype. Update HttpNetworkSession's ClientSocketPool to return the concrete TCPClientSocketPool instead of the parent interface. Renamed the member variable&accessor. Updated tests. BUG=http://crbug.com/13289 Review URL: http://codereview.chromium.org/173018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23743 0039d316-1c4b-4281-b951-d872f2087c98
* Change ClientSocketHandle to take the pool as a parameter to Init() rather ↵willchan@chromium.org2009-08-181-93/+104
| | | | | | | | | | than the constructor. The purpose of this change is to allow ClientSocketHandle to be able to accept ClientSocketPools of different types, since we will want to pass a TCPClientSocketPool or an SSLClientSocketPool or whatever to it. BUG=http://crbug.com/13289 Review URL: http://codereview.chromium.org/171003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23629 0039d316-1c4b-4281-b951-d872f2087c98
* Make ClientSocketPool/ClientSocketPoolBase/ClientSocketHandle more generic.willchan@chromium.org2009-08-141-34/+32
| | | | | | | | | | | | | | | This is in preparation for creating an SSLClientSocketPool. ClientSocketPoolBase is now templated. Most of the implementation has moved to ClientSocketPoolBaseHelper which is not templated. In order to make this possible, ClientSocketPoolBaseHelper's internal data structures do not use the full concrete Request type, but rather use a pointer to Request. ClientSocketPoolBase takes a SocketParams as a template argument, primarily to allow RequestSocket to take a templated parameter that contains all the information necessary to connect the socket (be it TCP or SSL or whatever). ClientSocketPool::RequestSocket() and ClientSocketHandle::Init() have been templated as well to handle this case. I've left adding run-time type safety checks as a TODO. TEST=net_unittests BUG=http://crbug.com/13289 Review URL: http://codereview.chromium.org/160621 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23427 0039d316-1c4b-4281-b951-d872f2087c98
* LoadLog is used as an output parameter, reorder it to the last parameter.willchan@chromium.org2009-08-141-64/+64
| | | | | | Review URL: http://codereview.chromium.org/164531 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23419 0039d316-1c4b-4281-b951-d872f2087c98
* Add a "LoadLog" parameter to transactions, hostresolver, clientsocketpool ↵ericroman@google.com2009-08-121-52/+65
| | | | | | | | and proyxservice.This dependency comes from the parent URLRequest, and is used as a container for per-request profiling data.This change is strictly a no-op refactor -- the parameter is unused, and LoadLog does nothing.BUG=http://crbug.com/14478TEST=none -- just needs to compile and pass existing tests.DESIGN=<http://docs.google.com/Doc?id=dfhcnb2v_21gbtrcpr3&hl=en> Review URL: http://codereview.chromium.org/126303 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23127 0039d316-1c4b-4281-b951-d872f2087c98
* Make sure the socket is deleted when ConnectJob times out.willchan@chromium.org2009-08-061-1/+46
| | | | | | | | | | | | It's benign since ClientSocketPoolBase has a scoped_ptr that will delete it anyway, but it hits a DCHECK since ConnectJob::ReleaseSocket() should return NULL when the ConnectJob encountered an error. Update TestConnectJobDelegate to call ConnectJob::ReleaseSocket() and EXPECT on its value. Replicate the ConnectJob tests for the late binding case (doesn't add any extra coverage since we're not executing ClientSocketPoolBase code, just ConnectJob, but this way I don't accidentally delete necessary tests when I delete all the old tests after switching over completely to late binding). BUG=none TEST=net_unittests Review URL: http://codereview.chromium.org/160664 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22580 0039d316-1c4b-4281-b951-d872f2087c98
* Fix leak in ClientSocketPoolBaseTest. Don't create ConnectJobFactory unless ↵willchan@chromium.org2009-08-041-6/+5
| | | | | | | | needed. Review URL: http://codereview.chromium.org/159831 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22349 0039d316-1c4b-4281-b951-d872f2087c98
* Add timeouts for ConnectJobs. Limit ConnectJobs per group to number of ↵willchan@chromium.org2009-08-031-7/+107
| | | | | | | | | | Requests per group + 1. In the histograms for Net.SocketRequestTime, late binding has a much longer tail. This is presumably because I didn't implement timeouts and CancelRequest() never cancelled jobs. I'm limiting TCPConnectJobs to 60 seconds and cancelling jobs if there are too many more than there are requests. Review URL: http://codereview.chromium.org/160499 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22338 0039d316-1c4b-4281-b951-d872f2087c98
* Add timeouts for ConnectJobs. Limit ConnectJobs per group to number of ↵willchan@chromium.org2009-08-031-100/+7
| | | | | | | | | | Requests per group + 1. In the histograms for Net.SocketRequestTime, late binding has a much longer tail. This is presumably because I didn't implement timeouts and CancelRequest() never cancelled jobs. I'm limiting TCPConnectJobs to 30 seconds and cancelling jobs if there are too many more than there are requests. Review URL: http://codereview.chromium.org/160499 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22330 0039d316-1c4b-4281-b951-d872f2087c98
* Add timeouts for ConnectJobs. Limit ConnectJobs per group to number of ↵willchan@chromium.org2009-08-031-7/+100
| | | | | | | | | | Requests per group + 1. In the histograms for Net.SocketRequestTime, late binding has a much longer tail. This is presumably because I didn't implement timeouts and CancelRequest() never cancelled jobs. I'm limiting TCPConnectJobs to 30 seconds and cancelling jobs if there are too many more than there are requests. Review URL: http://codereview.chromium.org/160499 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22326 0039d316-1c4b-4281-b951-d872f2087c98
* Fix crash in client_socket_pool_base.cc.phajdan.jr@chromium.org2009-07-291-0/+71
| | | | | | | | | | | | | | | The CHECK that was being hit showed a real problem: group's IsEmpty should take into account the pending requests queue too. I also made IsEmpty check for connecting requests queue emptiness, so we can be sure that IsEmpty really means empty. TEST=Added a regression test ClientSocketPoolBaseTest.GroupWithPendingRequestsIsNotEmpty to net_unittests. http://crbug.com/17985 Review URL: http://codereview.chromium.org/159597 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21988 0039d316-1c4b-4281-b951-d872f2087c98
* Followup after socket tests refactoring http://codereview.chromium.org/155925phajdan.jr@chromium.org2009-07-291-77/+82
| | | | | | | | | | | | | - more complete checks for data validity - private data member with getter instead of public data member, eh - replace some magic numbers with more readable constants TEST=none http://crbug.com/17445 Review URL: http://codereview.chromium.org/159514 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21957 0039d316-1c4b-4281-b951-d872f2087c98
* Refactoring in socket pool unittests:phajdan.jr@chromium.org2009-07-231-156/+80
| | | | | | | | | | | | | - share more code - improve readability - help detect cases we don't test order of all requests made TEST=Covered by net_unittests. http://crbug.com/17445 Review URL: http://codereview.chromium.org/155925 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21456 0039d316-1c4b-4281-b951-d872f2087c98
* Limit total number of sockets in the system.phajdan.jr@chromium.org2009-07-221-72/+296
| | | | | | | | | | Based on Eric Roman's patch at http://codereview.chromium.org/62181 http://crbug.com/15093 Review URL: http://codereview.chromium.org/149027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21276 0039d316-1c4b-4281-b951-d872f2087c98
* Disable LoadState net unittest: it's flakeyagl@chromium.org2009-07-161-1/+1
| | | | | | | BUG=16881 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20820 0039d316-1c4b-4281-b951-d872f2087c98
* Refactorings surrounding HostResolver:ericroman@google.com2009-07-151-6/+5
| | | | | | | | | | | | | | | | | | | | | | (1) Extract HostResolver to an interface. The existing concrete implementation is now named HostResolverImpl. This makes it possible to create mocks with more complex behavior (i.e. choose via rules if response will be sync vs async). (2) Transform HostMapper into HostResolverProc. Conceptually HostResolverProc maps a hostname to a socket address, whereas HostMapper mapped a hostname to another hostname (so you were still at the mercy of the system's host resolver). With HostResolverProc you can specify the exact AddressList, making it possible to run tests requiring IPv6 socketaddrs on systems (like WinXP) that don't actually support it. (3) Add a MockHostResolver implementation of HostResolver. This replaces the [ScopedHostMapper + RuleBasedHostMapper + HostResolver] combo. It is less clunky and a bit more expressive. BUG=http://crbug.com/16452 R=willchan TEST=existing Review URL: http://codereview.chromium.org/149511 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20795 0039d316-1c4b-4281-b951-d872f2087c98
* Add support for late binding of sockets.willchan@chromium.org2009-07-151-5/+540
| | | | | | | | | | There are tests for this, but the code is not activated yet. The old behavior is maintained. I will follow up this patch with a change to enable an A/B test for this optimization. Credit to jar&mbelshe for the optimization idea. BUG=13289 TEST=Covered by new unit tests. Not activatable yet. Review URL: http://codereview.chromium.org/151190 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20735 0039d316-1c4b-4281-b951-d872f2087c98
* Refactoring needed before adding good unit tests for limiting total socket ↵phajdan.jr@chromium.org2009-07-141-119/+158
| | | | | | | | | | | count. TEST=Covered by net_unittests. http://crbug.com/15093 Review URL: http://codereview.chromium.org/149545 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20623 0039d316-1c4b-4281-b951-d872f2087c98
* Refactoring in client_socket_pool_base_unittest.cc.phajdan.jr@chromium.org2009-07-061-113/+84
| | | | | | | | | | | | This is a preparation to add tests for limiting total number of sockets. TEST=Covered by net_unittests. http://crbug.com/15093 Review URL: http://codereview.chromium.org/149159 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19975 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor ConnectJob and TCPConnectJob.willchan@chromium.org2009-07-011-17/+81
| | | | | | | | | | | ConnectJob will only call OnConnectJobComplete() on asynchronous completion. TCPConnectJob now uses DoLoop() internally. BUG=http://crbug.com/13289 TEST=none Review URL: http://codereview.chromium.org/151118 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19789 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor ClientSocketPoolBase to be testable without host resolution / tcp ↵willchan@chromium.org2009-06-301-252/+247
| | | | | | | | | | | connections. BUG=http://crbug.com/13289 TEST=none Review URL: http://codereview.chromium.org/147252 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19620 0039d316-1c4b-4281-b951-d872f2087c98
* Reset internal ClientSocketHandle state on Init() synchronous error (failure ↵willchan@chromium.org2009-06-261-1/+5
| | | | | | | | | | | to do so could lead to a crash). Also delete a CHECK that was asserting on possibly deleted memory. BUG=http://crbug.com/15207 TEST=See bug for repro. Review URL: http://codereview.chromium.org/147155 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19343 0039d316-1c4b-4281-b951-d872f2087c98
* svn cp net/socket/tcp_client_socket_pool_unittest.cc ↵willchan@chromium.org2009-06-241-0/+621
net/socket/client_socket_pool_base_unittest.cc In preparation for moving tests from tcp_client_socket_pool_unittest.cc to client_socket_pool_base_unittest.cc. Review URL: http://codereview.chromium.org/147101 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19163 0039d316-1c4b-4281-b951-d872f2087c98