Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(166)

Side by Side Diff: net/proxy/proxy_resolver_v8_tracing_unittest.cc

Issue 2109503009: Refactor net tests to use GMock matchers for checking net::Error results (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert changes to contents.txt files Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/proxy/proxy_resolver_v8_tracing.h" 5 #include "net/proxy/proxy_resolver_v8_tracing.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/path_service.h" 12 #include "base/path_service.h"
13 #include "base/run_loop.h" 13 #include "base/run_loop.h"
14 #include "base/strings/utf_string_conversions.h" 14 #include "base/strings/utf_string_conversions.h"
15 #include "base/synchronization/waitable_event.h" 15 #include "base/synchronization/waitable_event.h"
16 #include "base/threading/platform_thread.h" 16 #include "base/threading/platform_thread.h"
17 #include "base/threading/thread_checker.h" 17 #include "base/threading/thread_checker.h"
18 #include "base/values.h" 18 #include "base/values.h"
19 #include "net/base/net_errors.h" 19 #include "net/base/net_errors.h"
20 #include "net/base/test_completion_callback.h" 20 #include "net/base/test_completion_callback.h"
21 #include "net/dns/host_cache.h" 21 #include "net/dns/host_cache.h"
22 #include "net/dns/mock_host_resolver.h" 22 #include "net/dns/mock_host_resolver.h"
23 #include "net/log/net_log.h" 23 #include "net/log/net_log.h"
24 #include "net/proxy/proxy_info.h" 24 #include "net/proxy/proxy_info.h"
25 #include "net/test/event_waiter.h" 25 #include "net/test/event_waiter.h"
26 #include "net/test/gtest_util.h"
27 #include "testing/gmock/include/gmock/gmock.h"
26 #include "testing/gtest/include/gtest/gtest.h" 28 #include "testing/gtest/include/gtest/gtest.h"
27 #include "url/gurl.h" 29 #include "url/gurl.h"
28 30
31 using net::test::IsError;
32 using net::test::IsOk;
33
29 namespace net { 34 namespace net {
30 35
31 namespace { 36 namespace {
32 37
33 class ProxyResolverV8TracingTest : public testing::Test { 38 class ProxyResolverV8TracingTest : public testing::Test {
34 public: 39 public:
35 void TearDown() override { 40 void TearDown() override {
36 // Drain any pending messages, which may be left over from cancellation. 41 // Drain any pending messages, which may be left over from cancellation.
37 // This way they get reliably run as part of the current test, rather than 42 // This way they get reliably run as part of the current test, rather than
38 // spilling into the next test's execution. 43 // spilling into the next test's execution.
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 std::unique_ptr<ProxyResolverV8Tracing::Bindings> bindings, 144 std::unique_ptr<ProxyResolverV8Tracing::Bindings> bindings,
140 const char* filename) { 145 const char* filename) {
141 std::unique_ptr<ProxyResolverV8Tracing> resolver; 146 std::unique_ptr<ProxyResolverV8Tracing> resolver;
142 std::unique_ptr<ProxyResolverV8TracingFactory> factory( 147 std::unique_ptr<ProxyResolverV8TracingFactory> factory(
143 ProxyResolverV8TracingFactory::Create()); 148 ProxyResolverV8TracingFactory::Create());
144 TestCompletionCallback callback; 149 TestCompletionCallback callback;
145 std::unique_ptr<ProxyResolverFactory::Request> request; 150 std::unique_ptr<ProxyResolverFactory::Request> request;
146 factory->CreateProxyResolverV8Tracing(LoadScriptData(filename), 151 factory->CreateProxyResolverV8Tracing(LoadScriptData(filename),
147 std::move(bindings), &resolver, 152 std::move(bindings), &resolver,
148 callback.callback(), &request); 153 callback.callback(), &request);
149 EXPECT_EQ(OK, callback.WaitForResult()); 154 EXPECT_THAT(callback.WaitForResult(), IsOk());
150 EXPECT_TRUE(resolver); 155 EXPECT_TRUE(resolver);
151 return resolver; 156 return resolver;
152 } 157 }
153 158
154 TEST_F(ProxyResolverV8TracingTest, Simple) { 159 TEST_F(ProxyResolverV8TracingTest, Simple) {
155 MockCachingHostResolver host_resolver; 160 MockCachingHostResolver host_resolver;
156 MockBindings mock_bindings(&host_resolver); 161 MockBindings mock_bindings(&host_resolver);
157 162
158 std::unique_ptr<ProxyResolverV8Tracing> resolver = 163 std::unique_ptr<ProxyResolverV8Tracing> resolver =
159 CreateResolver(mock_bindings.CreateBindings(), "simple.js"); 164 CreateResolver(mock_bindings.CreateBindings(), "simple.js");
160 165
161 TestCompletionCallback callback; 166 TestCompletionCallback callback;
162 ProxyInfo proxy_info; 167 ProxyInfo proxy_info;
163 168
164 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, 169 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info,
165 callback.callback(), NULL, 170 callback.callback(), NULL,
166 mock_bindings.CreateBindings()); 171 mock_bindings.CreateBindings());
167 172
168 EXPECT_EQ(OK, callback.WaitForResult()); 173 EXPECT_THAT(callback.WaitForResult(), IsOk());
169 174
170 EXPECT_EQ("foo:99", proxy_info.proxy_server().ToURI()); 175 EXPECT_EQ("foo:99", proxy_info.proxy_server().ToURI());
171 176
172 EXPECT_EQ(0u, host_resolver.num_resolve()); 177 EXPECT_EQ(0u, host_resolver.num_resolve());
173 178
174 // There were no alerts or errors. 179 // There were no alerts or errors.
175 EXPECT_TRUE(mock_bindings.GetAlerts().empty()); 180 EXPECT_TRUE(mock_bindings.GetAlerts().empty());
176 EXPECT_TRUE(mock_bindings.GetErrors().empty()); 181 EXPECT_TRUE(mock_bindings.GetErrors().empty());
177 } 182 }
178 183
179 TEST_F(ProxyResolverV8TracingTest, JavascriptError) { 184 TEST_F(ProxyResolverV8TracingTest, JavascriptError) {
180 MockCachingHostResolver host_resolver; 185 MockCachingHostResolver host_resolver;
181 MockBindings mock_bindings(&host_resolver); 186 MockBindings mock_bindings(&host_resolver);
182 187
183 std::unique_ptr<ProxyResolverV8Tracing> resolver = 188 std::unique_ptr<ProxyResolverV8Tracing> resolver =
184 CreateResolver(mock_bindings.CreateBindings(), "error.js"); 189 CreateResolver(mock_bindings.CreateBindings(), "error.js");
185 190
186 TestCompletionCallback callback; 191 TestCompletionCallback callback;
187 ProxyInfo proxy_info; 192 ProxyInfo proxy_info;
188 193
189 resolver->GetProxyForURL(GURL("http://throw-an-error/"), &proxy_info, 194 resolver->GetProxyForURL(GURL("http://throw-an-error/"), &proxy_info,
190 callback.callback(), NULL, 195 callback.callback(), NULL,
191 mock_bindings.CreateBindings()); 196 mock_bindings.CreateBindings());
192 197
193 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, callback.WaitForResult()); 198 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_PAC_SCRIPT_FAILED));
194 199
195 EXPECT_EQ(0u, host_resolver.num_resolve()); 200 EXPECT_EQ(0u, host_resolver.num_resolve());
196 201
197 // Check the output -- there was 1 alert and 1 javascript error. 202 // Check the output -- there was 1 alert and 1 javascript error.
198 ASSERT_EQ(1u, mock_bindings.GetAlerts().size()); 203 ASSERT_EQ(1u, mock_bindings.GetAlerts().size());
199 EXPECT_EQ("Prepare to DIE!", mock_bindings.GetAlerts()[0]); 204 EXPECT_EQ("Prepare to DIE!", mock_bindings.GetAlerts()[0]);
200 ASSERT_EQ(1u, mock_bindings.GetErrors().size()); 205 ASSERT_EQ(1u, mock_bindings.GetErrors().size());
201 EXPECT_EQ(5, mock_bindings.GetErrors()[0].first); 206 EXPECT_EQ(5, mock_bindings.GetErrors()[0].first);
202 EXPECT_EQ("Uncaught TypeError: Cannot read property 'split' of null", 207 EXPECT_EQ("Uncaught TypeError: Cannot read property 'split' of null",
203 mock_bindings.GetErrors()[0].second); 208 mock_bindings.GetErrors()[0].second);
204 } 209 }
205 210
206 TEST_F(ProxyResolverV8TracingTest, TooManyAlerts) { 211 TEST_F(ProxyResolverV8TracingTest, TooManyAlerts) {
207 MockCachingHostResolver host_resolver; 212 MockCachingHostResolver host_resolver;
208 MockBindings mock_bindings(&host_resolver); 213 MockBindings mock_bindings(&host_resolver);
209 214
210 std::unique_ptr<ProxyResolverV8Tracing> resolver = 215 std::unique_ptr<ProxyResolverV8Tracing> resolver =
211 CreateResolver(mock_bindings.CreateBindings(), "too_many_alerts.js"); 216 CreateResolver(mock_bindings.CreateBindings(), "too_many_alerts.js");
212 217
213 TestCompletionCallback callback; 218 TestCompletionCallback callback;
214 ProxyInfo proxy_info; 219 ProxyInfo proxy_info;
215 220
216 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, 221 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info,
217 callback.callback(), NULL, 222 callback.callback(), NULL,
218 mock_bindings.CreateBindings()); 223 mock_bindings.CreateBindings());
219 224
220 EXPECT_EQ(OK, callback.WaitForResult()); 225 EXPECT_THAT(callback.WaitForResult(), IsOk());
221 226
222 // Iteration1 does a DNS resolve 227 // Iteration1 does a DNS resolve
223 // Iteration2 exceeds the alert buffer 228 // Iteration2 exceeds the alert buffer
224 // Iteration3 runs in blocking mode and completes 229 // Iteration3 runs in blocking mode and completes
225 EXPECT_EQ("foo:3", proxy_info.proxy_server().ToURI()); 230 EXPECT_EQ("foo:3", proxy_info.proxy_server().ToURI());
226 231
227 EXPECT_EQ(1u, host_resolver.num_resolve()); 232 EXPECT_EQ(1u, host_resolver.num_resolve());
228 233
229 // No errors. 234 // No errors.
230 EXPECT_TRUE(mock_bindings.GetErrors().empty()); 235 EXPECT_TRUE(mock_bindings.GetErrors().empty());
(...skipping 15 matching lines...) Expand all
246 std::unique_ptr<ProxyResolverV8Tracing> resolver = CreateResolver( 251 std::unique_ptr<ProxyResolverV8Tracing> resolver = CreateResolver(
247 mock_bindings.CreateBindings(), "too_many_empty_alerts.js"); 252 mock_bindings.CreateBindings(), "too_many_empty_alerts.js");
248 253
249 TestCompletionCallback callback; 254 TestCompletionCallback callback;
250 ProxyInfo proxy_info; 255 ProxyInfo proxy_info;
251 256
252 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, 257 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info,
253 callback.callback(), NULL, 258 callback.callback(), NULL,
254 mock_bindings.CreateBindings()); 259 mock_bindings.CreateBindings());
255 260
256 EXPECT_EQ(OK, callback.WaitForResult()); 261 EXPECT_THAT(callback.WaitForResult(), IsOk());
257 262
258 EXPECT_EQ("foo:3", proxy_info.proxy_server().ToURI()); 263 EXPECT_EQ("foo:3", proxy_info.proxy_server().ToURI());
259 264
260 EXPECT_EQ(1u, host_resolver.num_resolve()); 265 EXPECT_EQ(1u, host_resolver.num_resolve());
261 266
262 // No errors. 267 // No errors.
263 EXPECT_TRUE(mock_bindings.GetErrors().empty()); 268 EXPECT_TRUE(mock_bindings.GetErrors().empty());
264 269
265 // Check the alerts -- the script generated 1000 alerts. 270 // Check the alerts -- the script generated 1000 alerts.
266 std::vector<std::string> alerts = mock_bindings.GetAlerts(); 271 std::vector<std::string> alerts = mock_bindings.GetAlerts();
(...skipping 25 matching lines...) Expand all
292 std::unique_ptr<ProxyResolverV8Tracing> resolver = 297 std::unique_ptr<ProxyResolverV8Tracing> resolver =
293 CreateResolver(mock_bindings.CreateBindings(), "dns.js"); 298 CreateResolver(mock_bindings.CreateBindings(), "dns.js");
294 299
295 TestCompletionCallback callback; 300 TestCompletionCallback callback;
296 ProxyInfo proxy_info; 301 ProxyInfo proxy_info;
297 302
298 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, 303 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info,
299 callback.callback(), NULL, 304 callback.callback(), NULL,
300 mock_bindings.CreateBindings()); 305 mock_bindings.CreateBindings());
301 306
302 EXPECT_EQ(OK, callback.WaitForResult()); 307 EXPECT_THAT(callback.WaitForResult(), IsOk());
303 308
304 // The test does 13 DNS resolution, however only 7 of them are unique. 309 // The test does 13 DNS resolution, however only 7 of them are unique.
305 EXPECT_EQ(7u, host_resolver.num_resolve()); 310 EXPECT_EQ(7u, host_resolver.num_resolve());
306 311
307 const char* kExpectedResult = 312 const char* kExpectedResult =
308 "122.133.144.155-" // myIpAddress() 313 "122.133.144.155-" // myIpAddress()
309 "null-" // dnsResolve('') 314 "null-" // dnsResolve('')
310 "__1_192.168.1.1-" // dnsResolveEx('host1') 315 "__1_192.168.1.1-" // dnsResolveEx('host1')
311 "null-" // dnsResolve('host2') 316 "null-" // dnsResolve('host2')
312 "166.155.144.33-" // dnsResolve('host3') 317 "166.155.144.33-" // dnsResolve('host3')
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 CreateResolver(mock_bindings.CreateBindings(), "simple_dns.js"); 349 CreateResolver(mock_bindings.CreateBindings(), "simple_dns.js");
345 350
346 TestCompletionCallback callback1; 351 TestCompletionCallback callback1;
347 TestCompletionCallback callback2; 352 TestCompletionCallback callback2;
348 ProxyInfo proxy_info; 353 ProxyInfo proxy_info;
349 354
350 resolver->GetProxyForURL(GURL("http://foopy/req1"), &proxy_info, 355 resolver->GetProxyForURL(GURL("http://foopy/req1"), &proxy_info,
351 callback1.callback(), NULL, 356 callback1.callback(), NULL,
352 mock_bindings.CreateBindings()); 357 mock_bindings.CreateBindings());
353 358
354 EXPECT_EQ(OK, callback1.WaitForResult()); 359 EXPECT_THAT(callback1.WaitForResult(), IsOk());
355 360
356 // The test does 2 DNS resolutions. 361 // The test does 2 DNS resolutions.
357 EXPECT_EQ(2u, host_resolver.num_resolve()); 362 EXPECT_EQ(2u, host_resolver.num_resolve());
358 363
359 // The first request took 2 restarts, hence on g_iteration=3. 364 // The first request took 2 restarts, hence on g_iteration=3.
360 EXPECT_EQ("166.155.144.11:3", proxy_info.proxy_server().ToURI()); 365 EXPECT_EQ("166.155.144.11:3", proxy_info.proxy_server().ToURI());
361 366
362 resolver->GetProxyForURL(GURL("http://foopy/req2"), &proxy_info, 367 resolver->GetProxyForURL(GURL("http://foopy/req2"), &proxy_info,
363 callback2.callback(), NULL, 368 callback2.callback(), NULL,
364 mock_bindings.CreateBindings()); 369 mock_bindings.CreateBindings());
365 370
366 EXPECT_EQ(OK, callback2.WaitForResult()); 371 EXPECT_THAT(callback2.WaitForResult(), IsOk());
367 372
368 EXPECT_EQ(4u, host_resolver.num_resolve()); 373 EXPECT_EQ(4u, host_resolver.num_resolve());
369 374
370 // This time no restarts were required, so g_iteration incremented by 1. 375 // This time no restarts were required, so g_iteration incremented by 1.
371 EXPECT_EQ("166.155.144.11:4", proxy_info.proxy_server().ToURI()); 376 EXPECT_EQ("166.155.144.11:4", proxy_info.proxy_server().ToURI());
372 377
373 // There were no alerts or errors. 378 // There were no alerts or errors.
374 EXPECT_TRUE(mock_bindings.GetAlerts().empty()); 379 EXPECT_TRUE(mock_bindings.GetAlerts().empty());
375 EXPECT_TRUE(mock_bindings.GetErrors().empty()); 380 EXPECT_TRUE(mock_bindings.GetErrors().empty());
376 } 381 }
(...skipping 11 matching lines...) Expand all
388 393
389 std::unique_ptr<ProxyResolverV8Tracing> resolver = 394 std::unique_ptr<ProxyResolverV8Tracing> resolver =
390 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects1.js"); 395 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects1.js");
391 396
392 TestCompletionCallback callback; 397 TestCompletionCallback callback;
393 ProxyInfo proxy_info; 398 ProxyInfo proxy_info;
394 399
395 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, 400 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info,
396 callback.callback(), NULL, 401 callback.callback(), NULL,
397 mock_bindings.CreateBindings()); 402 mock_bindings.CreateBindings());
398 EXPECT_EQ(OK, callback.WaitForResult()); 403 EXPECT_THAT(callback.WaitForResult(), IsOk());
399 404
400 // The script itself only does 2 DNS resolves per execution, however it 405 // The script itself only does 2 DNS resolves per execution, however it
401 // constructs the hostname using a global counter which changes on each 406 // constructs the hostname using a global counter which changes on each
402 // invocation. 407 // invocation.
403 EXPECT_EQ(3u, host_resolver.num_resolve()); 408 EXPECT_EQ(3u, host_resolver.num_resolve());
404 409
405 EXPECT_EQ("166.155.144.11-133.199.111.4:100", 410 EXPECT_EQ("166.155.144.11-133.199.111.4:100",
406 proxy_info.proxy_server().ToURI()); 411 proxy_info.proxy_server().ToURI());
407 412
408 // No errors. 413 // No errors.
(...skipping 18 matching lines...) Expand all
427 432
428 std::unique_ptr<ProxyResolverV8Tracing> resolver = 433 std::unique_ptr<ProxyResolverV8Tracing> resolver =
429 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects2.js"); 434 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects2.js");
430 435
431 TestCompletionCallback callback; 436 TestCompletionCallback callback;
432 ProxyInfo proxy_info; 437 ProxyInfo proxy_info;
433 438
434 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, 439 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info,
435 callback.callback(), NULL, 440 callback.callback(), NULL,
436 mock_bindings.CreateBindings()); 441 mock_bindings.CreateBindings());
437 EXPECT_EQ(OK, callback.WaitForResult()); 442 EXPECT_THAT(callback.WaitForResult(), IsOk());
438 443
439 EXPECT_EQ(3u, host_resolver.num_resolve()); 444 EXPECT_EQ(3u, host_resolver.num_resolve());
440 445
441 EXPECT_EQ("166.155.144.44:100", proxy_info.proxy_server().ToURI()); 446 EXPECT_EQ("166.155.144.44:100", proxy_info.proxy_server().ToURI());
442 447
443 // There were no alerts or errors. 448 // There were no alerts or errors.
444 EXPECT_TRUE(mock_bindings.GetAlerts().empty()); 449 EXPECT_TRUE(mock_bindings.GetAlerts().empty());
445 EXPECT_TRUE(mock_bindings.GetErrors().empty()); 450 EXPECT_TRUE(mock_bindings.GetErrors().empty());
446 } 451 }
447 452
(...skipping 10 matching lines...) Expand all
458 463
459 std::unique_ptr<ProxyResolverV8Tracing> resolver = 464 std::unique_ptr<ProxyResolverV8Tracing> resolver =
460 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects3.js"); 465 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects3.js");
461 466
462 TestCompletionCallback callback; 467 TestCompletionCallback callback;
463 ProxyInfo proxy_info; 468 ProxyInfo proxy_info;
464 469
465 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, 470 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info,
466 callback.callback(), NULL, 471 callback.callback(), NULL,
467 mock_bindings.CreateBindings()); 472 mock_bindings.CreateBindings());
468 EXPECT_EQ(OK, callback.WaitForResult()); 473 EXPECT_THAT(callback.WaitForResult(), IsOk());
469 474
470 EXPECT_EQ(20u, host_resolver.num_resolve()); 475 EXPECT_EQ(20u, host_resolver.num_resolve());
471 476
472 EXPECT_EQ( 477 EXPECT_EQ(
473 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" 478 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-"
474 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" 479 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-"
475 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" 480 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-"
476 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" 481 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-"
477 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-" 482 "166.155.144.11-166.155.144.11-166.155.144.11-166.155.144.11-"
478 "null:21", proxy_info.proxy_server().ToURI()); 483 "null:21", proxy_info.proxy_server().ToURI());
(...skipping 19 matching lines...) Expand all
498 503
499 std::unique_ptr<ProxyResolverV8Tracing> resolver = 504 std::unique_ptr<ProxyResolverV8Tracing> resolver =
500 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects4.js"); 505 CreateResolver(mock_bindings.CreateBindings(), "global_sideffects4.js");
501 506
502 TestCompletionCallback callback; 507 TestCompletionCallback callback;
503 ProxyInfo proxy_info; 508 ProxyInfo proxy_info;
504 509
505 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, 510 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info,
506 callback.callback(), NULL, 511 callback.callback(), NULL,
507 mock_bindings.CreateBindings()); 512 mock_bindings.CreateBindings());
508 EXPECT_EQ(OK, callback.WaitForResult()); 513 EXPECT_THAT(callback.WaitForResult(), IsOk());
509 514
510 EXPECT_EQ(20u, host_resolver.num_resolve()); 515 EXPECT_EQ(20u, host_resolver.num_resolve());
511 516
512 EXPECT_EQ("null21:34", proxy_info.proxy_server().ToURI()); 517 EXPECT_EQ("null21:34", proxy_info.proxy_server().ToURI());
513 518
514 // No errors. 519 // No errors.
515 EXPECT_TRUE(mock_bindings.GetErrors().empty()); 520 EXPECT_TRUE(mock_bindings.GetErrors().empty());
516 521
517 // 1 alert. 522 // 1 alert.
518 EXPECT_EQ(1u, mock_bindings.GetAlerts().size()); 523 EXPECT_EQ(1u, mock_bindings.GetAlerts().size());
(...skipping 19 matching lines...) Expand all
538 543
539 host_resolver.rules()->AddRule("host1", "145.88.13.3"); 544 host_resolver.rules()->AddRule("host1", "145.88.13.3");
540 host_resolver.rules()->AddRule("host2", "137.89.8.45"); 545 host_resolver.rules()->AddRule("host2", "137.89.8.45");
541 546
542 TestCompletionCallback callback; 547 TestCompletionCallback callback;
543 ProxyInfo proxy_info; 548 ProxyInfo proxy_info;
544 549
545 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info, 550 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info,
546 callback.callback(), NULL, 551 callback.callback(), NULL,
547 mock_bindings.CreateBindings()); 552 mock_bindings.CreateBindings());
548 EXPECT_EQ(OK, callback.WaitForResult()); 553 EXPECT_THAT(callback.WaitForResult(), IsOk());
549 554
550 // Fetched host1 and host2 again, since the ones done during initialization 555 // Fetched host1 and host2 again, since the ones done during initialization
551 // should not have been cached. 556 // should not have been cached.
552 EXPECT_EQ(4u, host_resolver.num_resolve()); 557 EXPECT_EQ(4u, host_resolver.num_resolve());
553 558
554 EXPECT_EQ("91.13.12.1-91.13.12.2-145.88.13.3-137.89.8.45:99", 559 EXPECT_EQ("91.13.12.1-91.13.12.2-145.88.13.3-137.89.8.45:99",
555 proxy_info.proxy_server().ToURI()); 560 proxy_info.proxy_server().ToURI());
556 561
557 // 2 alerts. 562 // 2 alerts.
558 ASSERT_EQ(2u, mock_bindings.GetAlerts().size()); 563 ASSERT_EQ(2u, mock_bindings.GetAlerts().size());
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 626
622 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info1, 627 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info1,
623 base::Bind(&CrashCallback), &request1, 628 base::Bind(&CrashCallback), &request1,
624 mock_bindings.CreateBindings()); 629 mock_bindings.CreateBindings());
625 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info2, 630 resolver->GetProxyForURL(GURL("http://foo/"), &proxy_info2,
626 callback.callback(), &request2, 631 callback.callback(), &request2,
627 mock_bindings.CreateBindings()); 632 mock_bindings.CreateBindings());
628 633
629 resolver->CancelRequest(request1); 634 resolver->CancelRequest(request1);
630 635
631 EXPECT_EQ(OK, callback.WaitForResult()); 636 EXPECT_THAT(callback.WaitForResult(), IsOk());
632 } 637 }
633 638
634 // Cancel a request after it has finished running on the worker thread, and has 639 // Cancel a request after it has finished running on the worker thread, and has
635 // posted a task the completion task back to origin thread. 640 // posted a task the completion task back to origin thread.
636 TEST_F(ProxyResolverV8TracingTest, CancelWhilePendingCompletionTask) { 641 TEST_F(ProxyResolverV8TracingTest, CancelWhilePendingCompletionTask) {
637 MockCachingHostResolver host_resolver; 642 MockCachingHostResolver host_resolver;
638 MockBindings mock_bindings(&host_resolver); 643 MockBindings mock_bindings(&host_resolver);
639 644
640 host_resolver.rules()->AddSimulatedFailure("*"); 645 host_resolver.rules()->AddSimulatedFailure("*");
641 646
(...skipping 15 matching lines...) Expand all
657 // the origin thread. 662 // the origin thread.
658 mock_bindings.RunOnError(base::Bind(&ProxyResolverV8Tracing::CancelRequest, 663 mock_bindings.RunOnError(base::Bind(&ProxyResolverV8Tracing::CancelRequest,
659 base::Unretained(resolver.get()), 664 base::Unretained(resolver.get()),
660 request1)); 665 request1));
661 666
662 // Start another request, to make sure it is able to complete. 667 // Start another request, to make sure it is able to complete.
663 resolver->GetProxyForURL(GURL("http://i-have-no-idea-what-im-doing/"), 668 resolver->GetProxyForURL(GURL("http://i-have-no-idea-what-im-doing/"),
664 &proxy_info2, callback.callback(), &request2, 669 &proxy_info2, callback.callback(), &request2,
665 mock_bindings.CreateBindings()); 670 mock_bindings.CreateBindings());
666 671
667 EXPECT_EQ(OK, callback.WaitForResult()); 672 EXPECT_THAT(callback.WaitForResult(), IsOk());
668 673
669 EXPECT_EQ("i-approve-this-message:42", proxy_info2.proxy_server().ToURI()); 674 EXPECT_EQ("i-approve-this-message:42", proxy_info2.proxy_server().ToURI());
670 } 675 }
671 676
672 // This implementation of HostResolver allows blocking until a resolve request 677 // This implementation of HostResolver allows blocking until a resolve request
673 // has been received. The resolve requests it receives will never be completed. 678 // has been received. The resolve requests it receives will never be completed.
674 class BlockableHostResolver : public HostResolver { 679 class BlockableHostResolver : public HostResolver {
675 public: 680 public:
676 BlockableHostResolver() 681 BlockableHostResolver()
677 : num_cancelled_requests_(0), waiting_for_resolve_(false) {} 682 : num_cancelled_requests_(0), waiting_for_resolve_(false) {}
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
873 878
874 std::unique_ptr<ProxyResolverV8TracingFactory> factory( 879 std::unique_ptr<ProxyResolverV8TracingFactory> factory(
875 ProxyResolverV8TracingFactory::Create()); 880 ProxyResolverV8TracingFactory::Create());
876 std::unique_ptr<ProxyResolverV8Tracing> resolver; 881 std::unique_ptr<ProxyResolverV8Tracing> resolver;
877 std::unique_ptr<ProxyResolverFactory::Request> request; 882 std::unique_ptr<ProxyResolverFactory::Request> request;
878 TestCompletionCallback callback; 883 TestCompletionCallback callback;
879 factory->CreateProxyResolverV8Tracing( 884 factory->CreateProxyResolverV8Tracing(
880 LoadScriptData("error_on_load.js"), mock_bindings.CreateBindings(), 885 LoadScriptData("error_on_load.js"), mock_bindings.CreateBindings(),
881 &resolver, callback.callback(), &request); 886 &resolver, callback.callback(), &request);
882 887
883 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, callback.WaitForResult()); 888 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_PAC_SCRIPT_FAILED));
884 EXPECT_FALSE(resolver); 889 EXPECT_FALSE(resolver);
885 } 890 }
886 891
887 // This tests that the execution of a PAC script is terminated when the DNS 892 // This tests that the execution of a PAC script is terminated when the DNS
888 // dependencies are missing. If the test fails, then it will hang. 893 // dependencies are missing. If the test fails, then it will hang.
889 TEST_F(ProxyResolverV8TracingTest, Terminate) { 894 TEST_F(ProxyResolverV8TracingTest, Terminate) {
890 MockCachingHostResolver host_resolver; 895 MockCachingHostResolver host_resolver;
891 MockBindings mock_bindings(&host_resolver); 896 MockBindings mock_bindings(&host_resolver);
892 897
893 host_resolver.rules()->AddRule("host1", "182.111.0.222"); 898 host_resolver.rules()->AddRule("host1", "182.111.0.222");
894 host_resolver.rules()->AddRule("host2", "111.33.44.55"); 899 host_resolver.rules()->AddRule("host2", "111.33.44.55");
895 900
896 std::unique_ptr<ProxyResolverV8Tracing> resolver = 901 std::unique_ptr<ProxyResolverV8Tracing> resolver =
897 CreateResolver(mock_bindings.CreateBindings(), "terminate.js"); 902 CreateResolver(mock_bindings.CreateBindings(), "terminate.js");
898 903
899 TestCompletionCallback callback; 904 TestCompletionCallback callback;
900 ProxyInfo proxy_info; 905 ProxyInfo proxy_info;
901 906
902 resolver->GetProxyForURL(GURL("http://foopy/req1"), &proxy_info, 907 resolver->GetProxyForURL(GURL("http://foopy/req1"), &proxy_info,
903 callback.callback(), NULL, 908 callback.callback(), NULL,
904 mock_bindings.CreateBindings()); 909 mock_bindings.CreateBindings());
905 EXPECT_EQ(OK, callback.WaitForResult()); 910 EXPECT_THAT(callback.WaitForResult(), IsOk());
906 911
907 // The test does 2 DNS resolutions. 912 // The test does 2 DNS resolutions.
908 EXPECT_EQ(2u, host_resolver.num_resolve()); 913 EXPECT_EQ(2u, host_resolver.num_resolve());
909 914
910 EXPECT_EQ("foopy:3", proxy_info.proxy_server().ToURI()); 915 EXPECT_EQ("foopy:3", proxy_info.proxy_server().ToURI());
911 916
912 // No errors or alerts. 917 // No errors or alerts.
913 EXPECT_TRUE(mock_bindings.GetErrors().empty()); 918 EXPECT_TRUE(mock_bindings.GetErrors().empty());
914 EXPECT_TRUE(mock_bindings.GetAlerts().empty()); 919 EXPECT_TRUE(mock_bindings.GetAlerts().empty());
915 } 920 }
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
996 "__1_192.168.1.1-" // dnsResolveEx('host1') 1001 "__1_192.168.1.1-" // dnsResolveEx('host1')
997 "122.133.144.155-" // myIpAddress() 1002 "122.133.144.155-" // myIpAddress()
998 "null-" // dnsResolve('host2') 1003 "null-" // dnsResolve('host2')
999 "-" // dnsResolveEx('host6') 1004 "-" // dnsResolveEx('host6')
1000 "133.122.100.200-" // myIpAddressEx() 1005 "133.122.100.200-" // myIpAddressEx()
1001 "166.155.144.44" // dnsResolve('host1') 1006 "166.155.144.44" // dnsResolve('host1')
1002 ":99"; 1007 ":99";
1003 1008
1004 for (size_t i = 0; i < kNumResults; ++i) { 1009 for (size_t i = 0; i < kNumResults; ++i) {
1005 size_t resolver_i = i % kNumResolvers; 1010 size_t resolver_i = i % kNumResolvers;
1006 EXPECT_EQ(OK, callback[i].WaitForResult()); 1011 EXPECT_THAT(callback[i].WaitForResult(), IsOk());
1007 1012
1008 std::string proxy_uri = proxy_info[i].proxy_server().ToURI(); 1013 std::string proxy_uri = proxy_info[i].proxy_server().ToURI();
1009 1014
1010 if (resolver_i == 0 || resolver_i == 1) { 1015 if (resolver_i == 0 || resolver_i == 1) {
1011 EXPECT_EQ(kExpectedForDnsJs, proxy_uri); 1016 EXPECT_EQ(kExpectedForDnsJs, proxy_uri);
1012 } else if (resolver_i == 2) { 1017 } else if (resolver_i == 2) {
1013 EXPECT_EQ("foo:99", proxy_uri); 1018 EXPECT_EQ("foo:99", proxy_uri);
1014 } else if (resolver_i == 3) { 1019 } else if (resolver_i == 3) {
1015 EXPECT_EQ("166.155.144.33:", 1020 EXPECT_EQ("166.155.144.33:",
1016 proxy_uri.substr(0, proxy_uri.find(':') + 1)); 1021 proxy_uri.substr(0, proxy_uri.find(':') + 1));
1017 } else { 1022 } else {
1018 NOTREACHED(); 1023 NOTREACHED();
1019 } 1024 }
1020 } 1025 }
1021 } 1026 }
1022 1027
1023 } // namespace 1028 } // namespace
1024 1029
1025 } // namespace net 1030 } // namespace net
OLDNEW
« no previous file with comments | « net/proxy/proxy_resolver_perftest.cc ('k') | net/proxy/proxy_resolver_v8_tracing_wrapper_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698