| 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 |