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