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

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

Issue 665083009: ABANDONED Handle multiple AlternateProtocols for each HostPortPair. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Another Cronet occurrence. Created 5 years, 11 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
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"
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 ASSERT_EQ(spdy_server_g, string_value_g); 230 ASSERT_EQ(spdy_server_g, string_value_g);
231 ASSERT_TRUE(spdy_server_list.GetString(1, &string_value_m)); 231 ASSERT_TRUE(spdy_server_list.GetString(1, &string_value_m));
232 ASSERT_EQ(spdy_server_m, string_value_m); 232 ASSERT_EQ(spdy_server_m, string_value_m);
233 } 233 }
234 234
235 typedef HttpServerPropertiesImplTest AlternateProtocolServerPropertiesTest; 235 typedef HttpServerPropertiesImplTest AlternateProtocolServerPropertiesTest;
236 236
237 TEST_F(AlternateProtocolServerPropertiesTest, Basic) { 237 TEST_F(AlternateProtocolServerPropertiesTest, Basic) {
238 HostPortPair test_host_port_pair("foo", 80); 238 HostPortPair test_host_port_pair("foo", 80);
239 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair)); 239 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
240 impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1); 240 impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
241 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair)); 241 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
242 const AlternateProtocolInfo alternate = 242 const AlternateProtocols alternate_protocols =
243 impl_.GetAlternateProtocol(test_host_port_pair); 243 impl_.GetAlternateProtocols(test_host_port_pair);
244 ASSERT_EQ(1u, alternate_protocols.size());
245 const AlternateProtocolInfo alternate = alternate_protocols[0];
244 EXPECT_EQ(443, alternate.port); 246 EXPECT_EQ(443, alternate.port);
245 EXPECT_EQ(NPN_SPDY_3, alternate.protocol); 247 EXPECT_EQ(NPN_SPDY_3, alternate.protocol);
246 248
247 impl_.Clear(); 249 impl_.Clear();
248 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair)); 250 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
249 } 251 }
250 252
251 TEST_F(AlternateProtocolServerPropertiesTest, DefaultProbabilityExcluded) { 253 TEST_F(AlternateProtocolServerPropertiesTest, DefaultProbabilityExcluded) {
252 HostPortPair test_host_port_pair("foo", 80); 254 HostPortPair test_host_port_pair("foo", 80);
253 impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .99); 255 impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .99);
254 256
255 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair)); 257 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
256 } 258 }
257 259
258 TEST_F(AlternateProtocolServerPropertiesTest, Probability) { 260 TEST_F(AlternateProtocolServerPropertiesTest, Probability) {
259 impl_.SetAlternateProtocolProbabilityThreshold(.25); 261 impl_.SetAlternateProtocolProbabilityThreshold(.25);
260 262
261 HostPortPair test_host_port_pair("foo", 80); 263 HostPortPair test_host_port_pair("foo", 80);
262 impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .5); 264 impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .5);
263 265
264 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair)); 266 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
265 const AlternateProtocolInfo alternate = 267 const AlternateProtocols alternate_protocols =
266 impl_.GetAlternateProtocol(test_host_port_pair); 268 impl_.GetAlternateProtocols(test_host_port_pair);
269 ASSERT_EQ(1u, alternate_protocols.size());
270 const AlternateProtocolInfo alternate = alternate_protocols[0];
267 EXPECT_EQ(443, alternate.port); 271 EXPECT_EQ(443, alternate.port);
268 EXPECT_EQ(NPN_SPDY_3, alternate.protocol); 272 EXPECT_EQ(NPN_SPDY_3, alternate.protocol);
269 EXPECT_EQ(.5, alternate.probability); 273 EXPECT_EQ(.5, alternate.probability);
270 } 274 }
271 275
272 TEST_F(AlternateProtocolServerPropertiesTest, ProbabilityExcluded) { 276 TEST_F(AlternateProtocolServerPropertiesTest, ProbabilityExcluded) {
273 impl_.SetAlternateProtocolProbabilityThreshold(.75); 277 impl_.SetAlternateProtocolProbabilityThreshold(.75);
274 278
275 HostPortPair test_host_port_pair("foo", 80); 279 HostPortPair test_host_port_pair("foo", 80);
276 280
277 impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .5); 281 impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .5);
278 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair)); 282 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
279 } 283 }
280 284
281 TEST_F(AlternateProtocolServerPropertiesTest, Initialize) { 285 TEST_F(AlternateProtocolServerPropertiesTest, Initialize) {
282 HostPortPair test_host_port_pair1("foo1", 80); 286 HostPortPair test_host_port_pair1("foo1", 80);
283 impl_.SetAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1); 287 impl_.AddAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
284 impl_.SetBrokenAlternateProtocol(test_host_port_pair1); 288 impl_.AddAlternateProtocol(test_host_port_pair1, 123, NPN_SPDY_3, 1);
289 AlternateProtocolInfo alternate_protocol(123, NPN_SPDY_3, 1);
290 impl_.SetBrokenAlternateProtocol(test_host_port_pair1, alternate_protocol);
285 HostPortPair test_host_port_pair2("foo2", 80); 291 HostPortPair test_host_port_pair2("foo2", 80);
286 impl_.SetAlternateProtocol(test_host_port_pair2, 443, NPN_SPDY_3, 1); 292 impl_.AddAlternateProtocol(test_host_port_pair2, 443, NPN_SPDY_3, 1);
287 293
288 AlternateProtocolMap alternate_protocol_map( 294 AlternateProtocolMap alternate_protocol_map(
289 AlternateProtocolMap::NO_AUTO_EVICT); 295 AlternateProtocolMap::NO_AUTO_EVICT);
290 AlternateProtocolInfo alternate(123, NPN_SPDY_3, 1); 296 AlternateProtocolInfo alternate(123, NPN_SPDY_3, 1);
291 alternate_protocol_map.Put(test_host_port_pair2, alternate); 297 alternate_protocol_map.Put(test_host_port_pair2,
298 AlternateProtocols(/*size=*/1, alternate));
292 HostPortPair test_host_port_pair3("foo3", 80); 299 HostPortPair test_host_port_pair3("foo3", 80);
293 alternate.port = 1234; 300 alternate.port = 1234;
294 alternate_protocol_map.Put(test_host_port_pair3, alternate); 301 alternate_protocol_map.Put(test_host_port_pair3,
302 AlternateProtocols(/*size=*/1, alternate));
295 impl_.InitializeAlternateProtocolServers(&alternate_protocol_map); 303 impl_.InitializeAlternateProtocolServers(&alternate_protocol_map);
296 304
297 // Verify test_host_port_pair3 is the MRU server. 305 // Verify test_host_port_pair3 is the MRU server.
298 const AlternateProtocolMap& map = impl_.alternate_protocol_map(); 306 const AlternateProtocolMap& map = impl_.alternate_protocol_map();
299 AlternateProtocolMap::const_iterator it = map.begin(); 307 AlternateProtocolMap::const_iterator it = map.begin();
300 it = map.begin();
301 EXPECT_TRUE(it->first.Equals(test_host_port_pair3)); 308 EXPECT_TRUE(it->first.Equals(test_host_port_pair3));
302 EXPECT_EQ(1234, it->second.port); 309 ASSERT_EQ(1u, it->second.size());
303 EXPECT_EQ(NPN_SPDY_3, it->second.protocol); 310 EXPECT_EQ(1234, it->second[0].port);
311 EXPECT_EQ(NPN_SPDY_3, it->second[0].protocol);
304 312
305 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair1)); 313 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair1));
306 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair2)); 314 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair2));
307 alternate = impl_.GetAlternateProtocol(test_host_port_pair1); 315 AlternateProtocols alternate_protocols =
308 EXPECT_TRUE(alternate.is_broken); 316 impl_.GetAlternateProtocols(test_host_port_pair1);
309 alternate = impl_.GetAlternateProtocol(test_host_port_pair2); 317 ASSERT_EQ(1u, alternate_protocols.size());
310 EXPECT_EQ(123, alternate.port); 318 EXPECT_TRUE(alternate_protocols[0].is_broken);
311 EXPECT_EQ(NPN_SPDY_3, alternate.protocol); 319 alternate_protocols = impl_.GetAlternateProtocols(test_host_port_pair2);
320 ASSERT_EQ(1u, alternate_protocols.size());
321 EXPECT_EQ(123, alternate_protocols[0].port);
322 EXPECT_EQ(NPN_SPDY_3, alternate_protocols[0].protocol);
312 } 323 }
313 324
314 TEST_F(AlternateProtocolServerPropertiesTest, MRUOfHasAlternateProtocol) { 325 TEST_F(AlternateProtocolServerPropertiesTest, MRUOfHasAlternateProtocol) {
315 HostPortPair test_host_port_pair1("foo1", 80); 326 HostPortPair test_host_port_pair1("foo1", 80);
316 impl_.SetAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1); 327 impl_.AddAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
317 HostPortPair test_host_port_pair2("foo2", 80); 328 HostPortPair test_host_port_pair2("foo2", 80);
318 impl_.SetAlternateProtocol(test_host_port_pair2, 1234, NPN_SPDY_3, 1); 329 impl_.AddAlternateProtocol(test_host_port_pair2, 1234, NPN_SPDY_3, 1);
319 330
320 const AlternateProtocolMap& map = impl_.alternate_protocol_map(); 331 const AlternateProtocolMap& map = impl_.alternate_protocol_map();
321 AlternateProtocolMap::const_iterator it = map.begin(); 332 AlternateProtocolMap::const_iterator it = map.begin();
322 EXPECT_TRUE(it->first.Equals(test_host_port_pair2)); 333 EXPECT_TRUE(it->first.Equals(test_host_port_pair2));
323 EXPECT_EQ(1234, it->second.port); 334 ASSERT_EQ(1u, it->second.size());
324 EXPECT_EQ(NPN_SPDY_3, it->second.protocol); 335 EXPECT_EQ(1234, it->second[0].port);
336 EXPECT_EQ(NPN_SPDY_3, it->second[0].protocol);
325 337
326 // HasAlternateProtocol should reoder the AlternateProtocol map. 338 // HasAlternateProtocol should reoder the AlternateProtocol map.
327 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair1)); 339 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair1));
328 it = map.begin(); 340 it = map.begin();
329 EXPECT_TRUE(it->first.Equals(test_host_port_pair1)); 341 EXPECT_TRUE(it->first.Equals(test_host_port_pair1));
330 EXPECT_EQ(443, it->second.port); 342 ASSERT_EQ(1u, it->second.size());
331 EXPECT_EQ(NPN_SPDY_3, it->second.protocol); 343 EXPECT_EQ(443, it->second[0].port);
344 EXPECT_EQ(NPN_SPDY_3, it->second[0].protocol);
332 } 345 }
333 346
334 TEST_F(AlternateProtocolServerPropertiesTest, MRUOfGetAlternateProtocol) { 347 TEST_F(AlternateProtocolServerPropertiesTest, MRUOfGetAlternateProtocol) {
335 HostPortPair test_host_port_pair1("foo1", 80); 348 HostPortPair test_host_port_pair1("foo1", 80);
336 impl_.SetAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1); 349 impl_.AddAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
337 HostPortPair test_host_port_pair2("foo2", 80); 350 HostPortPair test_host_port_pair2("foo2", 80);
338 impl_.SetAlternateProtocol(test_host_port_pair2, 1234, NPN_SPDY_3, 1); 351 impl_.AddAlternateProtocol(test_host_port_pair2, 1234, NPN_SPDY_3, 1);
339 352
340 const AlternateProtocolMap& map = impl_.alternate_protocol_map(); 353 const AlternateProtocolMap& map = impl_.alternate_protocol_map();
341 AlternateProtocolMap::const_iterator it = map.begin(); 354 AlternateProtocolMap::const_iterator it = map.begin();
342 EXPECT_TRUE(it->first.Equals(test_host_port_pair2)); 355 EXPECT_TRUE(it->first.Equals(test_host_port_pair2));
343 EXPECT_EQ(1234, it->second.port); 356 ASSERT_EQ(1u, it->second.size());
344 EXPECT_EQ(NPN_SPDY_3, it->second.protocol); 357 EXPECT_EQ(1234, it->second[0].port);
358 EXPECT_EQ(NPN_SPDY_3, it->second[0].protocol);
345 359
346 // GetAlternateProtocol should reoder the AlternateProtocol map. 360 // GetAlternateProtocols should reorder the AlternateProtocol map.
347 AlternateProtocolInfo alternate = 361 const AlternateProtocols alternate_protocols =
348 impl_.GetAlternateProtocol(test_host_port_pair1); 362 impl_.GetAlternateProtocols(test_host_port_pair1);
363 ASSERT_EQ(1u, alternate_protocols.size());
364 const AlternateProtocolInfo alternate = alternate_protocols[0];
349 EXPECT_EQ(443, alternate.port); 365 EXPECT_EQ(443, alternate.port);
350 EXPECT_EQ(NPN_SPDY_3, alternate.protocol); 366 EXPECT_EQ(NPN_SPDY_3, alternate.protocol);
351 it = map.begin(); 367 it = map.begin();
352 EXPECT_TRUE(it->first.Equals(test_host_port_pair1)); 368 EXPECT_TRUE(it->first.Equals(test_host_port_pair1));
353 EXPECT_EQ(443, it->second.port); 369 ASSERT_EQ(1u, it->second.size());
354 EXPECT_EQ(NPN_SPDY_3, it->second.protocol); 370 EXPECT_EQ(443, it->second[0].port);
371 EXPECT_EQ(NPN_SPDY_3, it->second[0].protocol);
372 }
373
374 TEST_F(AlternateProtocolServerPropertiesTest, RemoveForSingleHost) {
375 HostPortPair test_host_port_pair("foo", 80);
376 impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
377 impl_.AddAlternateProtocol(test_host_port_pair, 1234, NPN_SPDY_3, 1);
378
379 const net::AlternateProtocolMap& map = impl_.alternate_protocol_map();
380 net::AlternateProtocolMap::const_iterator it = map.begin();
381 EXPECT_TRUE(it->first.Equals(test_host_port_pair));
382 ASSERT_EQ(2u, it->second.size());
383 EXPECT_EQ(443, it->second[0].port);
384 EXPECT_EQ(1234, it->second[1].port);
385
386 // Adding an identical entry does nothing.
387 impl_.AddAlternateProtocol(test_host_port_pair, 1234, NPN_SPDY_3, 1);
388 it = map.begin();
389 ASSERT_EQ(2u, it->second.size());
390
391 // Add a third one.
392 impl_.AddAlternateProtocol(test_host_port_pair, 123, NPN_SPDY_3, 1);
393 it = map.begin();
394 ASSERT_EQ(3u, it->second.size());
395 EXPECT_EQ(123, it->second[2].port);
396
397 // Remove one by one.
398 impl_.RemoveAlternateProtocol(test_host_port_pair,
399 AlternateProtocolInfo(1234, NPN_SPDY_3, 1));
400 it = map.begin();
401 ASSERT_EQ(2u, it->second.size());
402 EXPECT_EQ(443, it->second[0].port);
403 EXPECT_EQ(123, it->second[1].port);
404
405 impl_.RemoveAlternateProtocol(test_host_port_pair,
406 AlternateProtocolInfo(443, NPN_SPDY_3, 1));
407 it = map.begin();
408 ASSERT_EQ(1u, it->second.size());
409 EXPECT_EQ(123, it->second[0].port);
410
411 impl_.RemoveAlternateProtocol(test_host_port_pair,
412 AlternateProtocolInfo(123, NPN_SPDY_3, 1));
413 ASSERT_EQ(0u, impl_.alternate_protocol_map().size());
414 }
415
416 TEST_F(AlternateProtocolServerPropertiesTest, ClearAlternateProtocol) {
417 HostPortPair test_host_port_pair("foo", 80);
418 impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
419 impl_.AddAlternateProtocol(test_host_port_pair, 1234, NPN_SPDY_3, 1);
420
421 const net::AlternateProtocolMap& map = impl_.alternate_protocol_map();
422 net::AlternateProtocolMap::const_iterator it = map.begin();
423 EXPECT_TRUE(it->first.Equals(test_host_port_pair));
424 ASSERT_EQ(2u, it->second.size());
425 EXPECT_EQ(443, it->second[0].port);
426 EXPECT_EQ(1234, it->second[1].port);
427
428 impl_.ClearAlternateProtocol(test_host_port_pair);
429 ASSERT_EQ(0u, impl_.alternate_protocol_map().size());
355 } 430 }
356 431
357 TEST_F(AlternateProtocolServerPropertiesTest, SetBroken) { 432 TEST_F(AlternateProtocolServerPropertiesTest, SetBroken) {
358 HostPortPair test_host_port_pair("foo", 80); 433 HostPortPair test_host_port_pair("foo", 80);
359 impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1); 434 impl_.AddAlternateProtocol(test_host_port_pair, 123, NPN_SPDY_3, 1);
360 impl_.SetBrokenAlternateProtocol(test_host_port_pair); 435 AlternateProtocolInfo alternate(123, NPN_SPDY_3, 1);
436 impl_.SetBrokenAlternateProtocol(test_host_port_pair, alternate);
361 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair)); 437 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
362 AlternateProtocolInfo alternate = 438 AlternateProtocols alternate_protocols =
363 impl_.GetAlternateProtocol(test_host_port_pair); 439 impl_.GetAlternateProtocols(test_host_port_pair);
364 EXPECT_TRUE(alternate.is_broken); 440 ASSERT_EQ(1u, alternate_protocols.size());
441 EXPECT_TRUE(alternate_protocols[0].is_broken);
365 442
366 impl_.SetAlternateProtocol( 443 impl_.AddAlternateProtocol(test_host_port_pair, 123, NPN_SPDY_3, 1);
367 test_host_port_pair, 444 alternate_protocols = impl_.GetAlternateProtocols(test_host_port_pair);
368 1234, 445 ASSERT_EQ(1u, alternate_protocols.size())
369 NPN_SPDY_3, 446 << "Second attempt should be ignored.";
370 1); 447 EXPECT_TRUE(alternate_protocols[0].is_broken);
371 alternate = impl_.GetAlternateProtocol(test_host_port_pair); 448
372 EXPECT_TRUE(alternate.is_broken) << "Second attempt should be ignored."; 449 impl_.AddAlternateProtocol(test_host_port_pair, 1234, NPN_SPDY_3, 1);
450 alternate_protocols = impl_.GetAlternateProtocols(test_host_port_pair);
451 ASSERT_EQ(2u, alternate_protocols.size()) << "Different port should be fine.";
373 } 452 }
374 453
375 TEST_F(AlternateProtocolServerPropertiesTest, ClearBroken) { 454 TEST_F(AlternateProtocolServerPropertiesTest, ClearBroken) {
376 HostPortPair test_host_port_pair("foo", 80); 455 HostPortPair test_host_port_pair("foo", 80);
377 impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1); 456 impl_.AddAlternateProtocol(test_host_port_pair, 123, NPN_SPDY_3, 1);
378 impl_.SetBrokenAlternateProtocol(test_host_port_pair); 457 AlternateProtocolInfo alternate(123, NPN_SPDY_3, 1);
458 impl_.SetBrokenAlternateProtocol(test_host_port_pair, alternate);
379 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair)); 459 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
380 AlternateProtocolInfo alternate = 460 AlternateProtocols alternate_protocols =
381 impl_.GetAlternateProtocol(test_host_port_pair); 461 impl_.GetAlternateProtocols(test_host_port_pair);
382 EXPECT_TRUE(alternate.is_broken); 462 ASSERT_EQ(1u, alternate_protocols.size());
463 EXPECT_TRUE(alternate_protocols[0].is_broken);
383 impl_.ClearAlternateProtocol(test_host_port_pair); 464 impl_.ClearAlternateProtocol(test_host_port_pair);
384 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair)); 465 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
385 } 466 }
386 467
387 TEST_F(AlternateProtocolServerPropertiesTest, Forced) { 468 TEST_F(AlternateProtocolServerPropertiesTest, Forced) {
388 // Test forced alternate protocols. 469 // Test forced alternate protocols.
389 470
390 AlternateProtocolInfo default_protocol(1234, NPN_SPDY_3, 1); 471 AlternateProtocolInfo default_protocol(1234, NPN_SPDY_3, 1);
391 HttpServerPropertiesImpl::ForceAlternateProtocol(default_protocol); 472 HttpServerPropertiesImpl::ForceAlternateProtocol(default_protocol);
392 473
393 // Verify the forced protocol. 474 // Verify the forced protocol.
394 HostPortPair test_host_port_pair("foo", 80); 475 HostPortPair test_host_port_pair("foo", 80);
395 EXPECT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair)); 476 EXPECT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
396 AlternateProtocolInfo alternate = 477 AlternateProtocols alternate_protocols =
397 impl_.GetAlternateProtocol(test_host_port_pair); 478 impl_.GetAlternateProtocols(test_host_port_pair);
398 EXPECT_EQ(default_protocol.port, alternate.port); 479 ASSERT_EQ(1u, alternate_protocols.size());
399 EXPECT_EQ(default_protocol.protocol, alternate.protocol); 480 EXPECT_EQ(default_protocol.port, alternate_protocols[0].port);
481 EXPECT_EQ(default_protocol.protocol, alternate_protocols[0].protocol);
400 482
401 // Verify the real protocol overrides the forced protocol. 483 // Verify the real protocol overrides the forced protocol.
402 impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1); 484 impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
403 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair)); 485 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
404 alternate = impl_.GetAlternateProtocol(test_host_port_pair); 486 alternate_protocols = impl_.GetAlternateProtocols(test_host_port_pair);
405 EXPECT_EQ(443, alternate.port); 487 ASSERT_EQ(1u, alternate_protocols.size());
406 EXPECT_EQ(NPN_SPDY_3, alternate.protocol); 488 EXPECT_EQ(443, alternate_protocols[0].port);
489 EXPECT_EQ(NPN_SPDY_3, alternate_protocols[0].protocol);
407 490
408 // Turn off the static, forced alternate protocol so that tests don't 491 // Turn off the static, forced alternate protocol so that tests don't
409 // have this state. 492 // have this state.
410 HttpServerPropertiesImpl::DisableForcedAlternateProtocol(); 493 HttpServerPropertiesImpl::DisableForcedAlternateProtocol();
411 494
412 // Verify the forced protocol is off. 495 // Verify the forced protocol is off.
413 HostPortPair test_host_port_pair2("bar", 80); 496 HostPortPair test_host_port_pair2("bar", 80);
414 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair2)); 497 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair2));
415 } 498 }
416 499
417 TEST_F(AlternateProtocolServerPropertiesTest, Canonical) { 500 TEST_F(AlternateProtocolServerPropertiesTest, Canonical) {
418 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 501 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
419 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair)); 502 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
420 503
421 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); 504 HostPortPair canonical_port_pair("bar.c.youtube.com", 80);
422 EXPECT_FALSE(impl_.HasAlternateProtocol(canonical_port_pair)); 505 EXPECT_FALSE(impl_.HasAlternateProtocol(canonical_port_pair));
423 506
424 AlternateProtocolInfo canonical_protocol(1234, QUIC, 1); 507 AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
425 508
426 impl_.SetAlternateProtocol(canonical_port_pair, 509 impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
427 canonical_protocol.port, 510 canonical_protocol.protocol, 1);
428 canonical_protocol.protocol,
429 1);
430 // Verify the forced protocol. 511 // Verify the forced protocol.
431 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair)); 512 ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
432 AlternateProtocolInfo alternate = 513 AlternateProtocols alternate_protocols =
433 impl_.GetAlternateProtocol(test_host_port_pair); 514 impl_.GetAlternateProtocols(test_host_port_pair);
434 EXPECT_EQ(canonical_protocol.port, alternate.port); 515 ASSERT_EQ(1u, alternate_protocols.size());
435 EXPECT_EQ(canonical_protocol.protocol, alternate.protocol); 516 EXPECT_EQ(canonical_protocol.port, alternate_protocols[0].port);
517 EXPECT_EQ(canonical_protocol.protocol, alternate_protocols[0].protocol);
436 518
437 // Verify the canonical suffix. 519 // Verify the canonical suffix.
438 EXPECT_EQ(".c.youtube.com", impl_.GetCanonicalSuffix(test_host_port_pair)); 520 EXPECT_EQ(".c.youtube.com", impl_.GetCanonicalSuffix(test_host_port_pair));
439 EXPECT_EQ(".c.youtube.com", impl_.GetCanonicalSuffix(canonical_port_pair)); 521 EXPECT_EQ(".c.youtube.com", impl_.GetCanonicalSuffix(canonical_port_pair));
440 } 522 }
441 523
442 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBelowThreshold) { 524 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBelowThreshold) {
443 impl_.SetAlternateProtocolProbabilityThreshold(0.02); 525 impl_.SetAlternateProtocolProbabilityThreshold(0.02);
444 526
445 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 527 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
446 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); 528 HostPortPair canonical_port_pair("bar.c.youtube.com", 80);
447 AlternateProtocolInfo canonical_protocol(1234, QUIC, 0.01); 529 AlternateProtocolInfo canonical_protocol(1234, QUIC, 0.01);
448 530
449 impl_.SetAlternateProtocol(canonical_port_pair, 531 impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
450 canonical_protocol.port,
451 canonical_protocol.protocol, 532 canonical_protocol.protocol,
452 canonical_protocol.probability); 533 canonical_protocol.probability);
453 EXPECT_FALSE(impl_.HasAlternateProtocol(canonical_port_pair)); 534 EXPECT_FALSE(impl_.HasAlternateProtocol(canonical_port_pair));
454 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair)); 535 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
455 } 536 }
456 537
457 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalAboveThreshold) { 538 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalAboveThreshold) {
458 impl_.SetAlternateProtocolProbabilityThreshold(0.02); 539 impl_.SetAlternateProtocolProbabilityThreshold(0.02);
459 540
460 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 541 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
461 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); 542 HostPortPair canonical_port_pair("bar.c.youtube.com", 80);
462 AlternateProtocolInfo canonical_protocol(1234, QUIC, 0.03); 543 AlternateProtocolInfo canonical_protocol(1234, QUIC, 0.03);
463 544
464 impl_.SetAlternateProtocol(canonical_port_pair, 545 impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
465 canonical_protocol.port,
466 canonical_protocol.protocol, 546 canonical_protocol.protocol,
467 canonical_protocol.probability); 547 canonical_protocol.probability);
468 EXPECT_TRUE(impl_.HasAlternateProtocol(canonical_port_pair)); 548 EXPECT_TRUE(impl_.HasAlternateProtocol(canonical_port_pair));
469 EXPECT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair)); 549 EXPECT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
470 } 550 }
471 551
472 TEST_F(AlternateProtocolServerPropertiesTest, ClearCanonical) { 552 TEST_F(AlternateProtocolServerPropertiesTest, ClearCanonical) {
473 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 553 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
474 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); 554 HostPortPair canonical_port_pair("bar.c.youtube.com", 80);
475 555
476 AlternateProtocolInfo canonical_protocol(1234, QUIC, 1); 556 AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
477 557
478 impl_.SetAlternateProtocol(canonical_port_pair, 558 impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
479 canonical_protocol.port,
480 canonical_protocol.protocol, 559 canonical_protocol.protocol,
481 canonical_protocol.probability); 560 canonical_protocol.probability);
482 561
483 impl_.ClearAlternateProtocol(canonical_port_pair); 562 impl_.ClearAlternateProtocol(canonical_port_pair);
484 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair)); 563 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
485 } 564 }
486 565
487 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBroken) { 566 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBroken) {
488 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 567 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
489 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); 568 HostPortPair canonical_port_pair("bar.c.youtube.com", 80);
490 569
491 AlternateProtocolInfo canonical_protocol(1234, QUIC, 1); 570 AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
492 571
493 impl_.SetAlternateProtocol(canonical_port_pair, 572 impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
494 canonical_protocol.port,
495 canonical_protocol.protocol, 573 canonical_protocol.protocol,
496 canonical_protocol.probability); 574 canonical_protocol.probability);
497 575
498 impl_.SetBrokenAlternateProtocol(canonical_port_pair); 576 impl_.SetBrokenAlternateProtocol(canonical_port_pair, canonical_protocol);
499 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair)); 577 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
500 } 578 }
501 579
502 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBroken2) { 580 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBroken2) {
503 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 581 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
504 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); 582 HostPortPair canonical_port_pair("bar.c.youtube.com", 80);
505 583
506 AlternateProtocolInfo canonical_protocol(1234, QUIC, 1); 584 AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
507 585
508 impl_.SetAlternateProtocol(canonical_port_pair, 586 impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
509 canonical_protocol.port,
510 canonical_protocol.protocol, 587 canonical_protocol.protocol,
511 canonical_protocol.probability); 588 canonical_protocol.probability);
512 589
513 impl_.SetBrokenAlternateProtocol(test_host_port_pair); 590 impl_.SetBrokenAlternateProtocol(test_host_port_pair, canonical_protocol);
514 AlternateProtocolInfo alternate = 591 AlternateProtocols alternates =
515 impl_.GetAlternateProtocol(test_host_port_pair); 592 impl_.GetAlternateProtocols(test_host_port_pair);
516 EXPECT_TRUE(alternate.is_broken); 593 ASSERT_EQ(1u, alternates.size());
594 EXPECT_TRUE(alternates[0].is_broken);
517 } 595 }
518 596
519 TEST_F(AlternateProtocolServerPropertiesTest, ClearWithCanonical) { 597 TEST_F(AlternateProtocolServerPropertiesTest, ClearWithCanonical) {
520 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); 598 HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
521 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); 599 HostPortPair canonical_port_pair("bar.c.youtube.com", 80);
522 600
523 AlternateProtocolInfo canonical_protocol(1234, QUIC, 1); 601 AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
524 602
525 impl_.SetAlternateProtocol(canonical_port_pair, 603 impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
526 canonical_protocol.port,
527 canonical_protocol.protocol, 604 canonical_protocol.protocol,
528 canonical_protocol.probability); 605 canonical_protocol.probability);
529 606
530 impl_.Clear(); 607 impl_.Clear();
531 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair)); 608 EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
532 } 609 }
533 610
534 typedef HttpServerPropertiesImplTest SpdySettingsServerPropertiesTest; 611 typedef HttpServerPropertiesImplTest SpdySettingsServerPropertiesTest;
535 612
536 TEST_F(SpdySettingsServerPropertiesTest, Initialize) { 613 TEST_F(SpdySettingsServerPropertiesTest, Initialize) {
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 EXPECT_EQ(100, stats2->bandwidth_estimate.ToBitsPerSecond()); 872 EXPECT_EQ(100, stats2->bandwidth_estimate.ToBitsPerSecond());
796 873
797 impl_.Clear(); 874 impl_.Clear();
798 const ServerNetworkStats* stats3 = impl_.GetServerNetworkStats(foo_server); 875 const ServerNetworkStats* stats3 = impl_.GetServerNetworkStats(foo_server);
799 EXPECT_EQ(NULL, stats3); 876 EXPECT_EQ(NULL, stats3);
800 } 877 }
801 878
802 } // namespace 879 } // namespace
803 880
804 } // namespace net 881 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698