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 |