| OLD | NEW | 
|---|
| 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/spdy/spdy_session.h" | 5 #include "net/spdy/spdy_session.h" | 
| 6 | 6 | 
| 7 #include "net/base/ip_endpoint.h" | 7 #include "net/base/ip_endpoint.h" | 
| 8 #include "net/spdy/spdy_io_buffer.h" | 8 #include "net/spdy/spdy_io_buffer.h" | 
| 9 #include "net/spdy/spdy_session_pool.h" | 9 #include "net/spdy/spdy_session_pool.h" | 
| 10 #include "net/spdy/spdy_stream.h" | 10 #include "net/spdy/spdy_stream.h" | 
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 135   scoped_refptr<SpdySession> session = | 135   scoped_refptr<SpdySession> session = | 
| 136       spdy_session_pool->Get(pair, BoundNetLog()); | 136       spdy_session_pool->Get(pair, BoundNetLog()); | 
| 137   EXPECT_TRUE(spdy_session_pool->HasSession(pair)); | 137   EXPECT_TRUE(spdy_session_pool->HasSession(pair)); | 
| 138 | 138 | 
| 139   scoped_refptr<TransportSocketParams> transport_params( | 139   scoped_refptr<TransportSocketParams> transport_params( | 
| 140       new TransportSocketParams(test_host_port_pair, | 140       new TransportSocketParams(test_host_port_pair, | 
| 141                                 MEDIUM, | 141                                 MEDIUM, | 
| 142                                 false, | 142                                 false, | 
| 143                                 false)); | 143                                 false)); | 
| 144   scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 144   scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 
| 145   EXPECT_EQ(OK, | 145   EXPECT_EQ(OK, connection->Init(test_host_port_pair.ToString(), | 
| 146             connection->Init(test_host_port_pair.ToString(), | 146                                  transport_params, MEDIUM, CompletionCallback(), | 
| 147                              transport_params, MEDIUM, | 147                                  http_session->GetTransportSocketPool(), | 
| 148                              NULL, http_session->GetTransportSocketPool(), | 148                                  BoundNetLog())); | 
| 149                              BoundNetLog())); |  | 
| 150   EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); | 149   EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); | 
| 151 | 150 | 
| 152   // Flush the SpdySession::OnReadComplete() task. | 151   // Flush the SpdySession::OnReadComplete() task. | 
| 153   MessageLoop::current()->RunAllPending(); | 152   MessageLoop::current()->RunAllPending(); | 
| 154 | 153 | 
| 155   EXPECT_FALSE(spdy_session_pool->HasSession(pair)); | 154   EXPECT_FALSE(spdy_session_pool->HasSession(pair)); | 
| 156 | 155 | 
| 157   scoped_refptr<SpdySession> session2 = | 156   scoped_refptr<SpdySession> session2 = | 
| 158       spdy_session_pool->Get(pair, BoundNetLog()); | 157       spdy_session_pool->Get(pair, BoundNetLog()); | 
| 159 | 158 | 
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 206       spdy_session_pool->Get(pair, BoundNetLog()); | 205       spdy_session_pool->Get(pair, BoundNetLog()); | 
| 207   EXPECT_TRUE(spdy_session_pool->HasSession(pair)); | 206   EXPECT_TRUE(spdy_session_pool->HasSession(pair)); | 
| 208 | 207 | 
| 209 | 208 | 
| 210   scoped_refptr<TransportSocketParams> transport_params( | 209   scoped_refptr<TransportSocketParams> transport_params( | 
| 211       new TransportSocketParams(test_host_port_pair, | 210       new TransportSocketParams(test_host_port_pair, | 
| 212                                 MEDIUM, | 211                                 MEDIUM, | 
| 213                                 false, | 212                                 false, | 
| 214                                 false)); | 213                                 false)); | 
| 215   scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 214   scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 
| 216   EXPECT_EQ(OK, | 215   EXPECT_EQ(OK, connection->Init(test_host_port_pair.ToString(), | 
| 217             connection->Init(test_host_port_pair.ToString(), | 216                                  transport_params, MEDIUM, CompletionCallback(), | 
| 218                              transport_params, | 217                                  http_session->GetTransportSocketPool(), | 
| 219                              MEDIUM, | 218                                  BoundNetLog())); | 
| 220                              NULL, |  | 
| 221                              http_session->GetTransportSocketPool(), |  | 
| 222                              BoundNetLog())); |  | 
| 223   EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); | 219   EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); | 
| 224 | 220 | 
| 225   scoped_refptr<SpdyStream> spdy_stream1; | 221   scoped_refptr<SpdyStream> spdy_stream1; | 
| 226   TestOldCompletionCallback callback1; | 222   TestOldCompletionCallback callback1; | 
| 227   EXPECT_EQ(OK, session->CreateStream(url, | 223   EXPECT_EQ(OK, session->CreateStream(url, | 
| 228                                       MEDIUM, | 224                                       MEDIUM, | 
| 229                                       &spdy_stream1, | 225                                       &spdy_stream1, | 
| 230                                       BoundNetLog(), | 226                                       BoundNetLog(), | 
| 231                                       &callback1)); | 227                                       &callback1)); | 
| 232   scoped_ptr<TestSpdyStreamDelegate> delegate( | 228   scoped_ptr<TestSpdyStreamDelegate> delegate( | 
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 297   scoped_refptr<SpdySession> session = | 293   scoped_refptr<SpdySession> session = | 
| 298       spdy_session_pool->Get(pair, BoundNetLog()); | 294       spdy_session_pool->Get(pair, BoundNetLog()); | 
| 299   EXPECT_TRUE(spdy_session_pool->HasSession(pair)); | 295   EXPECT_TRUE(spdy_session_pool->HasSession(pair)); | 
| 300 | 296 | 
| 301   scoped_refptr<TransportSocketParams> transport_params( | 297   scoped_refptr<TransportSocketParams> transport_params( | 
| 302       new TransportSocketParams(test_host_port_pair, | 298       new TransportSocketParams(test_host_port_pair, | 
| 303                                 MEDIUM, | 299                                 MEDIUM, | 
| 304                                 false, | 300                                 false, | 
| 305                                 false)); | 301                                 false)); | 
| 306   scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 302   scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 
| 307   EXPECT_EQ(OK, | 303   EXPECT_EQ(OK, connection->Init(test_host_port_pair.ToString(), | 
| 308             connection->Init(test_host_port_pair.ToString(), | 304                                  transport_params, MEDIUM, CompletionCallback(), | 
| 309                              transport_params, | 305                                  http_session->GetTransportSocketPool(), | 
| 310                              MEDIUM, | 306                                  BoundNetLog())); | 
| 311                              NULL, |  | 
| 312                              http_session->GetTransportSocketPool(), |  | 
| 313                              BoundNetLog())); |  | 
| 314   EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); | 307   EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); | 
| 315 | 308 | 
| 316   scoped_refptr<SpdyStream> spdy_stream1; | 309   scoped_refptr<SpdyStream> spdy_stream1; | 
| 317   TestOldCompletionCallback callback1; | 310   TestOldCompletionCallback callback1; | 
| 318   EXPECT_EQ(OK, session->CreateStream(url, | 311   EXPECT_EQ(OK, session->CreateStream(url, | 
| 319                                       MEDIUM, | 312                                       MEDIUM, | 
| 320                                       &spdy_stream1, | 313                                       &spdy_stream1, | 
| 321                                       BoundNetLog(), | 314                                       BoundNetLog(), | 
| 322                                       &callback1)); | 315                                       &callback1)); | 
| 323   scoped_ptr<TestSpdyStreamDelegate> delegate( | 316   scoped_ptr<TestSpdyStreamDelegate> delegate( | 
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 543   scoped_refptr<SpdySession> session = | 536   scoped_refptr<SpdySession> session = | 
| 544       spdy_session_pool->Get(pair, BoundNetLog()); | 537       spdy_session_pool->Get(pair, BoundNetLog()); | 
| 545   ASSERT_TRUE(spdy_session_pool->HasSession(pair)); | 538   ASSERT_TRUE(spdy_session_pool->HasSession(pair)); | 
| 546 | 539 | 
| 547   scoped_refptr<TransportSocketParams> transport_params( | 540   scoped_refptr<TransportSocketParams> transport_params( | 
| 548       new TransportSocketParams(test_host_port_pair, | 541       new TransportSocketParams(test_host_port_pair, | 
| 549                                 MEDIUM, | 542                                 MEDIUM, | 
| 550                                 false, | 543                                 false, | 
| 551                                 false)); | 544                                 false)); | 
| 552   scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 545   scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 
| 553   EXPECT_EQ(OK, | 546   EXPECT_EQ(OK, connection->Init(test_host_port_pair.ToString(), | 
| 554             connection->Init(test_host_port_pair.ToString(), | 547                                  transport_params, MEDIUM, CompletionCallback(), | 
| 555                              transport_params, MEDIUM, | 548                                  http_session->GetTransportSocketPool(), | 
| 556                              NULL, http_session->GetTransportSocketPool(), | 549                                  BoundNetLog())); | 
| 557                              BoundNetLog())); |  | 
| 558   EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); | 550   EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); | 
| 559 | 551 | 
| 560   // Create 2 streams.  First will succeed.  Second will be pending. | 552   // Create 2 streams.  First will succeed.  Second will be pending. | 
| 561   scoped_refptr<SpdyStream> spdy_stream1; | 553   scoped_refptr<SpdyStream> spdy_stream1; | 
| 562   TestOldCompletionCallback callback1; | 554   TestOldCompletionCallback callback1; | 
| 563   GURL url("http://www.google.com"); | 555   GURL url("http://www.google.com"); | 
| 564   EXPECT_EQ(OK, | 556   EXPECT_EQ(OK, | 
| 565             session->CreateStream(url, | 557             session->CreateStream(url, | 
| 566                                   MEDIUM, /* priority, not important */ | 558                                   MEDIUM, /* priority, not important */ | 
| 567                                   &spdy_stream1, | 559                                   &spdy_stream1, | 
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 628   scoped_refptr<SpdySession> session = | 620   scoped_refptr<SpdySession> session = | 
| 629       spdy_session_pool->Get(pair, BoundNetLog()); | 621       spdy_session_pool->Get(pair, BoundNetLog()); | 
| 630   ASSERT_TRUE(spdy_session_pool->HasSession(pair)); | 622   ASSERT_TRUE(spdy_session_pool->HasSession(pair)); | 
| 631 | 623 | 
| 632   scoped_refptr<TransportSocketParams> transport_params( | 624   scoped_refptr<TransportSocketParams> transport_params( | 
| 633       new TransportSocketParams(test_host_port_pair, | 625       new TransportSocketParams(test_host_port_pair, | 
| 634                                 MEDIUM, | 626                                 MEDIUM, | 
| 635                                 false, | 627                                 false, | 
| 636                                 false)); | 628                                 false)); | 
| 637   scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 629   scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 
| 638   EXPECT_EQ(OK, | 630   EXPECT_EQ(OK, connection->Init(test_host_port_pair.ToString(), | 
| 639             connection->Init(test_host_port_pair.ToString(), | 631                                  transport_params, MEDIUM, CompletionCallback(), | 
| 640                              transport_params, MEDIUM, | 632                                  http_session->GetTransportSocketPool(), | 
| 641                              NULL, http_session->GetTransportSocketPool(), | 633                                  BoundNetLog())); | 
| 642                              BoundNetLog())); |  | 
| 643   EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); | 634   EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); | 
| 644 | 635 | 
| 645   // Use scoped_ptr to let us invalidate the memory when we want to, to trigger | 636   // Use scoped_ptr to let us invalidate the memory when we want to, to trigger | 
| 646   // a valgrind error if the callback is invoked when it's not supposed to be. | 637   // a valgrind error if the callback is invoked when it's not supposed to be. | 
| 647   scoped_ptr<TestOldCompletionCallback> callback(new TestOldCompletionCallback); | 638   scoped_ptr<TestOldCompletionCallback> callback(new TestOldCompletionCallback); | 
| 648 | 639 | 
| 649   // Create 2 streams.  First will succeed.  Second will be pending. | 640   // Create 2 streams.  First will succeed.  Second will be pending. | 
| 650   scoped_refptr<SpdyStream> spdy_stream1; | 641   scoped_refptr<SpdyStream> spdy_stream1; | 
| 651   GURL url("http://www.google.com"); | 642   GURL url("http://www.google.com"); | 
| 652   ASSERT_EQ(OK, | 643   ASSERT_EQ(OK, | 
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 727   scoped_refptr<SpdySession> session = | 718   scoped_refptr<SpdySession> session = | 
| 728       spdy_session_pool->Get(pair, BoundNetLog()); | 719       spdy_session_pool->Get(pair, BoundNetLog()); | 
| 729   EXPECT_TRUE(spdy_session_pool->HasSession(pair)); | 720   EXPECT_TRUE(spdy_session_pool->HasSession(pair)); | 
| 730 | 721 | 
| 731   scoped_refptr<TransportSocketParams> transport_params( | 722   scoped_refptr<TransportSocketParams> transport_params( | 
| 732       new TransportSocketParams(test_host_port_pair, | 723       new TransportSocketParams(test_host_port_pair, | 
| 733                                 MEDIUM, | 724                                 MEDIUM, | 
| 734                                 false, | 725                                 false, | 
| 735                                 false)); | 726                                 false)); | 
| 736   scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 727   scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 
| 737   EXPECT_EQ(OK, | 728   EXPECT_EQ(OK, connection->Init(test_host_port_pair.ToString(), | 
| 738             connection->Init(test_host_port_pair.ToString(), | 729                                  transport_params, MEDIUM, CompletionCallback(), | 
| 739                              transport_params, MEDIUM, | 730                                  http_session->GetTransportSocketPool(), | 
| 740                              NULL, http_session->GetTransportSocketPool(), | 731                                  BoundNetLog())); | 
| 741                              BoundNetLog())); |  | 
| 742   EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); | 732   EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); | 
| 743   MessageLoop::current()->RunAllPending(); | 733   MessageLoop::current()->RunAllPending(); | 
| 744   EXPECT_TRUE(data.at_write_eof()); | 734   EXPECT_TRUE(data.at_write_eof()); | 
| 745 } | 735 } | 
| 746 | 736 | 
| 747 // This test has two variants, one for each style of closing the connection. | 737 // This test has two variants, one for each style of closing the connection. | 
| 748 // If |clean_via_close_current_sessions| is false, the sessions are closed | 738 // If |clean_via_close_current_sessions| is false, the sessions are closed | 
| 749 // manually, calling SpdySessionPool::Remove() directly.  If it is true, | 739 // manually, calling SpdySessionPool::Remove() directly.  If it is true, | 
| 750 // sessions are closed with SpdySessionPool::CloseCurrentSessions(). | 740 // sessions are closed with SpdySessionPool::CloseCurrentSessions(). | 
| 751 void IPPoolingTest(bool clean_via_close_current_sessions) { | 741 void IPPoolingTest(bool clean_via_close_current_sessions) { | 
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 801       spdy_session_pool->Get(test_hosts[0].pair, BoundNetLog()); | 791       spdy_session_pool->Get(test_hosts[0].pair, BoundNetLog()); | 
| 802   EXPECT_TRUE(spdy_session_pool->HasSession(test_hosts[0].pair)); | 792   EXPECT_TRUE(spdy_session_pool->HasSession(test_hosts[0].pair)); | 
| 803 | 793 | 
| 804   HostPortPair test_host_port_pair(test_hosts[0].name, kTestPort); | 794   HostPortPair test_host_port_pair(test_hosts[0].name, kTestPort); | 
| 805   scoped_refptr<TransportSocketParams> transport_params( | 795   scoped_refptr<TransportSocketParams> transport_params( | 
| 806       new TransportSocketParams(test_host_port_pair, | 796       new TransportSocketParams(test_host_port_pair, | 
| 807                           MEDIUM, | 797                           MEDIUM, | 
| 808                           false, | 798                           false, | 
| 809                           false)); | 799                           false)); | 
| 810   scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 800   scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 
| 811   EXPECT_EQ(OK, | 801   EXPECT_EQ(OK, connection->Init(test_host_port_pair.ToString(), | 
| 812             connection->Init(test_host_port_pair.ToString(), | 802                                  transport_params, MEDIUM, CompletionCallback(), | 
| 813                              transport_params, MEDIUM, | 803                                  http_session->GetTransportSocketPool(), | 
| 814                              NULL, http_session->GetTransportSocketPool(), | 804                                  BoundNetLog())); | 
| 815                              BoundNetLog())); |  | 
| 816   EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); | 805   EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); | 
| 817 | 806 | 
| 818   // TODO(rtenneti): MockClientSocket::GetPeerAddress return's 0 as the port | 807   // TODO(rtenneti): MockClientSocket::GetPeerAddress return's 0 as the port | 
| 819   // number. Fix it to return port 80 and then use GetPeerAddress to AddAlias. | 808   // number. Fix it to return port 80 and then use GetPeerAddress to AddAlias. | 
| 820   const addrinfo* address = test_hosts[0].addresses.head(); | 809   const addrinfo* address = test_hosts[0].addresses.head(); | 
| 821   SpdySessionPoolPeer pool_peer(spdy_session_pool); | 810   SpdySessionPoolPeer pool_peer(spdy_session_pool); | 
| 822   pool_peer.AddAlias(address, test_hosts[0].pair); | 811   pool_peer.AddAlias(address, test_hosts[0].pair); | 
| 823 | 812 | 
| 824   // Flush the SpdySession::OnReadComplete() task. | 813   // Flush the SpdySession::OnReadComplete() task. | 
| 825   MessageLoop::current()->RunAllPending(); | 814   MessageLoop::current()->RunAllPending(); | 
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 911   test_http_server_properties->SetSpdySettings(test_host_port_pair, | 900   test_http_server_properties->SetSpdySettings(test_host_port_pair, | 
| 912                                                test_settings); | 901                                                test_settings); | 
| 913   EXPECT_NE(0u, test_http_server_properties->GetSpdySettings( | 902   EXPECT_NE(0u, test_http_server_properties->GetSpdySettings( | 
| 914       test_host_port_pair).size()); | 903       test_host_port_pair).size()); | 
| 915   spdy_session_pool->OnIPAddressChanged(); | 904   spdy_session_pool->OnIPAddressChanged(); | 
| 916   EXPECT_EQ(0u, test_http_server_properties->GetSpdySettings( | 905   EXPECT_EQ(0u, test_http_server_properties->GetSpdySettings( | 
| 917       test_host_port_pair).size()); | 906       test_host_port_pair).size()); | 
| 918 } | 907 } | 
| 919 | 908 | 
| 920 }  // namespace net | 909 }  // namespace net | 
| OLD | NEW | 
|---|