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

Unified Diff: net/spdy/spdy_session_unittest.cc

Issue 2600973002: Implement HTTP/2 settings field trial parameters. (Closed)
Patch Set: Re: #7. Created 4 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/spdy/spdy_session_pool.cc ('k') | net/spdy/spdy_test_util_common.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/spdy/spdy_session_unittest.cc
diff --git a/net/spdy/spdy_session_unittest.cc b/net/spdy/spdy_session_unittest.cc
index 12b8c01ccf5c41032386f3ba0958193cf30272c5..4d10961ff1df05bc1209589112a97b0b86be80f3 100644
--- a/net/spdy/spdy_session_unittest.cc
+++ b/net/spdy/spdy_session_unittest.cc
@@ -1881,39 +1881,6 @@ TEST_F(SpdySessionTest, CancelPendingCreateStream) {
base::RunLoop().RunUntilIdle();
}
-TEST_F(SpdySessionTest, SendInitialDataOnNewSession) {
- session_deps_.host_resolver->set_synchronous_mode(true);
-
- MockRead reads[] = {
- MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever.
- };
-
- SettingsMap settings;
- settings[SETTINGS_HEADER_TABLE_SIZE] = kMaxHeaderTableSize;
- settings[SETTINGS_MAX_CONCURRENT_STREAMS] = kMaxConcurrentPushedStreams;
- SpdySerializedFrame settings_frame(
- spdy_util_.ConstructSpdySettings(settings));
- MockWrite writes[] = {MockWrite(ASYNC, kHttp2ConnectionHeaderPrefix,
- kHttp2ConnectionHeaderPrefixSize),
- CreateMockWrite(settings_frame)};
-
- StaticSocketDataProvider data(reads, arraysize(reads), writes,
- arraysize(writes));
- session_deps_.socket_factory->AddSocketDataProvider(&data);
-
- AddSSLSocketData();
-
- CreateNetworkSession();
-
- SpdySessionPoolPeer pool_peer(spdy_session_pool_);
- pool_peer.SetEnableSendingInitialData(true);
-
- CreateSecureSpdySession();
-
- base::RunLoop().RunUntilIdle();
- EXPECT_TRUE(data.AllWriteDataConsumed());
-}
-
TEST_F(SpdySessionTest, Initialize) {
session_deps_.host_resolver->set_synchronous_mode(true);
@@ -3887,7 +3854,8 @@ TEST_F(SpdySessionTest, StreamFlowControlTooMuchData) {
AddSSLSocketData();
- session_deps_.stream_max_recv_window_size = stream_max_recv_window_size;
+ session_deps_.http2_settings[SETTINGS_INITIAL_WINDOW_SIZE] =
+ stream_max_recv_window_size;
CreateNetworkSession();
CreateSecureSpdySession();
@@ -4024,7 +3992,8 @@ TEST_F(SpdySessionTest, StreamFlowControlTooMuchDataTwoDataFrames) {
AddSSLSocketData();
- session_deps_.stream_max_recv_window_size = stream_max_recv_window_size;
+ session_deps_.http2_settings[SETTINGS_INITIAL_WINDOW_SIZE] =
+ stream_max_recv_window_size;
CreateNetworkSession();
CreateSecureSpdySession();
@@ -5391,6 +5360,92 @@ TEST_F(SpdySessionTest, RejectInvalidUnknownFrames) {
EXPECT_FALSE(session_->OnUnknownFrame(8, 0));
}
+class SendInitialSettingsOnNewSpdySessionTest : public SpdySessionTest {
+ protected:
+ void RunInitialSettingsTest(const SettingsMap expected_settings) {
+ session_deps_.host_resolver->set_synchronous_mode(true);
+
+ MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING)};
+
+ SpdySerializedFrame settings_frame(
+ spdy_util_.ConstructSpdySettings(expected_settings));
+ MockWrite writes[] = {MockWrite(ASYNC, kHttp2ConnectionHeaderPrefix,
+ kHttp2ConnectionHeaderPrefixSize),
+ CreateMockWrite(settings_frame)};
+
+ StaticSocketDataProvider data(reads, arraysize(reads), writes,
+ arraysize(writes));
+ session_deps_.socket_factory->AddSocketDataProvider(&data);
+ AddSSLSocketData();
+
+ CreateNetworkSession();
+
+ SpdySessionPoolPeer pool_peer(spdy_session_pool_);
+ pool_peer.SetEnableSendingInitialData(true);
+
+ CreateSecureSpdySession();
+
+ base::RunLoop().RunUntilIdle();
+ EXPECT_TRUE(data.AllWriteDataConsumed());
+ }
+};
+
+// Setting values when Params::http2_settings is empty. Note that
+// SETTINGS_INITIAL_WINDOW_SIZE is sent in production, because it is set to a
+// non-default value, but it is not sent in tests, because the protocol default
+// value is used in tests.
+TEST_F(SendInitialSettingsOnNewSpdySessionTest, Empty) {
+ SettingsMap expected_settings;
+ expected_settings[SETTINGS_HEADER_TABLE_SIZE] = kSpdyMaxHeaderTableSize;
+ expected_settings[SETTINGS_MAX_CONCURRENT_STREAMS] =
+ kSpdyMaxConcurrentPushedStreams;
+ RunInitialSettingsTest(expected_settings);
+}
+
+// When a setting is set to the protocol default value,
+// no corresponding value is sent on the wire.
+TEST_F(SendInitialSettingsOnNewSpdySessionTest, ProtocolDefault) {
+ // Explicitly set protocol default values for the following settings.
+ session_deps_.http2_settings[SETTINGS_HEADER_TABLE_SIZE] = 4096;
+ session_deps_.http2_settings[SETTINGS_ENABLE_PUSH] = 1;
+ session_deps_.http2_settings[SETTINGS_INITIAL_WINDOW_SIZE] = 64 * 1024 - 1;
+
+ SettingsMap expected_settings;
+ expected_settings[SETTINGS_MAX_CONCURRENT_STREAMS] =
+ kSpdyMaxConcurrentPushedStreams;
+ RunInitialSettingsTest(expected_settings);
+}
+
+// Values set in Params::http2_settings overwrite Chromium's default values.
+TEST_F(SendInitialSettingsOnNewSpdySessionTest, OverwriteValues) {
+ session_deps_.http2_settings[SETTINGS_HEADER_TABLE_SIZE] = 16 * 1024;
+ session_deps_.http2_settings[SETTINGS_ENABLE_PUSH] = 0;
+ session_deps_.http2_settings[SETTINGS_MAX_CONCURRENT_STREAMS] = 42;
+ session_deps_.http2_settings[SETTINGS_INITIAL_WINDOW_SIZE] = 32 * 1024;
+
+ SettingsMap expected_settings;
+ expected_settings[SETTINGS_HEADER_TABLE_SIZE] = 16 * 1024;
+ expected_settings[SETTINGS_ENABLE_PUSH] = 0;
+ expected_settings[SETTINGS_MAX_CONCURRENT_STREAMS] = 42;
+ expected_settings[SETTINGS_INITIAL_WINDOW_SIZE] = 32 * 1024;
+ RunInitialSettingsTest(expected_settings);
+}
+
+// Unknown parameters should still be sent to the server.
+TEST_F(SendInitialSettingsOnNewSpdySessionTest, UnknownSettings) {
+ // The following parameters are not defined in the HTTP/2 specification.
+ session_deps_.http2_settings[static_cast<SpdySettingsIds>(7)] = 1234;
+ session_deps_.http2_settings[static_cast<SpdySettingsIds>(25)] = 5678;
+
+ SettingsMap expected_settings;
+ expected_settings[SETTINGS_HEADER_TABLE_SIZE] = kSpdyMaxHeaderTableSize;
+ expected_settings[SETTINGS_MAX_CONCURRENT_STREAMS] =
+ kSpdyMaxConcurrentPushedStreams;
+ expected_settings[static_cast<SpdySettingsIds>(7)] = 1234;
+ expected_settings[static_cast<SpdySettingsIds>(25)] = 5678;
+ RunInitialSettingsTest(expected_settings);
+}
+
class AltSvcFrameTest : public SpdySessionTest {
public:
AltSvcFrameTest()
« no previous file with comments | « net/spdy/spdy_session_pool.cc ('k') | net/spdy/spdy_test_util_common.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698