Index: net/spdy/spdy_session_spdy2_unittest.cc |
=================================================================== |
--- net/spdy/spdy_session_spdy2_unittest.cc (revision 195932) |
+++ net/spdy/spdy_session_spdy2_unittest.cc (working copy) |
@@ -400,6 +400,15 @@ |
} |
TEST_F(SpdySessionSpdy2Test, CloseIdleSessions) { |
+ MockConnect connect_data(SYNCHRONOUS, OK); |
+ MockRead reads[] = { |
+ MockRead(ASYNC, 0, 0) // EOF |
+ }; |
+ |
+ StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); |
+ data.set_connect_data(connect_data); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
+ |
CreateNetworkSession(); |
// Set up session 1 |
@@ -407,26 +416,40 @@ |
HostPortPair test_host_port_pair1(kTestHost1, 80); |
HostPortProxyPair pair1(test_host_port_pair1, ProxyServer::Direct()); |
scoped_refptr<SpdySession> session1 = GetSession(pair1); |
+ EXPECT_EQ( |
+ OK, |
+ InitializeSession( |
+ http_session_.get(), session1.get(), test_host_port_pair1)); |
GURL url1(kTestHost1); |
scoped_refptr<SpdyStream> spdy_stream1 = |
CreateStreamSynchronously(session1, url1, MEDIUM, BoundNetLog()); |
ASSERT_TRUE(spdy_stream1.get() != NULL); |
// Set up session 2 |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
const std::string kTestHost2("http://www.b.com"); |
HostPortPair test_host_port_pair2(kTestHost2, 80); |
HostPortProxyPair pair2(test_host_port_pair2, ProxyServer::Direct()); |
scoped_refptr<SpdySession> session2 = GetSession(pair2); |
+ EXPECT_EQ( |
+ OK, |
+ InitializeSession( |
+ http_session_.get(), session2.get(), test_host_port_pair2)); |
GURL url2(kTestHost2); |
scoped_refptr<SpdyStream> spdy_stream2 = |
CreateStreamSynchronously(session2, url2, MEDIUM, BoundNetLog()); |
ASSERT_TRUE(spdy_stream2.get() != NULL); |
// Set up session 3 |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
const std::string kTestHost3("http://www.c.com"); |
HostPortPair test_host_port_pair3(kTestHost3, 80); |
HostPortProxyPair pair3(test_host_port_pair3, ProxyServer::Direct()); |
scoped_refptr<SpdySession> session3 = GetSession(pair3); |
+ EXPECT_EQ( |
+ OK, |
+ InitializeSession( |
+ http_session_.get(), session3.get(), test_host_port_pair3)); |
GURL url3(kTestHost3); |
scoped_refptr<SpdyStream> spdy_stream3 = |
CreateStreamSynchronously(session3, url3, MEDIUM, BoundNetLog()); |
@@ -692,6 +715,21 @@ |
SPDY_POOL_CLOSE_IDLE_SESSIONS, |
}; |
+// Initialize the SpdySession with socket. |
+void IPPoolingInitializedSession( |
+ const std::string& group_name, |
+ const scoped_refptr<TransportSocketParams>& transport_params, |
+ HttpNetworkSession* http_session, |
+ SpdySession* session) { |
+ scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); |
+ EXPECT_EQ(OK, connection->Init(group_name, |
+ transport_params, MEDIUM, CompletionCallback(), |
+ http_session->GetTransportSocketPool( |
+ HttpNetworkSession::NORMAL_SOCKET_POOL), |
+ BoundNetLog())); |
+ EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); |
+} |
+ |
// This test has three variants, one for each style of closing the connection. |
// If |clean_via_close_current_sessions| is SPDY_POOL_CLOSE_SESSIONS_MANUALLY, |
// the sessions are closed manually, calling SpdySessionPool::Remove() directly. |
@@ -764,19 +802,15 @@ |
HostPortPair test_host_port_pair(test_hosts[0].name, kTestPort); |
+ // Initialize session for the first host. |
scoped_refptr<TransportSocketParams> transport_params( |
new TransportSocketParams(test_host_port_pair, |
MEDIUM, |
false, |
false, |
OnHostResolutionCallback())); |
- scoped_ptr<ClientSocketHandle> connection(new ClientSocketHandle); |
- EXPECT_EQ(OK, connection->Init(test_host_port_pair.ToString(), |
- transport_params, MEDIUM, CompletionCallback(), |
- http_session->GetTransportSocketPool( |
- HttpNetworkSession::NORMAL_SOCKET_POOL), |
- BoundNetLog())); |
- EXPECT_EQ(OK, session->InitializeWithSocket(connection.release(), false, OK)); |
+ IPPoolingInitializedSession(test_host_port_pair.ToString(), |
+ transport_params, http_session, session); |
// TODO(rtenneti): MockClientSocket::GetPeerAddress return's 0 as the port |
// number. Fix it to return port 80 and then use GetPeerAddress to AddAlias. |
@@ -809,6 +843,11 @@ |
EXPECT_TRUE(spdy_session_pool->HasSession(test_hosts[1].pair)); |
EXPECT_TRUE(spdy_session_pool->HasSession(test_hosts[2].pair)); |
+ // Initialize session for host 2. |
+ session_deps.socket_factory->AddSocketDataProvider(&data); |
+ IPPoolingInitializedSession(test_hosts[2].pair.first.ToString(), |
+ transport_params, http_session, session2); |
+ |
// Grab the session to host 1 and verify that it is the same session |
// we got with host 0, and that is a different than host 2's session. |
scoped_refptr<SpdySession> session1 = |
@@ -816,6 +855,11 @@ |
EXPECT_EQ(session.get(), session1.get()); |
EXPECT_NE(session2.get(), session1.get()); |
+ // Initialize session for host 1. |
+ session_deps.socket_factory->AddSocketDataProvider(&data); |
+ IPPoolingInitializedSession(test_hosts[2].pair.first.ToString(), |
+ transport_params, http_session, session2); |
+ |
// Remove the aliases and observe that we still have a session for host1. |
pool_peer.RemoveAliases(test_hosts[0].pair); |
pool_peer.RemoveAliases(test_hosts[1].pair); |