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