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

Side by Side Diff: chrome/browser/chromeos/drive/drive_url_request_job_unittest.cc

Issue 14197014: Add TestBrowserThreadBundle into RenderViewHostTestHarness. Kill some unnecessary real threads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merged ToT Created 7 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/drive/drive_url_request_job.h" 5 #include "chrome/browser/chromeos/drive/drive_url_request_job.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/sequenced_task_runner.h" 10 #include "base/sequenced_task_runner.h"
11 #include "base/threading/sequenced_worker_pool.h" 11 #include "base/threading/sequenced_worker_pool.h"
12 #include "base/threading/thread.h" 12 #include "base/threading/thread.h"
13 #include "chrome/browser/chromeos/drive/drive_file_stream_reader.h" 13 #include "chrome/browser/chromeos/drive/drive_file_stream_reader.h"
14 #include "chrome/browser/chromeos/drive/fake_file_system.h" 14 #include "chrome/browser/chromeos/drive/fake_file_system.h"
15 #include "chrome/browser/chromeos/drive/file_system_util.h" 15 #include "chrome/browser/chromeos/drive/file_system_util.h"
16 #include "chrome/browser/chromeos/drive/test_util.h" 16 #include "chrome/browser/chromeos/drive/test_util.h"
17 #include "chrome/browser/google_apis/fake_drive_service.h" 17 #include "chrome/browser/google_apis/fake_drive_service.h"
18 #include "chrome/browser/google_apis/task_util.h" 18 #include "chrome/browser/google_apis/task_util.h"
19 #include "chrome/browser/google_apis/test_util.h" 19 #include "chrome/browser/google_apis/test_util.h"
20 #include "chrome/common/url_constants.h" 20 #include "chrome/common/url_constants.h"
21 #include "content/public/test/test_browser_thread.h" 21 #include "content/public/browser/browser_thread.h"
22 #include "content/public/test/test_browser_thread_bundle.h"
22 #include "googleurl/src/gurl.h" 23 #include "googleurl/src/gurl.h"
23 #include "net/base/test_completion_callback.h" 24 #include "net/base/test_completion_callback.h"
24 #include "net/http/http_byte_range.h" 25 #include "net/http/http_byte_range.h"
25 #include "net/url_request/url_request_test_util.h" 26 #include "net/url_request/url_request_test_util.h"
26 #include "testing/gtest/include/gtest/gtest.h" 27 #include "testing/gtest/include/gtest/gtest.h"
27 28
28 using content::BrowserThread;
29
30 namespace drive { 29 namespace drive {
31 namespace { 30 namespace {
32 31
33 // A simple URLRequestJobFactory implementation to create DriveURLRequestJob. 32 // A simple URLRequestJobFactory implementation to create DriveURLRequestJob.
34 class TestURLRequestJobFactory : public net::URLRequestJobFactory { 33 class TestURLRequestJobFactory : public net::URLRequestJobFactory {
35 public: 34 public:
36 TestURLRequestJobFactory( 35 TestURLRequestJobFactory(
37 const DriveURLRequestJob::FileSystemGetter& file_system_getter, 36 const DriveURLRequestJob::FileSystemGetter& file_system_getter,
38 base::SequencedTaskRunner* sequenced_task_runner) 37 base::SequencedTaskRunner* sequenced_task_runner)
39 : file_system_getter_(file_system_getter), 38 : file_system_getter_(file_system_getter),
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 private: 88 private:
90 GURL redirect_url_; 89 GURL redirect_url_;
91 90
92 DISALLOW_COPY_AND_ASSIGN(TestDelegate); 91 DISALLOW_COPY_AND_ASSIGN(TestDelegate);
93 }; 92 };
94 93
95 } // namespace 94 } // namespace
96 95
97 class DriveURLRequestJobTest : public testing::Test { 96 class DriveURLRequestJobTest : public testing::Test {
98 protected: 97 protected:
99 DriveURLRequestJobTest() : ui_thread_(BrowserThread::UI), 98 DriveURLRequestJobTest()
100 io_thread_(BrowserThread::IO, &message_loop_) { 99 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) {
101 } 100 }
102 101
103 virtual ~DriveURLRequestJobTest() { 102 virtual ~DriveURLRequestJobTest() {
104 } 103 }
105 104
106 virtual void SetUp() OVERRIDE { 105 virtual void SetUp() OVERRIDE {
107 ui_thread_.Start(); 106 // Initialize FakeDriveService.
107 fake_drive_service_.reset(new google_apis::FakeDriveService);
108 ASSERT_TRUE(fake_drive_service_->LoadResourceListForWapi(
109 "chromeos/gdata/root_feed.json"));
110 ASSERT_TRUE(fake_drive_service_->LoadAccountMetadataForWapi(
111 "chromeos/gdata/account_metadata.json"));
108 112
109 BrowserThread::PostTaskAndReply( 113 // Initialize FakeFileSystem.
110 BrowserThread::UI, 114 fake_file_system_.reset(
111 FROM_HERE, 115 new test_util::FakeFileSystem(fake_drive_service_.get()));
112 base::Bind(&DriveURLRequestJobTest::SetUpOnUIThread, 116 ASSERT_TRUE(fake_file_system_->InitializeForTesting());
113 base::Unretained(this)),
114 base::MessageLoop::QuitClosure());
115 message_loop_.Run();
116 117
117 scoped_refptr<base::SequencedWorkerPool> blocking_pool = 118 scoped_refptr<base::SequencedWorkerPool> blocking_pool =
118 BrowserThread::GetBlockingPool(); 119 content::BrowserThread::GetBlockingPool();
119 test_network_delegate_.reset(new net::TestNetworkDelegate); 120 test_network_delegate_.reset(new net::TestNetworkDelegate);
120 test_url_request_job_factory_.reset(new TestURLRequestJobFactory( 121 test_url_request_job_factory_.reset(new TestURLRequestJobFactory(
121 base::Bind(&DriveURLRequestJobTest::GetFileSystem, 122 base::Bind(&DriveURLRequestJobTest::GetFileSystem,
122 base::Unretained(this)), 123 base::Unretained(this)),
123 blocking_pool->GetSequencedTaskRunner( 124 blocking_pool->GetSequencedTaskRunner(
124 blocking_pool->GetSequenceToken()))); 125 blocking_pool->GetSequenceToken())));
125 url_request_context_.reset(new net::URLRequestContext()); 126 url_request_context_.reset(new net::URLRequestContext());
126 url_request_context_->set_job_factory(test_url_request_job_factory_.get()); 127 url_request_context_->set_job_factory(test_url_request_job_factory_.get());
127 url_request_context_->set_network_delegate(test_network_delegate_.get()); 128 url_request_context_->set_network_delegate(test_network_delegate_.get());
128 test_delegate_.reset(new TestDelegate); 129 test_delegate_.reset(new TestDelegate);
129 } 130 }
130 131
131 virtual void TearDown() OVERRIDE { 132 virtual void TearDown() OVERRIDE {
132 test_delegate_.reset(); 133 test_delegate_.reset();
133 url_request_context_.reset(); 134 url_request_context_.reset();
134 test_url_request_job_factory_.reset(); 135 test_url_request_job_factory_.reset();
135 test_network_delegate_.reset(); 136 test_network_delegate_.reset();
136 137
137 BrowserThread::PostTaskAndReply(
138 BrowserThread::UI,
139 FROM_HERE,
140 base::Bind(&DriveURLRequestJobTest::TearDownOnUIThread,
141 base::Unretained(this)),
142 base::MessageLoop::QuitClosure());
143 message_loop_.Run();
144 }
145
146 void SetUpOnUIThread() {
147 // Initialize FakeDriveService.
148 fake_drive_service_.reset(new google_apis::FakeDriveService);
149 ASSERT_TRUE(fake_drive_service_->LoadResourceListForWapi(
150 "chromeos/gdata/root_feed.json"));
151 ASSERT_TRUE(fake_drive_service_->LoadAccountMetadataForWapi(
152 "chromeos/gdata/account_metadata.json"));
153
154 // Initialize FakeFileSystem.
155 fake_file_system_.reset(
156 new test_util::FakeFileSystem(fake_drive_service_.get()));
157 ASSERT_TRUE(fake_file_system_->InitializeForTesting());
158 }
159
160 void TearDownOnUIThread() {
161 fake_file_system_.reset(); 138 fake_file_system_.reset();
162 fake_drive_service_.reset(); 139 fake_drive_service_.reset();
163 } 140 }
164 141
165 FileSystemInterface* GetFileSystem() { 142 FileSystemInterface* GetFileSystem() {
166 return fake_file_system_.get(); 143 return fake_file_system_.get();
167 } 144 }
168 145
169 bool ReadDriveFileSync( 146 bool ReadDriveFileSync(
170 const base::FilePath& file_path, std::string* out_content) { 147 const base::FilePath& file_path, std::string* out_content) {
171 scoped_ptr<base::Thread> worker_thread( 148 scoped_ptr<base::Thread> worker_thread(
172 new base::Thread("ReadDriveFileSync")); 149 new base::Thread("ReadDriveFileSync"));
173 if (!worker_thread->Start()) 150 if (!worker_thread->Start())
174 return false; 151 return false;
175 152
176 scoped_ptr<DriveFileStreamReader> reader(new DriveFileStreamReader( 153 scoped_ptr<DriveFileStreamReader> reader(new DriveFileStreamReader(
177 base::Bind(&DriveURLRequestJobTest::GetFileSystem, 154 base::Bind(&DriveURLRequestJobTest::GetFileSystem,
178 base::Unretained(this)), 155 base::Unretained(this)),
179 worker_thread->message_loop_proxy())); 156 worker_thread->message_loop_proxy()));
180 int error = net::ERR_FAILED; 157 int error = net::ERR_FAILED;
181 scoped_ptr<ResourceEntry> entry; 158 scoped_ptr<ResourceEntry> entry;
182 reader->Initialize( 159 reader->Initialize(
183 file_path, 160 file_path,
184 net::HttpByteRange(), 161 net::HttpByteRange(),
185 google_apis::CreateComposedCallback( 162 google_apis::CreateComposedCallback(
186 base::Bind(&google_apis::test_util::RunAndQuit), 163 base::Bind(&google_apis::test_util::RunAndQuit),
187 google_apis::test_util::CreateCopyResultCallback( 164 google_apis::test_util::CreateCopyResultCallback(
188 &error, &entry))); 165 &error, &entry)));
189 message_loop_.Run(); 166 base::MessageLoop::current()->Run();
190 if (error != net::OK || !entry) 167 if (error != net::OK || !entry)
191 return false; 168 return false;
192 169
193 // Read data from the reader. 170 // Read data from the reader.
194 std::string content; 171 std::string content;
195 if (test_util::ReadAllData(reader.get(), &content) != net::OK) 172 if (test_util::ReadAllData(reader.get(), &content) != net::OK)
196 return false; 173 return false;
197 174
198 if (static_cast<size_t>(entry->file_info().size()) != content.size()) 175 if (static_cast<size_t>(entry->file_info().size()) != content.size())
199 return false; 176 return false;
200 177
201 *out_content = content; 178 *out_content = content;
202 return true; 179 return true;
203 } 180 }
204 181
205 base::MessageLoopForIO message_loop_; 182 content::TestBrowserThreadBundle thread_bundle_;
206 content::TestBrowserThread ui_thread_;
207 content::TestBrowserThread io_thread_;
208 183
209 scoped_ptr<google_apis::FakeDriveService> fake_drive_service_; 184 scoped_ptr<google_apis::FakeDriveService> fake_drive_service_;
210 scoped_ptr<test_util::FakeFileSystem> fake_file_system_; 185 scoped_ptr<test_util::FakeFileSystem> fake_file_system_;
211 186
212 scoped_ptr<net::TestNetworkDelegate> test_network_delegate_; 187 scoped_ptr<net::TestNetworkDelegate> test_network_delegate_;
213 scoped_ptr<TestURLRequestJobFactory> test_url_request_job_factory_; 188 scoped_ptr<TestURLRequestJobFactory> test_url_request_job_factory_;
214 scoped_ptr<net::URLRequestContext> url_request_context_; 189 scoped_ptr<net::URLRequestContext> url_request_context_;
215 scoped_ptr<TestDelegate> test_delegate_; 190 scoped_ptr<TestDelegate> test_delegate_;
216 }; 191 };
217 192
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 "Range", "Wrong Range Header Value", false /* overwrite */); 368 "Range", "Wrong Range Header Value", false /* overwrite */);
394 request.Start(); 369 request.Start();
395 370
396 base::MessageLoop::current()->Run(); 371 base::MessageLoop::current()->Run();
397 372
398 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status()); 373 EXPECT_EQ(net::URLRequestStatus::FAILED, request.status().status());
399 EXPECT_EQ(net::ERR_REQUEST_RANGE_NOT_SATISFIABLE, request.status().error()); 374 EXPECT_EQ(net::ERR_REQUEST_RANGE_NOT_SATISFIABLE, request.status().error());
400 } 375 }
401 376
402 } // namespace drive 377 } // namespace drive
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698