| Index: net/http/http_server_properties_impl_unittest.cc
|
| diff --git a/net/http/http_server_properties_impl_unittest.cc b/net/http/http_server_properties_impl_unittest.cc
|
| index a23ebbed89b2aa5f084914cd449d7f29cad78432..d0862a414e0d95c630ae849376b1b8af8bf0db47 100644
|
| --- a/net/http/http_server_properties_impl_unittest.cc
|
| +++ b/net/http/http_server_properties_impl_unittest.cc
|
| @@ -243,10 +243,12 @@ typedef HttpServerPropertiesImplTest AlternateProtocolServerPropertiesTest;
|
| TEST_F(AlternateProtocolServerPropertiesTest, Basic) {
|
| HostPortPair test_host_port_pair("foo", 80);
|
| EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| - impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
|
| ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| - const AlternateProtocolInfo alternate =
|
| - impl_.GetAlternateProtocol(test_host_port_pair);
|
| + const AlternateProtocols alternate_protocols =
|
| + impl_.GetAlternateProtocols(test_host_port_pair);
|
| + ASSERT_EQ(1u, alternate_protocols.size());
|
| + const AlternateProtocolInfo alternate = alternate_protocols[0];
|
| EXPECT_EQ(443, alternate.port);
|
| EXPECT_EQ(NPN_SPDY_3, alternate.protocol);
|
|
|
| @@ -256,7 +258,7 @@ TEST_F(AlternateProtocolServerPropertiesTest, Basic) {
|
|
|
| TEST_F(AlternateProtocolServerPropertiesTest, DefaultProbabilityExcluded) {
|
| HostPortPair test_host_port_pair("foo", 80);
|
| - impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .99);
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .99);
|
|
|
| EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| }
|
| @@ -265,11 +267,13 @@ TEST_F(AlternateProtocolServerPropertiesTest, Probability) {
|
| impl_.SetAlternateProtocolProbabilityThreshold(.25);
|
|
|
| HostPortPair test_host_port_pair("foo", 80);
|
| - impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .5);
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .5);
|
|
|
| ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| - const AlternateProtocolInfo alternate =
|
| - impl_.GetAlternateProtocol(test_host_port_pair);
|
| + const AlternateProtocols alternate_protocols =
|
| + impl_.GetAlternateProtocols(test_host_port_pair);
|
| + ASSERT_EQ(1u, alternate_protocols.size());
|
| + const AlternateProtocolInfo alternate = alternate_protocols[0];
|
| EXPECT_EQ(443, alternate.port);
|
| EXPECT_EQ(NPN_SPDY_3, alternate.protocol);
|
| EXPECT_EQ(.5, alternate.probability);
|
| @@ -280,114 +284,190 @@ TEST_F(AlternateProtocolServerPropertiesTest, ProbabilityExcluded) {
|
|
|
| HostPortPair test_host_port_pair("foo", 80);
|
|
|
| - impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .5);
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, .5);
|
| EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| }
|
|
|
| TEST_F(AlternateProtocolServerPropertiesTest, Initialize) {
|
| HostPortPair test_host_port_pair1("foo1", 80);
|
| - impl_.SetBrokenAlternateProtocol(test_host_port_pair1);
|
| + impl_.AddAlternateProtocol(test_host_port_pair1, 123, NPN_SPDY_3, 1);
|
| + AlternateProtocolInfo alternate_protocol(123, NPN_SPDY_3, 1);
|
| + impl_.SetBrokenAlternateProtocol(test_host_port_pair1, alternate_protocol);
|
| HostPortPair test_host_port_pair2("foo2", 80);
|
| - impl_.SetAlternateProtocol(test_host_port_pair2, 443, NPN_SPDY_3, 1);
|
| + impl_.AddAlternateProtocol(test_host_port_pair2, 443, NPN_SPDY_3, 1);
|
|
|
| AlternateProtocolMap alternate_protocol_map(
|
| AlternateProtocolMap::NO_AUTO_EVICT);
|
| AlternateProtocolInfo port_alternate_protocol_pair(123, NPN_SPDY_3, 1);
|
| - alternate_protocol_map.Put(test_host_port_pair2,
|
| - port_alternate_protocol_pair);
|
| + alternate_protocol_map.Put(
|
| + test_host_port_pair2,
|
| + AlternateProtocols(/*size=*/ 1, port_alternate_protocol_pair));
|
| HostPortPair test_host_port_pair3("foo3", 80);
|
| port_alternate_protocol_pair.port = 1234;
|
| - alternate_protocol_map.Put(test_host_port_pair3,
|
| - port_alternate_protocol_pair);
|
| + alternate_protocol_map.Put(
|
| + test_host_port_pair3,
|
| + AlternateProtocols(/*size=*/ 1, port_alternate_protocol_pair));
|
| impl_.InitializeAlternateProtocolServers(&alternate_protocol_map);
|
|
|
| // Verify test_host_port_pair3 is the MRU server.
|
| const net::AlternateProtocolMap& map = impl_.alternate_protocol_map();
|
| net::AlternateProtocolMap::const_iterator it = map.begin();
|
| - it = map.begin();
|
| EXPECT_TRUE(it->first.Equals(test_host_port_pair3));
|
| - EXPECT_EQ(1234, it->second.port);
|
| - EXPECT_EQ(NPN_SPDY_3, it->second.protocol);
|
| + ASSERT_EQ(1u, it->second.size());
|
| + EXPECT_EQ(1234, it->second[0].port);
|
| + EXPECT_EQ(NPN_SPDY_3, it->second[0].protocol);
|
|
|
| ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair1));
|
| ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair2));
|
| - port_alternate_protocol_pair =
|
| - impl_.GetAlternateProtocol(test_host_port_pair1);
|
| - EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, port_alternate_protocol_pair.protocol);
|
| - port_alternate_protocol_pair =
|
| - impl_.GetAlternateProtocol(test_host_port_pair2);
|
| - EXPECT_EQ(123, port_alternate_protocol_pair.port);
|
| - EXPECT_EQ(NPN_SPDY_3, port_alternate_protocol_pair.protocol);
|
| + AlternateProtocols alternate_protocols =
|
| + impl_.GetAlternateProtocols(test_host_port_pair1);
|
| + ASSERT_EQ(1u, alternate_protocols.size());
|
| + EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate_protocols[0].protocol);
|
| + alternate_protocols = impl_.GetAlternateProtocols(test_host_port_pair2);
|
| + ASSERT_EQ(1u, alternate_protocols.size());
|
| + EXPECT_EQ(123, alternate_protocols[0].port);
|
| + EXPECT_EQ(NPN_SPDY_3, alternate_protocols[0].protocol);
|
| }
|
|
|
| TEST_F(AlternateProtocolServerPropertiesTest, MRUOfHasAlternateProtocol) {
|
| HostPortPair test_host_port_pair1("foo1", 80);
|
| - impl_.SetAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
|
| + impl_.AddAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
|
| HostPortPair test_host_port_pair2("foo2", 80);
|
| - impl_.SetAlternateProtocol(test_host_port_pair2, 1234, NPN_SPDY_3, 1);
|
| + impl_.AddAlternateProtocol(test_host_port_pair2, 1234, NPN_SPDY_3, 1);
|
|
|
| const net::AlternateProtocolMap& map = impl_.alternate_protocol_map();
|
| net::AlternateProtocolMap::const_iterator it = map.begin();
|
| EXPECT_TRUE(it->first.Equals(test_host_port_pair2));
|
| - EXPECT_EQ(1234, it->second.port);
|
| - EXPECT_EQ(NPN_SPDY_3, it->second.protocol);
|
| + ASSERT_EQ(1u, it->second.size());
|
| + EXPECT_EQ(1234, it->second[0].port);
|
| + EXPECT_EQ(NPN_SPDY_3, it->second[0].protocol);
|
|
|
| // HasAlternateProtocol should reoder the AlternateProtocol map.
|
| ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair1));
|
| it = map.begin();
|
| EXPECT_TRUE(it->first.Equals(test_host_port_pair1));
|
| - EXPECT_EQ(443, it->second.port);
|
| - EXPECT_EQ(NPN_SPDY_3, it->second.protocol);
|
| + ASSERT_EQ(1u, it->second.size());
|
| + EXPECT_EQ(443, it->second[0].port);
|
| + EXPECT_EQ(NPN_SPDY_3, it->second[0].protocol);
|
| }
|
|
|
| TEST_F(AlternateProtocolServerPropertiesTest, MRUOfGetAlternateProtocol) {
|
| HostPortPair test_host_port_pair1("foo1", 80);
|
| - impl_.SetAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
|
| + impl_.AddAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
|
| HostPortPair test_host_port_pair2("foo2", 80);
|
| - impl_.SetAlternateProtocol(test_host_port_pair2, 1234, NPN_SPDY_3, 1);
|
| + impl_.AddAlternateProtocol(test_host_port_pair2, 1234, NPN_SPDY_3, 1);
|
|
|
| const net::AlternateProtocolMap& map = impl_.alternate_protocol_map();
|
| net::AlternateProtocolMap::const_iterator it = map.begin();
|
| EXPECT_TRUE(it->first.Equals(test_host_port_pair2));
|
| - EXPECT_EQ(1234, it->second.port);
|
| - EXPECT_EQ(NPN_SPDY_3, it->second.protocol);
|
| -
|
| - // GetAlternateProtocol should reoder the AlternateProtocol map.
|
| - AlternateProtocolInfo alternate =
|
| - impl_.GetAlternateProtocol(test_host_port_pair1);
|
| + ASSERT_EQ(1u, it->second.size());
|
| + EXPECT_EQ(1234, it->second[0].port);
|
| + EXPECT_EQ(NPN_SPDY_3, it->second[0].protocol);
|
| +
|
| + // GetAlternateProtocols should reorder the AlternateProtocol map.
|
| + const AlternateProtocols alternate_protocols =
|
| + impl_.GetAlternateProtocols(test_host_port_pair1);
|
| + ASSERT_EQ(1u, alternate_protocols.size());
|
| + const AlternateProtocolInfo alternate = alternate_protocols[0];
|
| EXPECT_EQ(443, alternate.port);
|
| EXPECT_EQ(NPN_SPDY_3, alternate.protocol);
|
| it = map.begin();
|
| EXPECT_TRUE(it->first.Equals(test_host_port_pair1));
|
| - EXPECT_EQ(443, it->second.port);
|
| - EXPECT_EQ(NPN_SPDY_3, it->second.protocol);
|
| + ASSERT_EQ(1u, it->second.size());
|
| + EXPECT_EQ(443, it->second[0].port);
|
| + EXPECT_EQ(NPN_SPDY_3, it->second[0].protocol);
|
| +}
|
| +
|
| +TEST_F(AlternateProtocolServerPropertiesTest, RemoveForSingleHost) {
|
| + HostPortPair test_host_port_pair("foo", 80);
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 1234, NPN_SPDY_3, 1);
|
| +
|
| + const net::AlternateProtocolMap& map = impl_.alternate_protocol_map();
|
| + net::AlternateProtocolMap::const_iterator it = map.begin();
|
| + EXPECT_TRUE(it->first.Equals(test_host_port_pair));
|
| + ASSERT_EQ(2u, it->second.size());
|
| + EXPECT_EQ(443, it->second[0].port);
|
| + EXPECT_EQ(1234, it->second[1].port);
|
| +
|
| + // Adding an identical entry does nothing.
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 1234, NPN_SPDY_3, 1);
|
| + it = map.begin();
|
| + ASSERT_EQ(2u, it->second.size());
|
| +
|
| + // Add a third one.
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 123, NPN_SPDY_3, 1);
|
| + it = map.begin();
|
| + ASSERT_EQ(3u, it->second.size());
|
| + EXPECT_EQ(123, it->second[2].port);
|
| +
|
| + // Remove one by one.
|
| + impl_.RemoveAlternateProtocol(test_host_port_pair,
|
| + AlternateProtocolInfo(1234, NPN_SPDY_3, 1));
|
| + it = map.begin();
|
| + ASSERT_EQ(2u, it->second.size());
|
| + EXPECT_EQ(443, it->second[0].port);
|
| + EXPECT_EQ(123, it->second[1].port);
|
| +
|
| + impl_.RemoveAlternateProtocol(test_host_port_pair,
|
| + AlternateProtocolInfo(443, NPN_SPDY_3, 1));
|
| + it = map.begin();
|
| + ASSERT_EQ(1u, it->second.size());
|
| + EXPECT_EQ(123, it->second[0].port);
|
| +
|
| + impl_.RemoveAlternateProtocol(test_host_port_pair,
|
| + AlternateProtocolInfo(123, NPN_SPDY_3, 1));
|
| + ASSERT_EQ(0u, impl_.alternate_protocol_map().size());
|
| +}
|
| +
|
| +TEST_F(AlternateProtocolServerPropertiesTest, ClearAlternateProtocol) {
|
| + HostPortPair test_host_port_pair("foo", 80);
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 1234, NPN_SPDY_3, 1);
|
| +
|
| + const net::AlternateProtocolMap& map = impl_.alternate_protocol_map();
|
| + net::AlternateProtocolMap::const_iterator it = map.begin();
|
| + EXPECT_TRUE(it->first.Equals(test_host_port_pair));
|
| + ASSERT_EQ(2u, it->second.size());
|
| + EXPECT_EQ(443, it->second[0].port);
|
| + EXPECT_EQ(1234, it->second[1].port);
|
| +
|
| + impl_.ClearAlternateProtocol(test_host_port_pair);
|
| + ASSERT_EQ(0u, impl_.alternate_protocol_map().size());
|
| }
|
|
|
| TEST_F(AlternateProtocolServerPropertiesTest, SetBroken) {
|
| HostPortPair test_host_port_pair("foo", 80);
|
| - impl_.SetBrokenAlternateProtocol(test_host_port_pair);
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 123, NPN_SPDY_3, 1);
|
| + AlternateProtocolInfo alternate(123, NPN_SPDY_3, 1);
|
| + impl_.SetBrokenAlternateProtocol(test_host_port_pair, alternate);
|
| ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| - AlternateProtocolInfo alternate =
|
| - impl_.GetAlternateProtocol(test_host_port_pair);
|
| - EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate.protocol);
|
| -
|
| - impl_.SetAlternateProtocol(
|
| - test_host_port_pair,
|
| - 1234,
|
| - NPN_SPDY_3,
|
| - 1);
|
| - alternate = impl_.GetAlternateProtocol(test_host_port_pair);
|
| - EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate.protocol)
|
| + AlternateProtocols alternate_protocols =
|
| + impl_.GetAlternateProtocols(test_host_port_pair);
|
| + ASSERT_EQ(1u, alternate_protocols.size());
|
| + EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate_protocols[0].protocol);
|
| +
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 123, NPN_SPDY_3, 1);
|
| + alternate_protocols = impl_.GetAlternateProtocols(test_host_port_pair);
|
| + ASSERT_EQ(1u, alternate_protocols.size())
|
| << "Second attempt should be ignored.";
|
| + EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate_protocols[0].protocol);
|
| +
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 1234, NPN_SPDY_3, 1);
|
| + alternate_protocols = impl_.GetAlternateProtocols(test_host_port_pair);
|
| + ASSERT_EQ(2u, alternate_protocols.size()) << "Different port should be fine.";
|
| }
|
|
|
| TEST_F(AlternateProtocolServerPropertiesTest, ClearBroken) {
|
| HostPortPair test_host_port_pair("foo", 80);
|
| - impl_.SetBrokenAlternateProtocol(test_host_port_pair);
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 123, NPN_SPDY_3, 1);
|
| + AlternateProtocolInfo alternate(123, NPN_SPDY_3, 1);
|
| + impl_.SetBrokenAlternateProtocol(test_host_port_pair, alternate);
|
| ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| - AlternateProtocolInfo alternate =
|
| - impl_.GetAlternateProtocol(test_host_port_pair);
|
| - EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate.protocol);
|
| + AlternateProtocols alternate_protocols =
|
| + impl_.GetAlternateProtocols(test_host_port_pair);
|
| + ASSERT_EQ(1u, alternate_protocols.size());
|
| + EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate_protocols[0].protocol);
|
| impl_.ClearAlternateProtocol(test_host_port_pair);
|
| EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| }
|
| @@ -401,17 +481,19 @@ TEST_F(AlternateProtocolServerPropertiesTest, Forced) {
|
| // Verify the forced protocol.
|
| HostPortPair test_host_port_pair("foo", 80);
|
| EXPECT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| - AlternateProtocolInfo alternate =
|
| - impl_.GetAlternateProtocol(test_host_port_pair);
|
| - EXPECT_EQ(default_protocol.port, alternate.port);
|
| - EXPECT_EQ(default_protocol.protocol, alternate.protocol);
|
| + AlternateProtocols alternate_protocols =
|
| + impl_.GetAlternateProtocols(test_host_port_pair);
|
| + ASSERT_EQ(1u, alternate_protocols.size());
|
| + EXPECT_EQ(default_protocol.port, alternate_protocols[0].port);
|
| + EXPECT_EQ(default_protocol.protocol, alternate_protocols[0].protocol);
|
|
|
| // Verify the real protocol overrides the forced protocol.
|
| - impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
|
| ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| - alternate = impl_.GetAlternateProtocol(test_host_port_pair);
|
| - EXPECT_EQ(443, alternate.port);
|
| - EXPECT_EQ(NPN_SPDY_3, alternate.protocol);
|
| + alternate_protocols = impl_.GetAlternateProtocols(test_host_port_pair);
|
| + ASSERT_EQ(1u, alternate_protocols.size());
|
| + EXPECT_EQ(443, alternate_protocols[0].port);
|
| + EXPECT_EQ(NPN_SPDY_3, alternate_protocols[0].protocol);
|
|
|
| // Turn off the static, forced alternate protocol so that tests don't
|
| // have this state.
|
| @@ -431,16 +513,17 @@ TEST_F(AlternateProtocolServerPropertiesTest, Canonical) {
|
|
|
| AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
|
|
|
| - impl_.SetAlternateProtocol(canonical_port_pair,
|
| + impl_.AddAlternateProtocol(canonical_port_pair,
|
| canonical_protocol.port,
|
| canonical_protocol.protocol,
|
| 1);
|
| // Verify the forced protocol.
|
| ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| - AlternateProtocolInfo alternate =
|
| - impl_.GetAlternateProtocol(test_host_port_pair);
|
| - EXPECT_EQ(canonical_protocol.port, alternate.port);
|
| - EXPECT_EQ(canonical_protocol.protocol, alternate.protocol);
|
| + AlternateProtocols alternate_protocols =
|
| + impl_.GetAlternateProtocols(test_host_port_pair);
|
| + ASSERT_EQ(1u, alternate_protocols.size());
|
| + EXPECT_EQ(canonical_protocol.port, alternate_protocols[0].port);
|
| + EXPECT_EQ(canonical_protocol.protocol, alternate_protocols[0].protocol);
|
|
|
| // Verify the canonical suffix.
|
| EXPECT_EQ(".c.youtube.com", impl_.GetCanonicalSuffix(test_host_port_pair));
|
| @@ -453,7 +536,7 @@ TEST_F(AlternateProtocolServerPropertiesTest, ClearCanonical) {
|
|
|
| AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
|
|
|
| - impl_.SetAlternateProtocol(canonical_port_pair,
|
| + impl_.AddAlternateProtocol(canonical_port_pair,
|
| canonical_protocol.port,
|
| canonical_protocol.protocol,
|
| canonical_protocol.probability);
|
| @@ -468,12 +551,12 @@ TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBroken) {
|
|
|
| AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
|
|
|
| - impl_.SetAlternateProtocol(canonical_port_pair,
|
| + impl_.AddAlternateProtocol(canonical_port_pair,
|
| canonical_protocol.port,
|
| canonical_protocol.protocol,
|
| canonical_protocol.probability);
|
|
|
| - impl_.SetBrokenAlternateProtocol(canonical_port_pair);
|
| + impl_.SetBrokenAlternateProtocol(canonical_port_pair, canonical_protocol);
|
| EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| }
|
|
|
| @@ -483,7 +566,7 @@ TEST_F(AlternateProtocolServerPropertiesTest, ClearWithCanonical) {
|
|
|
| AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
|
|
|
| - impl_.SetAlternateProtocol(canonical_port_pair,
|
| + impl_.AddAlternateProtocol(canonical_port_pair,
|
| canonical_protocol.port,
|
| canonical_protocol.protocol,
|
| canonical_protocol.probability);
|
|
|