Commit 22327e7a authored by gab's avatar gab Committed by Commit bot

Replace single-threaded SequencedWorkerPool with base::Thread in net_unittests

Only logic change is that base::Thread will run all tasks before being
destroyed (as opposed to previous SKIP_ON_SHUTDOWN semantics), but no
tests called Shutdown() explicitly so I assume this wasn't an explicit
choice and that those tests don't care?

A few drive-by cleanups too.

BUG=646443
NO_DEPENDENCY_CHECKS=true

Review-Url: https://codereview.chromium.org/2334163005
Cr-Commit-Position: refs/heads/master@{#418912}
parent fdf211f0
...@@ -16,8 +16,8 @@ ...@@ -16,8 +16,8 @@
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/strings/string_util.h" #include "base/strings/string_util.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_timeouts.h" #include "base/test/test_timeouts.h"
#include "base/threading/thread.h"
#include "base/threading/thread_restrictions.h" #include "base/threading/thread_restrictions.h"
#include "base/threading/thread_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h"
#include "net/base/io_buffer.h" #include "net/base/io_buffer.h"
...@@ -727,10 +727,12 @@ TEST_F(FileStreamTest, WriteClose) { ...@@ -727,10 +727,12 @@ TEST_F(FileStreamTest, WriteClose) {
} }
TEST_F(FileStreamTest, OpenAndDelete) { TEST_F(FileStreamTest, OpenAndDelete) {
base::SequencedWorkerPoolOwner pool_owner(1, "StreamTest"); base::Thread worker_thread("StreamTest");
ASSERT_TRUE(worker_thread.Start());
bool prev = base::ThreadRestrictions::SetIOAllowed(false); bool prev = base::ThreadRestrictions::SetIOAllowed(false);
std::unique_ptr<FileStream> stream(new FileStream(pool_owner.pool())); std::unique_ptr<FileStream> stream(
new FileStream(worker_thread.task_runner()));
int flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE | int flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE |
base::File::FLAG_ASYNC; base::File::FLAG_ASYNC;
TestCompletionCallback open_callback; TestCompletionCallback open_callback;
...@@ -741,8 +743,9 @@ TEST_F(FileStreamTest, OpenAndDelete) { ...@@ -741,8 +743,9 @@ TEST_F(FileStreamTest, OpenAndDelete) {
// complete. Should be safe. // complete. Should be safe.
stream.reset(); stream.reset();
// Force an operation through the pool. // Force an operation through the worker.
std::unique_ptr<FileStream> stream2(new FileStream(pool_owner.pool())); std::unique_ptr<FileStream> stream2(
new FileStream(worker_thread.task_runner()));
TestCompletionCallback open_callback2; TestCompletionCallback open_callback2;
rv = stream2->Open(temp_file_path(), flags, open_callback2.callback()); rv = stream2->Open(temp_file_path(), flags, open_callback2.callback());
EXPECT_THAT(open_callback2.GetResult(rv), IsOk()); EXPECT_THAT(open_callback2.GetResult(rv), IsOk());
......
...@@ -5,14 +5,16 @@ ...@@ -5,14 +5,16 @@
#include "net/url_request/url_request_simple_job.h" #include "net/url_request/url_request_simple_job.h"
#include <memory> #include <memory>
#include <utility>
#include "base/bind_helpers.h" #include "base/bind_helpers.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/ptr_util.h" #include "base/memory/ptr_util.h"
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/sequenced_task_runner.h"
#include "base/strings/string_piece.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "base/test/sequenced_worker_pool_owner.h" #include "base/threading/thread.h"
#include "base/threading/worker_pool.h"
#include "net/base/request_priority.h" #include "net/base/request_priority.h"
#include "net/test/gtest_util.h" #include "net/test/gtest_util.h"
#include "net/url_request/url_request_job.h" #include "net/url_request/url_request_job.h"
...@@ -43,10 +45,10 @@ class MockSimpleJob : public URLRequestSimpleJob { ...@@ -43,10 +45,10 @@ class MockSimpleJob : public URLRequestSimpleJob {
MockSimpleJob(URLRequest* request, MockSimpleJob(URLRequest* request,
NetworkDelegate* network_delegate, NetworkDelegate* network_delegate,
scoped_refptr<base::TaskRunner> task_runner, scoped_refptr<base::TaskRunner> task_runner,
std::string data) base::StringPiece data)
: URLRequestSimpleJob(request, network_delegate), : URLRequestSimpleJob(request, network_delegate),
data_(data), data_(data.as_string()),
task_runner_(task_runner) {} task_runner_(std::move(task_runner)) {}
protected: protected:
// URLRequestSimpleJob implementation: // URLRequestSimpleJob implementation:
...@@ -69,7 +71,7 @@ class MockSimpleJob : public URLRequestSimpleJob { ...@@ -69,7 +71,7 @@ class MockSimpleJob : public URLRequestSimpleJob {
const std::string data_; const std::string data_;
scoped_refptr<base::TaskRunner> task_runner_; const scoped_refptr<base::TaskRunner> task_runner_;
DISALLOW_COPY_AND_ASSIGN(MockSimpleJob); DISALLOW_COPY_AND_ASSIGN(MockSimpleJob);
}; };
...@@ -105,7 +107,7 @@ class SimpleJobProtocolHandler : ...@@ -105,7 +107,7 @@ class SimpleJobProtocolHandler :
public URLRequestJobFactory::ProtocolHandler { public URLRequestJobFactory::ProtocolHandler {
public: public:
SimpleJobProtocolHandler(scoped_refptr<base::TaskRunner> task_runner) SimpleJobProtocolHandler(scoped_refptr<base::TaskRunner> task_runner)
: task_runner_(task_runner) {} : task_runner_(std::move(task_runner)) {}
URLRequestJob* MaybeCreateJob( URLRequestJob* MaybeCreateJob(
URLRequest* request, URLRequest* request,
NetworkDelegate* network_delegate) const override { NetworkDelegate* network_delegate) const override {
...@@ -118,21 +120,19 @@ class SimpleJobProtocolHandler : ...@@ -118,21 +120,19 @@ class SimpleJobProtocolHandler :
~SimpleJobProtocolHandler() override {} ~SimpleJobProtocolHandler() override {}
private: private:
scoped_refptr<base::TaskRunner> task_runner_; const scoped_refptr<base::TaskRunner> task_runner_;
DISALLOW_COPY_AND_ASSIGN(SimpleJobProtocolHandler);
}; };
class URLRequestSimpleJobTest : public ::testing::Test { class URLRequestSimpleJobTest : public ::testing::Test {
public: public:
URLRequestSimpleJobTest() URLRequestSimpleJobTest()
: worker_pool_owner_(1, "URLRequestSimpleJobTest"), : worker_thread_("URLRequestSimpleJobTest"), context_(true) {
task_runner_(worker_pool_owner_.pool() EXPECT_TRUE(worker_thread_.Start());
->GetSequencedTaskRunnerWithShutdownBehavior(
worker_pool_owner_.pool()
->GetSequenceToken(),
base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)),
context_(true) {
job_factory_.SetProtocolHandler( job_factory_.SetProtocolHandler(
"data", base::MakeUnique<SimpleJobProtocolHandler>(task_runner_)); "data", base::MakeUnique<SimpleJobProtocolHandler>(task_runner()));
context_.set_job_factory(&job_factory_); context_.set_job_factory(&job_factory_);
context_.Init(); context_.Init();
...@@ -150,13 +150,18 @@ class URLRequestSimpleJobTest : public ::testing::Test { ...@@ -150,13 +150,18 @@ class URLRequestSimpleJobTest : public ::testing::Test {
EXPECT_FALSE(request_->is_pending()); EXPECT_FALSE(request_->is_pending());
} }
scoped_refptr<base::SequencedTaskRunner> task_runner() {
return worker_thread_.task_runner();
}
protected: protected:
base::SequencedWorkerPoolOwner worker_pool_owner_; base::Thread worker_thread_;
scoped_refptr<base::SequencedTaskRunner> task_runner_;
TestURLRequestContext context_; TestURLRequestContext context_;
URLRequestJobFactoryImpl job_factory_; URLRequestJobFactoryImpl job_factory_;
TestDelegate delegate_; TestDelegate delegate_;
std::unique_ptr<URLRequest> request_; std::unique_ptr<URLRequest> request_;
DISALLOW_COPY_AND_ASSIGN(URLRequestSimpleJobTest);
}; };
} // namespace } // namespace
...@@ -240,7 +245,7 @@ TEST_F(URLRequestSimpleJobTest, CancelAfterFirstReadStarted) { ...@@ -240,7 +245,7 @@ TEST_F(URLRequestSimpleJobTest, CancelAfterFirstReadStarted) {
// Feed a dummy task to the SequencedTaskRunner to make sure that the // Feed a dummy task to the SequencedTaskRunner to make sure that the
// callbacks which are invoked in ReadRawData have completed safely. // callbacks which are invoked in ReadRawData have completed safely.
base::RunLoop run_loop; base::RunLoop run_loop;
EXPECT_TRUE(task_runner_->PostTaskAndReply( EXPECT_TRUE(task_runner()->PostTaskAndReply(
FROM_HERE, base::Bind(&base::DoNothing), run_loop.QuitClosure())); FROM_HERE, base::Bind(&base::DoNothing), run_loop.QuitClosure()));
run_loop.Run(); run_loop.Run();
......
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