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

Side by Side Diff: net/http/http_stream_factory_impl_unittest.cc

Issue 1898133002: Add reprioritization to socket pools. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Incorporated comments. Created 3 years, 10 months 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
« no previous file with comments | « net/http/http_stream_factory_impl_job.cc ('k') | net/socket/client_socket_handle.h » ('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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/http/http_stream_factory_impl.h" 5 #include "net/http/http_stream_factory_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
(...skipping 1578 matching lines...) Expand 10 before | Expand all | Expand 10 after
1589 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( 1589 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool(
1590 HttpNetworkSession::NORMAL_SOCKET_POOL))); 1590 HttpNetworkSession::NORMAL_SOCKET_POOL)));
1591 EXPECT_EQ(0, GetSocketPoolGroupCount( 1591 EXPECT_EQ(0, GetSocketPoolGroupCount(
1592 session->GetTransportSocketPool( 1592 session->GetTransportSocketPool(
1593 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 1593 HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
1594 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( 1594 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool(
1595 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 1595 HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
1596 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); 1596 EXPECT_TRUE(waiter.used_proxy_info().is_direct());
1597 } 1597 }
1598 1598
1599 // Test the race of SetPriority versus stream completion where SetPriority
1600 // may be called on an HttpStreamFactoryImpl::Job after the stream
1601 // has been created by the job.
1602 TEST_F(HttpStreamFactoryTest, ReprioritizeAfterStreamReceived) {
1603 SpdySessionDependencies session_deps(ProxyService::CreateDirect());
1604
1605 MockRead mock_read(SYNCHRONOUS, ERR_IO_PENDING);
1606 StaticSocketDataProvider socket_data(&mock_read, 1, nullptr, 0);
1607 socket_data.set_connect_data(MockConnect(SYNCHRONOUS, OK));
1608 session_deps.socket_factory->AddSocketDataProvider(&socket_data);
1609
1610 SSLSocketDataProvider ssl_socket_data(SYNCHRONOUS, OK);
1611 ssl_socket_data.next_proto = kProtoHTTP2;
1612 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data);
1613
1614 std::unique_ptr<HttpNetworkSession> session(
1615 SpdySessionDependencies::SpdyCreateSession(&session_deps));
1616
1617 // Now request a stream.
1618 HttpRequestInfo request_info;
1619 request_info.method = "GET";
1620 request_info.url = GURL("https://www.google.com");
1621 request_info.load_flags = 0;
1622
1623 SSLConfig ssl_config;
1624 StreamRequestWaiter waiter;
1625 EXPECT_EQ(0, GetSpdySessionCount(session.get()));
1626 std::unique_ptr<HttpStreamRequest> request(
1627 session->http_stream_factory()->RequestStream(
1628 request_info, LOWEST, ssl_config, ssl_config, &waiter,
1629 NetLogWithSource()));
1630 EXPECT_FALSE(waiter.stream_done());
1631
1632 // Confirm a stream has been created by asserting that a new session
1633 // has been created. (The stream is only created at the SPDY level on
1634 // first write, which happens after the request has returned a stream).
1635 ASSERT_EQ(1, GetSpdySessionCount(session.get()));
1636
1637 // Test to confirm that a SetPriority received after the stream is created
1638 // but before the request returns it does not crash.
1639 request->SetPriority(HIGHEST);
1640
1641 waiter.WaitForStream();
1642 EXPECT_TRUE(waiter.stream_done());
1643 ASSERT_TRUE(waiter.stream());
1644 EXPECT_FALSE(waiter.websocket_stream());
1645 }
1646
1599 TEST_F(HttpStreamFactoryTest, RequestHttpStreamOverSSL) { 1647 TEST_F(HttpStreamFactoryTest, RequestHttpStreamOverSSL) {
1600 SpdySessionDependencies session_deps(ProxyService::CreateDirect()); 1648 SpdySessionDependencies session_deps(ProxyService::CreateDirect());
1601 1649
1602 MockRead mock_read(ASYNC, OK); 1650 MockRead mock_read(ASYNC, OK);
1603 StaticSocketDataProvider socket_data(&mock_read, 1, nullptr, 0); 1651 StaticSocketDataProvider socket_data(&mock_read, 1, nullptr, 0);
1604 socket_data.set_connect_data(MockConnect(ASYNC, OK)); 1652 socket_data.set_connect_data(MockConnect(ASYNC, OK));
1605 session_deps.socket_factory->AddSocketDataProvider(&socket_data); 1653 session_deps.socket_factory->AddSocketDataProvider(&socket_data);
1606 1654
1607 SSLSocketDataProvider ssl_socket_data(ASYNC, OK); 1655 SSLSocketDataProvider ssl_socket_data(ASYNC, OK);
1608 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data); 1656 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data);
(...skipping 982 matching lines...) Expand 10 before | Expand all | Expand 10 after
2591 session->GetTransportSocketPool( 2639 session->GetTransportSocketPool(
2592 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 2640 HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
2593 EXPECT_EQ(1, GetSocketPoolGroupCount( 2641 EXPECT_EQ(1, GetSocketPoolGroupCount(
2594 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 2642 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
2595 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); 2643 EXPECT_TRUE(waiter.used_proxy_info().is_direct());
2596 } 2644 }
2597 2645
2598 } // namespace 2646 } // namespace
2599 2647
2600 } // namespace net 2648 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_stream_factory_impl_job.cc ('k') | net/socket/client_socket_handle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698