OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/mojo_host_resolver_impl.h" | 5 #include "net/dns/mojo_host_resolver_impl.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 run_loop.Run(); | 155 run_loop.Run(); |
156 } | 156 } |
157 } | 157 } |
158 | 158 |
159 CallbackMockHostResolver mock_host_resolver_; | 159 CallbackMockHostResolver mock_host_resolver_; |
160 std::unique_ptr<MojoHostResolverImpl> resolver_service_; | 160 std::unique_ptr<MojoHostResolverImpl> resolver_service_; |
161 }; | 161 }; |
162 | 162 |
163 TEST_F(MojoHostResolverImplTest, Resolve) { | 163 TEST_F(MojoHostResolverImplTest, Resolve) { |
164 interfaces::HostResolverRequestClientPtr client_ptr; | 164 interfaces::HostResolverRequestClientPtr client_ptr; |
165 TestRequestClient client(mojo::GetProxy(&client_ptr)); | 165 TestRequestClient client(mojo::MakeRequest(&client_ptr)); |
166 | 166 |
167 resolver_service_->Resolve(CreateRequest("example.com", 80, false), | 167 resolver_service_->Resolve(CreateRequest("example.com", 80, false), |
168 std::move(client_ptr)); | 168 std::move(client_ptr)); |
169 client.WaitForResult(); | 169 client.WaitForResult(); |
170 | 170 |
171 EXPECT_THAT(client.error_, IsOk()); | 171 EXPECT_THAT(client.error_, IsOk()); |
172 AddressList& address_list = client.results_; | 172 AddressList& address_list = client.results_; |
173 EXPECT_EQ(1U, address_list.size()); | 173 EXPECT_EQ(1U, address_list.size()); |
174 EXPECT_EQ("1.2.3.4:80", address_list[0].ToString()); | 174 EXPECT_EQ("1.2.3.4:80", address_list[0].ToString()); |
175 } | 175 } |
176 | 176 |
177 TEST_F(MojoHostResolverImplTest, ResolveSynchronous) { | 177 TEST_F(MojoHostResolverImplTest, ResolveSynchronous) { |
178 interfaces::HostResolverRequestClientPtr client_ptr; | 178 interfaces::HostResolverRequestClientPtr client_ptr; |
179 TestRequestClient client(mojo::GetProxy(&client_ptr)); | 179 TestRequestClient client(mojo::MakeRequest(&client_ptr)); |
180 | 180 |
181 mock_host_resolver_.set_synchronous_mode(true); | 181 mock_host_resolver_.set_synchronous_mode(true); |
182 | 182 |
183 resolver_service_->Resolve(CreateRequest("example.com", 80, false), | 183 resolver_service_->Resolve(CreateRequest("example.com", 80, false), |
184 std::move(client_ptr)); | 184 std::move(client_ptr)); |
185 client.WaitForResult(); | 185 client.WaitForResult(); |
186 | 186 |
187 EXPECT_THAT(client.error_, IsOk()); | 187 EXPECT_THAT(client.error_, IsOk()); |
188 AddressList& address_list = client.results_; | 188 AddressList& address_list = client.results_; |
189 EXPECT_EQ(1U, address_list.size()); | 189 EXPECT_EQ(1U, address_list.size()); |
190 EXPECT_EQ("1.2.3.4:80", address_list[0].ToString()); | 190 EXPECT_EQ("1.2.3.4:80", address_list[0].ToString()); |
191 } | 191 } |
192 | 192 |
193 TEST_F(MojoHostResolverImplTest, ResolveMultiple) { | 193 TEST_F(MojoHostResolverImplTest, ResolveMultiple) { |
194 interfaces::HostResolverRequestClientPtr client1_ptr; | 194 interfaces::HostResolverRequestClientPtr client1_ptr; |
195 TestRequestClient client1(mojo::GetProxy(&client1_ptr)); | 195 TestRequestClient client1(mojo::MakeRequest(&client1_ptr)); |
196 interfaces::HostResolverRequestClientPtr client2_ptr; | 196 interfaces::HostResolverRequestClientPtr client2_ptr; |
197 TestRequestClient client2(mojo::GetProxy(&client2_ptr)); | 197 TestRequestClient client2(mojo::MakeRequest(&client2_ptr)); |
198 | 198 |
199 mock_host_resolver_.set_ondemand_mode(true); | 199 mock_host_resolver_.set_ondemand_mode(true); |
200 | 200 |
201 resolver_service_->Resolve(CreateRequest("example.com", 80, false), | 201 resolver_service_->Resolve(CreateRequest("example.com", 80, false), |
202 std::move(client1_ptr)); | 202 std::move(client1_ptr)); |
203 resolver_service_->Resolve(CreateRequest("chromium.org", 80, false), | 203 resolver_service_->Resolve(CreateRequest("chromium.org", 80, false), |
204 std::move(client2_ptr)); | 204 std::move(client2_ptr)); |
205 WaitForRequests(2); | 205 WaitForRequests(2); |
206 mock_host_resolver_.ResolveAllPending(); | 206 mock_host_resolver_.ResolveAllPending(); |
207 | 207 |
208 client1.WaitForResult(); | 208 client1.WaitForResult(); |
209 client2.WaitForResult(); | 209 client2.WaitForResult(); |
210 | 210 |
211 EXPECT_THAT(client1.error_, IsOk()); | 211 EXPECT_THAT(client1.error_, IsOk()); |
212 AddressList& address_list1 = client1.results_; | 212 AddressList& address_list1 = client1.results_; |
213 EXPECT_EQ(1U, address_list1.size()); | 213 EXPECT_EQ(1U, address_list1.size()); |
214 EXPECT_EQ("1.2.3.4:80", address_list1[0].ToString()); | 214 EXPECT_EQ("1.2.3.4:80", address_list1[0].ToString()); |
215 EXPECT_THAT(client2.error_, IsOk()); | 215 EXPECT_THAT(client2.error_, IsOk()); |
216 AddressList& address_list2 = client2.results_; | 216 AddressList& address_list2 = client2.results_; |
217 EXPECT_EQ(1U, address_list2.size()); | 217 EXPECT_EQ(1U, address_list2.size()); |
218 EXPECT_EQ("8.8.8.8:80", address_list2[0].ToString()); | 218 EXPECT_EQ("8.8.8.8:80", address_list2[0].ToString()); |
219 } | 219 } |
220 | 220 |
221 TEST_F(MojoHostResolverImplTest, ResolveDuplicate) { | 221 TEST_F(MojoHostResolverImplTest, ResolveDuplicate) { |
222 interfaces::HostResolverRequestClientPtr client1_ptr; | 222 interfaces::HostResolverRequestClientPtr client1_ptr; |
223 TestRequestClient client1(mojo::GetProxy(&client1_ptr)); | 223 TestRequestClient client1(mojo::MakeRequest(&client1_ptr)); |
224 interfaces::HostResolverRequestClientPtr client2_ptr; | 224 interfaces::HostResolverRequestClientPtr client2_ptr; |
225 TestRequestClient client2(mojo::GetProxy(&client2_ptr)); | 225 TestRequestClient client2(mojo::MakeRequest(&client2_ptr)); |
226 | 226 |
227 mock_host_resolver_.set_ondemand_mode(true); | 227 mock_host_resolver_.set_ondemand_mode(true); |
228 | 228 |
229 resolver_service_->Resolve(CreateRequest("example.com", 80, false), | 229 resolver_service_->Resolve(CreateRequest("example.com", 80, false), |
230 std::move(client1_ptr)); | 230 std::move(client1_ptr)); |
231 resolver_service_->Resolve(CreateRequest("example.com", 80, false), | 231 resolver_service_->Resolve(CreateRequest("example.com", 80, false), |
232 std::move(client2_ptr)); | 232 std::move(client2_ptr)); |
233 WaitForRequests(2); | 233 WaitForRequests(2); |
234 mock_host_resolver_.ResolveAllPending(); | 234 mock_host_resolver_.ResolveAllPending(); |
235 | 235 |
236 client1.WaitForResult(); | 236 client1.WaitForResult(); |
237 client2.WaitForResult(); | 237 client2.WaitForResult(); |
238 | 238 |
239 EXPECT_THAT(client1.error_, IsOk()); | 239 EXPECT_THAT(client1.error_, IsOk()); |
240 AddressList& address_list1 = client1.results_; | 240 AddressList& address_list1 = client1.results_; |
241 EXPECT_EQ(1U, address_list1.size()); | 241 EXPECT_EQ(1U, address_list1.size()); |
242 EXPECT_EQ("1.2.3.4:80", address_list1[0].ToString()); | 242 EXPECT_EQ("1.2.3.4:80", address_list1[0].ToString()); |
243 EXPECT_THAT(client2.error_, IsOk()); | 243 EXPECT_THAT(client2.error_, IsOk()); |
244 AddressList& address_list2 = client2.results_; | 244 AddressList& address_list2 = client2.results_; |
245 EXPECT_EQ(1U, address_list2.size()); | 245 EXPECT_EQ(1U, address_list2.size()); |
246 EXPECT_EQ("1.2.3.4:80", address_list2[0].ToString()); | 246 EXPECT_EQ("1.2.3.4:80", address_list2[0].ToString()); |
247 } | 247 } |
248 | 248 |
249 TEST_F(MojoHostResolverImplTest, ResolveFailure) { | 249 TEST_F(MojoHostResolverImplTest, ResolveFailure) { |
250 interfaces::HostResolverRequestClientPtr client_ptr; | 250 interfaces::HostResolverRequestClientPtr client_ptr; |
251 TestRequestClient client(mojo::GetProxy(&client_ptr)); | 251 TestRequestClient client(mojo::MakeRequest(&client_ptr)); |
252 | 252 |
253 resolver_service_->Resolve(CreateRequest("failure.fail", 80, false), | 253 resolver_service_->Resolve(CreateRequest("failure.fail", 80, false), |
254 std::move(client_ptr)); | 254 std::move(client_ptr)); |
255 client.WaitForResult(); | 255 client.WaitForResult(); |
256 | 256 |
257 EXPECT_THAT(client.error_, IsError(net::ERR_NAME_NOT_RESOLVED)); | 257 EXPECT_THAT(client.error_, IsError(net::ERR_NAME_NOT_RESOLVED)); |
258 EXPECT_TRUE(client.results_.empty()); | 258 EXPECT_TRUE(client.results_.empty()); |
259 } | 259 } |
260 | 260 |
261 TEST_F(MojoHostResolverImplTest, DestroyClient) { | 261 TEST_F(MojoHostResolverImplTest, DestroyClient) { |
262 interfaces::HostResolverRequestClientPtr client_ptr; | 262 interfaces::HostResolverRequestClientPtr client_ptr; |
263 std::unique_ptr<TestRequestClient> client( | 263 std::unique_ptr<TestRequestClient> client( |
264 new TestRequestClient(mojo::GetProxy(&client_ptr))); | 264 new TestRequestClient(mojo::MakeRequest(&client_ptr))); |
265 | 265 |
266 mock_host_resolver_.set_ondemand_mode(true); | 266 mock_host_resolver_.set_ondemand_mode(true); |
267 | 267 |
268 resolver_service_->Resolve(CreateRequest("example.com", 80, false), | 268 resolver_service_->Resolve(CreateRequest("example.com", 80, false), |
269 std::move(client_ptr)); | 269 std::move(client_ptr)); |
270 WaitForRequests(1); | 270 WaitForRequests(1); |
271 | 271 |
272 client.reset(); | 272 client.reset(); |
273 base::RunLoop().RunUntilIdle(); | 273 base::RunLoop().RunUntilIdle(); |
274 | 274 |
275 mock_host_resolver_.ResolveAllPending(); | 275 mock_host_resolver_.ResolveAllPending(); |
276 base::RunLoop().RunUntilIdle(); | 276 base::RunLoop().RunUntilIdle(); |
277 } | 277 } |
278 | 278 |
279 } // namespace net | 279 } // namespace net |
OLD | NEW |