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

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

Issue 2438503003: [Offline pages] Add MarkAttemptAbortedTask to Request Queue (Closed)
Patch Set: Adding tests to request queue Created 4 years, 2 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 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/mark_attempt_started_task.h" 5 #include "components/offline_pages/background/mark_attempt_aborted_task.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/test/test_simple_task_runner.h" 10 #include "base/test/test_simple_task_runner.h"
11 #include "base/threading/thread_task_runner_handle.h" 11 #include "base/threading/thread_task_runner_handle.h"
12 #include "components/offline_pages/background/mark_attempt_started_task.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 "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
14 15
15 namespace offline_pages { 16 namespace offline_pages {
16 namespace { 17 namespace {
17 const int64_t kRequestId1 = 42; 18 const int64_t kRequestId1 = 42;
18 const int64_t kRequestId2 = 44; 19 const int64_t kRequestId2 = 44;
19 const GURL kUrl1("http://example.com"); 20 const GURL kUrl1("http://example.com");
20 const ClientId kClientId1("download", "1234"); 21 const ClientId kClientId1("download", "1234");
21 } // namespace 22 } // namespace
22 23
23 class MarkAttemptStartedTaskTest : public testing::Test { 24 class MarkAttemptAbortedTaskTest : public testing::Test {
24 public: 25 public:
25 MarkAttemptStartedTaskTest(); 26 MarkAttemptAbortedTaskTest();
26 ~MarkAttemptStartedTaskTest() override; 27 ~MarkAttemptAbortedTaskTest() override;
27 28
28 void PumpLoop(); 29 void PumpLoop();
29 30
30 void AddItemToStore(RequestQueueStore* store); 31 void AddItemToStore(RequestQueueStore* store);
31 32
32 void AddRequestDone(ItemActionStatus status); 33 void AddRequestDone(ItemActionStatus status);
33 34
34 void ChangeRequestsStateCallback( 35 void ChangeRequestsStateCallback(
35 std::unique_ptr<UpdateRequestsResult> result); 36 std::unique_ptr<UpdateRequestsResult> result);
36 37
38 void ClearResults();
39
37 UpdateRequestsResult* last_result() const { return result_.get(); } 40 UpdateRequestsResult* last_result() const { return result_.get(); }
38 41
39 private: 42 private:
40 std::unique_ptr<UpdateRequestsResult> result_; 43 std::unique_ptr<UpdateRequestsResult> result_;
41 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; 44 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
42 base::ThreadTaskRunnerHandle task_runner_handle_; 45 base::ThreadTaskRunnerHandle task_runner_handle_;
43 }; 46 };
44 47
45 MarkAttemptStartedTaskTest::MarkAttemptStartedTaskTest() 48 MarkAttemptAbortedTaskTest::MarkAttemptAbortedTaskTest()
46 : task_runner_(new base::TestSimpleTaskRunner), 49 : task_runner_(new base::TestSimpleTaskRunner),
47 task_runner_handle_(task_runner_) {} 50 task_runner_handle_(task_runner_) {}
48 51
49 MarkAttemptStartedTaskTest::~MarkAttemptStartedTaskTest() {} 52 MarkAttemptAbortedTaskTest::~MarkAttemptAbortedTaskTest() {}
50 53
51 void MarkAttemptStartedTaskTest::PumpLoop() { 54 void MarkAttemptAbortedTaskTest::PumpLoop() {
52 task_runner_->RunUntilIdle(); 55 task_runner_->RunUntilIdle();
53 } 56 }
54 57
55 void MarkAttemptStartedTaskTest::AddItemToStore(RequestQueueStore* store) { 58 void MarkAttemptAbortedTaskTest::AddItemToStore(RequestQueueStore* store) {
56 base::Time creation_time = base::Time::Now(); 59 base::Time creation_time = base::Time::Now();
57 SavePageRequest request_1(kRequestId1, kUrl1, kClientId1, creation_time, 60 SavePageRequest request_1(kRequestId1, kUrl1, kClientId1, creation_time,
58 true); 61 true);
59 store->AddRequest(request_1, 62 store->AddRequest(request_1,
60 base::Bind(&MarkAttemptStartedTaskTest::AddRequestDone, 63 base::Bind(&MarkAttemptAbortedTaskTest::AddRequestDone,
61 base::Unretained(this))); 64 base::Unretained(this)));
62 PumpLoop(); 65 PumpLoop();
63 } 66 }
64 67
65 void MarkAttemptStartedTaskTest::AddRequestDone(ItemActionStatus status) { 68 void MarkAttemptAbortedTaskTest::AddRequestDone(ItemActionStatus status) {
66 ASSERT_EQ(ItemActionStatus::SUCCESS, status); 69 ASSERT_EQ(ItemActionStatus::SUCCESS, status);
67 } 70 }
68 71
69 void MarkAttemptStartedTaskTest::ChangeRequestsStateCallback( 72 void MarkAttemptAbortedTaskTest::ChangeRequestsStateCallback(
70 std::unique_ptr<UpdateRequestsResult> result) { 73 std::unique_ptr<UpdateRequestsResult> result) {
71 result_ = std::move(result); 74 result_ = std::move(result);
72 } 75 }
73 76
74 TEST_F(MarkAttemptStartedTaskTest, MarkAttemptStartedWhenStoreEmpty) { 77 void MarkAttemptAbortedTaskTest::ClearResults() {
78 result_.reset(nullptr);
79 }
80
81 TEST_F(MarkAttemptAbortedTaskTest, MarkAttemptAbortedWhenStoreEmpty) {
75 RequestQueueInMemoryStore store; 82 RequestQueueInMemoryStore store;
76 MarkAttemptStartedTask task( 83 MarkAttemptAbortedTask task(
77 &store, kRequestId1, 84 &store, kRequestId1,
78 base::Bind(&MarkAttemptStartedTaskTest::ChangeRequestsStateCallback, 85 base::Bind(&MarkAttemptAbortedTaskTest::ChangeRequestsStateCallback,
79 base::Unretained(this))); 86 base::Unretained(this)));
80 task.Run(); 87 task.Run();
81 PumpLoop(); 88 PumpLoop();
82 ASSERT_TRUE(last_result()); 89 ASSERT_TRUE(last_result());
83 EXPECT_EQ(1UL, last_result()->item_statuses.size()); 90 EXPECT_EQ(1UL, last_result()->item_statuses.size());
84 EXPECT_EQ(kRequestId1, last_result()->item_statuses.at(0).first); 91 EXPECT_EQ(kRequestId1, last_result()->item_statuses.at(0).first);
85 EXPECT_EQ(ItemActionStatus::NOT_FOUND, 92 EXPECT_EQ(ItemActionStatus::NOT_FOUND,
86 last_result()->item_statuses.at(0).second); 93 last_result()->item_statuses.at(0).second);
87 EXPECT_EQ(0UL, last_result()->updated_items.size()); 94 EXPECT_EQ(0UL, last_result()->updated_items.size());
88 } 95 }
89 96
90 TEST_F(MarkAttemptStartedTaskTest, MarkAttemptStartedWhenExists) { 97 TEST_F(MarkAttemptAbortedTaskTest, MarkAttemptAbortedWhenExists) {
91 RequestQueueInMemoryStore store; 98 RequestQueueInMemoryStore store;
92 AddItemToStore(&store); 99 AddItemToStore(&store);
93 100
94 MarkAttemptStartedTask task( 101 MarkAttemptStartedTask start_request_task(
dougarnett 2016/10/19 21:23:10 // First mark the request as started.
fgorski 2016/10/20 16:56:34 Done.
95 &store, kRequestId1, 102 &store, kRequestId1,
96 base::Bind(&MarkAttemptStartedTaskTest::ChangeRequestsStateCallback, 103 base::Bind(&MarkAttemptAbortedTaskTest::ChangeRequestsStateCallback,
104 base::Unretained(this)));
105 start_request_task.Run();
106 PumpLoop();
107 ClearResults();
108
109 MarkAttemptAbortedTask task(
110 &store, kRequestId1,
111 base::Bind(&MarkAttemptAbortedTaskTest::ChangeRequestsStateCallback,
97 base::Unretained(this))); 112 base::Unretained(this)));
98 113
99 // Current time for verification.
100 base::Time before_time = base::Time::Now();
101 task.Run(); 114 task.Run();
102 PumpLoop(); 115 PumpLoop();
103 ASSERT_TRUE(last_result()); 116 ASSERT_TRUE(last_result());
104 EXPECT_EQ(1UL, last_result()->item_statuses.size()); 117 EXPECT_EQ(1UL, last_result()->item_statuses.size());
105 EXPECT_EQ(kRequestId1, last_result()->item_statuses.at(0).first); 118 EXPECT_EQ(kRequestId1, last_result()->item_statuses.at(0).first);
106 EXPECT_EQ(ItemActionStatus::SUCCESS, 119 EXPECT_EQ(ItemActionStatus::SUCCESS,
107 last_result()->item_statuses.at(0).second); 120 last_result()->item_statuses.at(0).second);
108 EXPECT_EQ(1UL, last_result()->updated_items.size()); 121 EXPECT_EQ(1UL, last_result()->updated_items.size());
109 EXPECT_LE(before_time, 122 EXPECT_EQ(SavePageRequest::RequestState::AVAILABLE,
110 last_result()->updated_items.at(0).last_attempt_time());
111 EXPECT_GE(base::Time::Now(),
112 last_result()->updated_items.at(0).last_attempt_time());
113 EXPECT_EQ(1, last_result()->updated_items.at(0).started_attempt_count());
114 EXPECT_EQ(SavePageRequest::RequestState::PRERENDERING,
115 last_result()->updated_items.at(0).request_state()); 123 last_result()->updated_items.at(0).request_state());
116 } 124 }
117 125
118 TEST_F(MarkAttemptStartedTaskTest, MarkAttemptStartedWhenItemMissing) { 126 TEST_F(MarkAttemptAbortedTaskTest, MarkAttemptAbortedWhenItemMissing) {
119 RequestQueueInMemoryStore store; 127 RequestQueueInMemoryStore store;
120 AddItemToStore(&store); 128 AddItemToStore(&store);
121 MarkAttemptStartedTask task( 129 MarkAttemptAbortedTask task(
122 &store, kRequestId2, 130 &store, kRequestId2,
123 base::Bind(&MarkAttemptStartedTaskTest::ChangeRequestsStateCallback, 131 base::Bind(&MarkAttemptAbortedTaskTest::ChangeRequestsStateCallback,
124 base::Unretained(this))); 132 base::Unretained(this)));
125 task.Run(); 133 task.Run();
126 PumpLoop(); 134 PumpLoop();
127 ASSERT_TRUE(last_result()); 135 ASSERT_TRUE(last_result());
128 EXPECT_EQ(1UL, last_result()->item_statuses.size()); 136 EXPECT_EQ(1UL, last_result()->item_statuses.size());
129 EXPECT_EQ(kRequestId2, last_result()->item_statuses.at(0).first); 137 EXPECT_EQ(kRequestId2, last_result()->item_statuses.at(0).first);
130 EXPECT_EQ(ItemActionStatus::NOT_FOUND, 138 EXPECT_EQ(ItemActionStatus::NOT_FOUND,
131 last_result()->item_statuses.at(0).second); 139 last_result()->item_statuses.at(0).second);
132 EXPECT_EQ(0UL, last_result()->updated_items.size()); 140 EXPECT_EQ(0UL, last_result()->updated_items.size());
133 } 141 }
134 142
135 } // namespace offline_pages 143 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698