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

Unified Diff: third_party/WebKit/Source/platform/scheduler/base/work_queue_unittest.cc

Issue 2786083005: scheduler: Maintain a constant enqueue order for every task (Closed)
Patch Set: WASM workaround no longer needed Created 3 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
Index: third_party/WebKit/Source/platform/scheduler/base/work_queue_unittest.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/base/work_queue_unittest.cc b/third_party/WebKit/Source/platform/scheduler/base/work_queue_unittest.cc
index 2045fead77c9147569fd6dce6cc98316f9709fd3..b30e96c909f6013c4f2486a264cbf304ddf7ad49 100644
--- a/third_party/WebKit/Source/platform/scheduler/base/work_queue_unittest.cc
+++ b/third_party/WebKit/Source/platform/scheduler/base/work_queue_unittest.cc
@@ -37,10 +37,9 @@ class WorkQueueTest : public testing::Test {
void TearDown() override { work_queue_sets_->RemoveQueue(work_queue_.get()); }
protected:
- TaskQueueImpl::Task FakeTaskWithEnqueueOrder(int enqueue_order) {
+ TaskQueueImpl::Task FakeTaskWithSequenceNum(SequenceNumber sequence_num) {
TaskQueueImpl::Task fake_task(FROM_HERE, base::Bind(&NopTask),
- base::TimeTicks(), 0, true);
- fake_task.set_enqueue_order(enqueue_order);
+ {base::TimeTicks(), sequence_num}, true);
return fake_task;
}
@@ -53,12 +52,12 @@ class WorkQueueTest : public testing::Test {
TEST_F(WorkQueueTest, Empty) {
EXPECT_TRUE(work_queue_->Empty());
- work_queue_->Push(FakeTaskWithEnqueueOrder(1));
+ work_queue_->Push(FakeTaskWithSequenceNum(1));
EXPECT_FALSE(work_queue_->Empty());
}
TEST_F(WorkQueueTest, Empty_IgnoresFences) {
- work_queue_->Push(FakeTaskWithEnqueueOrder(1));
+ work_queue_->Push(FakeTaskWithSequenceNum(1));
work_queue_->InsertFence(1);
EXPECT_FALSE(work_queue_->Empty());
}
@@ -69,13 +68,13 @@ TEST_F(WorkQueueTest, GetFrontTaskEnqueueOrderQueueEmpty) {
}
TEST_F(WorkQueueTest, GetFrontTaskEnqueueOrder) {
- work_queue_->Push(FakeTaskWithEnqueueOrder(2));
- work_queue_->Push(FakeTaskWithEnqueueOrder(3));
- work_queue_->Push(FakeTaskWithEnqueueOrder(4));
+ work_queue_->Push(FakeTaskWithSequenceNum(2));
+ work_queue_->Push(FakeTaskWithSequenceNum(3));
+ work_queue_->Push(FakeTaskWithSequenceNum(4));
EnqueueOrder enqueue_order;
EXPECT_TRUE(work_queue_->GetFrontTaskEnqueueOrder(&enqueue_order));
- EXPECT_EQ(2ull, enqueue_order);
+ EXPECT_EQ(2ull, enqueue_order.sequence_num);
}
TEST_F(WorkQueueTest, GetFrontTaskQueueEmpty) {
@@ -83,12 +82,12 @@ TEST_F(WorkQueueTest, GetFrontTaskQueueEmpty) {
}
TEST_F(WorkQueueTest, GetFrontTask) {
- work_queue_->Push(FakeTaskWithEnqueueOrder(2));
- work_queue_->Push(FakeTaskWithEnqueueOrder(3));
- work_queue_->Push(FakeTaskWithEnqueueOrder(4));
+ work_queue_->Push(FakeTaskWithSequenceNum(2));
+ work_queue_->Push(FakeTaskWithSequenceNum(3));
+ work_queue_->Push(FakeTaskWithSequenceNum(4));
ASSERT_NE(nullptr, work_queue_->GetFrontTask());
- EXPECT_EQ(2ull, work_queue_->GetFrontTask()->enqueue_order());
+ EXPECT_EQ(2ull, work_queue_->GetFrontTask()->enqueue_order().sequence_num);
}
TEST_F(WorkQueueTest, GetBackTask_Empty) {
@@ -96,19 +95,19 @@ TEST_F(WorkQueueTest, GetBackTask_Empty) {
}
TEST_F(WorkQueueTest, GetBackTask) {
- work_queue_->Push(FakeTaskWithEnqueueOrder(2));
- work_queue_->Push(FakeTaskWithEnqueueOrder(3));
- work_queue_->Push(FakeTaskWithEnqueueOrder(4));
+ work_queue_->Push(FakeTaskWithSequenceNum(2));
+ work_queue_->Push(FakeTaskWithSequenceNum(3));
+ work_queue_->Push(FakeTaskWithSequenceNum(4));
ASSERT_NE(nullptr, work_queue_->GetBackTask());
- EXPECT_EQ(4ull, work_queue_->GetBackTask()->enqueue_order());
+ EXPECT_EQ(4ull, work_queue_->GetBackTask()->enqueue_order().sequence_num);
}
TEST_F(WorkQueueTest, Push) {
WorkQueue* work_queue;
EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
- work_queue_->Push(FakeTaskWithEnqueueOrder(2));
+ work_queue_->Push(FakeTaskWithSequenceNum(2));
EXPECT_TRUE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
EXPECT_EQ(work_queue_.get(), work_queue);
}
@@ -118,14 +117,14 @@ TEST_F(WorkQueueTest, PushAfterFenceHit) {
WorkQueue* work_queue;
EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
- work_queue_->Push(FakeTaskWithEnqueueOrder(2));
+ work_queue_->Push(FakeTaskWithSequenceNum(2));
EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
}
TEST_F(WorkQueueTest, ReloadEmptyImmediateQueue) {
- task_queue_->PushImmediateIncomingTaskForTest(FakeTaskWithEnqueueOrder(2));
- task_queue_->PushImmediateIncomingTaskForTest(FakeTaskWithEnqueueOrder(3));
- task_queue_->PushImmediateIncomingTaskForTest(FakeTaskWithEnqueueOrder(4));
+ task_queue_->PushImmediateIncomingTaskForTest(FakeTaskWithSequenceNum(2));
+ task_queue_->PushImmediateIncomingTaskForTest(FakeTaskWithSequenceNum(3));
+ task_queue_->PushImmediateIncomingTaskForTest(FakeTaskWithSequenceNum(4));
WorkQueue* work_queue;
EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
@@ -136,17 +135,17 @@ TEST_F(WorkQueueTest, ReloadEmptyImmediateQueue) {
EXPECT_FALSE(work_queue_->Empty());
ASSERT_NE(nullptr, work_queue_->GetFrontTask());
- EXPECT_EQ(2ull, work_queue_->GetFrontTask()->enqueue_order());
+ EXPECT_EQ(2ull, work_queue_->GetFrontTask()->enqueue_order().sequence_num);
ASSERT_NE(nullptr, work_queue_->GetBackTask());
- EXPECT_EQ(4ull, work_queue_->GetBackTask()->enqueue_order());
+ EXPECT_EQ(4ull, work_queue_->GetBackTask()->enqueue_order().sequence_num);
}
TEST_F(WorkQueueTest, ReloadEmptyImmediateQueueAfterFenceHit) {
work_queue_->InsertFence(1);
- task_queue_->PushImmediateIncomingTaskForTest(FakeTaskWithEnqueueOrder(2));
- task_queue_->PushImmediateIncomingTaskForTest(FakeTaskWithEnqueueOrder(3));
- task_queue_->PushImmediateIncomingTaskForTest(FakeTaskWithEnqueueOrder(4));
+ task_queue_->PushImmediateIncomingTaskForTest(FakeTaskWithSequenceNum(2));
+ task_queue_->PushImmediateIncomingTaskForTest(FakeTaskWithSequenceNum(3));
+ task_queue_->PushImmediateIncomingTaskForTest(FakeTaskWithSequenceNum(4));
WorkQueue* work_queue;
EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
@@ -157,24 +156,27 @@ TEST_F(WorkQueueTest, ReloadEmptyImmediateQueueAfterFenceHit) {
EXPECT_FALSE(work_queue_->Empty());
ASSERT_NE(nullptr, work_queue_->GetFrontTask());
- EXPECT_EQ(2ull, work_queue_->GetFrontTask()->enqueue_order());
+ EXPECT_EQ(2ull, work_queue_->GetFrontTask()->enqueue_order().sequence_num);
ASSERT_NE(nullptr, work_queue_->GetBackTask());
- EXPECT_EQ(4ull, work_queue_->GetBackTask()->enqueue_order());
+ EXPECT_EQ(4ull, work_queue_->GetBackTask()->enqueue_order().sequence_num);
}
TEST_F(WorkQueueTest, TakeTaskFromWorkQueue) {
- work_queue_->Push(FakeTaskWithEnqueueOrder(2));
- work_queue_->Push(FakeTaskWithEnqueueOrder(3));
- work_queue_->Push(FakeTaskWithEnqueueOrder(4));
+ work_queue_->Push(FakeTaskWithSequenceNum(2));
+ work_queue_->Push(FakeTaskWithSequenceNum(3));
+ work_queue_->Push(FakeTaskWithSequenceNum(4));
WorkQueue* work_queue;
EXPECT_TRUE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
EXPECT_FALSE(work_queue_->Empty());
- EXPECT_EQ(2ull, work_queue_->TakeTaskFromWorkQueue().enqueue_order());
- EXPECT_EQ(3ull, work_queue_->TakeTaskFromWorkQueue().enqueue_order());
- EXPECT_EQ(4ull, work_queue_->TakeTaskFromWorkQueue().enqueue_order());
+ EXPECT_EQ(2ull,
+ work_queue_->TakeTaskFromWorkQueue().enqueue_order().sequence_num);
+ EXPECT_EQ(3ull,
+ work_queue_->TakeTaskFromWorkQueue().enqueue_order().sequence_num);
+ EXPECT_EQ(4ull,
+ work_queue_->TakeTaskFromWorkQueue().enqueue_order().sequence_num);
EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
EXPECT_TRUE(work_queue_->Empty());
@@ -182,8 +184,8 @@ TEST_F(WorkQueueTest, TakeTaskFromWorkQueue) {
TEST_F(WorkQueueTest, TakeTaskFromWorkQueue_HitFence) {
work_queue_->InsertFence(3);
- work_queue_->Push(FakeTaskWithEnqueueOrder(2));
- work_queue_->Push(FakeTaskWithEnqueueOrder(4));
+ work_queue_->Push(FakeTaskWithSequenceNum(2));
+ work_queue_->Push(FakeTaskWithSequenceNum(4));
EXPECT_FALSE(work_queue_->BlockedByFence());
WorkQueue* work_queue;
@@ -191,7 +193,8 @@ TEST_F(WorkQueueTest, TakeTaskFromWorkQueue_HitFence) {
EXPECT_FALSE(work_queue_->Empty());
EXPECT_FALSE(work_queue_->BlockedByFence());
- EXPECT_EQ(2ull, work_queue_->TakeTaskFromWorkQueue().enqueue_order());
+ EXPECT_EQ(2ull,
+ work_queue_->TakeTaskFromWorkQueue().enqueue_order().sequence_num);
EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
EXPECT_FALSE(work_queue_->Empty());
EXPECT_TRUE(work_queue_->BlockedByFence());
@@ -201,31 +204,32 @@ TEST_F(WorkQueueTest, InsertFenceBeforeEnqueueing) {
EXPECT_FALSE(work_queue_->InsertFence(1));
EXPECT_TRUE(work_queue_->BlockedByFence());
- work_queue_->Push(FakeTaskWithEnqueueOrder(2));
- work_queue_->Push(FakeTaskWithEnqueueOrder(3));
- work_queue_->Push(FakeTaskWithEnqueueOrder(4));
+ work_queue_->Push(FakeTaskWithSequenceNum(2));
+ work_queue_->Push(FakeTaskWithSequenceNum(3));
+ work_queue_->Push(FakeTaskWithSequenceNum(4));
EnqueueOrder enqueue_order;
EXPECT_FALSE(work_queue_->GetFrontTaskEnqueueOrder(&enqueue_order));
}
TEST_F(WorkQueueTest, InsertFenceAfterEnqueueingNonBlocking) {
- work_queue_->Push(FakeTaskWithEnqueueOrder(2));
- work_queue_->Push(FakeTaskWithEnqueueOrder(3));
- work_queue_->Push(FakeTaskWithEnqueueOrder(4));
+ work_queue_->Push(FakeTaskWithSequenceNum(2));
+ work_queue_->Push(FakeTaskWithSequenceNum(3));
+ work_queue_->Push(FakeTaskWithSequenceNum(4));
EXPECT_FALSE(work_queue_->InsertFence(5));
EXPECT_FALSE(work_queue_->BlockedByFence());
EnqueueOrder enqueue_order;
EXPECT_TRUE(work_queue_->GetFrontTaskEnqueueOrder(&enqueue_order));
- EXPECT_EQ(2ull, work_queue_->TakeTaskFromWorkQueue().enqueue_order());
+ EXPECT_EQ(2ull,
+ work_queue_->TakeTaskFromWorkQueue().enqueue_order().sequence_num);
}
TEST_F(WorkQueueTest, InsertFenceAfterEnqueueing) {
- work_queue_->Push(FakeTaskWithEnqueueOrder(2));
- work_queue_->Push(FakeTaskWithEnqueueOrder(3));
- work_queue_->Push(FakeTaskWithEnqueueOrder(4));
+ work_queue_->Push(FakeTaskWithSequenceNum(2));
+ work_queue_->Push(FakeTaskWithSequenceNum(3));
+ work_queue_->Push(FakeTaskWithSequenceNum(4));
// NB in reality a fence will always be greater than any currently enqueued
// tasks.
@@ -237,9 +241,9 @@ TEST_F(WorkQueueTest, InsertFenceAfterEnqueueing) {
}
TEST_F(WorkQueueTest, InsertNewFence) {
- work_queue_->Push(FakeTaskWithEnqueueOrder(2));
- work_queue_->Push(FakeTaskWithEnqueueOrder(4));
- work_queue_->Push(FakeTaskWithEnqueueOrder(5));
+ work_queue_->Push(FakeTaskWithSequenceNum(2));
+ work_queue_->Push(FakeTaskWithSequenceNum(4));
+ work_queue_->Push(FakeTaskWithSequenceNum(5));
EXPECT_FALSE(work_queue_->InsertFence(3));
EXPECT_FALSE(work_queue_->BlockedByFence());
@@ -247,9 +251,10 @@ TEST_F(WorkQueueTest, InsertNewFence) {
// Note until TakeTaskFromWorkQueue() is called we don't hit the fence.
EnqueueOrder enqueue_order;
EXPECT_TRUE(work_queue_->GetFrontTaskEnqueueOrder(&enqueue_order));
- EXPECT_EQ(2ull, enqueue_order);
+ EXPECT_EQ(2ull, enqueue_order.sequence_num);
- EXPECT_EQ(2ull, work_queue_->TakeTaskFromWorkQueue().enqueue_order());
+ EXPECT_EQ(2ull,
+ work_queue_->TakeTaskFromWorkQueue().enqueue_order().sequence_num);
EXPECT_FALSE(work_queue_->GetFrontTaskEnqueueOrder(&enqueue_order));
EXPECT_TRUE(work_queue_->BlockedByFence());
@@ -259,36 +264,39 @@ TEST_F(WorkQueueTest, InsertNewFence) {
EXPECT_FALSE(work_queue_->BlockedByFence());
EXPECT_TRUE(work_queue_->GetFrontTaskEnqueueOrder(&enqueue_order));
- EXPECT_EQ(4ull, enqueue_order);
- EXPECT_EQ(4ull, work_queue_->TakeTaskFromWorkQueue().enqueue_order());
+ EXPECT_EQ(4ull, enqueue_order.sequence_num);
+ EXPECT_EQ(4ull,
+ work_queue_->TakeTaskFromWorkQueue().enqueue_order().sequence_num);
EXPECT_TRUE(work_queue_->GetFrontTaskEnqueueOrder(&enqueue_order));
EXPECT_FALSE(work_queue_->BlockedByFence());
}
TEST_F(WorkQueueTest, PushWithNonEmptyQueueDoesNotHitFence) {
- work_queue_->Push(FakeTaskWithEnqueueOrder(1));
+ work_queue_->Push(FakeTaskWithSequenceNum(1));
EXPECT_FALSE(work_queue_->InsertFence(2));
- work_queue_->Push(FakeTaskWithEnqueueOrder(3));
+ work_queue_->Push(FakeTaskWithSequenceNum(3));
EXPECT_FALSE(work_queue_->BlockedByFence());
}
TEST_F(WorkQueueTest, RemoveFence) {
- work_queue_->Push(FakeTaskWithEnqueueOrder(2));
- work_queue_->Push(FakeTaskWithEnqueueOrder(4));
- work_queue_->Push(FakeTaskWithEnqueueOrder(5));
+ work_queue_->Push(FakeTaskWithSequenceNum(2));
+ work_queue_->Push(FakeTaskWithSequenceNum(4));
+ work_queue_->Push(FakeTaskWithSequenceNum(5));
work_queue_->InsertFence(3);
WorkQueue* work_queue;
EXPECT_TRUE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
EXPECT_FALSE(work_queue_->Empty());
- EXPECT_EQ(2ull, work_queue_->TakeTaskFromWorkQueue().enqueue_order());
+ EXPECT_EQ(2ull,
+ work_queue_->TakeTaskFromWorkQueue().enqueue_order().sequence_num);
EXPECT_FALSE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
EXPECT_FALSE(work_queue_->Empty());
EXPECT_TRUE(work_queue_->BlockedByFence());
EXPECT_TRUE(work_queue_->RemoveFence());
- EXPECT_EQ(4ull, work_queue_->TakeTaskFromWorkQueue().enqueue_order());
+ EXPECT_EQ(4ull,
+ work_queue_->TakeTaskFromWorkQueue().enqueue_order().sequence_num);
EXPECT_TRUE(work_queue_sets_->GetOldestQueueInSet(0, &work_queue));
EXPECT_FALSE(work_queue_->BlockedByFence());
}
@@ -312,23 +320,25 @@ TEST_F(WorkQueueTest, BlockedByFence) {
}
TEST_F(WorkQueueTest, BlockedByFencePopBecomesEmpty) {
- work_queue_->Push(FakeTaskWithEnqueueOrder(1));
+ work_queue_->Push(FakeTaskWithSequenceNum(1));
EXPECT_FALSE(work_queue_->InsertFence(2));
EXPECT_FALSE(work_queue_->BlockedByFence());
- EXPECT_EQ(1ull, work_queue_->TakeTaskFromWorkQueue().enqueue_order());
+ EXPECT_EQ(1ull,
+ work_queue_->TakeTaskFromWorkQueue().enqueue_order().sequence_num);
EXPECT_TRUE(work_queue_->BlockedByFence());
}
TEST_F(WorkQueueTest, BlockedByFencePop) {
- work_queue_->Push(FakeTaskWithEnqueueOrder(1));
+ work_queue_->Push(FakeTaskWithSequenceNum(1));
EXPECT_FALSE(work_queue_->InsertFence(2));
EXPECT_FALSE(work_queue_->BlockedByFence());
- work_queue_->Push(FakeTaskWithEnqueueOrder(3));
+ work_queue_->Push(FakeTaskWithSequenceNum(3));
EXPECT_FALSE(work_queue_->BlockedByFence());
- EXPECT_EQ(1ull, work_queue_->TakeTaskFromWorkQueue().enqueue_order());
+ EXPECT_EQ(1ull,
+ work_queue_->TakeTaskFromWorkQueue().enqueue_order().sequence_num);
EXPECT_TRUE(work_queue_->BlockedByFence());
}
@@ -336,20 +346,21 @@ TEST_F(WorkQueueTest, InitiallyEmptyBlockedByFenceNewFenceUnblocks) {
EXPECT_FALSE(work_queue_->InsertFence(1));
EXPECT_TRUE(work_queue_->BlockedByFence());
- work_queue_->Push(FakeTaskWithEnqueueOrder(2));
+ work_queue_->Push(FakeTaskWithSequenceNum(2));
EXPECT_TRUE(work_queue_->InsertFence(3));
EXPECT_FALSE(work_queue_->BlockedByFence());
}
TEST_F(WorkQueueTest, BlockedByFenceNewFenceUnblocks) {
- work_queue_->Push(FakeTaskWithEnqueueOrder(1));
+ work_queue_->Push(FakeTaskWithSequenceNum(1));
EXPECT_FALSE(work_queue_->InsertFence(2));
EXPECT_FALSE(work_queue_->BlockedByFence());
- work_queue_->Push(FakeTaskWithEnqueueOrder(3));
+ work_queue_->Push(FakeTaskWithSequenceNum(3));
EXPECT_FALSE(work_queue_->BlockedByFence());
- EXPECT_EQ(1ull, work_queue_->TakeTaskFromWorkQueue().enqueue_order());
+ EXPECT_EQ(1ull,
+ work_queue_->TakeTaskFromWorkQueue().enqueue_order().sequence_num);
EXPECT_TRUE(work_queue_->BlockedByFence());
EXPECT_TRUE(work_queue_->InsertFence(4));
@@ -357,9 +368,9 @@ TEST_F(WorkQueueTest, BlockedByFenceNewFenceUnblocks) {
}
TEST_F(WorkQueueTest, InsertFenceAfterEnqueuing) {
- work_queue_->Push(FakeTaskWithEnqueueOrder(2));
- work_queue_->Push(FakeTaskWithEnqueueOrder(3));
- work_queue_->Push(FakeTaskWithEnqueueOrder(4));
+ work_queue_->Push(FakeTaskWithSequenceNum(2));
+ work_queue_->Push(FakeTaskWithSequenceNum(3));
+ work_queue_->Push(FakeTaskWithSequenceNum(4));
EXPECT_FALSE(work_queue_->BlockedByFence());
EXPECT_FALSE(work_queue_->InsertFence(1));

Powered by Google App Engine
This is Rietveld 408576698