| 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 1675833881861ccfe32357e2248d7f3943e107f3..3b527c3f2a3f50344f76e63fabec5d8139ae7040 100644
|
| --- a/net/http/http_server_properties_impl_unittest.cc
|
| +++ b/net/http/http_server_properties_impl_unittest.cc
|
| @@ -237,8 +237,7 @@ 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);
|
| - ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
|
| const AlternateProtocolInfo alternate =
|
| impl_.GetAlternateProtocol(test_host_port_pair);
|
| EXPECT_EQ(443, alternate.port);
|
| @@ -250,7 +249,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));
|
| }
|
| @@ -259,9 +258,8 @@ 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);
|
| EXPECT_EQ(443, alternate.port);
|
| @@ -274,38 +272,39 @@ 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_.SetAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
|
| - impl_.SetBrokenAlternateProtocol(test_host_port_pair1);
|
| + impl_.AddAlternateProtocol(test_host_port_pair1, 443, NPN_SPDY_3, 1);
|
| + 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 alternate(123, NPN_SPDY_3, 1);
|
| - alternate_protocol_map.Put(test_host_port_pair2, alternate);
|
| + alternate_protocol_map.Put(test_host_port_pair2,
|
| + AlternateProtocols(/*size=*/1, alternate));
|
| HostPortPair test_host_port_pair3("foo3", 80);
|
| alternate.port = 1234;
|
| - alternate_protocol_map.Put(test_host_port_pair3, alternate);
|
| + alternate_protocol_map.Put(test_host_port_pair3,
|
| + AlternateProtocols(/*size=*/1, alternate));
|
| impl_.InitializeAlternateProtocolServers(&alternate_protocol_map);
|
|
|
| // Verify test_host_port_pair3 is the MRU server.
|
| const AlternateProtocolMap& map = impl_.alternate_protocol_map();
|
| 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));
|
| - alternate = impl_.GetAlternateProtocol(test_host_port_pair1);
|
| - EXPECT_TRUE(alternate.is_broken);
|
| + ASSERT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair1));
|
| alternate = impl_.GetAlternateProtocol(test_host_port_pair2);
|
| EXPECT_EQ(123, alternate.port);
|
| EXPECT_EQ(NPN_SPDY_3, alternate.protocol);
|
| @@ -313,75 +312,133 @@ TEST_F(AlternateProtocolServerPropertiesTest, Initialize) {
|
|
|
| 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 AlternateProtocolMap& map = impl_.alternate_protocol_map();
|
| 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 AlternateProtocolMap& map = impl_.alternate_protocol_map();
|
| 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);
|
|
|
| - // GetAlternateProtocol should reoder the AlternateProtocol map.
|
| + // GetAlternateProtocol should reorder the AlternateProtocol map.
|
| AlternateProtocolInfo alternate =
|
| impl_.GetAlternateProtocol(test_host_port_pair1);
|
| 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);
|
| + EXPECT_EQ(0u, impl_.alternate_protocol_map().size());
|
| }
|
|
|
| TEST_F(AlternateProtocolServerPropertiesTest, SetBroken) {
|
| HostPortPair test_host_port_pair("foo", 80);
|
| - impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
|
| - impl_.SetBrokenAlternateProtocol(test_host_port_pair);
|
| - ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| - AlternateProtocolInfo alternate =
|
| - impl_.GetAlternateProtocol(test_host_port_pair);
|
| - EXPECT_TRUE(alternate.is_broken);
|
| + 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_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
|
|
|
| - impl_.SetAlternateProtocol(
|
| - test_host_port_pair,
|
| - 1234,
|
| - NPN_SPDY_3,
|
| - 1);
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 123, NPN_SPDY_3, 1);
|
| alternate = impl_.GetAlternateProtocol(test_host_port_pair);
|
| - EXPECT_TRUE(alternate.is_broken) << "Second attempt should be ignored.";
|
| + ASSERT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair))
|
| + << "Second attempt should be ignored.";
|
| }
|
|
|
| TEST_F(AlternateProtocolServerPropertiesTest, ClearBroken) {
|
| HostPortPair test_host_port_pair("foo", 80);
|
| - impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
|
| - impl_.SetBrokenAlternateProtocol(test_host_port_pair);
|
| - ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| - AlternateProtocolInfo alternate =
|
| - impl_.GetAlternateProtocol(test_host_port_pair);
|
| - EXPECT_TRUE(alternate.is_broken);
|
| + 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_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| impl_.ClearAlternateProtocol(test_host_port_pair);
|
| EXPECT_FALSE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 123, NPN_SPDY_3, 1);
|
| + alternate = impl_.GetAlternateProtocol(test_host_port_pair);
|
| + EXPECT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| }
|
|
|
| TEST_F(AlternateProtocolServerPropertiesTest, Forced) {
|
| @@ -392,15 +449,13 @@ 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);
|
|
|
| // Verify the real protocol overrides the forced protocol.
|
| - impl_.SetAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
|
| - ASSERT_TRUE(impl_.HasAlternateProtocol(test_host_port_pair));
|
| + impl_.AddAlternateProtocol(test_host_port_pair, 443, NPN_SPDY_3, 1);
|
| alternate = impl_.GetAlternateProtocol(test_host_port_pair);
|
| EXPECT_EQ(443, alternate.port);
|
| EXPECT_EQ(NPN_SPDY_3, alternate.protocol);
|
| @@ -423,12 +478,9 @@ TEST_F(AlternateProtocolServerPropertiesTest, Canonical) {
|
|
|
| AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
|
|
|
| - impl_.SetAlternateProtocol(canonical_port_pair,
|
| - canonical_protocol.port,
|
| - canonical_protocol.protocol,
|
| - 1);
|
| + 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);
|
| @@ -446,8 +498,7 @@ TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBelowThreshold) {
|
| HostPortPair canonical_port_pair("bar.c.youtube.com", 80);
|
| AlternateProtocolInfo canonical_protocol(1234, QUIC, 0.01);
|
|
|
| - impl_.SetAlternateProtocol(canonical_port_pair,
|
| - canonical_protocol.port,
|
| + impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
|
| canonical_protocol.protocol,
|
| canonical_protocol.probability);
|
| EXPECT_FALSE(impl_.HasAlternateProtocol(canonical_port_pair));
|
| @@ -461,8 +512,7 @@ TEST_F(AlternateProtocolServerPropertiesTest, CanonicalAboveThreshold) {
|
| HostPortPair canonical_port_pair("bar.c.youtube.com", 80);
|
| AlternateProtocolInfo canonical_protocol(1234, QUIC, 0.03);
|
|
|
| - impl_.SetAlternateProtocol(canonical_port_pair,
|
| - canonical_protocol.port,
|
| + impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
|
| canonical_protocol.protocol,
|
| canonical_protocol.probability);
|
| EXPECT_TRUE(impl_.HasAlternateProtocol(canonical_port_pair));
|
| @@ -475,8 +525,7 @@ TEST_F(AlternateProtocolServerPropertiesTest, ClearCanonical) {
|
|
|
| AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
|
|
|
| - impl_.SetAlternateProtocol(canonical_port_pair,
|
| - canonical_protocol.port,
|
| + impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
|
| canonical_protocol.protocol,
|
| canonical_protocol.probability);
|
|
|
| @@ -490,40 +539,21 @@ TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBroken) {
|
|
|
| AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
|
|
|
| - impl_.SetAlternateProtocol(canonical_port_pair,
|
| - canonical_protocol.port,
|
| + 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));
|
| }
|
|
|
| -TEST_F(AlternateProtocolServerPropertiesTest, CanonicalBroken2) {
|
| - HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
|
| - HostPortPair canonical_port_pair("bar.c.youtube.com", 80);
|
| -
|
| - AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
|
| -
|
| - impl_.SetAlternateProtocol(canonical_port_pair,
|
| - canonical_protocol.port,
|
| - canonical_protocol.protocol,
|
| - canonical_protocol.probability);
|
| -
|
| - impl_.SetBrokenAlternateProtocol(test_host_port_pair);
|
| - AlternateProtocolInfo alternate =
|
| - impl_.GetAlternateProtocol(test_host_port_pair);
|
| - EXPECT_TRUE(alternate.is_broken);
|
| -}
|
| -
|
| TEST_F(AlternateProtocolServerPropertiesTest, ClearWithCanonical) {
|
| HostPortPair test_host_port_pair("foo.c.youtube.com", 80);
|
| HostPortPair canonical_port_pair("bar.c.youtube.com", 80);
|
|
|
| AlternateProtocolInfo canonical_protocol(1234, QUIC, 1);
|
|
|
| - impl_.SetAlternateProtocol(canonical_port_pair,
|
| - canonical_protocol.port,
|
| + impl_.AddAlternateProtocol(canonical_port_pair, canonical_protocol.port,
|
| canonical_protocol.protocol,
|
| canonical_protocol.probability);
|
|
|
|
|