Commit 42bdd9c5 authored by fdoray's avatar fdoray Committed by Commit bot

Use SequencedWorkerPoolOwner in MemoryDumpManagerTest.

MemoryDumpManagerTest didn't join its thread. This made a write in
TearDown() racy with a read from a thread created by the test.

With this CL, threads created by MemoryDumpManagerTest are joined
before TearDown() runs.

BUG=658766

Review-Url: https://codereview.chromium.org/2447853002
Cr-Commit-Position: refs/heads/master@{#427251}
parent 88cd832f
...@@ -28,7 +28,8 @@ SequencedWorkerPoolOwner::~SequencedWorkerPoolOwner() { ...@@ -28,7 +28,8 @@ SequencedWorkerPoolOwner::~SequencedWorkerPoolOwner() {
exit_loop_.Run(); exit_loop_.Run();
} }
const scoped_refptr<SequencedWorkerPool>& SequencedWorkerPoolOwner::pool() { const scoped_refptr<SequencedWorkerPool>& SequencedWorkerPoolOwner::pool()
const {
return pool_; return pool_;
} }
......
...@@ -39,7 +39,7 @@ class SequencedWorkerPoolOwner : public SequencedWorkerPool::TestingObserver { ...@@ -39,7 +39,7 @@ class SequencedWorkerPoolOwner : public SequencedWorkerPool::TestingObserver {
~SequencedWorkerPoolOwner() override; ~SequencedWorkerPoolOwner() override;
// Don't change the returned pool's testing observer. // Don't change the returned pool's testing observer.
const scoped_refptr<SequencedWorkerPool>& pool(); const scoped_refptr<SequencedWorkerPool>& pool() const;
// The given callback will be called on WillWaitForShutdown(). // The given callback will be called on WillWaitForShutdown().
void SetWillWaitForShutdownCallback(const Closure& callback); void SetWillWaitForShutdownCallback(const Closure& callback);
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "base/synchronization/waitable_event.h" #include "base/synchronization/waitable_event.h"
#include "base/test/sequenced_worker_pool_owner.h"
#include "base/test/test_io_thread.h" #include "base/test/test_io_thread.h"
#include "base/test/trace_event_analyzer.h" #include "base/test/trace_event_analyzer.h"
#include "base/threading/platform_thread.h" #include "base/threading/platform_thread.h"
...@@ -162,9 +163,7 @@ class MockMemoryDumpProvider : public MemoryDumpProvider { ...@@ -162,9 +163,7 @@ class MockMemoryDumpProvider : public MemoryDumpProvider {
class TestSequencedTaskRunner : public SequencedTaskRunner { class TestSequencedTaskRunner : public SequencedTaskRunner {
public: public:
TestSequencedTaskRunner() TestSequencedTaskRunner()
: worker_pool_(new SequencedWorkerPool(2 /* max_threads */, : worker_pool_(2 /* max_threads */, "Test Task Runner"),
"Test Task Runner",
base::TaskPriority::USER_VISIBLE)),
enabled_(true), enabled_(true),
num_of_post_tasks_(0) {} num_of_post_tasks_(0) {}
...@@ -182,19 +181,21 @@ class TestSequencedTaskRunner : public SequencedTaskRunner { ...@@ -182,19 +181,21 @@ class TestSequencedTaskRunner : public SequencedTaskRunner {
const Closure& task, const Closure& task,
TimeDelta delay) override { TimeDelta delay) override {
num_of_post_tasks_++; num_of_post_tasks_++;
if (enabled_) if (enabled_) {
return worker_pool_->PostSequencedWorkerTask(token_, from_here, task); return worker_pool_.pool()->PostSequencedWorkerTask(token_, from_here,
task);
}
return false; return false;
} }
bool RunsTasksOnCurrentThread() const override { bool RunsTasksOnCurrentThread() const override {
return worker_pool_->RunsTasksOnCurrentThread(); return worker_pool_.pool()->RunsTasksOnCurrentThread();
} }
private: private:
~TestSequencedTaskRunner() override {} ~TestSequencedTaskRunner() override {}
scoped_refptr<SequencedWorkerPool> worker_pool_; SequencedWorkerPoolOwner worker_pool_;
const SequencedWorkerPool::SequenceToken token_; const SequencedWorkerPool::SequenceToken token_;
bool enabled_; bool enabled_;
unsigned num_of_post_tasks_; unsigned num_of_post_tasks_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment