OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "sync/internal_api/public/attachments/task_queue.h" | 5 #include "sync/internal_api/public/attachments/task_queue.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 23 matching lines...) Expand all Loading... |
34 } | 34 } |
35 | 35 |
36 void RunLoop() { | 36 void RunLoop() { |
37 base::RunLoop run_loop; | 37 base::RunLoop run_loop; |
38 run_loop.RunUntilIdle(); | 38 run_loop.RunUntilIdle(); |
39 } | 39 } |
40 | 40 |
41 void Process(const int& task) { dispatched_.push_back(task); } | 41 void Process(const int& task) { dispatched_.push_back(task); } |
42 | 42 |
43 base::MessageLoop message_loop_; | 43 base::MessageLoop message_loop_; |
44 scoped_ptr<TaskQueue<int> > queue_; | 44 std::unique_ptr<TaskQueue<int>> queue_; |
45 std::vector<int> dispatched_; | 45 std::vector<int> dispatched_; |
46 base::WeakPtrFactory<TaskQueueTest> weak_ptr_factory_; | 46 base::WeakPtrFactory<TaskQueueTest> weak_ptr_factory_; |
47 }; | 47 }; |
48 | 48 |
49 // See that at most one task is dispatched at a time. | 49 // See that at most one task is dispatched at a time. |
50 TEST_F(TaskQueueTest, AddToQueue_NoConcurrentTasks) { | 50 TEST_F(TaskQueueTest, AddToQueue_NoConcurrentTasks) { |
51 queue_->AddToQueue(1); | 51 queue_->AddToQueue(1); |
52 queue_->AddToQueue(2); | 52 queue_->AddToQueue(2); |
53 RunLoop(); | 53 RunLoop(); |
54 | 54 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 EXPECT_EQ(2, dispatched_.front()); | 92 EXPECT_EQ(2, dispatched_.front()); |
93 dispatched_.clear(); | 93 dispatched_.clear(); |
94 queue_->MarkAsSucceeded(2); | 94 queue_->MarkAsSucceeded(2); |
95 RunLoop(); | 95 RunLoop(); |
96 | 96 |
97 ASSERT_TRUE(dispatched_.empty()); | 97 ASSERT_TRUE(dispatched_.empty()); |
98 } | 98 } |
99 | 99 |
100 // See that Retry works as expected. | 100 // See that Retry works as expected. |
101 TEST_F(TaskQueueTest, Retry) { | 101 TEST_F(TaskQueueTest, Retry) { |
102 scoped_ptr<base::MockTimer> timer_to_pass(new base::MockTimer(false, false)); | 102 std::unique_ptr<base::MockTimer> timer_to_pass( |
| 103 new base::MockTimer(false, false)); |
103 base::MockTimer* mock_timer = timer_to_pass.get(); | 104 base::MockTimer* mock_timer = timer_to_pass.get(); |
104 queue_->SetTimerForTest(std::move(timer_to_pass)); | 105 queue_->SetTimerForTest(std::move(timer_to_pass)); |
105 | 106 |
106 // 1st attempt. | 107 // 1st attempt. |
107 queue_->AddToQueue(1); | 108 queue_->AddToQueue(1); |
108 ASSERT_TRUE(mock_timer->IsRunning()); | 109 ASSERT_TRUE(mock_timer->IsRunning()); |
109 ASSERT_EQ(kZero, mock_timer->GetCurrentDelay()); | 110 ASSERT_EQ(kZero, mock_timer->GetCurrentDelay()); |
110 TimeDelta last_delay = mock_timer->GetCurrentDelay(); | 111 TimeDelta last_delay = mock_timer->GetCurrentDelay(); |
111 mock_timer->Fire(); | 112 mock_timer->Fire(); |
112 RunLoop(); | 113 RunLoop(); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 EXPECT_EQ(1, dispatched_.front()); | 191 EXPECT_EQ(1, dispatched_.front()); |
191 dispatched_.clear(); | 192 dispatched_.clear(); |
192 queue_->Cancel(1); | 193 queue_->Cancel(1); |
193 RunLoop(); | 194 RunLoop(); |
194 | 195 |
195 ASSERT_TRUE(dispatched_.empty()); | 196 ASSERT_TRUE(dispatched_.empty()); |
196 } | 197 } |
197 | 198 |
198 // See that ResetBackoff resets the backoff delay. | 199 // See that ResetBackoff resets the backoff delay. |
199 TEST_F(TaskQueueTest, ResetBackoff) { | 200 TEST_F(TaskQueueTest, ResetBackoff) { |
200 scoped_ptr<base::MockTimer> timer_to_pass(new base::MockTimer(false, false)); | 201 std::unique_ptr<base::MockTimer> timer_to_pass( |
| 202 new base::MockTimer(false, false)); |
201 base::MockTimer* mock_timer = timer_to_pass.get(); | 203 base::MockTimer* mock_timer = timer_to_pass.get(); |
202 queue_->SetTimerForTest(std::move(timer_to_pass)); | 204 queue_->SetTimerForTest(std::move(timer_to_pass)); |
203 | 205 |
204 // Add an item, mark it as failed, re-add it and see that we now have a | 206 // Add an item, mark it as failed, re-add it and see that we now have a |
205 // backoff delay. | 207 // backoff delay. |
206 queue_->AddToQueue(1); | 208 queue_->AddToQueue(1); |
207 ASSERT_TRUE(mock_timer->IsRunning()); | 209 ASSERT_TRUE(mock_timer->IsRunning()); |
208 ASSERT_EQ(kZero, mock_timer->GetCurrentDelay()); | 210 ASSERT_EQ(kZero, mock_timer->GetCurrentDelay()); |
209 mock_timer->Fire(); | 211 mock_timer->Fire(); |
210 RunLoop(); | 212 RunLoop(); |
(...skipping 14 matching lines...) Expand all Loading... |
225 mock_timer->Fire(); | 227 mock_timer->Fire(); |
226 RunLoop(); | 228 RunLoop(); |
227 ASSERT_FALSE(mock_timer->IsRunning()); | 229 ASSERT_FALSE(mock_timer->IsRunning()); |
228 ASSERT_EQ(1U, dispatched_.size()); | 230 ASSERT_EQ(1U, dispatched_.size()); |
229 EXPECT_EQ(1, dispatched_.front()); | 231 EXPECT_EQ(1, dispatched_.front()); |
230 dispatched_.clear(); | 232 dispatched_.clear(); |
231 queue_->MarkAsSucceeded(1); | 233 queue_->MarkAsSucceeded(1); |
232 } | 234 } |
233 | 235 |
234 } // namespace syncer | 236 } // namespace syncer |
OLD | NEW |