Index: base/task_scheduler/scheduler_worker_thread_unittest.cc |
diff --git a/base/task_scheduler/scheduler_worker_thread_unittest.cc b/base/task_scheduler/scheduler_worker_thread_unittest.cc |
index 6a9eb1ce774abc0b7e0e60b7dce73b8463a0d766..76fe4516a5455dc3ee3b5daf01b57814607eb130 100644 |
--- a/base/task_scheduler/scheduler_worker_thread_unittest.cc |
+++ b/base/task_scheduler/scheduler_worker_thread_unittest.cc |
@@ -94,9 +94,9 @@ class TaskSchedulerWorkerThreadTest : public testing::Test, |
num_sequences_to_create_ = num_sequences_to_create; |
} |
- size_t NumGetWork() const { |
+ void SetMaxGetWork(size_t max_get_work) { |
AutoSchedulerLock auto_lock(lock_); |
- return num_get_work_; |
+ max_get_work_ = max_get_work; |
} |
std::unique_ptr<SchedulerWorkerThread> worker_thread_; |
@@ -122,6 +122,9 @@ class TaskSchedulerWorkerThreadTest : public testing::Test, |
++num_get_work_; |
num_get_work_cv_->Signal(); |
+ // Verify that this method isn't called more times than expected. |
+ EXPECT_LE(num_get_work_, max_get_work_); |
+ |
// Check if a Sequence should be returned. |
if (num_sequences_to_create_ == 0) |
return nullptr; |
@@ -151,12 +154,14 @@ class TaskSchedulerWorkerThreadTest : public testing::Test, |
void RanTaskFromSequence(scoped_refptr<Sequence> sequence) override { |
AutoSchedulerLock auto_lock(lock_); |
run_sequences_.push_back(std::move(sequence)); |
+ EXPECT_LE(run_sequences_.size(), created_sequences_.size()); |
run_sequences_cv_->Signal(); |
} |
void RunTaskCallback() { |
AutoSchedulerLock auto_lock(lock_); |
++num_run_tasks_; |
+ EXPECT_LE(num_run_tasks_, created_sequences_.size()); |
} |
TaskTracker task_tracker_; |
@@ -180,6 +185,9 @@ class TaskSchedulerWorkerThreadTest : public testing::Test, |
// Number of times that GetWork() has been called. |
size_t num_get_work_ = 0; |
+ // Maximum number of times that GetWork() can be called. |
+ size_t max_get_work_ = 0; |
+ |
// Condition variable signaled when |num_get_work_| is incremented. |
std::unique_ptr<ConditionVariable> num_get_work_cv_; |
@@ -199,43 +207,43 @@ class TaskSchedulerWorkerThreadTest : public testing::Test, |
}; |
// Verify that when GetWork() continuously returns Sequences, all Tasks in these |
-// Sequences run successfully. The SchedulerWorkerThread is woken up once. |
-TEST_F(TaskSchedulerWorkerThreadTest, ContinousWork) { |
+// Sequences run successfully. The test wakes up the SchedulerWorkerThread once. |
+TEST_F(TaskSchedulerWorkerThreadTest, ContinuousWork) { |
// Set GetWork() to return |kNumSequencesPerTest| Sequences before starting to |
// return nullptr. |
SetNumSequencesToCreate(kNumSequencesPerTest); |
+ // Expect |kNumSequencesPerTest| calls to GetWork() in which it returns a |
+ // Sequence and 1 call in which its returns nullptr. |
gab
2016/04/07 15:47:36
s/1/one/ (in comments err towards only using digit
fdoray
2016/04/07 22:17:16
Done.
|
+ const size_t kExpectedNumGetWork = kNumSequencesPerTest + 1; |
+ SetMaxGetWork(kExpectedNumGetWork); |
+ |
// Wake up |worker_thread_| and wait until it has run all the Tasks returned |
// by GetWork(). |
worker_thread_->WakeUp(); |
WaitForAllSequencesToRun(); |
- |
- // Expect |kNumSequencesPerTest| calls to GetWork() in which it returned a |
- // Sequence and 1 call in which it returned nullptr. |
- const size_t expected_num_get_work = kNumSequencesPerTest + 1; |
- WaitForNumGetWork(expected_num_get_work); |
- EXPECT_EQ(expected_num_get_work, NumGetWork()); |
+ WaitForNumGetWork(kExpectedNumGetWork); |
} |
// Verify that when GetWork() alternates between returning a Sequence and |
// returning nullptr, all Tasks in the returned Sequences run successfully. The |
-// SchedulerWorkerThread is woken up once for each Sequence. |
+// test wakes up the SchedulerWorkerThread once for each Sequence. |
TEST_F(TaskSchedulerWorkerThreadTest, IntermittentWork) { |
for (size_t i = 0; i < kNumSequencesPerTest; ++i) { |
// Set GetWork() to return 1 Sequence before starting to return |
// nullptr. |
SetNumSequencesToCreate(1); |
+ // Expect |i + 1| calls to GetWork() in which it returns a Sequence and |
+ // |i + 1| calls in which it returns nullptr. |
+ const size_t expected_num_get_work = 2 * (i + 1); |
+ SetMaxGetWork(expected_num_get_work); |
+ |
// Wake up |worker_thread_| and wait until it has run all the Tasks returned |
// by GetWork(). |
worker_thread_->WakeUp(); |
WaitForAllSequencesToRun(); |
- |
- // Expect |i| calls to GetWork() in which it returned a Sequence and |
- // |i| calls in which it returned nullptr. |
- const size_t expected_num_get_work = 2 * (i + 1); |
WaitForNumGetWork(expected_num_get_work); |
- EXPECT_EQ(expected_num_get_work, NumGetWork()); |
} |
} |