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

Side by Side Diff: chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader_unittest.cc

Issue 393233002: [fsp] Refactor FakeProvidedFileSystem to be more flexible. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/file_system_provider/fileapi/file_stream_reade r.h" 5 #include "chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reade r.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/files/file.h" 10 #include "base/files/file.h"
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 ServiceFactory::GetInstance()->SetTestingFactory(profile_, &CreateService); 94 ServiceFactory::GetInstance()->SetTestingFactory(profile_, &CreateService);
95 Service* service = Service::Get(profile_); // Owned by its factory. 95 Service* service = Service::Get(profile_); // Owned by its factory.
96 service->SetFileSystemFactoryForTesting( 96 service->SetFileSystemFactoryForTesting(
97 base::Bind(&FakeProvidedFileSystem::Create)); 97 base::Bind(&FakeProvidedFileSystem::Create));
98 98
99 const bool result = service->MountFileSystem(kExtensionId, 99 const bool result = service->MountFileSystem(kExtensionId,
100 kFileSystemId, 100 kFileSystemId,
101 "Testing File System", 101 "Testing File System",
102 false /* writable */); 102 false /* writable */);
103 ASSERT_TRUE(result); 103 ASSERT_TRUE(result);
104 FakeProvidedFileSystem* provided_file_system =
hirono 2014/07/16 06:30:00 nit: FakeProvidedFileSystem* const
105 static_cast<FakeProvidedFileSystem*>(
106 service->GetProvidedFileSystem(kExtensionId, kFileSystemId));
107 DCHECK(provided_file_system);
108 ASSERT_TRUE(provided_file_system->GetEntry(
109 base::FilePath::FromUTF8Unsafe(kFakeFilePath), &fake_file_));
104 const ProvidedFileSystemInfo& file_system_info = 110 const ProvidedFileSystemInfo& file_system_info =
105 service->GetProvidedFileSystem(kExtensionId, kFileSystemId) 111 service->GetProvidedFileSystem(kExtensionId, kFileSystemId)
106 ->GetFileSystemInfo(); 112 ->GetFileSystemInfo();
107 const std::string mount_point_name = 113 const std::string mount_point_name =
108 file_system_info.mount_path().BaseName().AsUTF8Unsafe(); 114 file_system_info.mount_path().BaseName().AsUTF8Unsafe();
109 115
110 file_url_ = CreateFileSystemURL( 116 file_url_ = CreateFileSystemURL(
111 mount_point_name, base::FilePath::FromUTF8Unsafe(kFakeFilePath + 1)); 117 mount_point_name, base::FilePath::FromUTF8Unsafe(kFakeFilePath + 1));
112 ASSERT_TRUE(file_url_.is_valid()); 118 ASSERT_TRUE(file_url_.is_valid());
113 wrong_file_url_ = CreateFileSystemURL( 119 wrong_file_url_ = CreateFileSystemURL(
114 mount_point_name, base::FilePath::FromUTF8Unsafe("im-not-here.txt")); 120 mount_point_name, base::FilePath::FromUTF8Unsafe("im-not-here.txt"));
115 ASSERT_TRUE(wrong_file_url_.is_valid()); 121 ASSERT_TRUE(wrong_file_url_.is_valid());
116
117 ASSERT_TRUE(base::Time::FromString(kFakeFileModificationTime,
118 &file_modification_time_));
119 } 122 }
120 123
121 virtual void TearDown() OVERRIDE { 124 virtual void TearDown() OVERRIDE {
122 // Setting the testing factory to NULL will destroy the created service 125 // Setting the testing factory to NULL will destroy the created service
123 // associated with the testing profile. 126 // associated with the testing profile.
124 ServiceFactory::GetInstance()->SetTestingFactory(profile_, NULL); 127 ServiceFactory::GetInstance()->SetTestingFactory(profile_, NULL);
125 } 128 }
126 129
127 content::TestBrowserThreadBundle thread_bundle_; 130 content::TestBrowserThreadBundle thread_bundle_;
128 base::ScopedTempDir data_dir_; 131 base::ScopedTempDir data_dir_;
129 scoped_ptr<TestingProfileManager> profile_manager_; 132 scoped_ptr<TestingProfileManager> profile_manager_;
130 TestingProfile* profile_; // Owned by TestingProfileManager. 133 TestingProfile* profile_; // Owned by TestingProfileManager.
134 FakeEntry fake_file_;
131 fileapi::FileSystemURL file_url_; 135 fileapi::FileSystemURL file_url_;
132 fileapi::FileSystemURL wrong_file_url_; 136 fileapi::FileSystemURL wrong_file_url_;
133 base::Time file_modification_time_;
134 }; 137 };
135 138
136 TEST_F(FileSystemProviderFileStreamReader, Read_AllAtOnce) { 139 TEST_F(FileSystemProviderFileStreamReader, Read_AllAtOnce) {
137 EventLogger logger; 140 EventLogger logger;
138 141
139 const int64 initial_offset = 0; 142 const int64 initial_offset = 0;
140 FileStreamReader reader( 143 FileStreamReader reader(
141 NULL, file_url_, initial_offset, file_modification_time_); 144 NULL, file_url_, initial_offset, fake_file_.metadata.modification_time);
142 scoped_refptr<net::IOBuffer> io_buffer(new net::IOBuffer(kFakeFileSize)); 145 scoped_refptr<net::IOBuffer> io_buffer(
146 new net::IOBuffer(fake_file_.metadata.size));
143 147
144 const int result = 148 const int result =
145 reader.Read(io_buffer.get(), 149 reader.Read(io_buffer.get(),
146 kFakeFileSize, 150 fake_file_.metadata.size,
147 base::Bind(&EventLogger::OnRead, logger.GetWeakPtr())); 151 base::Bind(&EventLogger::OnRead, logger.GetWeakPtr()));
148 EXPECT_EQ(net::ERR_IO_PENDING, result); 152 EXPECT_EQ(net::ERR_IO_PENDING, result);
149 base::RunLoop().RunUntilIdle(); 153 base::RunLoop().RunUntilIdle();
150 154
151 ASSERT_EQ(1u, logger.results().size()); 155 ASSERT_EQ(1u, logger.results().size());
152 EXPECT_LT(0, logger.results()[0]); 156 EXPECT_LT(0, logger.results()[0]);
153 EXPECT_EQ(kFakeFileSize, static_cast<size_t>(logger.results()[0])); 157 EXPECT_EQ(fake_file_.metadata.size, logger.results()[0]);
154 158
155 std::string buffer_as_string(io_buffer->data(), kFakeFileSize); 159 std::string buffer_as_string(io_buffer->data(), fake_file_.metadata.size);
156 EXPECT_EQ(kFakeFileText, buffer_as_string); 160 EXPECT_EQ(fake_file_.contents, buffer_as_string);
157 } 161 }
158 162
159 TEST_F(FileSystemProviderFileStreamReader, Read_WrongFile) { 163 TEST_F(FileSystemProviderFileStreamReader, Read_WrongFile) {
160 EventLogger logger; 164 EventLogger logger;
161 165
162 const int64 initial_offset = 0; 166 const int64 initial_offset = 0;
163 FileStreamReader reader( 167 FileStreamReader reader(NULL,
164 NULL, wrong_file_url_, initial_offset, file_modification_time_); 168 wrong_file_url_,
165 scoped_refptr<net::IOBuffer> io_buffer(new net::IOBuffer(kFakeFileSize)); 169 initial_offset,
170 fake_file_.metadata.modification_time);
171 scoped_refptr<net::IOBuffer> io_buffer(
172 new net::IOBuffer(fake_file_.metadata.size));
166 173
167 const int result = 174 const int result =
168 reader.Read(io_buffer.get(), 175 reader.Read(io_buffer.get(),
169 kFakeFileSize, 176 fake_file_.metadata.size,
170 base::Bind(&EventLogger::OnRead, logger.GetWeakPtr())); 177 base::Bind(&EventLogger::OnRead, logger.GetWeakPtr()));
171 EXPECT_EQ(net::ERR_IO_PENDING, result); 178 EXPECT_EQ(net::ERR_IO_PENDING, result);
172 base::RunLoop().RunUntilIdle(); 179 base::RunLoop().RunUntilIdle();
173 180
174 ASSERT_EQ(1u, logger.results().size()); 181 ASSERT_EQ(1u, logger.results().size());
175 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, logger.results()[0]); 182 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, logger.results()[0]);
176 } 183 }
177 184
178 TEST_F(FileSystemProviderFileStreamReader, Read_InChunks) { 185 TEST_F(FileSystemProviderFileStreamReader, Read_InChunks) {
179 EventLogger logger; 186 EventLogger logger;
180 187
181 const int64 initial_offset = 0; 188 const int64 initial_offset = 0;
182 FileStreamReader reader( 189 FileStreamReader reader(
183 NULL, file_url_, initial_offset, file_modification_time_); 190 NULL, file_url_, initial_offset, fake_file_.metadata.modification_time);
184 191
185 for (size_t offset = 0; offset < kFakeFileSize; ++offset) { 192 for (int64 offset = 0; offset < fake_file_.metadata.size; ++offset) {
186 scoped_refptr<net::IOBuffer> io_buffer(new net::IOBuffer(1)); 193 scoped_refptr<net::IOBuffer> io_buffer(new net::IOBuffer(1));
187 const int result = 194 const int result =
188 reader.Read(io_buffer.get(), 195 reader.Read(io_buffer.get(),
189 1, 196 1,
190 base::Bind(&EventLogger::OnRead, logger.GetWeakPtr())); 197 base::Bind(&EventLogger::OnRead, logger.GetWeakPtr()));
191 EXPECT_EQ(net::ERR_IO_PENDING, result); 198 EXPECT_EQ(net::ERR_IO_PENDING, result);
192 base::RunLoop().RunUntilIdle(); 199 base::RunLoop().RunUntilIdle();
193 ASSERT_EQ(offset + 1u, logger.results().size()); 200 ASSERT_EQ(offset + 1, static_cast<int64>(logger.results().size()));
194 EXPECT_EQ(1, logger.results()[offset]); 201 EXPECT_EQ(1, logger.results()[offset]);
195 EXPECT_EQ(kFakeFileText[offset], io_buffer->data()[0]); 202 EXPECT_EQ(fake_file_.contents[offset], io_buffer->data()[0]);
196 } 203 }
197 } 204 }
198 205
199 TEST_F(FileSystemProviderFileStreamReader, Read_Slice) { 206 TEST_F(FileSystemProviderFileStreamReader, Read_Slice) {
200 EventLogger logger; 207 EventLogger logger;
201 208
202 // Trim first 3 and last 3 characters. 209 // Trim first 3 and last 3 characters.
203 const int64 initial_offset = 3; 210 const int64 initial_offset = 3;
204 const int length = static_cast<int>(kFakeFileSize) - initial_offset - 3; 211 const int length = fake_file_.metadata.size - initial_offset - 3;
205 ASSERT_GT(kFakeFileSize, static_cast<size_t>(initial_offset)); 212 ASSERT_GT(fake_file_.metadata.size, initial_offset);
206 ASSERT_LT(0, length); 213 ASSERT_LT(0, length);
207 214
208 FileStreamReader reader( 215 FileStreamReader reader(
209 NULL, file_url_, initial_offset, file_modification_time_); 216 NULL, file_url_, initial_offset, fake_file_.metadata.modification_time);
210 scoped_refptr<net::IOBuffer> io_buffer(new net::IOBuffer(length)); 217 scoped_refptr<net::IOBuffer> io_buffer(new net::IOBuffer(length));
211 218
212 const int result = 219 const int result =
213 reader.Read(io_buffer.get(), 220 reader.Read(io_buffer.get(),
214 length, 221 length,
215 base::Bind(&EventLogger::OnRead, logger.GetWeakPtr())); 222 base::Bind(&EventLogger::OnRead, logger.GetWeakPtr()));
216 EXPECT_EQ(net::ERR_IO_PENDING, result); 223 EXPECT_EQ(net::ERR_IO_PENDING, result);
217 base::RunLoop().RunUntilIdle(); 224 base::RunLoop().RunUntilIdle();
218 225
219 ASSERT_EQ(1u, logger.results().size()); 226 ASSERT_EQ(1u, logger.results().size());
220 EXPECT_EQ(length, logger.results()[0]); 227 EXPECT_EQ(length, logger.results()[0]);
221 228
222 std::string buffer_as_string(io_buffer->data(), length); 229 std::string buffer_as_string(io_buffer->data(), length);
223 std::string expected_buffer(kFakeFileText + initial_offset, length); 230 std::string expected_buffer(fake_file_.contents.data() + initial_offset,
231 length);
224 EXPECT_EQ(expected_buffer, buffer_as_string); 232 EXPECT_EQ(expected_buffer, buffer_as_string);
225 } 233 }
226 234
227 TEST_F(FileSystemProviderFileStreamReader, Read_Beyond) { 235 TEST_F(FileSystemProviderFileStreamReader, Read_Beyond) {
228 EventLogger logger; 236 EventLogger logger;
229 237
230 // Request reading 1KB more than available. 238 // Request reading 1KB more than available.
231 const int64 initial_offset = 0; 239 const int64 initial_offset = 0;
232 const int length = static_cast<int>(kFakeFileSize) + 1024; 240 const int length = fake_file_.metadata.size + 1024;
233 241
234 FileStreamReader reader( 242 FileStreamReader reader(
235 NULL, file_url_, initial_offset, file_modification_time_); 243 NULL, file_url_, initial_offset, fake_file_.metadata.modification_time);
236 scoped_refptr<net::IOBuffer> io_buffer(new net::IOBuffer(length)); 244 scoped_refptr<net::IOBuffer> io_buffer(new net::IOBuffer(length));
237 245
238 const int result = 246 const int result =
239 reader.Read(io_buffer.get(), 247 reader.Read(io_buffer.get(),
240 length, 248 length,
241 base::Bind(&EventLogger::OnRead, logger.GetWeakPtr())); 249 base::Bind(&EventLogger::OnRead, logger.GetWeakPtr()));
242 EXPECT_EQ(net::ERR_IO_PENDING, result); 250 EXPECT_EQ(net::ERR_IO_PENDING, result);
243 base::RunLoop().RunUntilIdle(); 251 base::RunLoop().RunUntilIdle();
244 252
245 ASSERT_EQ(1u, logger.results().size()); 253 ASSERT_EQ(1u, logger.results().size());
246 EXPECT_LT(0, logger.results()[0]); 254 EXPECT_LT(0, logger.results()[0]);
247 EXPECT_EQ(kFakeFileSize, static_cast<size_t>(logger.results()[0])); 255 EXPECT_EQ(fake_file_.metadata.size, logger.results()[0]);
248 256
249 std::string buffer_as_string(io_buffer->data(), kFakeFileSize); 257 std::string buffer_as_string(io_buffer->data(), fake_file_.metadata.size);
250 EXPECT_EQ(kFakeFileText, buffer_as_string); 258 EXPECT_EQ(fake_file_.contents, buffer_as_string);
251 } 259 }
252 260
253 TEST_F(FileSystemProviderFileStreamReader, Read_ModifiedFile) { 261 TEST_F(FileSystemProviderFileStreamReader, Read_ModifiedFile) {
254 EventLogger logger; 262 EventLogger logger;
255 263
256 const int64 initial_offset = 0; 264 const int64 initial_offset = 0;
257 FileStreamReader reader(NULL, file_url_, initial_offset, base::Time::Max()); 265 FileStreamReader reader(NULL, file_url_, initial_offset, base::Time::Max());
258 266
259 scoped_refptr<net::IOBuffer> io_buffer(new net::IOBuffer(kFakeFileSize)); 267 scoped_refptr<net::IOBuffer> io_buffer(
268 new net::IOBuffer(fake_file_.metadata.size));
260 const int result = 269 const int result =
261 reader.Read(io_buffer.get(), 270 reader.Read(io_buffer.get(),
262 kFakeFileSize, 271 fake_file_.metadata.size,
263 base::Bind(&EventLogger::OnRead, logger.GetWeakPtr())); 272 base::Bind(&EventLogger::OnRead, logger.GetWeakPtr()));
264 273
265 EXPECT_EQ(net::ERR_IO_PENDING, result); 274 EXPECT_EQ(net::ERR_IO_PENDING, result);
266 base::RunLoop().RunUntilIdle(); 275 base::RunLoop().RunUntilIdle();
267 276
268 ASSERT_EQ(1u, logger.results().size()); 277 ASSERT_EQ(1u, logger.results().size());
269 EXPECT_EQ(net::ERR_UPLOAD_FILE_CHANGED, logger.results()[0]); 278 EXPECT_EQ(net::ERR_UPLOAD_FILE_CHANGED, logger.results()[0]);
270 } 279 }
271 280
272 TEST_F(FileSystemProviderFileStreamReader, Read_ExpectedModificationTimeNull) { 281 TEST_F(FileSystemProviderFileStreamReader, Read_ExpectedModificationTimeNull) {
273 EventLogger logger; 282 EventLogger logger;
274 283
275 const int64 initial_offset = 0; 284 const int64 initial_offset = 0;
276 FileStreamReader reader(NULL, file_url_, initial_offset, base::Time()); 285 FileStreamReader reader(NULL, file_url_, initial_offset, base::Time());
277 286
278 scoped_refptr<net::IOBuffer> io_buffer(new net::IOBuffer(kFakeFileSize)); 287 scoped_refptr<net::IOBuffer> io_buffer(
288 new net::IOBuffer(fake_file_.metadata.size));
279 const int result = 289 const int result =
280 reader.Read(io_buffer.get(), 290 reader.Read(io_buffer.get(),
281 kFakeFileSize, 291 fake_file_.metadata.size,
282 base::Bind(&EventLogger::OnRead, logger.GetWeakPtr())); 292 base::Bind(&EventLogger::OnRead, logger.GetWeakPtr()));
283 293
284 EXPECT_EQ(net::ERR_IO_PENDING, result); 294 EXPECT_EQ(net::ERR_IO_PENDING, result);
285 base::RunLoop().RunUntilIdle(); 295 base::RunLoop().RunUntilIdle();
286 296
287 ASSERT_EQ(1u, logger.results().size()); 297 ASSERT_EQ(1u, logger.results().size());
288 EXPECT_EQ(kFakeFileSize, static_cast<size_t>(logger.results()[0])); 298 EXPECT_EQ(fake_file_.metadata.size, logger.results()[0]);
289 299
290 std::string buffer_as_string(io_buffer->data(), kFakeFileSize); 300 std::string buffer_as_string(io_buffer->data(), fake_file_.metadata.size);
291 EXPECT_EQ(kFakeFileText, buffer_as_string); 301 EXPECT_EQ(fake_file_.contents, buffer_as_string);
292 } 302 }
293 303
294 TEST_F(FileSystemProviderFileStreamReader, GetLength) { 304 TEST_F(FileSystemProviderFileStreamReader, GetLength) {
295 EventLogger logger; 305 EventLogger logger;
296 306
297 const int64 initial_offset = 0; 307 const int64 initial_offset = 0;
298 FileStreamReader reader( 308 FileStreamReader reader(
299 NULL, file_url_, initial_offset, file_modification_time_); 309 NULL, file_url_, initial_offset, fake_file_.metadata.modification_time);
300 310
301 const int result = reader.GetLength( 311 const int result = reader.GetLength(
302 base::Bind(&EventLogger::OnGetLength, logger.GetWeakPtr())); 312 base::Bind(&EventLogger::OnGetLength, logger.GetWeakPtr()));
303 EXPECT_EQ(net::ERR_IO_PENDING, result); 313 EXPECT_EQ(net::ERR_IO_PENDING, result);
304 base::RunLoop().RunUntilIdle(); 314 base::RunLoop().RunUntilIdle();
305 315
306 ASSERT_EQ(1u, logger.results().size()); 316 ASSERT_EQ(1u, logger.results().size());
307 EXPECT_LT(0, logger.results()[0]); 317 EXPECT_LT(0, logger.results()[0]);
308 EXPECT_EQ(kFakeFileSize, static_cast<size_t>(logger.results()[0])); 318 EXPECT_EQ(fake_file_.metadata.size, logger.results()[0]);
309 } 319 }
310 320
311 TEST_F(FileSystemProviderFileStreamReader, GetLength_WrongFile) { 321 TEST_F(FileSystemProviderFileStreamReader, GetLength_WrongFile) {
312 EventLogger logger; 322 EventLogger logger;
313 323
314 const int64 initial_offset = 0; 324 const int64 initial_offset = 0;
315 FileStreamReader reader( 325 FileStreamReader reader(NULL,
316 NULL, wrong_file_url_, initial_offset, file_modification_time_); 326 wrong_file_url_,
327 initial_offset,
328 fake_file_.metadata.modification_time);
317 329
318 const int result = reader.GetLength( 330 const int result = reader.GetLength(
319 base::Bind(&EventLogger::OnGetLength, logger.GetWeakPtr())); 331 base::Bind(&EventLogger::OnGetLength, logger.GetWeakPtr()));
320 EXPECT_EQ(net::ERR_IO_PENDING, result); 332 EXPECT_EQ(net::ERR_IO_PENDING, result);
321 base::RunLoop().RunUntilIdle(); 333 base::RunLoop().RunUntilIdle();
322 334
323 ASSERT_EQ(1u, logger.results().size()); 335 ASSERT_EQ(1u, logger.results().size());
324 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, logger.results()[0]); 336 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, logger.results()[0]);
325 } 337 }
326 338
(...skipping 19 matching lines...) Expand all
346 const int64 initial_offset = 0; 358 const int64 initial_offset = 0;
347 FileStreamReader reader(NULL, file_url_, initial_offset, base::Time()); 359 FileStreamReader reader(NULL, file_url_, initial_offset, base::Time());
348 360
349 const int result = reader.GetLength( 361 const int result = reader.GetLength(
350 base::Bind(&EventLogger::OnGetLength, logger.GetWeakPtr())); 362 base::Bind(&EventLogger::OnGetLength, logger.GetWeakPtr()));
351 EXPECT_EQ(net::ERR_IO_PENDING, result); 363 EXPECT_EQ(net::ERR_IO_PENDING, result);
352 base::RunLoop().RunUntilIdle(); 364 base::RunLoop().RunUntilIdle();
353 365
354 ASSERT_EQ(1u, logger.results().size()); 366 ASSERT_EQ(1u, logger.results().size());
355 EXPECT_LT(0, logger.results()[0]); 367 EXPECT_LT(0, logger.results()[0]);
356 EXPECT_EQ(kFakeFileSize, static_cast<size_t>(logger.results()[0])); 368 EXPECT_EQ(fake_file_.metadata.size, logger.results()[0]);
357 } 369 }
358 370
359 } // namespace file_system_provider 371 } // namespace file_system_provider
360 } // namespace chromeos 372 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698