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

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: Finished 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.
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 params;
76 InitializeNetworkSessionParams(&params);
77 EXPECT_TRUE(params.enable_quic);
78 EXPECT_FALSE(params.enable_quic_pacing);
79 }
80
81 TEST_F(IOThreadTest, EnableQuicFromCommandLine) {
82 base::CommandLine::StringVector args;
83 args.push_back("chrome");
84 args.push_back("--enable-quic");
85 command_line_.InitFromArgv(args);
86
87 ConfigureQuicGlobals();
88 net::HttpNetworkSession::Params params;
89 InitializeNetworkSessionParams(&params);
90 EXPECT_TRUE(params.enable_quic);
91 }
92
93 TEST_F(IOThreadTest, EnablePacingFromCommandLine) {
94 base::CommandLine::StringVector args;
95 args.push_back("chrome");
96 args.push_back("--enable-quic");
97 args.push_back("--enable-quic-pacing");
98 command_line_.InitFromArgv(args);
99
100 ConfigureQuicGlobals();
101 net::HttpNetworkSession::Params params;
102 InitializeNetworkSessionParams(&params);
103 EXPECT_TRUE(params.enable_quic_pacing);
104 }
105
106 TEST_F(IOThreadTest, EnablePacingFromFieldTrialGroup) {
107 field_trial_group_ = "EnabledWithPacing";
108
109 ConfigureQuicGlobals();
110 net::HttpNetworkSession::Params params;
111 InitializeNetworkSessionParams(&params);
112 EXPECT_TRUE(params.enable_quic_pacing);
113 }
114
115 TEST_F(IOThreadTest, EnablePacingFromFieldTrialParams) {
116 field_trial_group_ = "Enabled";
117 field_trial_params_["enable_pacing"] = "true";
118
119 ConfigureQuicGlobals();
120 net::HttpNetworkSession::Params params;
121 InitializeNetworkSessionParams(&params);
122 EXPECT_TRUE(params.enable_quic_pacing);
123 }
124
125 TEST_F(IOThreadTest, EnableTimeBasedLossDetectionFromCommandLine) {
126 base::CommandLine::StringVector args;
127 args.push_back("chrome");
128 args.push_back("--enable-quic");
129 args.push_back("--enable-quic-time-based-loss-detection");
130 command_line_.InitFromArgv(args);
131
132 ConfigureQuicGlobals();
133 net::HttpNetworkSession::Params params;
134 InitializeNetworkSessionParams(&params);
135 EXPECT_TRUE(params.enable_quic_time_based_loss_detection);
136 }
137
138 TEST_F(IOThreadTest, EnableTimeBasedLossDetectionFromFieldTrialGroup) {
139 field_trial_group_ = "EnabledWithTimeBasedLossDetection";
140
141 ConfigureQuicGlobals();
142 net::HttpNetworkSession::Params params;
143 InitializeNetworkSessionParams(&params);
144 EXPECT_TRUE(params.enable_quic_time_based_loss_detection);
145 }
146
147 TEST_F(IOThreadTest, EnableTimeBasedLossDetectionFromFieldTrialParams) {
148 field_trial_group_ = "Enabled";
149 field_trial_params_["enable_time_based_loss_detection"] = "true";
150
151 ConfigureQuicGlobals();
152 net::HttpNetworkSession::Params params;
153 InitializeNetworkSessionParams(&params);
154 EXPECT_TRUE(params.enable_quic_time_based_loss_detection);
jar (doing other things) 2014/06/20 23:25:13 nit: FWIW: I don't think you ever test to see if t
Ryan Hamilton 2014/06/21 02:45:23 Done.
155 }
156
157 TEST_F(IOThreadTest, PacketLengthFromCommandLine) {
158 base::CommandLine::StringVector args;
159 args.push_back("chrome");
160 args.push_back("--enable-quic");
161 args.push_back("--quic-max-packet-length=1350");
162 command_line_.InitFromArgv(args);
163
164 ConfigureQuicGlobals();
165 net::HttpNetworkSession::Params params;
166 InitializeNetworkSessionParams(&params);
167 EXPECT_EQ(1350u, params.quic_max_packet_length);
168 }
169
170 TEST_F(IOThreadTest, PacketLengthFromFieldTrialGroup) {
171 field_trial_group_ = "Enabled1350BytePackets";
172
173 ConfigureQuicGlobals();
174 net::HttpNetworkSession::Params params;
175 InitializeNetworkSessionParams(&params);
176 EXPECT_EQ(1350u, params.quic_max_packet_length);
jar (doing other things) 2014/06/20 23:25:13 nit: nicer would be to use different values, so be
Ryan Hamilton 2014/06/21 02:45:23 I'm now checking that it's set to 1200 by default
jar (doing other things) 2014/06/22 18:48:34 Perfect. Thanks.
177 }
178
179 TEST_F(IOThreadTest, PacketLengthFromFieldTrialParams) {
180 field_trial_group_ = "Enabled";
181 field_trial_params_["max_packet_length"] = "1350";
182
183 ConfigureQuicGlobals();
184 net::HttpNetworkSession::Params params;
185 InitializeNetworkSessionParams(&params);
186 EXPECT_EQ(1350u, params.quic_max_packet_length);
187 }
188
189 TEST_F(IOThreadTest, QuicVersionFromCommandLine) {
190 base::CommandLine::StringVector args;
191 args.push_back("chrome");
192 args.push_back("--enable-quic");
193 args.push_back("--quic-version=QUIC_VERSION_18");
194 command_line_.InitFromArgv(args);
195
196 ConfigureQuicGlobals();
197 net::HttpNetworkSession::Params params;
198 InitializeNetworkSessionParams(&params);
199 net::QuicVersionVector supported_versions;
200 supported_versions.push_back(net::QUIC_VERSION_18);
201 EXPECT_EQ(supported_versions,
202 params.quic_supported_versions);
203 }
204
205 TEST_F(IOThreadTest, QuicVersionFromFieldTrialParams) {
206 field_trial_group_ = "Enabled";
207 field_trial_params_["quic_version"] = "QUIC_VERSION_18";
208
209 ConfigureQuicGlobals();
210 net::HttpNetworkSession::Params params;
211 InitializeNetworkSessionParams(&params);
212 net::QuicVersionVector supported_versions;
213 supported_versions.push_back(net::QUIC_VERSION_18);
jar (doing other things) 2014/06/20 23:25:12 Will this test fail as we stop supporting version
Ryan Hamilton 2014/06/21 02:45:23 Indeed. Refactored to programmatically use the old
jar (doing other things) 2014/06/22 18:48:34 Perfect. Thanks.
214 EXPECT_EQ(supported_versions,
215 params.quic_supported_versions);
216 }
217
218 TEST_F(IOThreadTest, QuicConnectionOptions) {
219 field_trial_group_ = "Enabled";
220 field_trial_params_["congestion_options"] = "PACE,TIME,TBBR,REJ";
221
222 ConfigureQuicGlobals();
223 net::HttpNetworkSession::Params params;
224 InitializeNetworkSessionParams(&params);
225
226 net::QuicTagVector options;
227 options.push_back(net::kPACE);
228 options.push_back(net::kTIME);
229 options.push_back(net::kTBBR);
230 options.push_back(net::kREJ);
231 EXPECT_EQ(options, params.quic_connection_options);
232
233 }
234
235 } // namespace test
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698