Chromium Code Reviews| 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/spdy/spdy_io_buffer.h" | 7 #include "net/spdy/spdy_io_buffer.h" |
| 8 #include "net/spdy/spdy_session_pool.h" | 8 #include "net/spdy/spdy_session_pool.h" |
| 9 #include "net/spdy/spdy_stream.h" | 9 #include "net/spdy/spdy_stream.h" |
| 10 #include "net/spdy/spdy_test_util.h" | 10 #include "net/spdy/spdy_test_util.h" |
| (...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 410 // If |clean_via_close_current_sessions| is false, the sessions are closed | 410 // If |clean_via_close_current_sessions| is false, the sessions are closed |
| 411 // manually, calling SpdySessionPool::Remove() directly. If it is true, | 411 // manually, calling SpdySessionPool::Remove() directly. If it is true, |
| 412 // sessions are closed with SpdySessionPool::CloseCurrentSessions(). | 412 // sessions are closed with SpdySessionPool::CloseCurrentSessions(). |
| 413 void IPPoolingTest(bool clean_via_close_current_sessions) { | 413 void IPPoolingTest(bool clean_via_close_current_sessions) { |
| 414 const int kTestPort = 80; | 414 const int kTestPort = 80; |
| 415 struct TestHosts { | 415 struct TestHosts { |
| 416 std::string name; | 416 std::string name; |
| 417 std::string iplist; | 417 std::string iplist; |
| 418 HostPortProxyPair pair; | 418 HostPortProxyPair pair; |
| 419 } test_hosts[] = { | 419 } test_hosts[] = { |
| 420 { "www.foo.com", "192.168.0.1,192.168.0.5" }, | 420 { "www.foo.com", "192.0.2.33,192.168.0.1,192.168.0.5" }, |
| 421 { "images.foo.com", "192.168.0.2,192.168.0.3,192.168.0.5" }, | 421 { "images.foo.com", "192.168.0.2,192.168.0.3,192.168.0.5,192.0.2.33" }, |
| 422 { "js.foo.com", "192.168.0.4,192.168.0.3" }, | 422 { "js.foo.com", "192.168.0.4,192.168.0.3" }, |
| 423 }; | 423 }; |
| 424 | 424 |
| 425 SpdySessionDependencies session_deps; | 425 SpdySessionDependencies session_deps; |
| 426 session_deps.host_resolver->set_synchronous_mode(true); | 426 session_deps.host_resolver->set_synchronous_mode(true); |
| 427 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_hosts); i++) { | 427 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_hosts); i++) { |
| 428 session_deps.host_resolver->rules()->AddIPLiteralRule(test_hosts[i].name, | 428 session_deps.host_resolver->rules()->AddIPLiteralRule(test_hosts[i].name, |
| 429 test_hosts[i].iplist, ""); | 429 test_hosts[i].iplist, ""); |
| 430 | 430 |
| 431 // This test requires that the HostResolver cache be populated. Normal | 431 // This test requires that the HostResolver cache be populated. Normal |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 470 false, | 470 false, |
| 471 false)); | 471 false)); |
| 472 scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); | 472 scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); |
| 473 EXPECT_EQ(OK, | 473 EXPECT_EQ(OK, |
| 474 connection->Init(test_host_port_pair.ToString(), | 474 connection->Init(test_host_port_pair.ToString(), |
| 475 transport_params, MEDIUM, | 475 transport_params, MEDIUM, |
| 476 NULL, http_session->transport_socket_pool(), | 476 NULL, http_session->transport_socket_pool(), |
| 477 BoundNetLog())); | 477 BoundNetLog())); |
| 478 EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); | 478 EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); |
| 479 | 479 |
| 480 // MockClientSocket::GetPeerAddress return's 0 as the port number for the | |
| 481 // host. HasSession looks up addresses with port 80. AddAliases adds addresses | |
| 482 // with port 80 into session_pool's aliases for |test_hosts[0].pair|. | |
| 483 SpdySessionPoolPeer pool_peer(spdy_session_pool); | |
| 484 pool_peer.AddAliases(test_hosts[0].pair); | |
|
willchan no longer on Chromium
2011/07/17 12:44:47
Sorry, I wasn't clear. I'd prefer you just do AddA
ramant (doing other things)
2011/07/17 19:45:34
Done.
| |
| 485 | |
| 480 // Flush the SpdySession::OnReadComplete() task. | 486 // Flush the SpdySession::OnReadComplete() task. |
| 481 MessageLoop::current()->RunAllPending(); | 487 MessageLoop::current()->RunAllPending(); |
| 482 | 488 |
| 483 // The third host has no overlap with the first, so it can't pool IPs. | 489 // The third host has no overlap with the first, so it can't pool IPs. |
| 484 EXPECT_FALSE(spdy_session_pool->HasSession(test_hosts[2].pair)); | 490 EXPECT_FALSE(spdy_session_pool->HasSession(test_hosts[2].pair)); |
| 485 | 491 |
| 486 // The second host overlaps with the first, and should IP pool. | 492 // The second host overlaps with the first, and should IP pool. |
| 487 EXPECT_TRUE(spdy_session_pool->HasSession(test_hosts[1].pair)); | 493 EXPECT_TRUE(spdy_session_pool->HasSession(test_hosts[1].pair)); |
| 488 | 494 |
| 489 // Verify that the second host, through a proxy, won't share the IP. | 495 // Verify that the second host, through a proxy, won't share the IP. |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 566 | 572 |
| 567 test_settings_storage->Set(test_host_port_pair, test_settings); | 573 test_settings_storage->Set(test_host_port_pair, test_settings); |
| 568 EXPECT_NE(0u, test_settings_storage->Get(test_host_port_pair).size()); | 574 EXPECT_NE(0u, test_settings_storage->Get(test_host_port_pair).size()); |
| 569 spdy_session_pool->OnIPAddressChanged(); | 575 spdy_session_pool->OnIPAddressChanged(); |
| 570 EXPECT_EQ(0u, test_settings_storage->Get(test_host_port_pair).size()); | 576 EXPECT_EQ(0u, test_settings_storage->Get(test_host_port_pair).size()); |
| 571 } | 577 } |
| 572 | 578 |
| 573 } // namespace | 579 } // namespace |
| 574 | 580 |
| 575 } // namespace net | 581 } // namespace net |
| OLD | NEW |