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

Unified Diff: base/task_scheduler/scheduler_worker_unittest.cc

Issue 2161213002: TaskScheduler: Bump thread priority during shutdown. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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: base/task_scheduler/scheduler_worker_unittest.cc
diff --git a/base/task_scheduler/scheduler_worker_unittest.cc b/base/task_scheduler/scheduler_worker_unittest.cc
index 437bbedfdb5472dd74a6e45def138c4667dee6b9..3b54f51d08c275bc356884754077cb7c32caa400 100644
--- a/base/task_scheduler/scheduler_worker_unittest.cc
+++ b/base/task_scheduler/scheduler_worker_unittest.cc
@@ -14,10 +14,12 @@
#include "base/macros.h"
#include "base/memory/ptr_util.h"
#include "base/synchronization/condition_variable.h"
+#include "base/synchronization/waitable_event.h"
#include "base/task_scheduler/scheduler_lock.h"
#include "base/task_scheduler/sequence.h"
#include "base/task_scheduler/task.h"
#include "base/task_scheduler/task_tracker.h"
+#include "base/threading/platform_thread.h"
#include "base/time/time.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -421,6 +423,49 @@ TEST(TaskSchedulerWorkerTest, CreateDetached) {
worker->JoinForTesting();
}
+namespace {
+
+class ExpectNormalPriorityDelegate : public SchedulerWorker::Delegate {
+ public:
+ ExpectNormalPriorityDelegate()
+ : done_(WaitableEvent::ResetPolicy::MANUAL,
+ WaitableEvent::InitialState::NOT_SIGNALED) {}
+
+ void WaitDone() { done_.Wait(); }
robliao 2016/07/19 22:41:28 Nit: Maybe WaitForGetWork
fdoray 2016/07/20 18:22:21 Done.
+
+ // SchedulerWorker::Delegate:
+ void OnMainEntry(SchedulerWorker* worker) override {}
+ scoped_refptr<Sequence> GetWork(SchedulerWorker* worker) override {
+ EXPECT_EQ(ThreadPriority::NORMAL,
+ PlatformThread::GetCurrentThreadPriority());
+ done_.Signal();
+ return nullptr;
+ }
+ void ReEnqueueSequence(scoped_refptr<Sequence> sequence) override {}
+ TimeDelta GetSleepTimeout() override { return TimeDelta(); }
robliao 2016/07/19 22:41:28 Would be safer to return TimeDelta::Max()
fdoray 2016/07/20 18:22:21 Done.
+ bool CanDetach(SchedulerWorker* worker) override { return false; }
+
+ private:
+ WaitableEvent done_;
+
+ DISALLOW_COPY_AND_ASSIGN(ExpectNormalPriorityDelegate);
+};
+
+} // namespace
+
+TEST(TaskSchedulerWorkerTest, BumpPriorityDuringShutdown) {
+ TaskTracker task_tracker;
+ task_tracker.SetIsShutdownInProgressForTesting();
+
+ ExpectNormalPriorityDelegate* delegate = new ExpectNormalPriorityDelegate;
+ std::unique_ptr<SchedulerWorker> worker = SchedulerWorker::Create(
+ ThreadPriority::BACKGROUND, WrapUnique(delegate), &task_tracker,
+ SchedulerWorker::InitialState::ALIVE);
+ worker->WakeUp();
+ delegate->WaitDone();
+ worker->JoinForTesting();
+}
+
} // namespace
} // namespace internal
} // namespace base

Powered by Google App Engine
This is Rietveld 408576698