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

Unified Diff: base/task_scheduler/utils_unittest.cc

Issue 1806473002: TaskScheduler [9] Delayed Task Manager (Closed) Base URL: https://luckyluke-private.googlesource.com/src@s_5_worker_thread
Patch Set: CR gab #17 Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
« base/task_scheduler/delayed_task_manager.h ('K') | « base/task_scheduler/utils.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/task_scheduler/utils_unittest.cc
diff --git a/base/task_scheduler/utils_unittest.cc b/base/task_scheduler/utils_unittest.cc
index 6b3904b958d2e461d3d7e4ffac7b0f9ed70a1d54..b4f5b25c0e1fbe842d0e9c3898d8df31bfd7d192 100644
--- a/base/task_scheduler/utils_unittest.cc
+++ b/base/task_scheduler/utils_unittest.cc
@@ -10,29 +10,32 @@
#include "base/bind_helpers.h"
#include "base/memory/ptr_util.h"
#include "base/memory/ref_counted.h"
+#include "base/task_scheduler/delayed_task_manager.h"
#include "base/task_scheduler/priority_queue.h"
#include "base/task_scheduler/sequence.h"
#include "base/task_scheduler/task.h"
#include "base/task_scheduler/task_tracker.h"
+#include "base/time/time.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace base {
namespace internal {
namespace {
-// Checks that when PostTaskHelper is called with an empty sequence, the task
-// is added to the sequence and the sequence is added to the priority queue.
-TEST(TaskSchedulerPostTaskHelperTest, PostTaskInEmptySequence) {
+// Checks that when PostTaskHelper is called with an empty sequence, the task is
+// added to the sequence and the sequence is added to the priority queue.
+TEST(TaskSchedulerPostTaskNowHelperTest, PostTaskInEmptySequence) {
gab 2016/04/12 13:35:48 This is using PostTaskHelper not PostTaskNowHelper
fdoray 2016/04/12 14:43:57 Done.
std::unique_ptr<Task> task(
new Task(FROM_HERE, Bind(&DoNothing), TaskTraits()));
const Task* task_raw = task.get();
scoped_refptr<Sequence> sequence(new Sequence);
PriorityQueue priority_queue(Bind(&DoNothing));
TaskTracker task_tracker;
+ DelayedTaskManager delayed_task_manager(Bind(&DoNothing));
// Post |task|.
- EXPECT_TRUE(PostTaskHelper(std::move(task), sequence, &priority_queue,
- &task_tracker));
+ PostTaskHelper(std::move(task), sequence, &priority_queue, &task_tracker,
+ &delayed_task_manager);
// Expect to find the sequence in the priority queue.
EXPECT_EQ(sequence, priority_queue.BeginTransaction()->Peek().sequence);
@@ -46,21 +49,22 @@ TEST(TaskSchedulerPostTaskHelperTest, PostTaskInEmptySequence) {
// Checks that when PostTaskHelper is called with a sequence that already
// contains a task, the task is added to the sequence but the sequence is not
// added to the priority queue.
-TEST(TaskSchedulerPostTaskHelperTest, PostTaskInNonEmptySequence) {
+TEST(TaskSchedulerPostTaskNowHelperTest, PostTaskInNonEmptySequence) {
std::unique_ptr<Task> task(
new Task(FROM_HERE, Bind(&DoNothing), TaskTraits()));
const Task* task_raw = task.get();
scoped_refptr<Sequence> sequence(new Sequence);
PriorityQueue priority_queue(Bind(&DoNothing));
TaskTracker task_tracker;
+ DelayedTaskManager delayed_task_manager(Bind(&DoNothing));
// Add an initial task in |sequence|.
sequence->PushTask(
WrapUnique(new Task(FROM_HERE, Bind(&DoNothing), TaskTraits())));
// Post |task|.
- EXPECT_TRUE(PostTaskHelper(std::move(task), sequence, &priority_queue,
- &task_tracker));
+ PostTaskHelper(std::move(task), sequence, &priority_queue, &task_tracker,
+ &delayed_task_manager);
// Expect to find the priority queue empty.
EXPECT_TRUE(priority_queue.BeginTransaction()->Peek().is_null());
@@ -73,6 +77,30 @@ TEST(TaskSchedulerPostTaskHelperTest, PostTaskInNonEmptySequence) {
EXPECT_EQ(nullptr, sequence->PeekTask());
}
+// Checks that when PostTaskHelper is called with a delayed task, it is added to
+// the DelayedTaskManager.
+TEST(TaskSchedulerPostTaskNowHelperTest, PostDelayedTask) {
+ const TimeTicks delayed_run_time = TimeTicks::Now() + TimeDelta::FromHours(1);
+ std::unique_ptr<Task> task(
+ new Task(FROM_HERE, Bind(&DoNothing), TaskTraits()));
+ task->delayed_run_time = delayed_run_time;
+ scoped_refptr<Sequence> sequence(new Sequence);
+ PriorityQueue priority_queue(Bind(&DoNothing));
+ TaskTracker task_tracker;
+ DelayedTaskManager delayed_task_manager(Bind(&DoNothing));
+
+ // Post |task|.
+ PostTaskHelper(std::move(task), sequence, &priority_queue, &task_tracker,
+ &delayed_task_manager);
+
+ // Expect to find |priority_queue| and |sequence| empty.
+ EXPECT_TRUE(priority_queue.BeginTransaction()->Peek().is_null());
+ EXPECT_EQ(nullptr, sequence->PeekTask());
+
+ // Expect the DelayedTaskManager's delayed run time to have been updated.
+ EXPECT_EQ(delayed_run_time, delayed_task_manager.GetDelayedRunTime());
+}
+
} // namespace
} // namespace internal
} // namespace base
« base/task_scheduler/delayed_task_manager.h ('K') | « base/task_scheduler/utils.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698