| 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/dns/mapped_host_resolver.h" | 5 #include "net/dns/mapped_host_resolver.h" |
| 6 | 6 |
| 7 #include <utility> |
| 8 |
| 7 #include "net/base/address_list.h" | 9 #include "net/base/address_list.h" |
| 8 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
| 9 #include "net/base/net_util.h" | 11 #include "net/base/net_util.h" |
| 10 #include "net/base/test_completion_callback.h" | 12 #include "net/base/test_completion_callback.h" |
| 11 #include "net/dns/mock_host_resolver.h" | 13 #include "net/dns/mock_host_resolver.h" |
| 12 #include "net/log/net_log.h" | 14 #include "net/log/net_log.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 14 | 16 |
| 15 namespace net { | 17 namespace net { |
| 16 | 18 |
| 17 namespace { | 19 namespace { |
| 18 | 20 |
| 19 std::string FirstAddress(const AddressList& address_list) { | 21 std::string FirstAddress(const AddressList& address_list) { |
| 20 if (address_list.empty()) | 22 if (address_list.empty()) |
| 21 return std::string(); | 23 return std::string(); |
| 22 return address_list.front().ToString(); | 24 return address_list.front().ToString(); |
| 23 } | 25 } |
| 24 | 26 |
| 25 TEST(MappedHostResolverTest, Inclusion) { | 27 TEST(MappedHostResolverTest, Inclusion) { |
| 26 // Create a mock host resolver, with specific hostname to IP mappings. | 28 // Create a mock host resolver, with specific hostname to IP mappings. |
| 27 scoped_ptr<MockHostResolver> resolver_impl(new MockHostResolver()); | 29 scoped_ptr<MockHostResolver> resolver_impl(new MockHostResolver()); |
| 28 resolver_impl->rules()->AddSimulatedFailure("*google.com"); | 30 resolver_impl->rules()->AddSimulatedFailure("*google.com"); |
| 29 resolver_impl->rules()->AddRule("baz.com", "192.168.1.5"); | 31 resolver_impl->rules()->AddRule("baz.com", "192.168.1.5"); |
| 30 resolver_impl->rules()->AddRule("foo.com", "192.168.1.8"); | 32 resolver_impl->rules()->AddRule("foo.com", "192.168.1.8"); |
| 31 resolver_impl->rules()->AddRule("proxy", "192.168.1.11"); | 33 resolver_impl->rules()->AddRule("proxy", "192.168.1.11"); |
| 32 | 34 |
| 33 // Create a remapped resolver that uses |resolver_impl|. | 35 // Create a remapped resolver that uses |resolver_impl|. |
| 34 scoped_ptr<MappedHostResolver> resolver( | 36 scoped_ptr<MappedHostResolver> resolver( |
| 35 new MappedHostResolver(resolver_impl.Pass())); | 37 new MappedHostResolver(std::move(resolver_impl))); |
| 36 | 38 |
| 37 int rv; | 39 int rv; |
| 38 AddressList address_list; | 40 AddressList address_list; |
| 39 | 41 |
| 40 // Try resolving "www.google.com:80". There are no mappings yet, so this | 42 // Try resolving "www.google.com:80". There are no mappings yet, so this |
| 41 // hits |resolver_impl| and fails. | 43 // hits |resolver_impl| and fails. |
| 42 TestCompletionCallback callback; | 44 TestCompletionCallback callback; |
| 43 rv = resolver->Resolve( | 45 rv = resolver->Resolve( |
| 44 HostResolver::RequestInfo(HostPortPair("www.google.com", 80)), | 46 HostResolver::RequestInfo(HostPortPair("www.google.com", 80)), |
| 45 DEFAULT_PRIORITY, | 47 DEFAULT_PRIORITY, |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 | 101 |
| 100 // Tests that exclusions are respected. | 102 // Tests that exclusions are respected. |
| 101 TEST(MappedHostResolverTest, Exclusion) { | 103 TEST(MappedHostResolverTest, Exclusion) { |
| 102 // Create a mock host resolver, with specific hostname to IP mappings. | 104 // Create a mock host resolver, with specific hostname to IP mappings. |
| 103 scoped_ptr<MockHostResolver> resolver_impl(new MockHostResolver()); | 105 scoped_ptr<MockHostResolver> resolver_impl(new MockHostResolver()); |
| 104 resolver_impl->rules()->AddRule("baz", "192.168.1.5"); | 106 resolver_impl->rules()->AddRule("baz", "192.168.1.5"); |
| 105 resolver_impl->rules()->AddRule("www.google.com", "192.168.1.3"); | 107 resolver_impl->rules()->AddRule("www.google.com", "192.168.1.3"); |
| 106 | 108 |
| 107 // Create a remapped resolver that uses |resolver_impl|. | 109 // Create a remapped resolver that uses |resolver_impl|. |
| 108 scoped_ptr<MappedHostResolver> resolver( | 110 scoped_ptr<MappedHostResolver> resolver( |
| 109 new MappedHostResolver(resolver_impl.Pass())); | 111 new MappedHostResolver(std::move(resolver_impl))); |
| 110 | 112 |
| 111 int rv; | 113 int rv; |
| 112 AddressList address_list; | 114 AddressList address_list; |
| 113 TestCompletionCallback callback; | 115 TestCompletionCallback callback; |
| 114 | 116 |
| 115 // Remap "*.com" to "baz". | 117 // Remap "*.com" to "baz". |
| 116 EXPECT_TRUE(resolver->AddRuleFromString("map *.com baz")); | 118 EXPECT_TRUE(resolver->AddRuleFromString("map *.com baz")); |
| 117 | 119 |
| 118 // Add an exclusion for "*.google.com". | 120 // Add an exclusion for "*.google.com". |
| 119 EXPECT_TRUE(resolver->AddRuleFromString("EXCLUDE *.google.com")); | 121 EXPECT_TRUE(resolver->AddRuleFromString("EXCLUDE *.google.com")); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 146 } | 148 } |
| 147 | 149 |
| 148 TEST(MappedHostResolverTest, SetRulesFromString) { | 150 TEST(MappedHostResolverTest, SetRulesFromString) { |
| 149 // Create a mock host resolver, with specific hostname to IP mappings. | 151 // Create a mock host resolver, with specific hostname to IP mappings. |
| 150 scoped_ptr<MockHostResolver> resolver_impl(new MockHostResolver()); | 152 scoped_ptr<MockHostResolver> resolver_impl(new MockHostResolver()); |
| 151 resolver_impl->rules()->AddRule("baz", "192.168.1.7"); | 153 resolver_impl->rules()->AddRule("baz", "192.168.1.7"); |
| 152 resolver_impl->rules()->AddRule("bar", "192.168.1.9"); | 154 resolver_impl->rules()->AddRule("bar", "192.168.1.9"); |
| 153 | 155 |
| 154 // Create a remapped resolver that uses |resolver_impl|. | 156 // Create a remapped resolver that uses |resolver_impl|. |
| 155 scoped_ptr<MappedHostResolver> resolver( | 157 scoped_ptr<MappedHostResolver> resolver( |
| 156 new MappedHostResolver(resolver_impl.Pass())); | 158 new MappedHostResolver(std::move(resolver_impl))); |
| 157 | 159 |
| 158 int rv; | 160 int rv; |
| 159 AddressList address_list; | 161 AddressList address_list; |
| 160 TestCompletionCallback callback; | 162 TestCompletionCallback callback; |
| 161 | 163 |
| 162 // Remap "*.com" to "baz", and *.net to "bar:60". | 164 // Remap "*.com" to "baz", and *.net to "bar:60". |
| 163 resolver->SetRulesFromString("map *.com baz , map *.net bar:60"); | 165 resolver->SetRulesFromString("map *.com baz , map *.net bar:60"); |
| 164 | 166 |
| 165 // Try resolving "www.google.com". Should be remapped to "baz". | 167 // Try resolving "www.google.com". Should be remapped to "baz". |
| 166 rv = resolver->Resolve( | 168 rv = resolver->Resolve( |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 203 EXPECT_FALSE(resolver->AddRuleFromString("INCLUDE x")); | 205 EXPECT_FALSE(resolver->AddRuleFromString("INCLUDE x")); |
| 204 EXPECT_FALSE(resolver->AddRuleFromString("INCLUDE x :10")); | 206 EXPECT_FALSE(resolver->AddRuleFromString("INCLUDE x :10")); |
| 205 } | 207 } |
| 206 | 208 |
| 207 // Test mapping hostnames to resolving failures. | 209 // Test mapping hostnames to resolving failures. |
| 208 TEST(MappedHostResolverTest, MapToError) { | 210 TEST(MappedHostResolverTest, MapToError) { |
| 209 scoped_ptr<MockHostResolver> resolver_impl(new MockHostResolver()); | 211 scoped_ptr<MockHostResolver> resolver_impl(new MockHostResolver()); |
| 210 resolver_impl->rules()->AddRule("*", "192.168.1.5"); | 212 resolver_impl->rules()->AddRule("*", "192.168.1.5"); |
| 211 | 213 |
| 212 scoped_ptr<MappedHostResolver> resolver( | 214 scoped_ptr<MappedHostResolver> resolver( |
| 213 new MappedHostResolver(resolver_impl.Pass())); | 215 new MappedHostResolver(std::move(resolver_impl))); |
| 214 | 216 |
| 215 int rv; | 217 int rv; |
| 216 AddressList address_list; | 218 AddressList address_list; |
| 217 | 219 |
| 218 // Remap *.google.com to resolving failures. | 220 // Remap *.google.com to resolving failures. |
| 219 EXPECT_TRUE(resolver->AddRuleFromString("MAP *.google.com ~NOTFOUND")); | 221 EXPECT_TRUE(resolver->AddRuleFromString("MAP *.google.com ~NOTFOUND")); |
| 220 | 222 |
| 221 // Try resolving www.google.com --> Should give an error. | 223 // Try resolving www.google.com --> Should give an error. |
| 222 TestCompletionCallback callback1; | 224 TestCompletionCallback callback1; |
| 223 rv = resolver->Resolve( | 225 rv = resolver->Resolve( |
| (...skipping 16 matching lines...) Expand all Loading... |
| 240 BoundNetLog()); | 242 BoundNetLog()); |
| 241 EXPECT_EQ(ERR_IO_PENDING, rv); | 243 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 242 rv = callback2.WaitForResult(); | 244 rv = callback2.WaitForResult(); |
| 243 EXPECT_EQ(OK, rv); | 245 EXPECT_EQ(OK, rv); |
| 244 EXPECT_EQ("192.168.1.5:80", FirstAddress(address_list)); | 246 EXPECT_EQ("192.168.1.5:80", FirstAddress(address_list)); |
| 245 } | 247 } |
| 246 | 248 |
| 247 } // namespace | 249 } // namespace |
| 248 | 250 |
| 249 } // namespace net | 251 } // namespace net |
| OLD | NEW |