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

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

Issue 2372043002: [Offline pages] Applying TaskQueue to RequestQueue::ChangeRequestsState (Closed)
Patch Set: Addressing feedback from dougarnett 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_store.h" 5 #include "components/offline_pages/background/request_queue_store.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 void PumpLoop(); 51 void PumpLoop();
52 void ClearResults(); 52 void ClearResults();
53 53
54 // Callback used for get requests. 54 // Callback used for get requests.
55 void GetRequestsDone(bool result, 55 void GetRequestsDone(bool result,
56 std::vector<std::unique_ptr<SavePageRequest>> requests); 56 std::vector<std::unique_ptr<SavePageRequest>> requests);
57 // Callback used for add/update request. 57 // Callback used for add/update request.
58 void AddOrUpdateDone(UpdateStatus result); 58 void AddOrUpdateDone(UpdateStatus result);
59 void AddRequestDone(ItemActionStatus status); 59 void AddRequestDone(ItemActionStatus status);
60 void UpdateRequestDone(std::unique_ptr<UpdateRequestsResult> result); 60 void UpdateRequestDone(std::unique_ptr<UpdateRequestsResult> result);
61 void UpdateMultipleRequestsDone(
62 const RequestQueue::UpdateMultipleRequestResults& results,
63 std::vector<std::unique_ptr<SavePageRequest>> requests);
64 // Callback used for remove requests. 61 // Callback used for remove requests.
65 void RemoveDone(const RequestQueue::UpdateMultipleRequestResults& results, 62 void RemoveDone(const RequestQueue::UpdateMultipleRequestResults& results,
66 std::vector<std::unique_ptr<SavePageRequest>> requests); 63 std::vector<std::unique_ptr<SavePageRequest>> requests);
67 // Callback used for reset. 64 // Callback used for reset.
68 void ResetDone(bool result); 65 void ResetDone(bool result);
69 66
70 LastResult last_result() const { return last_result_; } 67 LastResult last_result() const { return last_result_; }
71 UpdateStatus last_update_status() const { return last_update_status_; } 68 UpdateStatus last_update_status() const { return last_update_status_; }
72 const RequestQueue::UpdateMultipleRequestResults& 69 const RequestQueue::UpdateMultipleRequestResults&
73 last_multiple_update_results() const { 70 last_multiple_update_results() const {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 139
143 void RequestQueueStoreTestBase::AddRequestDone(ItemActionStatus status) { 140 void RequestQueueStoreTestBase::AddRequestDone(ItemActionStatus status) {
144 last_add_status_ = status; 141 last_add_status_ = status;
145 } 142 }
146 143
147 void RequestQueueStoreTestBase::UpdateRequestDone( 144 void RequestQueueStoreTestBase::UpdateRequestDone(
148 std::unique_ptr<UpdateRequestsResult> result) { 145 std::unique_ptr<UpdateRequestsResult> result) {
149 last_update_result_ = std::move(result); 146 last_update_result_ = std::move(result);
150 } 147 }
151 148
152 void RequestQueueStoreTestBase::UpdateMultipleRequestsDone(
153 const RequestQueue::UpdateMultipleRequestResults& results,
154 std::vector<std::unique_ptr<SavePageRequest>> requests) {
155 last_multiple_update_results_ = results;
156 last_requests_ = std::move(requests);
157 }
158
159 void RequestQueueStoreTestBase::RemoveDone( 149 void RequestQueueStoreTestBase::RemoveDone(
160 const RequestQueue::UpdateMultipleRequestResults& results, 150 const RequestQueue::UpdateMultipleRequestResults& results,
161 std::vector<std::unique_ptr<SavePageRequest>> requests) { 151 std::vector<std::unique_ptr<SavePageRequest>> requests) {
162 last_remove_results_ = results; 152 last_remove_results_ = results;
163 last_requests_ = std::move(requests); 153 last_requests_ = std::move(requests);
164 } 154 }
165 155
166 void RequestQueueStoreTestBase::ResetDone(bool result) { 156 void RequestQueueStoreTestBase::ResetDone(bool result) {
167 last_result_ = result ? LastResult::kTrue : LastResult::kFalse; 157 last_result_ = result ? LastResult::kTrue : LastResult::kFalse;
168 } 158 }
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 ASSERT_EQ(2ul, this->last_remove_results().size()); 361 ASSERT_EQ(2ul, this->last_remove_results().size());
372 // When requests are missing, we expect the results to say so, but since they 362 // When requests are missing, we expect the results to say so, but since they
373 // are missing, no requests should have been returned. 363 // are missing, no requests should have been returned.
374 ASSERT_EQ(RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST, 364 ASSERT_EQ(RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST,
375 this->last_remove_results().at(0).second); 365 this->last_remove_results().at(0).second);
376 ASSERT_EQ(RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST, 366 ASSERT_EQ(RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST,
377 this->last_remove_results().at(1).second); 367 this->last_remove_results().at(1).second);
378 ASSERT_EQ(0UL, this->last_requests().size()); 368 ASSERT_EQ(0UL, this->last_requests().size());
379 } 369 }
380 370
381 TYPED_TEST(RequestQueueStoreTest, PauseAndResumeRequest) {
382 std::unique_ptr<RequestQueueStore> store(this->BuildStore());
383 base::Time creation_time = base::Time::Now();
384
385 // Create request and add it to the queue.
386 SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time,
387 kUserRequested);
388 store->AddRequest(request1,
389 base::Bind(&RequestQueueStoreTestBase::AddRequestDone,
390 base::Unretained(this)));
391 this->PumpLoop();
392 this->ClearResults();
393
394 // Pause a request.
395 std::vector<int64_t> request_ids{kRequestId};
396 store->ChangeRequestsState(
397 request_ids, SavePageRequest::RequestState::PAUSED,
398 base::Bind(&RequestQueueStoreTestBase::UpdateMultipleRequestsDone,
399 base::Unretained(this)));
400 ASSERT_EQ(LastResult::kNone, this->last_result());
401 this->PumpLoop();
402
403 // Verify pause succeeded
404 ASSERT_EQ(1ul, this->last_multiple_update_results().size());
405 ASSERT_EQ(RequestQueue::UpdateRequestResult::SUCCESS,
406 this->last_multiple_update_results().at(0).second);
407 ASSERT_EQ(kRequestId, this->last_requests().at(0)->request_id());
408 this->ClearResults();
409
410 // Get the request from the queue to check it out
411 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
412 base::Unretained(this)));
413 this->PumpLoop();
414 ASSERT_EQ(LastResult::kTrue, this->last_result());
415 // The request should still be in the queue.
416 ASSERT_EQ(1UL, this->last_requests().size());
417 // Request 1 should be paused.
418 ASSERT_EQ(SavePageRequest::RequestState::PAUSED,
419 this->last_requests().at(0)->request_state());
420 this->ClearResults();
421
422 // Now resume the same request we paused.
423 store->ChangeRequestsState(
424 request_ids, SavePageRequest::RequestState::AVAILABLE,
425 base::Bind(&RequestQueueStoreTestBase::UpdateMultipleRequestsDone,
426 base::Unretained(this)));
427 ASSERT_EQ(LastResult::kNone, this->last_result());
428 this->PumpLoop();
429
430 // Verify resume succeeded.
431 ASSERT_EQ(1ul, this->last_multiple_update_results().size());
432 ASSERT_EQ(RequestQueue::UpdateRequestResult::SUCCESS,
433 this->last_multiple_update_results().at(0).second);
434 ASSERT_EQ(kRequestId, this->last_requests().at(0)->request_id());
435 this->ClearResults();
436
437 // Get the request from the queue to check it out
438 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
439 base::Unretained(this)));
440 this->PumpLoop();
441 ASSERT_EQ(LastResult::kTrue, this->last_result());
442 // The request should still be in the queue.
443 ASSERT_EQ(1UL, this->last_requests().size());
444 // Request 1 should be paused.
445 ASSERT_EQ(SavePageRequest::RequestState::AVAILABLE,
446 this->last_requests().at(0)->request_state());
447 this->ClearResults();
448 }
449
450 TYPED_TEST(RequestQueueStoreTest, ResetStore) { 371 TYPED_TEST(RequestQueueStoreTest, ResetStore) {
451 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); 372 std::unique_ptr<RequestQueueStore> store(this->BuildStore());
452 base::Time creation_time = base::Time::Now(); 373 base::Time creation_time = base::Time::Now();
453 SavePageRequest original_request( 374 SavePageRequest original_request(
454 kRequestId, kUrl, kClientId, creation_time, kUserRequested); 375 kRequestId, kUrl, kClientId, creation_time, kUserRequested);
455 store->AddRequest(original_request, 376 store->AddRequest(original_request,
456 base::Bind(&RequestQueueStoreTestBase::AddRequestDone, 377 base::Bind(&RequestQueueStoreTestBase::AddRequestDone,
457 base::Unretained(this))); 378 base::Unretained(this)));
458 this->PumpLoop(); 379 this->PumpLoop();
459 this->ClearResults(); 380 this->ClearResults();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 416 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
496 base::Unretained(this))); 417 base::Unretained(this)));
497 ASSERT_EQ(LastResult::kNone, this->last_result()); 418 ASSERT_EQ(LastResult::kNone, this->last_result());
498 this->PumpLoop(); 419 this->PumpLoop();
499 ASSERT_EQ(LastResult::kTrue, this->last_result()); 420 ASSERT_EQ(LastResult::kTrue, this->last_result());
500 ASSERT_EQ(1ul, this->last_requests().size()); 421 ASSERT_EQ(1ul, this->last_requests().size());
501 ASSERT_TRUE(original_request == *(this->last_requests().at(0).get())); 422 ASSERT_TRUE(original_request == *(this->last_requests().at(0).get()));
502 } 423 }
503 424
504 } // offline_pages 425 } // offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698