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

Side by Side Diff: net/http/disk_cache_based_quic_server_info_unittest.cc

Issue 723343002: Update from https://crrev.com/304121 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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
« no previous file with comments | « net/http/disk_cache_based_quic_server_info.cc ('k') | net/http/http_auth_handler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/http/disk_cache_based_quic_server_info.h" 5 #include "net/http/disk_cache_based_quic_server_info.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 new DiskCacheBasedQuicServerInfo(server_id, cache.http_cache())); 388 new DiskCacheBasedQuicServerInfo(server_id, cache.http_cache()));
389 EXPECT_FALSE(quic_server_info->IsDataReady()); 389 EXPECT_FALSE(quic_server_info->IsDataReady());
390 quic_server_info->Start(); 390 quic_server_info->Start();
391 int rv = quic_server_info->WaitForDataReady(callback.callback()); 391 int rv = quic_server_info->WaitForDataReady(callback.callback());
392 quic_server_info->CancelWaitForDataReadyCallback(); 392 quic_server_info->CancelWaitForDataReadyCallback();
393 EXPECT_EQ(OK, callback.GetResult(rv)); 393 EXPECT_EQ(OK, callback.GetResult(rv));
394 EXPECT_TRUE(quic_server_info->IsDataReady()); 394 EXPECT_TRUE(quic_server_info->IsDataReady());
395 RemoveMockTransaction(&kHostInfoTransaction1); 395 RemoveMockTransaction(&kHostInfoTransaction1);
396 } 396 }
397 397
398 // Test Start() followed by Persist() without calling WaitForDataReady.
399 TEST(DiskCacheBasedQuicServerInfo, StartAndPersist) {
400 MockHttpCache cache;
401 AddMockTransaction(&kHostInfoTransaction1);
402
403 QuicServerId server_id("www.google.com", 443, true, PRIVACY_MODE_DISABLED);
404 scoped_ptr<QuicServerInfo> quic_server_info(
405 new DiskCacheBasedQuicServerInfo(server_id, cache.http_cache()));
406 EXPECT_FALSE(quic_server_info->IsDataReady());
407 quic_server_info->Start();
408 // Wait until Start() does the work.
409 base::MessageLoop::current()->RunUntilIdle();
410
411 EXPECT_TRUE(quic_server_info->IsDataReady());
412
413 QuicServerInfo::State* state = quic_server_info->mutable_state();
414 EXPECT_TRUE(state->certs.empty());
415 const string server_config_a = "server_config_a";
416 const string source_address_token_a = "source_address_token_a";
417 const string server_config_sig_a = "server_config_sig_a";
418 const string cert_a = "cert_a";
419
420 state->server_config = server_config_a;
421 state->source_address_token = source_address_token_a;
422 state->server_config_sig = server_config_sig_a;
423 state->certs.push_back(cert_a);
424 EXPECT_TRUE(quic_server_info->IsReadyToPersist());
425 quic_server_info->Persist();
426 quic_server_info->OnExternalCacheHit();
427
428 // Once we call Persist, IsReadyToPersist should return false until Persist
429 // has completed.
430 EXPECT_FALSE(quic_server_info->IsReadyToPersist());
431
432 // Wait until Persist() does the work.
433 base::MessageLoop::current()->RunUntilIdle();
434
435 EXPECT_TRUE(quic_server_info->IsReadyToPersist());
436
437 // Verify that the state was updated.
438 quic_server_info.reset(
439 new DiskCacheBasedQuicServerInfo(server_id, cache.http_cache()));
440 quic_server_info->Start();
441 TestCompletionCallback callback;
442 int rv = quic_server_info->WaitForDataReady(callback.callback());
443 EXPECT_EQ(OK, callback.GetResult(rv));
444 EXPECT_TRUE(quic_server_info->IsDataReady());
445
446 const QuicServerInfo::State& state1 = quic_server_info->state();
447 EXPECT_EQ(server_config_a, state1.server_config);
448 EXPECT_EQ(source_address_token_a, state1.source_address_token);
449 EXPECT_EQ(server_config_sig_a, state1.server_config_sig);
450 EXPECT_EQ(1U, state1.certs.size());
451 EXPECT_EQ(cert_a, state1.certs[0]);
452
453 RemoveMockTransaction(&kHostInfoTransaction1);
454 }
455
456 // Test Persisting data when we are not ready to persist and then verify it
457 // persists the data when Start() finishes.
458 TEST(DiskCacheBasedQuicServerInfo, PersistWhenNotReadyToPersist) {
459 MockBlockingBackendFactory* factory = new MockBlockingBackendFactory();
460 MockHttpCache cache(factory);
461 AddMockTransaction(&kHostInfoTransaction1);
462 TestCompletionCallback callback;
463
464 QuicServerId server_id("www.google.com", 443, true, PRIVACY_MODE_DISABLED);
465 scoped_ptr<QuicServerInfo> quic_server_info(
466 new DiskCacheBasedQuicServerInfo(server_id, cache.http_cache()));
467 EXPECT_FALSE(quic_server_info->IsDataReady());
468 // We do a Start(), but don't call WaitForDataReady(). Because we haven't
469 // created the backend, we will wait and data wouldn't be ready.
470 quic_server_info->Start();
471 EXPECT_FALSE(quic_server_info->IsDataReady());
472
473 // Persist data once, even though the backend is not ready.
474 QuicServerInfo::State* state = quic_server_info->mutable_state();
475 EXPECT_TRUE(state->certs.empty());
476 const string server_config_init = "server_config_init";
477 const string source_address_token_init = "source_address_token_init";
478 const string server_config_sig_init = "server_config_sig_init";
479 const string cert_init = "cert_init";
480
481 state->server_config = server_config_init;
482 state->source_address_token = source_address_token_init;
483 state->server_config_sig = server_config_sig_init;
484 state->certs.push_back(cert_init);
485 EXPECT_FALSE(quic_server_info->IsReadyToPersist());
486 quic_server_info->Persist();
487 EXPECT_FALSE(quic_server_info->IsReadyToPersist());
488
489 // Now complete the backend creation and let the callback run.
490 factory->FinishCreation();
491 EXPECT_TRUE(quic_server_info->IsDataReady());
492
493 // Wait until Persist() does the work.
494 base::MessageLoop::current()->RunUntilIdle();
495
496 // Verify that the state was updated.
497 quic_server_info.reset(
498 new DiskCacheBasedQuicServerInfo(server_id, cache.http_cache()));
499 quic_server_info->Start();
500 int rv = quic_server_info->WaitForDataReady(callback.callback());
501 EXPECT_EQ(OK, callback.GetResult(rv));
502 EXPECT_TRUE(quic_server_info->IsDataReady());
503
504 const QuicServerInfo::State& state1 = quic_server_info->state();
505 EXPECT_EQ(server_config_init, state1.server_config);
506 EXPECT_EQ(source_address_token_init, state1.source_address_token);
507 EXPECT_EQ(server_config_sig_init, state1.server_config_sig);
508 EXPECT_EQ(1U, state1.certs.size());
509 EXPECT_EQ(cert_init, state1.certs[0]);
510 RemoveMockTransaction(&kHostInfoTransaction1);
511 }
512
513 // Test multiple calls to Persist without waiting for the data to be written.
514 TEST(DiskCacheBasedQuicServerInfo, MultiplePersistsWithoutWaiting) {
515 MockHttpCache cache;
516 AddMockTransaction(&kHostInfoTransaction1);
517 TestCompletionCallback callback;
518
519 QuicServerId server_id("www.google.com", 443, true, PRIVACY_MODE_DISABLED);
520 scoped_ptr<QuicServerInfo> quic_server_info(
521 new DiskCacheBasedQuicServerInfo(server_id, cache.http_cache()));
522 EXPECT_FALSE(quic_server_info->IsDataReady());
523 quic_server_info->Start();
524 int rv = quic_server_info->WaitForDataReady(callback.callback());
525 EXPECT_EQ(OK, callback.GetResult(rv));
526 EXPECT_TRUE(quic_server_info->IsDataReady());
527
528 // Persist data once.
529 QuicServerInfo::State* state = quic_server_info->mutable_state();
530 EXPECT_TRUE(state->certs.empty());
531 const string server_config_init = "server_config_init";
532 const string source_address_token_init = "source_address_token_init";
533 const string server_config_sig_init = "server_config_sig_init";
534 const string cert_init = "cert_init";
535
536 state->server_config = server_config_init;
537 state->source_address_token = source_address_token_init;
538 state->server_config_sig = server_config_sig_init;
539 state->certs.push_back(cert_init);
540 EXPECT_TRUE(quic_server_info->IsReadyToPersist());
541 quic_server_info->Persist();
542
543 // Once we call Persist, IsReadyToPersist should return false until Persist
544 // has completed.
545 EXPECT_FALSE(quic_server_info->IsReadyToPersist());
546
547 // Persist one more time using the same |quic_server_info| object and without
548 // doing another Start() and WaitForDataReady.
549 const string server_config_a = "server_config_a";
550 const string source_address_token_a = "source_address_token_a";
551 const string server_config_sig_a = "server_config_sig_a";
552 const string cert_a = "cert_a";
553
554 state->server_config = server_config_a;
555 state->source_address_token = source_address_token_a;
556 state->server_config_sig = server_config_sig_a;
557 state->certs.push_back(cert_a);
558 EXPECT_FALSE(quic_server_info->IsReadyToPersist());
559 quic_server_info->Persist();
560
561 // Wait until Persist() does the work.
562 base::MessageLoop::current()->RunUntilIdle();
563
564 EXPECT_TRUE(quic_server_info->IsReadyToPersist());
565
566 // Verify that the state was updated.
567 quic_server_info.reset(
568 new DiskCacheBasedQuicServerInfo(server_id, cache.http_cache()));
569 quic_server_info->Start();
570 rv = quic_server_info->WaitForDataReady(callback.callback());
571 EXPECT_EQ(OK, callback.GetResult(rv));
572 EXPECT_TRUE(quic_server_info->IsDataReady());
573
574 // Verify the second time persisted data is persisted.
575 const QuicServerInfo::State& state1 = quic_server_info->state();
576 EXPECT_EQ(server_config_a, state1.server_config);
577 EXPECT_EQ(source_address_token_a, state1.source_address_token);
578 EXPECT_EQ(server_config_sig_a, state1.server_config_sig);
579 EXPECT_EQ(1U, state1.certs.size());
580 EXPECT_EQ(cert_a, state1.certs[0]);
581
582 RemoveMockTransaction(&kHostInfoTransaction1);
583 }
584
398 } // namespace net 585 } // namespace net
OLDNEW
« no previous file with comments | « net/http/disk_cache_based_quic_server_info.cc ('k') | net/http/http_auth_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698