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

Side by Side Diff: chrome/browser/io_thread_unittest.cc

Issue 346043002: Add support for setting QUIC connection options via field trial config. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix comments Created 6 years, 6 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
Lei Zhang 2014/06/23 21:28:14 it's 2014
Ryan Hamilton 2014/06/23 22:38:52 Done. Indeed it is!
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/command_line.h"
6 #include "chrome/browser/io_thread.h"
7 #include "net/http/http_network_session.h"
8 #include "net/http/http_server_properties_impl.h"
9 #include "net/quic/quic_protocol.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace test {
13
14 class IOThreadPeer {
15 public:
16 static void ConfigureQuicGlobals(
17 const base::CommandLine& command_line,
18 base::StringPiece quic_trial_group,
19 const std::map<std::string, std::string>& quic_trial_params,
20 IOThread::Globals* globals) {
21 IOThread::ConfigureQuicGlobals(command_line, quic_trial_group,
22 quic_trial_params, globals);
23 }
24
25 static void InitializeNetworkSessionParamsFromGlobals(
26 const IOThread::Globals& globals,
27 net::HttpNetworkSession::Params* params) {
28 IOThread::InitializeNetworkSessionParamsFromGlobals(globals, params);
29 }
30 };
31
32 class IOThreadTest : public testing::Test {
33 public:
34 IOThreadTest() : command_line_(base::CommandLine::NO_PROGRAM) {
35 globals_.http_server_properties.reset(new net::HttpServerPropertiesImpl());
36 }
37
38 void ConfigureQuicGlobals() {
39 IOThreadPeer::ConfigureQuicGlobals(command_line_, field_trial_group_,
40 field_trial_params_, &globals_);
41 }
42
43 void InitializeNetworkSessionParams(net::HttpNetworkSession::Params* params) {
44 IOThreadPeer::InitializeNetworkSessionParamsFromGlobals(globals_, params);
45 }
46
47 base::CommandLine command_line_;
48 IOThread::Globals globals_;
49 std::string field_trial_group_;
50 std::map<std::string, std::string> field_trial_params_;
51 };
52
53 TEST_F(IOThreadTest, InitializeNetworkSessionParamsFromGlobals) {
54 globals_.quic_connection_options.push_back(net::kPACE);
55 globals_.quic_connection_options.push_back(net::kTBBR);
56 globals_.quic_connection_options.push_back(net::kTIME);
57
58 net::HttpNetworkSession::Params params;
59 InitializeNetworkSessionParams(&params);
60 EXPECT_EQ(globals_.quic_connection_options,
61 params.quic_connection_options);
62 }
63
64 TEST_F(IOThreadTest, DisableQuicByDefault) {
65 ConfigureQuicGlobals();
66 net::HttpNetworkSession::Params params;
67 InitializeNetworkSessionParams(&params);
68 EXPECT_FALSE(params.enable_quic);
69 }
70
71 TEST_F(IOThreadTest, EnableQuicFromFieldTrialGroup) {
72 field_trial_group_ = "Enabled";
73
74 ConfigureQuicGlobals();
75 net::HttpNetworkSession::Params default_params;
76 net::HttpNetworkSession::Params params;
77 InitializeNetworkSessionParams(&params);
78 EXPECT_TRUE(params.enable_quic);
79 EXPECT_FALSE(params.enable_quic_pacing);
80 EXPECT_FALSE(params.enable_quic_time_based_loss_detection);
81 EXPECT_EQ(1200u, params.quic_max_packet_length);
82 EXPECT_EQ(default_params.quic_supported_versions,
83 params.quic_supported_versions);
84 EXPECT_EQ(net::QuicTagVector(), params.quic_connection_options);
85 }
86
87 TEST_F(IOThreadTest, EnableQuicFromCommandLine) {
88 base::CommandLine::StringVector args;
89 args.push_back("chrome");
90 args.push_back("--enable-quic");
91 command_line_.InitFromArgv(args);
92
93 ConfigureQuicGlobals();
94 net::HttpNetworkSession::Params params;
95 InitializeNetworkSessionParams(&params);
96 EXPECT_TRUE(params.enable_quic);
97 }
98
99 TEST_F(IOThreadTest, EnablePacingFromCommandLine) {
100 base::CommandLine::StringVector args;
101 args.push_back("chrome");
102 args.push_back("--enable-quic");
103 args.push_back("--enable-quic-pacing");
104 command_line_.InitFromArgv(args);
105
106 ConfigureQuicGlobals();
107 net::HttpNetworkSession::Params params;
108 InitializeNetworkSessionParams(&params);
109 EXPECT_TRUE(params.enable_quic_pacing);
110 }
111
112 TEST_F(IOThreadTest, EnablePacingFromFieldTrialGroup) {
113 field_trial_group_ = "EnabledWithPacing";
114
115 ConfigureQuicGlobals();
116 net::HttpNetworkSession::Params params;
117 InitializeNetworkSessionParams(&params);
118 EXPECT_TRUE(params.enable_quic_pacing);
119 }
120
121 TEST_F(IOThreadTest, EnablePacingFromFieldTrialParams) {
122 field_trial_group_ = "Enabled";
123 field_trial_params_["enable_pacing"] = "true";
124
125 ConfigureQuicGlobals();
126 net::HttpNetworkSession::Params params;
127 InitializeNetworkSessionParams(&params);
128 EXPECT_TRUE(params.enable_quic_pacing);
129 }
130
131 TEST_F(IOThreadTest, EnableTimeBasedLossDetectionFromCommandLine) {
132 base::CommandLine::StringVector args;
133 args.push_back("chrome");
134 args.push_back("--enable-quic");
135 args.push_back("--enable-quic-time-based-loss-detection");
136 command_line_.InitFromArgv(args);
137
138 ConfigureQuicGlobals();
139 net::HttpNetworkSession::Params params;
140 InitializeNetworkSessionParams(&params);
141 EXPECT_TRUE(params.enable_quic_time_based_loss_detection);
142 }
143
144 TEST_F(IOThreadTest, EnableTimeBasedLossDetectionFromFieldTrialGroup) {
145 field_trial_group_ = "EnabledWithTimeBasedLossDetection";
146
147 ConfigureQuicGlobals();
148 net::HttpNetworkSession::Params params;
149 InitializeNetworkSessionParams(&params);
150 EXPECT_TRUE(params.enable_quic_time_based_loss_detection);
151 }
152
153 TEST_F(IOThreadTest, EnableTimeBasedLossDetectionFromFieldTrialParams) {
154 field_trial_group_ = "Enabled";
155 field_trial_params_["enable_time_based_loss_detection"] = "true";
156
157 ConfigureQuicGlobals();
158 net::HttpNetworkSession::Params params;
159 InitializeNetworkSessionParams(&params);
160 EXPECT_TRUE(params.enable_quic_time_based_loss_detection);
161 }
162
163 TEST_F(IOThreadTest, PacketLengthFromCommandLine) {
164 base::CommandLine::StringVector args;
165 args.push_back("chrome");
166 args.push_back("--enable-quic");
167 args.push_back("--quic-max-packet-length=1350");
168 command_line_.InitFromArgv(args);
169
170 ConfigureQuicGlobals();
171 net::HttpNetworkSession::Params params;
172 InitializeNetworkSessionParams(&params);
173 EXPECT_EQ(1350u, params.quic_max_packet_length);
174 }
175
176 TEST_F(IOThreadTest, PacketLengthFromFieldTrialGroup) {
177 field_trial_group_ = "Enabled1350BytePackets";
178
179 ConfigureQuicGlobals();
180 net::HttpNetworkSession::Params params;
181 InitializeNetworkSessionParams(&params);
182 EXPECT_EQ(1350u, params.quic_max_packet_length);
183 }
184
185 TEST_F(IOThreadTest, PacketLengthFromFieldTrialParams) {
186 field_trial_group_ = "Enabled";
187 field_trial_params_["max_packet_length"] = "1350";
188
189 ConfigureQuicGlobals();
190 net::HttpNetworkSession::Params params;
191 InitializeNetworkSessionParams(&params);
192 EXPECT_EQ(1350u, params.quic_max_packet_length);
193 }
194
195 TEST_F(IOThreadTest, QuicVersionFromCommandLine) {
196 base::CommandLine::StringVector args;
197 args.push_back("chrome");
198 args.push_back("--enable-quic");
199 args.push_back("--quic-version=" +
200 net::QuicVersionToString(net::QuicSupportedVersions().back()));
201 command_line_.InitFromArgv(args);
202
203 ConfigureQuicGlobals();
204 net::HttpNetworkSession::Params params;
205 InitializeNetworkSessionParams(&params);
206 net::QuicVersionVector supported_versions;
207 supported_versions.push_back(net::QuicSupportedVersions().back());
208 EXPECT_EQ(supported_versions,
209 params.quic_supported_versions);
210 }
211
212 TEST_F(IOThreadTest, QuicVersionFromFieldTrialParams) {
213 field_trial_group_ = "Enabled";
214 field_trial_params_["quic_version"] =
215 net::QuicVersionToString(net::QuicSupportedVersions().back());
216
217 ConfigureQuicGlobals();
218 net::HttpNetworkSession::Params params;
219 InitializeNetworkSessionParams(&params);
220 net::QuicVersionVector supported_versions;
221 supported_versions.push_back(net::QuicSupportedVersions().back());
222 EXPECT_EQ(supported_versions,
223 params.quic_supported_versions);
224 }
225
226 TEST_F(IOThreadTest, QuicConnectionOptionsFromCommandLine) {
227 base::CommandLine::StringVector args;
228 args.push_back("chrome");
229 args.push_back("--enable-quic");
230 args.push_back("--quic-connection-options=PACE,TIME,TBBR,REJ");
231 command_line_.InitFromArgv(args);
232
233 ConfigureQuicGlobals();
234 net::HttpNetworkSession::Params params;
235 InitializeNetworkSessionParams(&params);
236
237 net::QuicTagVector options;
238 options.push_back(net::kPACE);
239 options.push_back(net::kTIME);
240 options.push_back(net::kTBBR);
241 options.push_back(net::kREJ);
242 EXPECT_EQ(options, params.quic_connection_options);
243 }
244
245 TEST_F(IOThreadTest, QuicConnectionOptionsFromFieldTrialParams) {
246 field_trial_group_ = "Enabled";
247 field_trial_params_["congestion_options"] = "PACE,TIME,TBBR,REJ";
248
249 ConfigureQuicGlobals();
250 net::HttpNetworkSession::Params params;
251 InitializeNetworkSessionParams(&params);
252
253 net::QuicTagVector options;
254 options.push_back(net::kPACE);
255 options.push_back(net::kTIME);
256 options.push_back(net::kTBBR);
257 options.push_back(net::kREJ);
258 EXPECT_EQ(options, params.quic_connection_options);
259 }
260
261 } // namespace test
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698