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

Side by Side Diff: components/offline_pages/background/request_queue_unittest.cc

Issue 2463713003: [Offline Pages] Converts MarkAttemptCompleted to use TaskQueue (Closed)
Patch Set: Ternary nit and format fix Created 4 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 | « components/offline_pages/background/request_queue.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "components/offline_pages/background/request_queue.h" 5 #include "components/offline_pages/background/request_queue.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility>
8 9
9 #include "base/bind.h" 10 #include "base/bind.h"
10 #include "base/test/test_simple_task_runner.h" 11 #include "base/test/test_simple_task_runner.h"
11 #include "base/threading/thread_task_runner_handle.h" 12 #include "base/threading/thread_task_runner_handle.h"
12 #include "components/offline_pages/background/request_queue_in_memory_store.h" 13 #include "components/offline_pages/background/request_queue_in_memory_store.h"
13 #include "components/offline_pages/background/save_page_request.h" 14 #include "components/offline_pages/background/save_page_request.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
15 16
16 namespace offline_pages { 17 namespace offline_pages {
17 18
18 using AddRequestResult = RequestQueue::AddRequestResult; 19 using AddRequestResult = RequestQueue::AddRequestResult;
19 using GetRequestsResult = RequestQueue::GetRequestsResult; 20 using GetRequestsResult = RequestQueue::GetRequestsResult;
20 using UpdateRequestResult = RequestQueue::UpdateRequestResult; 21 using UpdateRequestResult = RequestQueue::UpdateRequestResult;
21 22
22 namespace { 23 namespace {
23 // Data for request 1. 24 // Data for request 1.
24 const int64_t kRequestId = 42; 25 const int64_t kRequestId = 42;
25 const GURL kUrl("http://example.com"); 26 const GURL kUrl("http://example.com");
26 const ClientId kClientId("bookmark", "1234"); 27 const ClientId kClientId("bookmark", "1234");
27 const int64_t kRetryCount = 2;
28 // Data for request 2. 28 // Data for request 2.
29 const int64_t kRequestId2 = 77; 29 const int64_t kRequestId2 = 77;
30 const GURL kUrl2("http://test.com"); 30 const GURL kUrl2("http://test.com");
31 const ClientId kClientId2("bookmark", "567"); 31 const ClientId kClientId2("bookmark", "567");
32 const bool kUserRequested = true; 32 const bool kUserRequested = true;
33 const int64_t kRequestId3 = 99; 33 const int64_t kRequestId3 = 99;
34 } // namespace 34 } // namespace
35 35
36 // TODO(fgorski): Add tests for store failures in add/remove/get. 36 // TODO(fgorski): Add tests for store failures in add/remove/get.
37 class RequestQueueTest : public testing::Test { 37 class RequestQueueTest : public testing::Test {
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 update_requests_result()->item_statuses.at(0).second); 343 update_requests_result()->item_statuses.at(0).second);
344 344
345 queue()->GetRequests( 345 queue()->GetRequests(
346 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); 346 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
347 PumpLoop(); 347 PumpLoop();
348 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); 348 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result());
349 ASSERT_EQ(1ul, last_requests().size()); 349 ASSERT_EQ(1ul, last_requests().size());
350 ASSERT_EQ(request2.request_id(), last_requests().at(0)->request_id()); 350 ASSERT_EQ(request2.request_id(), last_requests().at(0)->request_id());
351 } 351 }
352 352
353 TEST_F(RequestQueueTest, UpdateRequest) {
354 // First add a request. Retry count will be set to 0.
355 base::Time creation_time = base::Time::Now();
356 SavePageRequest request(
357 kRequestId, kUrl, kClientId, creation_time, kUserRequested);
358 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone,
359 base::Unretained(this)));
360 PumpLoop();
361
362 // Update the request, ensure it succeeded.
363 request.set_completed_attempt_count(kRetryCount);
364 queue()->UpdateRequest(
365 request,
366 base::Bind(&RequestQueueTest::UpdateRequestDone, base::Unretained(this)));
367 PumpLoop();
368 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_update_result());
369
370 // Get the request, and verify the update took effect.
371 queue()->GetRequests(
372 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
373 PumpLoop();
374 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result());
375 ASSERT_EQ(1ul, last_requests().size());
376 ASSERT_EQ(kRetryCount, last_requests().at(0)->completed_attempt_count());
377 }
378
379 TEST_F(RequestQueueTest, UpdateRequestNotPresent) {
380 // First add a request. Retry count will be set to 0.
381 base::Time creation_time = base::Time::Now();
382 SavePageRequest request1(
383 kRequestId, kUrl, kClientId, creation_time, kUserRequested);
384 SavePageRequest request2(
385 kRequestId2, kUrl2, kClientId2, creation_time, kUserRequested);
386 queue()->AddRequest(request2, base::Bind(&RequestQueueTest::AddRequestDone,
387 base::Unretained(this)));
388 PumpLoop();
389
390 // Try to update request1 when only request2 is in the queue.
391 queue()->UpdateRequest(
392 request1,
393 base::Bind(&RequestQueueTest::UpdateRequestDone, base::Unretained(this)));
394 PumpLoop();
395 ASSERT_EQ(UpdateRequestResult::REQUEST_DOES_NOT_EXIST, last_update_result());
396 }
397
398 TEST_F(RequestQueueTest, MarkAttemptStarted) { 353 TEST_F(RequestQueueTest, MarkAttemptStarted) {
399 // First add a request. Retry count will be set to 0. 354 // First add a request. Retry count will be set to 0.
400 base::Time creation_time = base::Time::Now(); 355 base::Time creation_time = base::Time::Now();
401 SavePageRequest request(kRequestId, kUrl, kClientId, creation_time, 356 SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
402 kUserRequested); 357 kUserRequested);
403 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone, 358 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone,
404 base::Unretained(this))); 359 base::Unretained(this)));
405 PumpLoop(); 360 PumpLoop();
406 361
407 base::Time before_time = base::Time::Now(); 362 base::Time before_time = base::Time::Now();
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 base::Bind(&RequestQueueTest::UpdateRequestsDone, 447 base::Bind(&RequestQueueTest::UpdateRequestsDone,
493 base::Unretained(this))); 448 base::Unretained(this)));
494 PumpLoop(); 449 PumpLoop();
495 ASSERT_EQ(1ul, update_requests_result()->item_statuses.size()); 450 ASSERT_EQ(1ul, update_requests_result()->item_statuses.size());
496 EXPECT_EQ(kRequestId, update_requests_result()->item_statuses.at(0).first); 451 EXPECT_EQ(kRequestId, update_requests_result()->item_statuses.at(0).first);
497 EXPECT_EQ(ItemActionStatus::NOT_FOUND, 452 EXPECT_EQ(ItemActionStatus::NOT_FOUND,
498 update_requests_result()->item_statuses.at(0).second); 453 update_requests_result()->item_statuses.at(0).second);
499 EXPECT_EQ(0ul, update_requests_result()->updated_items.size()); 454 EXPECT_EQ(0ul, update_requests_result()->updated_items.size());
500 } 455 }
501 456
457 TEST_F(RequestQueueTest, MarkAttemptCompleted) {
458 base::Time creation_time = base::Time::Now();
459 SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
460 kUserRequested);
461 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone,
462 base::Unretained(this)));
463 PumpLoop();
464
465 // Start request.
466 queue()->MarkAttemptStarted(kRequestId,
467 base::Bind(&RequestQueueTest::UpdateRequestsDone,
468 base::Unretained(this)));
469 PumpLoop();
470 ClearResults();
471
472 queue()->MarkAttemptCompleted(
473 kRequestId, base::Bind(&RequestQueueTest::UpdateRequestsDone,
474 base::Unretained(this)));
475 PumpLoop();
476
477 ASSERT_TRUE(update_requests_result());
478 EXPECT_EQ(1UL, update_requests_result()->item_statuses.size());
479 EXPECT_EQ(kRequestId, update_requests_result()->item_statuses.at(0).first);
480 EXPECT_EQ(ItemActionStatus::SUCCESS,
481 update_requests_result()->item_statuses.at(0).second);
482 EXPECT_EQ(1UL, update_requests_result()->updated_items.size());
483 EXPECT_EQ(SavePageRequest::RequestState::AVAILABLE,
484 update_requests_result()->updated_items.at(0).request_state());
485 }
486
502 } // namespace offline_pages 487 } // namespace offline_pages
OLDNEW
« no previous file with comments | « components/offline_pages/background/request_queue.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698