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

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

Issue 253903002: SPDY - persist 300 most recently used servers that support SPDY to preferences file (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Persist 300 MRU servers that support SPDY Created 6 years, 7 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
« no previous file with comments | « net/http/http_server_properties_impl.cc ('k') | no next file » | 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_server_properties_impl.h" 5 #include "net/http/http_server_properties_impl.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/containers/hash_tables.h" 11 #include "base/containers/hash_tables.h"
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
14 #include "base/values.h" 14 #include "base/values.h"
15 #include "net/base/host_port_pair.h" 15 #include "net/base/host_port_pair.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 17
18 namespace base { 18 namespace base {
19 class ListValue; 19 class ListValue;
20 } 20 }
21 21
22 namespace net { 22 namespace net {
23 23
24 const int kMaxSupportsSpdyServerHosts = 500;
25
24 namespace { 26 namespace {
25 27
26 class HttpServerPropertiesImplTest : public testing::Test { 28 class HttpServerPropertiesImplTest : public testing::Test {
27 protected: 29 protected:
28 HttpServerPropertiesImpl impl_; 30 HttpServerPropertiesImpl impl_;
29 }; 31 };
30 32
31 typedef HttpServerPropertiesImplTest SpdyServerPropertiesTest; 33 typedef HttpServerPropertiesImplTest SpdyServerPropertiesTest;
32 34
33 TEST_F(SpdyServerPropertiesTest, Initialize) { 35 TEST_F(SpdyServerPropertiesTest, Initialize) {
(...skipping 19 matching lines...) Expand all
53 spdy_servers1.push_back(spdy_server_g); 55 spdy_servers1.push_back(spdy_server_g);
54 impl_.InitializeSpdyServers(&spdy_servers1, true); 56 impl_.InitializeSpdyServers(&spdy_servers1, true);
55 EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_google)); 57 EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_google));
56 58
57 // Check by initializing with www.google.com:443 and docs.google.com:443 spdy 59 // Check by initializing with www.google.com:443 and docs.google.com:443 spdy
58 // servers. 60 // servers.
59 std::vector<std::string> spdy_servers2; 61 std::vector<std::string> spdy_servers2;
60 spdy_servers2.push_back(spdy_server_g); 62 spdy_servers2.push_back(spdy_server_g);
61 spdy_servers2.push_back(spdy_server_d); 63 spdy_servers2.push_back(spdy_server_d);
62 impl_.InitializeSpdyServers(&spdy_servers2, true); 64 impl_.InitializeSpdyServers(&spdy_servers2, true);
65
66 // Verify spdy_server_g and spdy_server_d are in the list in the same order.
67 base::ListValue spdy_server_list;
68 impl_.GetSpdyServerList(&spdy_server_list, kMaxSupportsSpdyServerHosts);
69 EXPECT_EQ(2U, spdy_server_list.GetSize());
70 std::string string_value_g;
71 ASSERT_TRUE(spdy_server_list.GetString(0, &string_value_g));
72 ASSERT_EQ(spdy_server_g, string_value_g);
73 std::string string_value_d;
74 ASSERT_TRUE(spdy_server_list.GetString(1, &string_value_d));
75 ASSERT_EQ(spdy_server_d, string_value_d);
63 EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_google)); 76 EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_google));
64 EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_docs)); 77 EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_docs));
65 } 78 }
66 79
67 TEST_F(SpdyServerPropertiesTest, SupportsSpdyTest) { 80 TEST_F(SpdyServerPropertiesTest, SupportsSpdyTest) {
68 HostPortPair spdy_server_empty(std::string(), 443); 81 HostPortPair spdy_server_empty(std::string(), 443);
69 EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_empty)); 82 EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_empty));
70 83
71 // Add www.google.com:443 as supporting SPDY. 84 // Add www.google.com:443 as supporting SPDY.
72 HostPortPair spdy_server_google("www.google.com", 443); 85 HostPortPair spdy_server_google("www.google.com", 443);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 136
124 impl_.Clear(); 137 impl_.Clear();
125 EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_google)); 138 EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_google));
126 EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_mail)); 139 EXPECT_FALSE(impl_.SupportsSpdy(spdy_server_mail));
127 } 140 }
128 141
129 TEST_F(SpdyServerPropertiesTest, GetSpdyServerList) { 142 TEST_F(SpdyServerPropertiesTest, GetSpdyServerList) {
130 base::ListValue spdy_server_list; 143 base::ListValue spdy_server_list;
131 144
132 // Check there are no spdy_servers. 145 // Check there are no spdy_servers.
133 impl_.GetSpdyServerList(&spdy_server_list); 146 impl_.GetSpdyServerList(&spdy_server_list, kMaxSupportsSpdyServerHosts);
134 EXPECT_EQ(0U, spdy_server_list.GetSize()); 147 EXPECT_EQ(0U, spdy_server_list.GetSize());
135 148
136 // Check empty server is not added. 149 // Check empty server is not added.
137 HostPortPair spdy_server_empty(std::string(), 443); 150 HostPortPair spdy_server_empty(std::string(), 443);
138 impl_.SetSupportsSpdy(spdy_server_empty, true); 151 impl_.SetSupportsSpdy(spdy_server_empty, true);
139 impl_.GetSpdyServerList(&spdy_server_list); 152 impl_.GetSpdyServerList(&spdy_server_list, kMaxSupportsSpdyServerHosts);
140 EXPECT_EQ(0U, spdy_server_list.GetSize()); 153 EXPECT_EQ(0U, spdy_server_list.GetSize());
141 154
142 std::string string_value_g; 155 std::string string_value_g;
143 std::string string_value_m; 156 std::string string_value_m;
144 HostPortPair spdy_server_google("www.google.com", 443); 157 HostPortPair spdy_server_google("www.google.com", 443);
145 std::string spdy_server_g = 158 std::string spdy_server_g =
146 HttpServerPropertiesImpl::GetFlattenedSpdyServer(spdy_server_google); 159 HttpServerPropertiesImpl::GetFlattenedSpdyServer(spdy_server_google);
147 HostPortPair spdy_server_mail("mail.google.com", 443); 160 HostPortPair spdy_server_mail("mail.google.com", 443);
148 std::string spdy_server_m = 161 std::string spdy_server_m =
149 HttpServerPropertiesImpl::GetFlattenedSpdyServer(spdy_server_mail); 162 HttpServerPropertiesImpl::GetFlattenedSpdyServer(spdy_server_mail);
150 163
151 // Add www.google.com:443 as not supporting SPDY. 164 // Add www.google.com:443 as not supporting SPDY.
152 impl_.SetSupportsSpdy(spdy_server_google, false); 165 impl_.SetSupportsSpdy(spdy_server_google, false);
153 impl_.GetSpdyServerList(&spdy_server_list); 166 impl_.GetSpdyServerList(&spdy_server_list, kMaxSupportsSpdyServerHosts);
154 EXPECT_EQ(0U, spdy_server_list.GetSize()); 167 EXPECT_EQ(0U, spdy_server_list.GetSize());
155 168
156 // Add www.google.com:443 as supporting SPDY. 169 // Add www.google.com:443 as supporting SPDY.
157 impl_.SetSupportsSpdy(spdy_server_google, true); 170 impl_.SetSupportsSpdy(spdy_server_google, true);
158 impl_.GetSpdyServerList(&spdy_server_list); 171 impl_.GetSpdyServerList(&spdy_server_list, kMaxSupportsSpdyServerHosts);
159 ASSERT_EQ(1U, spdy_server_list.GetSize()); 172 ASSERT_EQ(1U, spdy_server_list.GetSize());
160 ASSERT_TRUE(spdy_server_list.GetString(0, &string_value_g)); 173 ASSERT_TRUE(spdy_server_list.GetString(0, &string_value_g));
161 ASSERT_EQ(spdy_server_g, string_value_g); 174 ASSERT_EQ(spdy_server_g, string_value_g);
162 175
163 // Add mail.google.com:443 as not supporting SPDY. 176 // Add mail.google.com:443 as not supporting SPDY.
164 impl_.SetSupportsSpdy(spdy_server_mail, false); 177 impl_.SetSupportsSpdy(spdy_server_mail, false);
165 impl_.GetSpdyServerList(&spdy_server_list); 178 impl_.GetSpdyServerList(&spdy_server_list, kMaxSupportsSpdyServerHosts);
166 ASSERT_EQ(1U, spdy_server_list.GetSize()); 179 ASSERT_EQ(1U, spdy_server_list.GetSize());
167 ASSERT_TRUE(spdy_server_list.GetString(0, &string_value_g)); 180 ASSERT_TRUE(spdy_server_list.GetString(0, &string_value_g));
168 ASSERT_EQ(spdy_server_g, string_value_g); 181 ASSERT_EQ(spdy_server_g, string_value_g);
169 182
170 // Add mail.google.com:443 as supporting SPDY. 183 // Add mail.google.com:443 as supporting SPDY.
171 impl_.SetSupportsSpdy(spdy_server_mail, true); 184 impl_.SetSupportsSpdy(spdy_server_mail, true);
172 impl_.GetSpdyServerList(&spdy_server_list); 185 impl_.GetSpdyServerList(&spdy_server_list, kMaxSupportsSpdyServerHosts);
173 ASSERT_EQ(2U, spdy_server_list.GetSize()); 186 ASSERT_EQ(2U, spdy_server_list.GetSize());
174 187
175 // Verify www.google.com:443 and mail.google.com:443 are in the list. 188 // Verify www.google.com:443 and mail.google.com:443 are in the list.
189 ASSERT_TRUE(spdy_server_list.GetString(0, &string_value_m));
190 ASSERT_EQ(spdy_server_m, string_value_m);
191 ASSERT_TRUE(spdy_server_list.GetString(1, &string_value_g));
192 ASSERT_EQ(spdy_server_g, string_value_g);
193
194 // Request for only one server and verify that we get only one server.
195 impl_.GetSpdyServerList(&spdy_server_list, 1);
196 ASSERT_EQ(1U, spdy_server_list.GetSize());
197 ASSERT_TRUE(spdy_server_list.GetString(0, &string_value_m));
198 ASSERT_EQ(spdy_server_m, string_value_m);
199 }
200
201 TEST_F(SpdyServerPropertiesTest, MRUOfGetSpdyServerList) {
202 base::ListValue spdy_server_list;
203
204 std::string string_value_g;
205 std::string string_value_m;
206 HostPortPair spdy_server_google("www.google.com", 443);
207 std::string spdy_server_g =
208 HttpServerPropertiesImpl::GetFlattenedSpdyServer(spdy_server_google);
209 HostPortPair spdy_server_mail("mail.google.com", 443);
210 std::string spdy_server_m =
211 HttpServerPropertiesImpl::GetFlattenedSpdyServer(spdy_server_mail);
212
213 // Add www.google.com:443 as supporting SPDY.
214 impl_.SetSupportsSpdy(spdy_server_google, true);
215 impl_.GetSpdyServerList(&spdy_server_list, kMaxSupportsSpdyServerHosts);
216 ASSERT_EQ(1U, spdy_server_list.GetSize());
176 ASSERT_TRUE(spdy_server_list.GetString(0, &string_value_g)); 217 ASSERT_TRUE(spdy_server_list.GetString(0, &string_value_g));
218 ASSERT_EQ(spdy_server_g, string_value_g);
219
220 // Add mail.google.com:443 as supporting SPDY. Verify mail.google.com:443 and
221 // www.google.com:443 are in the list.
222 impl_.SetSupportsSpdy(spdy_server_mail, true);
223 impl_.GetSpdyServerList(&spdy_server_list, kMaxSupportsSpdyServerHosts);
224 ASSERT_EQ(2U, spdy_server_list.GetSize());
225 ASSERT_TRUE(spdy_server_list.GetString(0, &string_value_m));
226 ASSERT_EQ(spdy_server_m, string_value_m);
227 ASSERT_TRUE(spdy_server_list.GetString(1, &string_value_g));
228 ASSERT_EQ(spdy_server_g, string_value_g);
229
230 // Get www.google.com:443 should reorder SpdyServerHostPortMap. Verify that it
231 // is www.google.com:443 is the MRU server.
232 EXPECT_TRUE(impl_.SupportsSpdy(spdy_server_google));
233 impl_.GetSpdyServerList(&spdy_server_list, kMaxSupportsSpdyServerHosts);
234 ASSERT_EQ(2U, spdy_server_list.GetSize());
235 ASSERT_TRUE(spdy_server_list.GetString(0, &string_value_g));
236 ASSERT_EQ(spdy_server_g, string_value_g);
177 ASSERT_TRUE(spdy_server_list.GetString(1, &string_value_m)); 237 ASSERT_TRUE(spdy_server_list.GetString(1, &string_value_m));
178 if (string_value_g.compare(spdy_server_g) == 0) { 238 ASSERT_EQ(spdy_server_m, string_value_m);
179 ASSERT_EQ(spdy_server_g, string_value_g);
180 ASSERT_EQ(spdy_server_m, string_value_m);
181 } else {
182 ASSERT_EQ(spdy_server_g, string_value_m);
183 ASSERT_EQ(spdy_server_m, string_value_g);
184 }
185 } 239 }
186 240
187 typedef HttpServerPropertiesImplTest AlternateProtocolServerPropertiesTest; 241 typedef HttpServerPropertiesImplTest AlternateProtocolServerPropertiesTest;
188 242
189 TEST_F(AlternateProtocolServerPropertiesTest, Basic) { 243 TEST_F(AlternateProtocolServerPropertiesTest, Basic) {
190 HostPortPair test_host_port_pair("foo", 80); 244 HostPortPair test_host_port_pair("foo", 80);
191 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair)); 245 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
192 impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3); 246 impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3);
193 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair)); 247 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
194 const PortAlternateProtocolPair alternate = 248 const PortAlternateProtocolPair alternate =
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 it1_ret = settings_map1_it_ret.find(id1); 600 it1_ret = settings_map1_it_ret.find(id1);
547 EXPECT_TRUE(it1_ret != settings_map1_it_ret.end()); 601 EXPECT_TRUE(it1_ret != settings_map1_it_ret.end());
548 flags_and_value1_ret = it1_ret->second; 602 flags_and_value1_ret = it1_ret->second;
549 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first); 603 EXPECT_EQ(SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first);
550 EXPECT_EQ(value1, flags_and_value1_ret.second); 604 EXPECT_EQ(value1, flags_and_value1_ret.second);
551 } 605 }
552 606
553 } // namespace 607 } // namespace
554 608
555 } // namespace net 609 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_server_properties_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698