| 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 |