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

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

Powered by Google App Engine
This is Rietveld 408576698