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

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

Issue 2373933003: [Offline pages] Updating RequestQueue::RemoveRequests to use a TaskQueue (Closed)
Patch Set: Addressing final feedback 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/request_queue.h" 5 #include "components/offline_pages/background/request_queue.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"
(...skipping 12 matching lines...) Expand all
23 // Data for request 1. 23 // Data for request 1.
24 const int64_t kRequestId = 42; 24 const int64_t kRequestId = 42;
25 const GURL kUrl("http://example.com"); 25 const GURL kUrl("http://example.com");
26 const ClientId kClientId("bookmark", "1234"); 26 const ClientId kClientId("bookmark", "1234");
27 const int64_t kRetryCount = 2; 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 } // namespace 34 } // namespace
34 35
35 // TODO(fgorski): Add tests for store failures in add/remove/get. 36 // TODO(fgorski): Add tests for store failures in add/remove/get.
36 class RequestQueueTest : public testing::Test { 37 class RequestQueueTest : public testing::Test {
37 public: 38 public:
38 RequestQueueTest(); 39 RequestQueueTest();
39 ~RequestQueueTest() override; 40 ~RequestQueueTest() override;
40 41
41 // Test overrides. 42 // Test overrides.
42 void SetUp() override; 43 void SetUp() override;
43 44
44 void PumpLoop(); 45 void PumpLoop();
45 46
46 // Callback for adding requests. 47 // Callback for adding requests.
47 void AddRequestDone(AddRequestResult result, const SavePageRequest& request); 48 void AddRequestDone(AddRequestResult result, const SavePageRequest& request);
48 // Callback for getting requests. 49 // Callback for getting requests.
49 void GetRequestsDone(GetRequestsResult result, 50 void GetRequestsDone(GetRequestsResult result,
50 std::vector<std::unique_ptr<SavePageRequest>> requests); 51 std::vector<std::unique_ptr<SavePageRequest>> requests);
51 // Callback for removing request.
52 void RemoveRequestsDone(
53 const RequestQueue::UpdateMultipleRequestResults& results,
54 std::vector<std::unique_ptr<SavePageRequest>> requests);
55 52
56 void UpdateRequestDone(UpdateRequestResult result); 53 void UpdateRequestDone(UpdateRequestResult result);
57 void UpdateRequestsDone(std::unique_ptr<UpdateRequestsResult> result); 54 void UpdateRequestsDone(std::unique_ptr<UpdateRequestsResult> result);
58 55
59 RequestQueue* queue() { return queue_.get(); } 56 RequestQueue* queue() { return queue_.get(); }
60 57
61 AddRequestResult last_add_result() const { return last_add_result_; } 58 AddRequestResult last_add_result() const { return last_add_result_; }
62 SavePageRequest* last_added_request() { 59 SavePageRequest* last_added_request() {
63 return last_added_request_.get(); 60 return last_added_request_.get();
64 } 61 }
65 62
66 const RequestQueue::UpdateMultipleRequestResults& last_remove_results()
67 const {
68 return last_remove_results_;
69 }
70
71 const RequestQueue::UpdateMultipleRequestResults&
72 last_multiple_update_results() const {
73 return last_multiple_update_results_;
74 }
75
76 UpdateRequestResult last_update_result() const { return last_update_result_; } 63 UpdateRequestResult last_update_result() const { return last_update_result_; }
77 64
78 GetRequestsResult last_get_requests_result() const { 65 GetRequestsResult last_get_requests_result() const {
79 return last_get_requests_result_; 66 return last_get_requests_result_;
80 } 67 }
81 68
82 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const { 69 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const {
83 return last_requests_; 70 return last_requests_;
84 } 71 }
85 72
86 UpdateRequestsResult* update_requests_result() const { 73 UpdateRequestsResult* update_requests_result() const {
87 return update_requests_result_.get(); 74 return update_requests_result_.get();
88 } 75 }
89 76
90 private: 77 private:
91 AddRequestResult last_add_result_; 78 AddRequestResult last_add_result_;
92 std::unique_ptr<SavePageRequest> last_added_request_; 79 std::unique_ptr<SavePageRequest> last_added_request_;
93 std::unique_ptr<UpdateRequestsResult> update_requests_result_; 80 std::unique_ptr<UpdateRequestsResult> update_requests_result_;
94 RequestQueue::UpdateMultipleRequestResults last_remove_results_;
95 RequestQueue::UpdateMultipleRequestResults last_multiple_update_results_;
96 UpdateRequestResult last_update_result_; 81 UpdateRequestResult last_update_result_;
97 82
98 GetRequestsResult last_get_requests_result_; 83 GetRequestsResult last_get_requests_result_;
99 std::vector<std::unique_ptr<SavePageRequest>> last_requests_; 84 std::vector<std::unique_ptr<SavePageRequest>> last_requests_;
100 85
101 std::unique_ptr<RequestQueue> queue_; 86 std::unique_ptr<RequestQueue> queue_;
102 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; 87 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
103 base::ThreadTaskRunnerHandle task_runner_handle_; 88 base::ThreadTaskRunnerHandle task_runner_handle_;
104 }; 89 };
105 90
(...skipping 22 matching lines...) Expand all
128 last_added_request_.reset(new SavePageRequest(request)); 113 last_added_request_.reset(new SavePageRequest(request));
129 } 114 }
130 115
131 void RequestQueueTest::GetRequestsDone( 116 void RequestQueueTest::GetRequestsDone(
132 GetRequestsResult result, 117 GetRequestsResult result,
133 std::vector<std::unique_ptr<SavePageRequest>> requests) { 118 std::vector<std::unique_ptr<SavePageRequest>> requests) {
134 last_get_requests_result_ = result; 119 last_get_requests_result_ = result;
135 last_requests_ = std::move(requests); 120 last_requests_ = std::move(requests);
136 } 121 }
137 122
138 void RequestQueueTest::RemoveRequestsDone(
139 const RequestQueue::UpdateMultipleRequestResults& results,
140 std::vector<std::unique_ptr<SavePageRequest>> requests) {
141 last_remove_results_ = results;
142 last_requests_ = std::move(requests);
143 }
144
145 void RequestQueueTest::UpdateRequestDone(UpdateRequestResult result) { 123 void RequestQueueTest::UpdateRequestDone(UpdateRequestResult result) {
146 last_update_result_ = result; 124 last_update_result_ = result;
147 } 125 }
148 126
149 void RequestQueueTest::UpdateRequestsDone( 127 void RequestQueueTest::UpdateRequestsDone(
150 std::unique_ptr<UpdateRequestsResult> result) { 128 std::unique_ptr<UpdateRequestsResult> result) {
151 update_requests_result_ = std::move(result); 129 update_requests_result_ = std::move(result);
152 } 130 }
153 131
154 TEST_F(RequestQueueTest, GetRequestsEmpty) { 132 TEST_F(RequestQueueTest, GetRequestsEmpty) {
(...skipping 24 matching lines...) Expand all
179 157
180 TEST_F(RequestQueueTest, RemoveRequest) { 158 TEST_F(RequestQueueTest, RemoveRequest) {
181 base::Time creation_time = base::Time::Now(); 159 base::Time creation_time = base::Time::Now();
182 SavePageRequest request( 160 SavePageRequest request(
183 kRequestId, kUrl, kClientId, creation_time, kUserRequested); 161 kRequestId, kUrl, kClientId, creation_time, kUserRequested);
184 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone, 162 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone,
185 base::Unretained(this))); 163 base::Unretained(this)));
186 PumpLoop(); 164 PumpLoop();
187 ASSERT_EQ(kRequestId, last_added_request()->request_id()); 165 ASSERT_EQ(kRequestId, last_added_request()->request_id());
188 166
189 std::vector<int64_t> remove_requests; 167 std::vector<int64_t> remove_requests{kRequestId};
190 remove_requests.push_back(kRequestId);
191 queue()->RemoveRequests(remove_requests, 168 queue()->RemoveRequests(remove_requests,
192 base::Bind(&RequestQueueTest::RemoveRequestsDone, 169 base::Bind(&RequestQueueTest::UpdateRequestsDone,
193 base::Unretained(this))); 170 base::Unretained(this)));
194 PumpLoop(); 171 PumpLoop();
195 ASSERT_EQ(1ul, last_remove_results().size()); 172 EXPECT_EQ(1ul, update_requests_result()->item_statuses.size());
196 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_results().at(0).second); 173 EXPECT_EQ(kRequestId, update_requests_result()->item_statuses.at(0).first);
174 EXPECT_EQ(ItemActionStatus::SUCCESS,
175 update_requests_result()->item_statuses.at(0).second);
176 EXPECT_EQ(1UL, update_requests_result()->updated_items.size());
177 EXPECT_EQ(request, update_requests_result()->updated_items.at(0));
197 178
198 queue()->GetRequests( 179 queue()->GetRequests(
199 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); 180 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
200 PumpLoop(); 181 PumpLoop();
201 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); 182 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result());
202 ASSERT_EQ(0ul, last_requests().size()); 183 ASSERT_EQ(0ul, last_requests().size());
203 } 184 }
204 185
205 TEST_F(RequestQueueTest, RemoveSeveralRequests) { 186 TEST_F(RequestQueueTest, RemoveSeveralRequests) {
206 base::Time creation_time = base::Time::Now(); 187 base::Time creation_time = base::Time::Now();
207 SavePageRequest request(kRequestId, kUrl, kClientId, creation_time, 188 SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
208 kUserRequested); 189 kUserRequested);
209 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone, 190 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone,
210 base::Unretained(this))); 191 base::Unretained(this)));
211 PumpLoop(); 192 PumpLoop();
212 ASSERT_EQ(kRequestId, last_added_request()->request_id()); 193 ASSERT_EQ(kRequestId, last_added_request()->request_id());
213 194
214 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time, 195 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
215 kUserRequested); 196 kUserRequested);
216 queue()->AddRequest(request2, base::Bind(&RequestQueueTest::AddRequestDone, 197 queue()->AddRequest(request2, base::Bind(&RequestQueueTest::AddRequestDone,
217 base::Unretained(this))); 198 base::Unretained(this)));
218 PumpLoop(); 199 PumpLoop();
219 ASSERT_EQ(kRequestId2, last_added_request()->request_id()); 200 ASSERT_EQ(kRequestId2, last_added_request()->request_id());
220 201
221 std::vector<int64_t> remove_requests; 202 std::vector<int64_t> remove_requests;
222 remove_requests.push_back(kRequestId); 203 remove_requests.push_back(kRequestId);
223 remove_requests.push_back(kRequestId2); 204 remove_requests.push_back(kRequestId2);
205 remove_requests.push_back(kRequestId3);
224 queue()->RemoveRequests(remove_requests, 206 queue()->RemoveRequests(remove_requests,
225 base::Bind(&RequestQueueTest::RemoveRequestsDone, 207 base::Bind(&RequestQueueTest::UpdateRequestsDone,
226 base::Unretained(this))); 208 base::Unretained(this)));
227 PumpLoop(); 209 PumpLoop();
228 ASSERT_EQ(2ul, last_remove_results().size()); 210 ASSERT_EQ(3ul, update_requests_result()->item_statuses.size());
229 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_results().at(0).second); 211 ASSERT_EQ(kRequestId, update_requests_result()->item_statuses.at(0).first);
230 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_results().at(1).second); 212 ASSERT_EQ(ItemActionStatus::SUCCESS,
231 ASSERT_EQ(kRequestId, last_remove_results().at(0).first); 213 update_requests_result()->item_statuses.at(0).second);
232 ASSERT_EQ(kRequestId2, last_remove_results().at(1).first); 214 ASSERT_EQ(kRequestId2, update_requests_result()->item_statuses.at(1).first);
215 ASSERT_EQ(ItemActionStatus::SUCCESS,
216 update_requests_result()->item_statuses.at(1).second);
217 ASSERT_EQ(kRequestId3, update_requests_result()->item_statuses.at(2).first);
218 ASSERT_EQ(ItemActionStatus::NOT_FOUND,
219 update_requests_result()->item_statuses.at(2).second);
220 EXPECT_EQ(2UL, update_requests_result()->updated_items.size());
221 EXPECT_EQ(request, update_requests_result()->updated_items.at(0));
222 EXPECT_EQ(request2, update_requests_result()->updated_items.at(1));
233 223
234 queue()->GetRequests( 224 queue()->GetRequests(
235 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); 225 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
236 PumpLoop(); 226 PumpLoop();
237 227
238 // Verify both requests are no longer in the queue. 228 // Verify both requests are no longer in the queue.
239 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); 229 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result());
240 ASSERT_EQ(0ul, last_requests().size()); 230 ASSERT_EQ(0ul, last_requests().size());
241 } 231 }
242 232
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 316
327 queue()->GetRequests( 317 queue()->GetRequests(
328 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); 318 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
329 PumpLoop(); 319 PumpLoop();
330 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); 320 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result());
331 ASSERT_EQ(2ul, last_requests().size()); 321 ASSERT_EQ(2ul, last_requests().size());
332 322
333 std::vector<int64_t> remove_requests; 323 std::vector<int64_t> remove_requests;
334 remove_requests.push_back(request1.request_id()); 324 remove_requests.push_back(request1.request_id());
335 queue()->RemoveRequests(remove_requests, 325 queue()->RemoveRequests(remove_requests,
336 base::Bind(&RequestQueueTest::RemoveRequestsDone, 326 base::Bind(&RequestQueueTest::UpdateRequestsDone,
337 base::Unretained(this))); 327 base::Unretained(this)));
338 PumpLoop(); 328 PumpLoop();
339 ASSERT_EQ(1ul, last_remove_results().size()); 329 ASSERT_EQ(1ul, update_requests_result()->item_statuses.size());
340 ASSERT_EQ(kRequestId, last_remove_results().at(0).first); 330 ASSERT_EQ(kRequestId, update_requests_result()->item_statuses.at(0).first);
341 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_results().at(0).second); 331 ASSERT_EQ(ItemActionStatus::SUCCESS,
332 update_requests_result()->item_statuses.at(0).second);
342 333
343 queue()->GetRequests( 334 queue()->GetRequests(
344 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); 335 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
345 PumpLoop(); 336 PumpLoop();
346 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); 337 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result());
347 ASSERT_EQ(1ul, last_requests().size()); 338 ASSERT_EQ(1ul, last_requests().size());
348 ASSERT_EQ(request2.request_id(), last_requests().at(0)->request_id()); 339 ASSERT_EQ(request2.request_id(), last_requests().at(0)->request_id());
349 } 340 }
350 341
351 TEST_F(RequestQueueTest, UpdateRequest) { 342 TEST_F(RequestQueueTest, UpdateRequest) {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 378
388 // Try to update request1 when only request2 is in the queue. 379 // Try to update request1 when only request2 is in the queue.
389 queue()->UpdateRequest( 380 queue()->UpdateRequest(
390 request1, 381 request1,
391 base::Bind(&RequestQueueTest::UpdateRequestDone, base::Unretained(this))); 382 base::Bind(&RequestQueueTest::UpdateRequestDone, base::Unretained(this)));
392 PumpLoop(); 383 PumpLoop();
393 ASSERT_EQ(UpdateRequestResult::REQUEST_DOES_NOT_EXIST, last_update_result()); 384 ASSERT_EQ(UpdateRequestResult::REQUEST_DOES_NOT_EXIST, last_update_result());
394 } 385 }
395 386
396 } // namespace offline_pages 387 } // namespace offline_pages
OLDNEW
« no previous file with comments | « components/offline_pages/background/request_queue_store_unittest.cc ('k') | components/offline_pages/offline_store_types.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698