| 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 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 HostPortPair spdy_server_mail("mail.google.com", 443); | 111 HostPortPair spdy_server_mail("mail.google.com", 443); |
| 112 EXPECT_FALSE(impl_.SupportsRequestPriority(spdy_server_mail)); | 112 EXPECT_FALSE(impl_.SupportsRequestPriority(spdy_server_mail)); |
| 113 | 113 |
| 114 // Add docs.google.com:443 as supporting SPDY. | 114 // Add docs.google.com:443 as supporting SPDY. |
| 115 HostPortPair spdy_server_docs("docs.google.com", 443); | 115 HostPortPair spdy_server_docs("docs.google.com", 443); |
| 116 impl_.SetSupportsSpdy(spdy_server_docs, true); | 116 impl_.SetSupportsSpdy(spdy_server_docs, true); |
| 117 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_docs)); | 117 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_docs)); |
| 118 | 118 |
| 119 // Add www.youtube.com:443 as supporting QUIC. | 119 // Add www.youtube.com:443 as supporting QUIC. |
| 120 HostPortPair quic_server_youtube("www.youtube.com", 443); | 120 HostPortPair quic_server_youtube("www.youtube.com", 443); |
| 121 impl_.SetAlternateProtocol(quic_server_youtube, 443, QUIC, 1); | 121 const AlternativeService alternative_service(QUIC, "www.youtube.com", 443); |
| 122 impl_.SetAlternativeService(quic_server_youtube, alternative_service, 1.0); |
| 122 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_youtube)); | 123 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_youtube)); |
| 123 | 124 |
| 124 // Verify all the entries are the same after additions. | 125 // Verify all the entries are the same after additions. |
| 125 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_google)); | 126 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_google)); |
| 126 EXPECT_FALSE(impl_.SupportsRequestPriority(spdy_server_mail)); | 127 EXPECT_FALSE(impl_.SupportsRequestPriority(spdy_server_mail)); |
| 127 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_docs)); | 128 EXPECT_TRUE(impl_.SupportsRequestPriority(spdy_server_docs)); |
| 128 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_youtube)); | 129 EXPECT_TRUE(impl_.SupportsRequestPriority(quic_server_youtube)); |
| 129 } | 130 } |
| 130 | 131 |
| 131 TEST_F(SpdyServerPropertiesTest, Clear) { | 132 TEST_F(SpdyServerPropertiesTest, Clear) { |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 ASSERT_EQ(spdy_server_g, string_value_g); | 237 ASSERT_EQ(spdy_server_g, string_value_g); |
| 237 ASSERT_TRUE(spdy_server_list.GetString(1, &string_value_m)); | 238 ASSERT_TRUE(spdy_server_list.GetString(1, &string_value_m)); |
| 238 ASSERT_EQ(spdy_server_m, string_value_m); | 239 ASSERT_EQ(spdy_server_m, string_value_m); |
| 239 } | 240 } |
| 240 | 241 |
| 241 typedef HttpServerPropertiesImplTest AlternateProtocolServerPropertiesTest; | 242 typedef HttpServerPropertiesImplTest AlternateProtocolServerPropertiesTest; |
| 242 | 243 |
| 243 TEST_F(AlternateProtocolServerPropertiesTest, Basic) { | 244 TEST_F(AlternateProtocolServerPropertiesTest, Basic) { |
| 244 HostPortPair test_host_port_pair("foo", 80); | 245 HostPortPair test_host_port_pair("foo", 80); |
| 245 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); | 246 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); |
| 246 impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1.0); | 247 |
| 248 AlternativeService alternative_service(NPN_SPDY_3, "foo", 443); |
| 249 impl_.SetAlternativeService(test_host_port_pair, alternative_service, 1.0); |
| 247 ASSERT_TRUE(HasAlternativeService(test_host_port_pair)); | 250 ASSERT_TRUE(HasAlternativeService(test_host_port_pair)); |
| 248 const AlternativeService alternative_service = | 251 alternative_service = impl_.GetAlternativeService(test_host_port_pair); |
| 249 impl_.GetAlternativeService(test_host_port_pair); | |
| 250 EXPECT_EQ(443, alternative_service.port); | 252 EXPECT_EQ(443, alternative_service.port); |
| 251 EXPECT_EQ(NPN_SPDY_3, alternative_service.protocol); | 253 EXPECT_EQ(NPN_SPDY_3, alternative_service.protocol); |
| 252 | 254 |
| 253 impl_.Clear(); | 255 impl_.Clear(); |
| 254 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); | 256 EXPECT_FALSE(HasAlternativeService(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 const AlternativeService alternative_service(NPN_SPDY_3, "foo", 443); |
| 262 impl_.SetAlternativeService(test_host_port_pair, alternative_service, 0.99); |
| 260 | 263 |
| 261 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); | 264 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); |
| 262 } | 265 } |
| 263 | 266 |
| 264 TEST_F(AlternateProtocolServerPropertiesTest, Probability) { | 267 TEST_F(AlternateProtocolServerPropertiesTest, Probability) { |
| 265 impl_.SetAlternateProtocolProbabilityThreshold(.25); | 268 impl_.SetAlternateProtocolProbabilityThreshold(0.25); |
| 266 | 269 |
| 267 HostPortPair test_host_port_pair("foo", 80); | 270 HostPortPair test_host_port_pair("foo", 80); |
| 268 impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 0.5); | 271 const AlternativeService alternative_service(NPN_SPDY_3, "foo", 443); |
| 272 impl_.SetAlternativeService(test_host_port_pair, alternative_service, 0.5); |
| 273 EXPECT_TRUE(HasAlternativeService(test_host_port_pair)); |
| 269 | 274 |
| 270 AlternateProtocolMap::const_iterator it = | 275 AlternateProtocolMap::const_iterator it = |
| 271 impl_.alternate_protocol_map().Peek(test_host_port_pair); | 276 impl_.alternate_protocol_map().Peek(test_host_port_pair); |
| 272 EXPECT_TRUE(it != impl_.alternate_protocol_map().end()); | 277 EXPECT_TRUE(it != impl_.alternate_protocol_map().end()); |
| 273 EXPECT_EQ(443, it->second.port); | 278 EXPECT_EQ(443, it->second.port); |
| 274 EXPECT_EQ(NPN_SPDY_3, it->second.protocol); | 279 EXPECT_EQ(NPN_SPDY_3, it->second.protocol); |
| 275 EXPECT_EQ(0.5, it->second.probability); | 280 EXPECT_EQ(0.5, it->second.probability); |
| 276 } | 281 } |
| 277 | 282 |
| 278 TEST_F(AlternateProtocolServerPropertiesTest, ProbabilityExcluded) { | 283 TEST_F(AlternateProtocolServerPropertiesTest, ProbabilityExcluded) { |
| 279 impl_.SetAlternateProtocolProbabilityThreshold(.75); | 284 impl_.SetAlternateProtocolProbabilityThreshold(0.75); |
| 280 | 285 |
| 281 HostPortPair test_host_port_pair("foo", 80); | 286 HostPortPair test_host_port_pair("foo", 80); |
| 282 | 287 const AlternativeService alternative_service(NPN_SPDY_3, "foo", 443); |
| 283 impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .5); | 288 impl_.SetAlternativeService(test_host_port_pair, alternative_service, 0.5); |
| 284 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); | 289 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); |
| 285 } | 290 } |
| 286 | 291 |
| 287 TEST_F(AlternateProtocolServerPropertiesTest, Initialize) { | 292 TEST_F(AlternateProtocolServerPropertiesTest, Initialize) { |
| 288 HostPortPair test_host_port_pair1("foo1", 80); | 293 HostPortPair test_host_port_pair1("foo1", 80); |
| 289 impl_.SetAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1.0); | 294 const AlternativeService alternative_service1(NPN_SPDY_3, "foo1", 443); |
| 290 impl_.SetBrokenAlternateProtocol(test_host_port_pair1); | 295 impl_.SetAlternativeService(test_host_port_pair1, alternative_service1, 1.0); |
| 296 impl_.MarkAlternativeServiceBroken(alternative_service1); |
| 297 |
| 291 HostPortPair test_host_port_pair2("foo2", 80); | 298 HostPortPair test_host_port_pair2("foo2", 80); |
| 292 impl_.SetAlternateProtocol(test_host_port_pair2, 443, NPN_SPDY_3, 1.0); | 299 const AlternativeService alternative_service2(NPN_SPDY_3, "foo2", 443); |
| 300 impl_.SetAlternativeService(test_host_port_pair2, alternative_service2, 1.0); |
| 293 | 301 |
| 294 AlternateProtocolMap alternate_protocol_map( | 302 AlternateProtocolMap alternate_protocol_map( |
| 295 AlternateProtocolMap::NO_AUTO_EVICT); | 303 AlternateProtocolMap::NO_AUTO_EVICT); |
| 296 AlternateProtocolInfo alternate(123, NPN_SPDY_3, 1); | 304 AlternateProtocolInfo alternate(123, NPN_SPDY_3, 1); |
| 297 alternate_protocol_map.Put(test_host_port_pair2, alternate); | 305 alternate_protocol_map.Put(test_host_port_pair2, alternate); |
| 298 HostPortPair test_host_port_pair3("foo3", 80); | 306 HostPortPair test_host_port_pair3("foo3", 80); |
| 299 alternate.port = 1234; | 307 alternate.port = 1234; |
| 300 alternate_protocol_map.Put(test_host_port_pair3, alternate); | 308 alternate_protocol_map.Put(test_host_port_pair3, alternate); |
| 301 impl_.InitializeAlternateProtocolServers(&alternate_protocol_map); | 309 impl_.InitializeAlternateProtocolServers(&alternate_protocol_map); |
| 302 | 310 |
| 303 // Verify test_host_port_pair3 is the MRU server. | 311 // Verify test_host_port_pair3 is the MRU server. |
| 304 const AlternateProtocolMap& map = impl_.alternate_protocol_map(); | 312 const AlternateProtocolMap& map = impl_.alternate_protocol_map(); |
| 305 AlternateProtocolMap::const_iterator it = map.begin(); | 313 AlternateProtocolMap::const_iterator it = map.begin(); |
| 306 EXPECT_TRUE(it->first.Equals(test_host_port_pair3)); | 314 EXPECT_TRUE(it->first.Equals(test_host_port_pair3)); |
| 307 EXPECT_EQ(1234, it->second.port); | 315 EXPECT_EQ(1234, it->second.port); |
| 308 EXPECT_EQ(NPN_SPDY_3, it->second.protocol); | 316 EXPECT_EQ(NPN_SPDY_3, it->second.protocol); |
| 309 | 317 |
| 310 ASSERT_TRUE(HasAlternativeService(test_host_port_pair1)); | 318 ASSERT_TRUE(HasAlternativeService(test_host_port_pair1)); |
| 311 AlternativeService alternative_service(NPN_SPDY_3, | 319 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); |
| 312 test_host_port_pair1.host(), 443); | 320 AlternativeService alternative_service = |
| 313 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service)); | 321 impl_.GetAlternativeService(test_host_port_pair2); |
| 314 alternative_service = impl_.GetAlternativeService(test_host_port_pair2); | |
| 315 EXPECT_EQ(123, alternative_service.port); | 322 EXPECT_EQ(123, alternative_service.port); |
| 316 EXPECT_EQ(NPN_SPDY_3, alternative_service.protocol); | 323 EXPECT_EQ(NPN_SPDY_3, alternative_service.protocol); |
| 317 } | 324 } |
| 318 | 325 |
| 319 TEST_F(AlternateProtocolServerPropertiesTest, MRUOfGetAlternateProtocol) { | 326 TEST_F(AlternateProtocolServerPropertiesTest, MRUOfGetAlternateProtocol) { |
| 320 HostPortPair test_host_port_pair1("foo1", 80); | 327 HostPortPair test_host_port_pair1("foo1", 80); |
| 321 impl_.SetAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1.0); | 328 const AlternativeService alternative_service1(NPN_SPDY_3, "foo1", 443); |
| 329 impl_.SetAlternativeService(test_host_port_pair1, alternative_service1, 1.0); |
| 322 HostPortPair test_host_port_pair2("foo2", 80); | 330 HostPortPair test_host_port_pair2("foo2", 80); |
| 323 impl_.SetAlternateProtocol(test_host_port_pair2, 1234, NPN_SPDY_3, 1.0); | 331 const AlternativeService alternative_service2(NPN_SPDY_3, "foo2", 1234); |
| 332 impl_.SetAlternativeService(test_host_port_pair2, alternative_service2, 1.0); |
| 324 | 333 |
| 325 const AlternateProtocolMap& map = impl_.alternate_protocol_map(); | 334 const AlternateProtocolMap& map = impl_.alternate_protocol_map(); |
| 326 AlternateProtocolMap::const_iterator it = map.begin(); | 335 AlternateProtocolMap::const_iterator it = map.begin(); |
| 327 EXPECT_TRUE(it->first.Equals(test_host_port_pair2)); | 336 EXPECT_TRUE(it->first.Equals(test_host_port_pair2)); |
| 328 EXPECT_EQ(1234, it->second.port); | 337 EXPECT_EQ(1234, it->second.port); |
| 329 EXPECT_EQ(NPN_SPDY_3, it->second.protocol); | 338 EXPECT_EQ(NPN_SPDY_3, it->second.protocol); |
| 330 | 339 |
| 331 // GetAlternativeService should reorder the AlternateProtocol map. | 340 // GetAlternativeService should reorder the AlternateProtocol map. |
| 332 const AlternativeService alternative_service = | 341 const AlternativeService alternative_service = |
| 333 impl_.GetAlternativeService(test_host_port_pair1); | 342 impl_.GetAlternativeService(test_host_port_pair1); |
| 334 EXPECT_EQ(443, alternative_service.port); | 343 EXPECT_EQ(443, alternative_service.port); |
| 335 EXPECT_EQ(NPN_SPDY_3, alternative_service.protocol); | 344 EXPECT_EQ(NPN_SPDY_3, alternative_service.protocol); |
| 336 it = map.begin(); | 345 it = map.begin(); |
| 337 EXPECT_TRUE(it->first.Equals(test_host_port_pair1)); | 346 EXPECT_TRUE(it->first.Equals(test_host_port_pair1)); |
| 338 EXPECT_EQ(443, it->second.port); | 347 EXPECT_EQ(443, it->second.port); |
| 339 EXPECT_EQ(NPN_SPDY_3, it->second.protocol); | 348 EXPECT_EQ(NPN_SPDY_3, it->second.protocol); |
| 340 } | 349 } |
| 341 | 350 |
| 342 TEST_F(AlternateProtocolServerPropertiesTest, SetBroken) { | 351 TEST_F(AlternateProtocolServerPropertiesTest, SetBroken) { |
| 343 HostPortPair test_host_port_pair("foo", 80); | 352 HostPortPair test_host_port_pair("foo", 80); |
| 344 impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1.0); | 353 const AlternativeService alternative_service1(NPN_SPDY_3, "foo", 443); |
| 345 impl_.SetBrokenAlternateProtocol(test_host_port_pair); | 354 impl_.SetAlternativeService(test_host_port_pair, alternative_service1, 1.0); |
| 355 impl_.MarkAlternativeServiceBroken(alternative_service1); |
| 346 ASSERT_TRUE(HasAlternativeService(test_host_port_pair)); | 356 ASSERT_TRUE(HasAlternativeService(test_host_port_pair)); |
| 347 const AlternativeService alternative_service(NPN_SPDY_3, | 357 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); |
| 348 test_host_port_pair.host(), 443); | |
| 349 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service)); | |
| 350 | 358 |
| 351 impl_.SetAlternateProtocol(test_host_port_pair, 1234, NPN_SPDY_3, 1.0); | 359 const AlternativeService alternative_service2(NPN_SPDY_3, "foo", 1234); |
| 352 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service)); | 360 impl_.SetAlternativeService(test_host_port_pair, alternative_service2, 1.0); |
| 361 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service1)); |
| 362 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service2)); |
| 353 EXPECT_EQ(1234, impl_.GetAlternativeService(test_host_port_pair).port); | 363 EXPECT_EQ(1234, impl_.GetAlternativeService(test_host_port_pair).port); |
| 354 } | 364 } |
| 355 | 365 |
| 356 TEST_F(AlternateProtocolServerPropertiesTest, ClearBroken) { | 366 TEST_F(AlternateProtocolServerPropertiesTest, ClearBroken) { |
| 357 HostPortPair test_host_port_pair("foo", 80); | 367 HostPortPair test_host_port_pair("foo", 80); |
| 358 impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1.0); | 368 const AlternativeService alternative_service(NPN_SPDY_3, "foo", 443); |
| 359 impl_.SetBrokenAlternateProtocol(test_host_port_pair); | 369 impl_.SetAlternativeService(test_host_port_pair, alternative_service, 1.0); |
| 370 impl_.MarkAlternativeServiceBroken(alternative_service); |
| 360 ASSERT_TRUE(HasAlternativeService(test_host_port_pair)); | 371 ASSERT_TRUE(HasAlternativeService(test_host_port_pair)); |
| 361 const AlternativeService alternative_service(NPN_SPDY_3, | |
| 362 test_host_port_pair.host(), 443); | |
| 363 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service)); | 372 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service)); |
| 364 impl_.ClearAlternateProtocol(test_host_port_pair); | 373 impl_.ClearAlternativeService(test_host_port_pair); |
| 365 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); | 374 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); |
| 366 } | 375 } |
| 367 | 376 |
| 368 TEST_F(AlternateProtocolServerPropertiesTest, MarkRecentlyBroken) { | 377 TEST_F(AlternateProtocolServerPropertiesTest, MarkRecentlyBroken) { |
| 369 HostPortPair host_port_pair("foo", 80); | 378 HostPortPair host_port_pair("foo", 80); |
| 370 impl_.SetAlternateProtocol(host_port_pair, 443, NPN_SPDY_4, 1.0); | 379 const AlternativeService alternative_service(NPN_SPDY_4, "foo", 443); |
| 380 impl_.SetAlternativeService(host_port_pair, alternative_service, 1.0); |
| 371 | 381 |
| 372 const AlternativeService alternative_service(NPN_SPDY_4, "foo", 443); | |
| 373 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); | 382 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); |
| 374 EXPECT_FALSE(impl_.WasAlternateProtocolRecentlyBroken(host_port_pair)); | 383 EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service)); |
| 375 | 384 |
| 376 impl_.MarkAlternativeServiceRecentlyBroken(alternative_service); | 385 impl_.MarkAlternativeServiceRecentlyBroken(alternative_service); |
| 377 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); | 386 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); |
| 378 EXPECT_TRUE(impl_.WasAlternateProtocolRecentlyBroken(host_port_pair)); | 387 EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service)); |
| 379 | 388 |
| 380 impl_.ConfirmAlternateProtocol(host_port_pair); | 389 impl_.ConfirmAlternativeService(alternative_service); |
| 381 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); | 390 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); |
| 382 EXPECT_FALSE(impl_.WasAlternateProtocolRecentlyBroken(host_port_pair)); | 391 EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service)); |
| 383 } | 392 } |
| 384 | 393 |
| 385 TEST_F(AlternateProtocolServerPropertiesTest, Forced) { | 394 TEST_F(AlternateProtocolServerPropertiesTest, Forced) { |
| 386 // Test forced alternate protocols. | 395 // Test forced alternate protocols. |
| 387 | 396 |
| 388 AlternateProtocolInfo default_protocol(1234, NPN_SPDY_3, 1); | 397 AlternateProtocolInfo default_protocol(1234, NPN_SPDY_3, 1); |
| 389 HttpServerPropertiesImpl::ForceAlternateProtocol(default_protocol); | 398 HttpServerPropertiesImpl::ForceAlternateProtocol(default_protocol); |
| 390 | 399 |
| 391 // Verify the forced protocol. | 400 // Verify the forced protocol. |
| 392 HostPortPair test_host_port_pair("foo", 80); | 401 HostPortPair test_host_port_pair("foo", 80); |
| 393 EXPECT_TRUE(HasAlternativeService(test_host_port_pair)); | 402 EXPECT_TRUE(HasAlternativeService(test_host_port_pair)); |
| 394 AlternativeService alternative_service = | 403 AlternativeService alternative_service = |
| 395 impl_.GetAlternativeService(test_host_port_pair); | 404 impl_.GetAlternativeService(test_host_port_pair); |
| 396 EXPECT_EQ(default_protocol.port, alternative_service.port); | 405 EXPECT_EQ(default_protocol.port, alternative_service.port); |
| 397 EXPECT_EQ(default_protocol.protocol, alternative_service.protocol); | 406 EXPECT_EQ(default_protocol.protocol, alternative_service.protocol); |
| 398 | 407 |
| 399 // Verify the real protocol overrides the forced protocol. | 408 // Verify the real protocol overrides the forced protocol. |
| 400 impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1.0); | 409 alternative_service = AlternativeService(NPN_SPDY_3, "foo", 443); |
| 410 impl_.SetAlternativeService(test_host_port_pair, alternative_service, 1.0); |
| 401 ASSERT_TRUE(HasAlternativeService(test_host_port_pair)); | 411 ASSERT_TRUE(HasAlternativeService(test_host_port_pair)); |
| 402 alternative_service = impl_.GetAlternativeService(test_host_port_pair); | 412 alternative_service = impl_.GetAlternativeService(test_host_port_pair); |
| 403 EXPECT_EQ(443, alternative_service.port); | 413 EXPECT_EQ(443, alternative_service.port); |
| 404 EXPECT_EQ(NPN_SPDY_3, alternative_service.protocol); | 414 EXPECT_EQ(NPN_SPDY_3, alternative_service.protocol); |
| 405 | 415 |
| 406 // Turn off the static, forced alternate protocol so that tests don't | 416 // Turn off the static, forced alternate protocol so that tests don't |
| 407 // have this state. | 417 // have this state. |
| 408 HttpServerPropertiesImpl::DisableForcedAlternateProtocol(); | 418 HttpServerPropertiesImpl::DisableForcedAlternateProtocol(); |
| 409 | 419 |
| 410 // Verify the forced protocol is off. | 420 // Verify the forced protocol is off. |
| 411 HostPortPair test_host_port_pair2("bar", 80); | 421 HostPortPair test_host_port_pair2("bar", 80); |
| 412 EXPECT_FALSE(HasAlternativeService(test_host_port_pair2)); | 422 EXPECT_FALSE(HasAlternativeService(test_host_port_pair2)); |
| 413 } | 423 } |
| 414 | 424 |
| 415 TEST_F(AlternateProtocolServerPropertiesTest, Canonical) { | 425 TEST_F(AlternateProtocolServerPropertiesTest, Canonical) { |
| 416 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); | 426 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); |
| 417 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); | 427 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); |
| 418 | 428 |
| 419 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); | 429 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); |
| 420 EXPECT_FALSE(HasAlternativeService(canonical_port_pair)); | 430 EXPECT_FALSE(HasAlternativeService(canonical_port_pair)); |
| 421 | 431 |
| 422 AlternateProtocolInfo canonical_protocol(1234, QUIC, 1); | 432 AlternativeService canonical_altsvc(QUIC, "bar.c.youtube.com", 1234); |
| 423 | 433 impl_.SetAlternativeService(canonical_port_pair, canonical_altsvc, 1.0); |
| 424 impl_.SetAlternateProtocol(canonical_port_pair, canonical_protocol.port, | |
| 425 canonical_protocol.protocol, 1.0); | |
| 426 // Verify the forced protocol. | 434 // Verify the forced protocol. |
| 427 ASSERT_TRUE(HasAlternativeService(test_host_port_pair)); | 435 ASSERT_TRUE(HasAlternativeService(test_host_port_pair)); |
| 428 const AlternativeService alternative_service = | 436 const AlternativeService alternative_service = |
| 429 impl_.GetAlternativeService(test_host_port_pair); | 437 impl_.GetAlternativeService(test_host_port_pair); |
| 430 EXPECT_EQ(canonical_protocol.port, alternative_service.port); | 438 EXPECT_EQ(canonical_altsvc.port, alternative_service.port); |
| 431 EXPECT_EQ(canonical_protocol.protocol, alternative_service.protocol); | 439 EXPECT_EQ(canonical_altsvc.protocol, alternative_service.protocol); |
| 432 | 440 |
| 433 // Verify the canonical suffix. | 441 // Verify the canonical suffix. |
| 434 EXPECT_EQ(".c.youtube.com", | 442 EXPECT_EQ(".c.youtube.com", |
| 435 impl_.GetCanonicalSuffix(test_host_port_pair.host())); | 443 impl_.GetCanonicalSuffix(test_host_port_pair.host())); |
| 436 EXPECT_EQ(".c.youtube.com", | 444 EXPECT_EQ(".c.youtube.com", |
| 437 impl_.GetCanonicalSuffix(canonical_port_pair.host())); | 445 impl_.GetCanonicalSuffix(canonical_port_pair.host())); |
| 438 } | 446 } |
| 439 | 447 |
| 440 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBelowThreshold) { | 448 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBelowThreshold) { |
| 441 impl_.SetAlternateProtocolProbabilityThreshold(0.02); | 449 impl_.SetAlternateProtocolProbabilityThreshold(0.02); |
| 442 | 450 |
| 443 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); | 451 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); |
| 444 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); | 452 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); |
| 445 AlternateProtocolInfo canonical_protocol(1234, QUIC, 0.01); | 453 AlternativeService canonical_altsvc(QUIC, "bar.c.youtube.com", 1234); |
| 446 | 454 |
| 447 impl_.SetAlternateProtocol(canonical_port_pair, canonical_protocol.port, | 455 impl_.SetAlternativeService(canonical_port_pair, canonical_altsvc, 0.01); |
| 448 canonical_protocol.protocol, | |
| 449 canonical_protocol.probability); | |
| 450 EXPECT_FALSE(HasAlternativeService(canonical_port_pair)); | 456 EXPECT_FALSE(HasAlternativeService(canonical_port_pair)); |
| 451 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); | 457 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); |
| 452 } | 458 } |
| 453 | 459 |
| 454 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalAboveThreshold) { | 460 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalAboveThreshold) { |
| 455 impl_.SetAlternateProtocolProbabilityThreshold(0.02); | 461 impl_.SetAlternateProtocolProbabilityThreshold(0.02); |
| 456 | 462 |
| 457 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); | 463 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); |
| 458 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); | 464 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); |
| 459 AlternateProtocolInfo canonical_protocol(1234, QUIC, 0.03); | 465 AlternativeService canonical_altsvc(QUIC, "bar.c.youtube.com", 1234); |
| 460 | 466 |
| 461 impl_.SetAlternateProtocol(canonical_port_pair, canonical_protocol.port, | 467 impl_.SetAlternativeService(canonical_port_pair, canonical_altsvc, 0.03); |
| 462 canonical_protocol.protocol, | |
| 463 canonical_protocol.probability); | |
| 464 EXPECT_TRUE(HasAlternativeService(canonical_port_pair)); | 468 EXPECT_TRUE(HasAlternativeService(canonical_port_pair)); |
| 465 EXPECT_TRUE(HasAlternativeService(test_host_port_pair)); | 469 EXPECT_TRUE(HasAlternativeService(test_host_port_pair)); |
| 466 } | 470 } |
| 467 | 471 |
| 468 TEST_F(AlternateProtocolServerPropertiesTest, ClearCanonical) { | 472 TEST_F(AlternateProtocolServerPropertiesTest, ClearCanonical) { |
| 469 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); | 473 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); |
| 470 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); | 474 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); |
| 475 AlternativeService canonical_altsvc(QUIC, "bar.c.youtube.com", 1234); |
| 471 | 476 |
| 472 AlternateProtocolInfo canonical_protocol(1234, QUIC, 1); | 477 impl_.SetAlternativeService(canonical_port_pair, canonical_altsvc, 1.0); |
| 473 | 478 impl_.ClearAlternativeService(canonical_port_pair); |
| 474 impl_.SetAlternateProtocol(canonical_port_pair, canonical_protocol.port, | |
| 475 canonical_protocol.protocol, | |
| 476 canonical_protocol.probability); | |
| 477 | |
| 478 impl_.ClearAlternateProtocol(canonical_port_pair); | |
| 479 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); | 479 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); |
| 480 } | 480 } |
| 481 | 481 |
| 482 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBroken) { | 482 TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBroken) { |
| 483 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); | 483 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); |
| 484 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); | 484 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); |
| 485 AlternativeService canonical_altsvc(QUIC, "bar.c.youtube.com", 1234); |
| 485 | 486 |
| 486 AlternateProtocolInfo canonical_protocol(1234, QUIC, 1); | 487 impl_.SetAlternativeService(canonical_port_pair, canonical_altsvc, 1.0); |
| 487 | 488 impl_.MarkAlternativeServiceBroken(canonical_altsvc); |
| 488 impl_.SetAlternateProtocol(canonical_port_pair, canonical_protocol.port, | |
| 489 canonical_protocol.protocol, | |
| 490 canonical_protocol.probability); | |
| 491 | |
| 492 impl_.SetBrokenAlternateProtocol(canonical_port_pair); | |
| 493 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); | 489 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); |
| 494 } | 490 } |
| 495 | 491 |
| 496 TEST_F(AlternateProtocolServerPropertiesTest, ClearWithCanonical) { | 492 TEST_F(AlternateProtocolServerPropertiesTest, ClearWithCanonical) { |
| 497 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); | 493 HostPortPair test_host_port_pair("foo.c.youtube.com", 80); |
| 498 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); | 494 HostPortPair canonical_port_pair("bar.c.youtube.com", 80); |
| 495 AlternativeService canonical_altsvc(QUIC, "bar.c.youtube.com", 1234); |
| 499 | 496 |
| 500 AlternateProtocolInfo canonical_protocol(1234, QUIC, 1); | 497 impl_.SetAlternativeService(canonical_port_pair, canonical_altsvc, 1.0); |
| 501 | |
| 502 impl_.SetAlternateProtocol(canonical_port_pair, canonical_protocol.port, | |
| 503 canonical_protocol.protocol, | |
| 504 canonical_protocol.probability); | |
| 505 | |
| 506 impl_.Clear(); | 498 impl_.Clear(); |
| 507 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); | 499 EXPECT_FALSE(HasAlternativeService(test_host_port_pair)); |
| 508 } | 500 } |
| 509 | 501 |
| 510 TEST_F(AlternateProtocolServerPropertiesTest, | 502 TEST_F(AlternateProtocolServerPropertiesTest, |
| 511 ExpireBrokenAlternateProtocolMappings) { | 503 ExpireBrokenAlternateProtocolMappings) { |
| 512 HostPortPair host_port_pair("foo", 443); | 504 HostPortPair host_port_pair("foo", 443); |
| 513 AlternativeService alternative_service(QUIC, "foo", 443); | 505 AlternativeService alternative_service(QUIC, "foo", 443); |
| 514 impl_.SetAlternateProtocol(host_port_pair, 443, QUIC, 1.0); | 506 impl_.SetAlternativeService(host_port_pair, alternative_service, 1.0); |
| 515 EXPECT_TRUE(HasAlternativeService(host_port_pair)); | 507 EXPECT_TRUE(HasAlternativeService(host_port_pair)); |
| 516 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); | 508 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); |
| 517 EXPECT_FALSE(impl_.WasAlternateProtocolRecentlyBroken(host_port_pair)); | 509 EXPECT_FALSE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service)); |
| 518 | 510 |
| 519 base::TimeTicks past = | 511 base::TimeTicks past = |
| 520 base::TimeTicks::Now() - base::TimeDelta::FromSeconds(42); | 512 base::TimeTicks::Now() - base::TimeDelta::FromSeconds(42); |
| 521 HttpServerPropertiesImplPeer::AddBrokenAlternativeServiceWithExpirationTime( | 513 HttpServerPropertiesImplPeer::AddBrokenAlternativeServiceWithExpirationTime( |
| 522 impl_, alternative_service, past); | 514 impl_, alternative_service, past); |
| 523 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service)); | 515 EXPECT_TRUE(impl_.IsAlternativeServiceBroken(alternative_service)); |
| 524 EXPECT_TRUE(impl_.WasAlternateProtocolRecentlyBroken(host_port_pair)); | 516 EXPECT_TRUE(impl_.WasAlternativeServiceRecentlyBroken(alternative_service)); |
| 525 | 517 |
| 526 HttpServerPropertiesImplPeer::ExpireBrokenAlternateProtocolMappings(impl_); | 518 HttpServerPropertiesImplPeer::ExpireBrokenAlternateProtocolMappings(impl_); |
| 527 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); | 519 EXPECT_FALSE(impl_.IsAlternativeServiceBroken(alternative_service)); |
| 528 // TODO(bnc): Test WasAlternateProtocolRecentlyBroken once it's changed to | 520 // TODO(bnc): Test WasAlternativeServiceRecentlyBroken once it's changed to |
| 529 // take AlternativeService as argument. | 521 // take AlternativeService as argument. |
| 530 } | 522 } |
| 531 | 523 |
| 532 typedef HttpServerPropertiesImplTest SpdySettingsServerPropertiesTest; | 524 typedef HttpServerPropertiesImplTest SpdySettingsServerPropertiesTest; |
| 533 | 525 |
| 534 TEST_F(SpdySettingsServerPropertiesTest, Initialize) { | 526 TEST_F(SpdySettingsServerPropertiesTest, Initialize) { |
| 535 HostPortPair spdy_server_google("www.google.com", 443); | 527 HostPortPair spdy_server_google("www.google.com", 443); |
| 536 | 528 |
| 537 // Check by initializing empty spdy settings. | 529 // Check by initializing empty spdy settings. |
| 538 SpdySettingsMap spdy_settings_map(SpdySettingsMap::NO_AUTO_EVICT); | 530 SpdySettingsMap spdy_settings_map(SpdySettingsMap::NO_AUTO_EVICT); |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 793 EXPECT_EQ(100, stats2->bandwidth_estimate.ToBitsPerSecond()); | 785 EXPECT_EQ(100, stats2->bandwidth_estimate.ToBitsPerSecond()); |
| 794 | 786 |
| 795 impl_.Clear(); | 787 impl_.Clear(); |
| 796 const ServerNetworkStats* stats3 = impl_.GetServerNetworkStats(foo_server); | 788 const ServerNetworkStats* stats3 = impl_.GetServerNetworkStats(foo_server); |
| 797 EXPECT_EQ(NULL, stats3); | 789 EXPECT_EQ(NULL, stats3); |
| 798 } | 790 } |
| 799 | 791 |
| 800 } // namespace | 792 } // namespace |
| 801 | 793 |
| 802 } // namespace net | 794 } // namespace net |
| OLD | NEW |