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

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

Powered by Google App Engine
This is Rietveld 408576698