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

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

Issue 2228813003: Changes to fit better with the needs of the download manager. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: CR fixes for Dimich Created 4 years, 4 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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 void SetUp() override; 42 void SetUp() override;
43 43
44 void PumpLoop(); 44 void PumpLoop();
45 45
46 // Callback for adding requests. 46 // Callback for adding requests.
47 void AddRequestDone(AddRequestResult result, const SavePageRequest& request); 47 void AddRequestDone(AddRequestResult result, const SavePageRequest& request);
48 // Callback for getting requests. 48 // Callback for getting requests.
49 void GetRequestsDone(GetRequestsResult result, 49 void GetRequestsDone(GetRequestsResult result,
50 const std::vector<SavePageRequest>& requests); 50 const std::vector<SavePageRequest>& requests);
51 // Callback for removing request. 51 // Callback for removing request.
52 void RemoveRequestDone(UpdateRequestResult result); 52 void RemoveRequestDone(const std::vector<int64_t>& request_ids,
53 const std::vector<UpdateRequestResult>& results);
53 54
54 void UpdateRequestDone(UpdateRequestResult result); 55 void UpdateRequestDone(UpdateRequestResult result);
55 56
56 RequestQueue* queue() { return queue_.get(); } 57 RequestQueue* queue() { return queue_.get(); }
57 58
58 AddRequestResult last_add_result() const { return last_add_result_; } 59 AddRequestResult last_add_result() const { return last_add_result_; }
59 SavePageRequest* last_added_request() { 60 SavePageRequest* last_added_request() {
60 return last_added_request_.get(); 61 return last_added_request_.get();
61 } 62 }
62 63
63 UpdateRequestResult last_remove_result() const { return last_remove_result_; } 64 const std::vector<int64_t>& last_remove_request_ids() {
65 return last_remove_request_ids_;
66 }
67
68 const std::vector<UpdateRequestResult>& last_remove_results() const {
69 return last_remove_results_;
70 }
64 71
65 UpdateRequestResult last_update_result() const { return last_update_result_; } 72 UpdateRequestResult last_update_result() const { return last_update_result_; }
66 73
67 GetRequestsResult last_get_requests_result() const { 74 GetRequestsResult last_get_requests_result() const {
68 return last_get_requests_result_; 75 return last_get_requests_result_;
69 } 76 }
70 const std::vector<SavePageRequest>& last_requests() const { 77 const std::vector<SavePageRequest>& last_requests() const {
71 return last_requests_; 78 return last_requests_;
72 } 79 }
73 80
74 private: 81 private:
75 AddRequestResult last_add_result_; 82 AddRequestResult last_add_result_;
76 std::unique_ptr<SavePageRequest> last_added_request_; 83 std::unique_ptr<SavePageRequest> last_added_request_;
77 84 std::vector<int64_t> last_remove_request_ids_;
78 UpdateRequestResult last_remove_result_; 85 std::vector<UpdateRequestResult> last_remove_results_;
79 UpdateRequestResult last_update_result_; 86 UpdateRequestResult last_update_result_;
80 87
81 GetRequestsResult last_get_requests_result_; 88 GetRequestsResult last_get_requests_result_;
82 std::vector<SavePageRequest> last_requests_; 89 std::vector<SavePageRequest> last_requests_;
83 90
84 std::unique_ptr<RequestQueue> queue_; 91 std::unique_ptr<RequestQueue> queue_;
85 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; 92 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
86 base::ThreadTaskRunnerHandle task_runner_handle_; 93 base::ThreadTaskRunnerHandle task_runner_handle_;
87 }; 94 };
88 95
89 RequestQueueTest::RequestQueueTest() 96 RequestQueueTest::RequestQueueTest()
90 : last_add_result_(AddRequestResult::STORE_FAILURE), 97 : last_add_result_(AddRequestResult::STORE_FAILURE),
91 last_remove_result_(UpdateRequestResult::STORE_FAILURE),
92 last_update_result_(UpdateRequestResult::STORE_FAILURE), 98 last_update_result_(UpdateRequestResult::STORE_FAILURE),
93 last_get_requests_result_(GetRequestsResult::STORE_FAILURE), 99 last_get_requests_result_(GetRequestsResult::STORE_FAILURE),
94 task_runner_(new base::TestSimpleTaskRunner), 100 task_runner_(new base::TestSimpleTaskRunner),
95 task_runner_handle_(task_runner_) {} 101 task_runner_handle_(task_runner_) {}
96 102
97 RequestQueueTest::~RequestQueueTest() {} 103 RequestQueueTest::~RequestQueueTest() {}
98 104
99 void RequestQueueTest::SetUp() { 105 void RequestQueueTest::SetUp() {
100 std::unique_ptr<RequestQueueInMemoryStore> store( 106 std::unique_ptr<RequestQueueInMemoryStore> store(
101 new RequestQueueInMemoryStore()); 107 new RequestQueueInMemoryStore());
(...skipping 10 matching lines...) Expand all
112 last_added_request_.reset(new SavePageRequest(request)); 118 last_added_request_.reset(new SavePageRequest(request));
113 } 119 }
114 120
115 void RequestQueueTest::GetRequestsDone( 121 void RequestQueueTest::GetRequestsDone(
116 GetRequestsResult result, 122 GetRequestsResult result,
117 const std::vector<SavePageRequest>& requests) { 123 const std::vector<SavePageRequest>& requests) {
118 last_get_requests_result_ = result; 124 last_get_requests_result_ = result;
119 last_requests_ = requests; 125 last_requests_ = requests;
120 } 126 }
121 127
122 void RequestQueueTest::RemoveRequestDone(UpdateRequestResult result) { 128 void RequestQueueTest::RemoveRequestDone(
123 last_remove_result_ = result; 129 const std::vector<int64_t>& request_ids,
130 const std::vector<UpdateRequestResult>& results) {
131 last_remove_request_ids_ = request_ids;
132 last_remove_results_ = results;
124 } 133 }
125 134
126 void RequestQueueTest::UpdateRequestDone(UpdateRequestResult result) { 135 void RequestQueueTest::UpdateRequestDone(UpdateRequestResult result) {
127 last_update_result_ = result; 136 last_update_result_ = result;
128 } 137 }
129 138
130 TEST_F(RequestQueueTest, GetRequestsEmpty) { 139 TEST_F(RequestQueueTest, GetRequestsEmpty) {
131 queue()->GetRequests( 140 queue()->GetRequests(
132 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); 141 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
133 PumpLoop(); 142 PumpLoop();
(...skipping 21 matching lines...) Expand all
155 164
156 TEST_F(RequestQueueTest, RemoveRequest) { 165 TEST_F(RequestQueueTest, RemoveRequest) {
157 base::Time creation_time = base::Time::Now(); 166 base::Time creation_time = base::Time::Now();
158 SavePageRequest request( 167 SavePageRequest request(
159 kRequestId, kUrl, kClientId, creation_time, kUserRequested); 168 kRequestId, kUrl, kClientId, creation_time, kUserRequested);
160 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone, 169 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone,
161 base::Unretained(this))); 170 base::Unretained(this)));
162 PumpLoop(); 171 PumpLoop();
163 ASSERT_EQ(kRequestId, last_added_request()->request_id()); 172 ASSERT_EQ(kRequestId, last_added_request()->request_id());
164 173
165 queue()->RemoveRequest( 174 std::vector<int64_t> remove_requests;
166 kRequestId, 175 remove_requests.push_back(kRequestId);
176 queue()->RemoveRequests(
177 remove_requests,
167 base::Bind(&RequestQueueTest::RemoveRequestDone, base::Unretained(this))); 178 base::Bind(&RequestQueueTest::RemoveRequestDone, base::Unretained(this)));
168 PumpLoop(); 179 PumpLoop();
169 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_result()); 180 ASSERT_EQ(1ul, last_remove_results().size());
181 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_results().at(0));
170 182
171 queue()->GetRequests( 183 queue()->GetRequests(
172 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); 184 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
173 PumpLoop(); 185 PumpLoop();
174 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); 186 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result());
175 ASSERT_EQ(0ul, last_requests().size()); 187 ASSERT_EQ(0ul, last_requests().size());
176 } 188 }
177 189
178 TEST_F(RequestQueueTest, RemoveRequestByClientId) { 190 TEST_F(RequestQueueTest, RemoveSeveralRequests) {
179 base::Time creation_time = base::Time::Now(); 191 base::Time creation_time = base::Time::Now();
180 // Put two requests on the queue with different client IDs.
181 SavePageRequest request(kRequestId, kUrl, kClientId, creation_time, 192 SavePageRequest request(kRequestId, kUrl, kClientId, creation_time,
182 kUserRequested); 193 kUserRequested);
183 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone, 194 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone,
184 base::Unretained(this))); 195 base::Unretained(this)));
196 PumpLoop();
197 ASSERT_EQ(kRequestId, last_added_request()->request_id());
198
185 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time, 199 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
186 kUserRequested); 200 kUserRequested);
187 queue()->AddRequest(request2, base::Bind(&RequestQueueTest::AddRequestDone, 201 queue()->AddRequest(request2, base::Bind(&RequestQueueTest::AddRequestDone,
188 base::Unretained(this))); 202 base::Unretained(this)));
189 PumpLoop(); 203 PumpLoop();
204 ASSERT_EQ(kRequestId2, last_added_request()->request_id());
205
206 std::vector<int64_t> remove_requests;
207 remove_requests.push_back(kRequestId);
208 remove_requests.push_back(kRequestId2);
209 queue()->RemoveRequests(
210 remove_requests,
211 base::Bind(&RequestQueueTest::RemoveRequestDone, base::Unretained(this)));
212 PumpLoop();
213 ASSERT_EQ(2ul, last_remove_results().size());
214 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_results().at(0));
215 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_results().at(1));
216 ASSERT_EQ(kRequestId, last_remove_request_ids().at(0));
217 ASSERT_EQ(kRequestId2, last_remove_request_ids().at(1));
190 218
191 queue()->GetRequests( 219 queue()->GetRequests(
192 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); 220 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
193 PumpLoop(); 221 PumpLoop();
194 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); 222 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result());
195 ASSERT_EQ(2ul, last_requests().size()); 223 ASSERT_EQ(0ul, last_requests().size());
196
197 std::vector<ClientId> client_ids;
198 client_ids.push_back(kClientId);
199
200 // Removing the first client ID should leave only the second on the queue.
201 queue()->RemoveRequestsByClientId(
202 client_ids,
203 base::Bind(&RequestQueueTest::RemoveRequestDone, base::Unretained(this)));
204 PumpLoop();
205 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_result());
206
207 queue()->GetRequests(
208 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
209 PumpLoop();
210 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result());
211 ASSERT_EQ(1ul, last_requests().size());
212 ASSERT_EQ(kClientId2, last_requests().front().client_id());
213 } 224 }
214 225
215 // A longer test populating the request queue with more than one item, properly 226 // A longer test populating the request queue with more than one item, properly
216 // listing multiple items and removing the right item. 227 // listing multiple items and removing the right item.
217 TEST_F(RequestQueueTest, MultipleRequestsAddGetRemove) { 228 TEST_F(RequestQueueTest, MultipleRequestsAddGetRemove) {
218 base::Time creation_time = base::Time::Now(); 229 base::Time creation_time = base::Time::Now();
219 SavePageRequest request1( 230 SavePageRequest request1(
220 kRequestId, kUrl, kClientId, creation_time, kUserRequested); 231 kRequestId, kUrl, kClientId, creation_time, kUserRequested);
221 queue()->AddRequest(request1, base::Bind(&RequestQueueTest::AddRequestDone, 232 queue()->AddRequest(request1, base::Bind(&RequestQueueTest::AddRequestDone,
222 base::Unretained(this))); 233 base::Unretained(this)));
223 PumpLoop(); 234 PumpLoop();
224 ASSERT_EQ(request1.request_id(), last_added_request()->request_id()); 235 ASSERT_EQ(request1.request_id(), last_added_request()->request_id());
225 SavePageRequest request2( 236 SavePageRequest request2(
226 kRequestId2, kUrl2, kClientId2, creation_time, kUserRequested); 237 kRequestId2, kUrl2, kClientId2, creation_time, kUserRequested);
227 queue()->AddRequest(request2, base::Bind(&RequestQueueTest::AddRequestDone, 238 queue()->AddRequest(request2, base::Bind(&RequestQueueTest::AddRequestDone,
228 base::Unretained(this))); 239 base::Unretained(this)));
229 PumpLoop(); 240 PumpLoop();
230 ASSERT_EQ(request2.request_id(), last_added_request()->request_id()); 241 ASSERT_EQ(request2.request_id(), last_added_request()->request_id());
231 242
232 queue()->GetRequests( 243 queue()->GetRequests(
233 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); 244 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
234 PumpLoop(); 245 PumpLoop();
235 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); 246 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result());
236 ASSERT_EQ(2ul, last_requests().size()); 247 ASSERT_EQ(2ul, last_requests().size());
237 248
238 queue()->RemoveRequest( 249 std::vector<int64_t> remove_requests;
239 request1.request_id(), 250 remove_requests.push_back(request1.request_id());
251 queue()->RemoveRequests(
252 remove_requests,
240 base::Bind(&RequestQueueTest::RemoveRequestDone, base::Unretained(this))); 253 base::Bind(&RequestQueueTest::RemoveRequestDone, base::Unretained(this)));
241 PumpLoop(); 254 PumpLoop();
242 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_result()); 255 ASSERT_EQ(kRequestId, last_remove_request_ids().at(0));
256 ASSERT_EQ(1ul, last_remove_results().size());
257 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_results().at(0));
243 258
244 queue()->GetRequests( 259 queue()->GetRequests(
245 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); 260 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
246 PumpLoop(); 261 PumpLoop();
247 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); 262 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result());
248 ASSERT_EQ(1ul, last_requests().size()); 263 ASSERT_EQ(1ul, last_requests().size());
249 ASSERT_EQ(request2.request_id(), last_requests()[0].request_id()); 264 ASSERT_EQ(request2.request_id(), last_requests()[0].request_id());
250 } 265 }
251 266
252 TEST_F(RequestQueueTest, UpdateRequest) { 267 TEST_F(RequestQueueTest, UpdateRequest) {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 303
289 // Try to update request1 when only request2 is in the queue. 304 // Try to update request1 when only request2 is in the queue.
290 queue()->UpdateRequest( 305 queue()->UpdateRequest(
291 request1, 306 request1,
292 base::Bind(&RequestQueueTest::UpdateRequestDone, base::Unretained(this))); 307 base::Bind(&RequestQueueTest::UpdateRequestDone, base::Unretained(this)));
293 PumpLoop(); 308 PumpLoop();
294 ASSERT_EQ(UpdateRequestResult::REQUEST_DOES_NOT_EXIST, last_update_result()); 309 ASSERT_EQ(UpdateRequestResult::REQUEST_DOES_NOT_EXIST, last_update_result());
295 } 310 }
296 311
297 } // namespace offline_pages 312 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698