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

Side by Side Diff: net/base/file_stream_unittest.cc

Issue 642403002: git cl format the first third of the net/base directory (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "net/base/file_stream.h" 5 #include "net/base/file_stream.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/files/file.h" 9 #include "base/files/file.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 65
66 private: 66 private:
67 base::FilePath temp_file_path_; 67 base::FilePath temp_file_path_;
68 }; 68 };
69 69
70 namespace { 70 namespace {
71 71
72 TEST_F(FileStreamTest, OpenExplicitClose) { 72 TEST_F(FileStreamTest, OpenExplicitClose) {
73 TestCompletionCallback callback; 73 TestCompletionCallback callback;
74 FileStream stream(base::MessageLoopProxy::current()); 74 FileStream stream(base::MessageLoopProxy::current());
75 int flags = base::File::FLAG_OPEN | 75 int flags =
76 base::File::FLAG_READ | 76 base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
77 base::File::FLAG_ASYNC;
78 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 77 int rv = stream.Open(temp_file_path(), flags, callback.callback());
79 EXPECT_EQ(ERR_IO_PENDING, rv); 78 EXPECT_EQ(ERR_IO_PENDING, rv);
80 EXPECT_EQ(OK, callback.WaitForResult()); 79 EXPECT_EQ(OK, callback.WaitForResult());
81 EXPECT_TRUE(stream.IsOpen()); 80 EXPECT_TRUE(stream.IsOpen());
82 EXPECT_TRUE(stream.GetFileForTesting().IsValid()); 81 EXPECT_TRUE(stream.GetFileForTesting().IsValid());
83 EXPECT_EQ(ERR_IO_PENDING, stream.Close(callback.callback())); 82 EXPECT_EQ(ERR_IO_PENDING, stream.Close(callback.callback()));
84 EXPECT_EQ(OK, callback.WaitForResult()); 83 EXPECT_EQ(OK, callback.WaitForResult());
85 EXPECT_FALSE(stream.IsOpen()); 84 EXPECT_FALSE(stream.IsOpen());
86 EXPECT_FALSE(stream.GetFileForTesting().IsValid()); 85 EXPECT_FALSE(stream.GetFileForTesting().IsValid());
87 } 86 }
88 87
89 TEST_F(FileStreamTest, OpenExplicitCloseOrphaned) { 88 TEST_F(FileStreamTest, OpenExplicitCloseOrphaned) {
90 TestCompletionCallback callback; 89 TestCompletionCallback callback;
91 scoped_ptr<FileStream> stream(new FileStream( 90 scoped_ptr<FileStream> stream(
92 base::MessageLoopProxy::current())); 91 new FileStream(base::MessageLoopProxy::current()));
93 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 92 int flags =
94 base::File::FLAG_ASYNC; 93 base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
95 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 94 int rv = stream->Open(temp_file_path(), flags, callback.callback());
96 EXPECT_EQ(ERR_IO_PENDING, rv); 95 EXPECT_EQ(ERR_IO_PENDING, rv);
97 EXPECT_EQ(OK, callback.WaitForResult()); 96 EXPECT_EQ(OK, callback.WaitForResult());
98 EXPECT_TRUE(stream->IsOpen()); 97 EXPECT_TRUE(stream->IsOpen());
99 EXPECT_TRUE(stream->GetFileForTesting().IsValid()); 98 EXPECT_TRUE(stream->GetFileForTesting().IsValid());
100 EXPECT_EQ(ERR_IO_PENDING, stream->Close(callback.callback())); 99 EXPECT_EQ(ERR_IO_PENDING, stream->Close(callback.callback()));
101 stream.reset(); 100 stream.reset();
102 // File isn't actually closed yet. 101 // File isn't actually closed yet.
103 base::RunLoop runloop; 102 base::RunLoop runloop;
104 runloop.RunUntilIdle(); 103 runloop.RunUntilIdle();
105 // The file should now be closed, though the callback has not been called. 104 // The file should now be closed, though the callback has not been called.
106 } 105 }
107 106
108 // Test the use of FileStream with a file handle provided at construction. 107 // Test the use of FileStream with a file handle provided at construction.
109 TEST_F(FileStreamTest, UseFileHandle) { 108 TEST_F(FileStreamTest, UseFileHandle) {
110 int rv = 0; 109 int rv = 0;
111 TestCompletionCallback callback; 110 TestCompletionCallback callback;
112 TestInt64CompletionCallback callback64; 111 TestInt64CompletionCallback callback64;
113 // 1. Test reading with a file handle. 112 // 1. Test reading with a file handle.
114 ASSERT_EQ(kTestDataSize, 113 ASSERT_EQ(kTestDataSize,
115 base::WriteFile(temp_file_path(), kTestData, kTestDataSize)); 114 base::WriteFile(temp_file_path(), kTestData, kTestDataSize));
116 int flags = base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_READ | 115 int flags = base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_READ |
117 base::File::FLAG_ASYNC; 116 base::File::FLAG_ASYNC;
118 base::File file(temp_file_path(), flags); 117 base::File file(temp_file_path(), flags);
119 118
120 // Seek to the beginning of the file and read. 119 // Seek to the beginning of the file and read.
121 scoped_ptr<FileStream> read_stream( 120 scoped_ptr<FileStream> read_stream(
122 new FileStream(file.Pass(), base::MessageLoopProxy::current())); 121 new FileStream(file.Pass(), base::MessageLoopProxy::current()));
123 ASSERT_EQ(ERR_IO_PENDING, 122 ASSERT_EQ(
124 read_stream->Seek(base::File::FROM_BEGIN, 0, 123 ERR_IO_PENDING,
125 callback64.callback())); 124 read_stream->Seek(base::File::FROM_BEGIN, 0, callback64.callback()));
126 ASSERT_EQ(0, callback64.WaitForResult()); 125 ASSERT_EQ(0, callback64.WaitForResult());
127 // Read into buffer and compare. 126 // Read into buffer and compare.
128 scoped_refptr<IOBufferWithSize> read_buffer = 127 scoped_refptr<IOBufferWithSize> read_buffer =
129 new IOBufferWithSize(kTestDataSize); 128 new IOBufferWithSize(kTestDataSize);
130 rv = read_stream->Read(read_buffer.get(), kTestDataSize, callback.callback()); 129 rv = read_stream->Read(read_buffer.get(), kTestDataSize, callback.callback());
131 ASSERT_EQ(kTestDataSize, callback.GetResult(rv)); 130 ASSERT_EQ(kTestDataSize, callback.GetResult(rv));
132 ASSERT_EQ(0, memcmp(kTestData, read_buffer->data(), kTestDataSize)); 131 ASSERT_EQ(0, memcmp(kTestData, read_buffer->data(), kTestDataSize));
133 read_stream.reset(); 132 read_stream.reset();
134 133
135 // 2. Test writing with a file handle. 134 // 2. Test writing with a file handle.
136 base::DeleteFile(temp_file_path(), false); 135 base::DeleteFile(temp_file_path(), false);
137 flags = base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_WRITE | 136 flags = base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_WRITE |
138 base::File::FLAG_ASYNC; 137 base::File::FLAG_ASYNC;
139 file.Initialize(temp_file_path(), flags); 138 file.Initialize(temp_file_path(), flags);
140 139
141 scoped_ptr<FileStream> write_stream( 140 scoped_ptr<FileStream> write_stream(
142 new FileStream(file.Pass(), base::MessageLoopProxy::current())); 141 new FileStream(file.Pass(), base::MessageLoopProxy::current()));
143 ASSERT_EQ(ERR_IO_PENDING, 142 ASSERT_EQ(
144 write_stream->Seek(base::File::FROM_BEGIN, 0, 143 ERR_IO_PENDING,
145 callback64.callback())); 144 write_stream->Seek(base::File::FROM_BEGIN, 0, callback64.callback()));
146 ASSERT_EQ(0, callback64.WaitForResult()); 145 ASSERT_EQ(0, callback64.WaitForResult());
147 scoped_refptr<IOBufferWithSize> write_buffer = CreateTestDataBuffer(); 146 scoped_refptr<IOBufferWithSize> write_buffer = CreateTestDataBuffer();
148 rv = write_stream->Write(write_buffer.get(), kTestDataSize, 147 rv = write_stream->Write(
149 callback.callback()); 148 write_buffer.get(), kTestDataSize, callback.callback());
150 ASSERT_EQ(kTestDataSize, callback.GetResult(rv)); 149 ASSERT_EQ(kTestDataSize, callback.GetResult(rv));
151 write_stream.reset(); 150 write_stream.reset();
152 151
153 // Read into buffer and compare to make sure the handle worked fine. 152 // Read into buffer and compare to make sure the handle worked fine.
154 ASSERT_EQ(kTestDataSize, 153 ASSERT_EQ(
155 base::ReadFile(temp_file_path(), read_buffer->data(), 154 kTestDataSize,
156 kTestDataSize)); 155 base::ReadFile(temp_file_path(), read_buffer->data(), kTestDataSize));
157 ASSERT_EQ(0, memcmp(kTestData, read_buffer->data(), kTestDataSize)); 156 ASSERT_EQ(0, memcmp(kTestData, read_buffer->data(), kTestDataSize));
158 } 157 }
159 158
160 TEST_F(FileStreamTest, UseClosedStream) { 159 TEST_F(FileStreamTest, UseClosedStream) {
161 int rv = 0; 160 int rv = 0;
162 TestCompletionCallback callback; 161 TestCompletionCallback callback;
163 TestInt64CompletionCallback callback64; 162 TestInt64CompletionCallback callback64;
164 163
165 FileStream stream(base::MessageLoopProxy::current()); 164 FileStream stream(base::MessageLoopProxy::current());
166 165
167 EXPECT_FALSE(stream.IsOpen()); 166 EXPECT_FALSE(stream.IsOpen());
168 167
169 // Try seeking... 168 // Try seeking...
170 rv = stream.Seek(base::File::FROM_BEGIN, 5, callback64.callback()); 169 rv = stream.Seek(base::File::FROM_BEGIN, 5, callback64.callback());
171 EXPECT_EQ(ERR_UNEXPECTED, callback64.GetResult(rv)); 170 EXPECT_EQ(ERR_UNEXPECTED, callback64.GetResult(rv));
172 171
173 // Try reading... 172 // Try reading...
174 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(10); 173 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(10);
175 rv = stream.Read(buf.get(), buf->size(), callback.callback()); 174 rv = stream.Read(buf.get(), buf->size(), callback.callback());
176 EXPECT_EQ(ERR_UNEXPECTED, callback.GetResult(rv)); 175 EXPECT_EQ(ERR_UNEXPECTED, callback.GetResult(rv));
177 } 176 }
178 177
179 TEST_F(FileStreamTest, Read) { 178 TEST_F(FileStreamTest, Read) {
180 int64 file_size; 179 int64 file_size;
181 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 180 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
182 181
183 FileStream stream(base::MessageLoopProxy::current()); 182 FileStream stream(base::MessageLoopProxy::current());
184 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 183 int flags =
185 base::File::FLAG_ASYNC; 184 base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
186 TestCompletionCallback callback; 185 TestCompletionCallback callback;
187 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 186 int rv = stream.Open(temp_file_path(), flags, callback.callback());
188 EXPECT_EQ(OK, callback.GetResult(rv)); 187 EXPECT_EQ(OK, callback.GetResult(rv));
189 188
190 int total_bytes_read = 0; 189 int total_bytes_read = 0;
191 190
192 std::string data_read; 191 std::string data_read;
193 for (;;) { 192 for (;;) {
194 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); 193 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
195 rv = stream.Read(buf.get(), buf->size(), callback.callback()); 194 rv = stream.Read(buf.get(), buf->size(), callback.callback());
196 rv = callback.GetResult(rv); 195 rv = callback.GetResult(rv);
197 EXPECT_LE(0, rv); 196 EXPECT_LE(0, rv);
198 if (rv <= 0) 197 if (rv <= 0)
199 break; 198 break;
200 total_bytes_read += rv; 199 total_bytes_read += rv;
201 data_read.append(buf->data(), rv); 200 data_read.append(buf->data(), rv);
202 } 201 }
203 EXPECT_EQ(file_size, total_bytes_read); 202 EXPECT_EQ(file_size, total_bytes_read);
204 EXPECT_EQ(kTestData, data_read); 203 EXPECT_EQ(kTestData, data_read);
205 } 204 }
206 205
207 TEST_F(FileStreamTest, Read_EarlyDelete) { 206 TEST_F(FileStreamTest, Read_EarlyDelete) {
208 int64 file_size; 207 int64 file_size;
209 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 208 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
210 209
211 scoped_ptr<FileStream> stream( 210 scoped_ptr<FileStream> stream(
212 new FileStream(base::MessageLoopProxy::current())); 211 new FileStream(base::MessageLoopProxy::current()));
213 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 212 int flags =
214 base::File::FLAG_ASYNC; 213 base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
215 TestCompletionCallback callback; 214 TestCompletionCallback callback;
216 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 215 int rv = stream->Open(temp_file_path(), flags, callback.callback());
217 EXPECT_EQ(ERR_IO_PENDING, rv); 216 EXPECT_EQ(ERR_IO_PENDING, rv);
218 EXPECT_EQ(OK, callback.WaitForResult()); 217 EXPECT_EQ(OK, callback.WaitForResult());
219 218
220 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); 219 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
221 rv = stream->Read(buf.get(), buf->size(), callback.callback()); 220 rv = stream->Read(buf.get(), buf->size(), callback.callback());
222 stream.reset(); // Delete instead of closing it. 221 stream.reset(); // Delete instead of closing it.
223 if (rv < 0) { 222 if (rv < 0) {
224 EXPECT_EQ(ERR_IO_PENDING, rv); 223 EXPECT_EQ(ERR_IO_PENDING, rv);
225 // The callback should not be called if the request is cancelled. 224 // The callback should not be called if the request is cancelled.
226 base::RunLoop().RunUntilIdle(); 225 base::RunLoop().RunUntilIdle();
227 EXPECT_FALSE(callback.have_result()); 226 EXPECT_FALSE(callback.have_result());
228 } else { 227 } else {
229 EXPECT_EQ(std::string(kTestData, rv), std::string(buf->data(), rv)); 228 EXPECT_EQ(std::string(kTestData, rv), std::string(buf->data(), rv));
230 } 229 }
231 } 230 }
232 231
233 TEST_F(FileStreamTest, Read_FromOffset) { 232 TEST_F(FileStreamTest, Read_FromOffset) {
234 int64 file_size; 233 int64 file_size;
235 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 234 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
236 235
237 FileStream stream(base::MessageLoopProxy::current()); 236 FileStream stream(base::MessageLoopProxy::current());
238 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 237 int flags =
239 base::File::FLAG_ASYNC; 238 base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
240 TestCompletionCallback callback; 239 TestCompletionCallback callback;
241 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 240 int rv = stream.Open(temp_file_path(), flags, callback.callback());
242 EXPECT_EQ(ERR_IO_PENDING, rv); 241 EXPECT_EQ(ERR_IO_PENDING, rv);
243 EXPECT_EQ(OK, callback.WaitForResult()); 242 EXPECT_EQ(OK, callback.WaitForResult());
244 243
245 TestInt64CompletionCallback callback64; 244 TestInt64CompletionCallback callback64;
246 const int64 kOffset = 3; 245 const int64 kOffset = 3;
247 rv = stream.Seek(base::File::FROM_BEGIN, kOffset, callback64.callback()); 246 rv = stream.Seek(base::File::FROM_BEGIN, kOffset, callback64.callback());
248 ASSERT_EQ(ERR_IO_PENDING, rv); 247 ASSERT_EQ(ERR_IO_PENDING, rv);
249 int64 new_offset = callback64.WaitForResult(); 248 int64 new_offset = callback64.WaitForResult();
(...skipping 12 matching lines...) Expand all
262 break; 261 break;
263 total_bytes_read += rv; 262 total_bytes_read += rv;
264 data_read.append(buf->data(), rv); 263 data_read.append(buf->data(), rv);
265 } 264 }
266 EXPECT_EQ(file_size - kOffset, total_bytes_read); 265 EXPECT_EQ(file_size - kOffset, total_bytes_read);
267 EXPECT_EQ(kTestData + kOffset, data_read); 266 EXPECT_EQ(kTestData + kOffset, data_read);
268 } 267 }
269 268
270 TEST_F(FileStreamTest, SeekAround) { 269 TEST_F(FileStreamTest, SeekAround) {
271 FileStream stream(base::MessageLoopProxy::current()); 270 FileStream stream(base::MessageLoopProxy::current());
272 int flags = base::File::FLAG_OPEN | base::File::FLAG_ASYNC | 271 int flags =
273 base::File::FLAG_READ; 272 base::File::FLAG_OPEN | base::File::FLAG_ASYNC | base::File::FLAG_READ;
274 TestCompletionCallback callback; 273 TestCompletionCallback callback;
275 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 274 int rv = stream.Open(temp_file_path(), flags, callback.callback());
276 EXPECT_EQ(ERR_IO_PENDING, rv); 275 EXPECT_EQ(ERR_IO_PENDING, rv);
277 EXPECT_EQ(OK, callback.WaitForResult()); 276 EXPECT_EQ(OK, callback.WaitForResult());
278 277
279 TestInt64CompletionCallback callback64; 278 TestInt64CompletionCallback callback64;
280 279
281 const int64 kOffset = 3; 280 const int64 kOffset = 3;
282 rv = stream.Seek(base::File::FROM_BEGIN, kOffset, callback64.callback()); 281 rv = stream.Seek(base::File::FROM_BEGIN, kOffset, callback64.callback());
283 ASSERT_EQ(ERR_IO_PENDING, rv); 282 ASSERT_EQ(ERR_IO_PENDING, rv);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 352 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
354 EXPECT_EQ(file_size, rv); 353 EXPECT_EQ(file_size, rv);
355 } 354 }
356 } 355 }
357 356
358 TEST_F(FileStreamTest, Write_FromOffset) { 357 TEST_F(FileStreamTest, Write_FromOffset) {
359 int64 file_size; 358 int64 file_size;
360 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 359 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
361 360
362 FileStream stream(base::MessageLoopProxy::current()); 361 FileStream stream(base::MessageLoopProxy::current());
363 int flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE | 362 int flags =
364 base::File::FLAG_ASYNC; 363 base::File::FLAG_OPEN | base::File::FLAG_WRITE | base::File::FLAG_ASYNC;
365 TestCompletionCallback callback; 364 TestCompletionCallback callback;
366 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 365 int rv = stream.Open(temp_file_path(), flags, callback.callback());
367 EXPECT_EQ(ERR_IO_PENDING, rv); 366 EXPECT_EQ(ERR_IO_PENDING, rv);
368 EXPECT_EQ(OK, callback.WaitForResult()); 367 EXPECT_EQ(OK, callback.WaitForResult());
369 368
370 TestInt64CompletionCallback callback64; 369 TestInt64CompletionCallback callback64;
371 const int64 kOffset = 0; 370 const int64 kOffset = 0;
372 rv = stream.Seek(base::File::FROM_END, kOffset, callback64.callback()); 371 rv = stream.Seek(base::File::FROM_END, kOffset, callback64.callback());
373 ASSERT_EQ(ERR_IO_PENDING, rv); 372 ASSERT_EQ(ERR_IO_PENDING, rv);
374 int64 new_offset = callback64.WaitForResult(); 373 int64 new_offset = callback64.WaitForResult();
375 EXPECT_EQ(kTestDataSize, new_offset); 374 EXPECT_EQ(kTestDataSize, new_offset);
376 375
377 int total_bytes_written = 0; 376 int total_bytes_written = 0;
378 377
379 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 378 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
380 scoped_refptr<DrainableIOBuffer> drainable = 379 scoped_refptr<DrainableIOBuffer> drainable =
381 new DrainableIOBuffer(buf.get(), buf->size()); 380 new DrainableIOBuffer(buf.get(), buf->size());
382 while (total_bytes_written != kTestDataSize) { 381 while (total_bytes_written != kTestDataSize) {
383 rv = stream.Write(drainable.get(), drainable->BytesRemaining(), 382 rv = stream.Write(
384 callback.callback()); 383 drainable.get(), drainable->BytesRemaining(), callback.callback());
385 if (rv == ERR_IO_PENDING) 384 if (rv == ERR_IO_PENDING)
386 rv = callback.WaitForResult(); 385 rv = callback.WaitForResult();
387 EXPECT_LT(0, rv); 386 EXPECT_LT(0, rv);
388 if (rv <= 0) 387 if (rv <= 0)
389 break; 388 break;
390 drainable->DidConsume(rv); 389 drainable->DidConsume(rv);
391 total_bytes_written += rv; 390 total_bytes_written += rv;
392 } 391 }
393 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 392 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
394 EXPECT_EQ(file_size, kTestDataSize * 2); 393 EXPECT_EQ(file_size, kTestDataSize * 2);
(...skipping 28 matching lines...) Expand all
423 } 422 }
424 EXPECT_EQ(file_size, total_bytes_read); 423 EXPECT_EQ(file_size, total_bytes_read);
425 EXPECT_TRUE(data_read == kTestData); 424 EXPECT_TRUE(data_read == kTestData);
426 425
427 int total_bytes_written = 0; 426 int total_bytes_written = 0;
428 427
429 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 428 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
430 scoped_refptr<DrainableIOBuffer> drainable = 429 scoped_refptr<DrainableIOBuffer> drainable =
431 new DrainableIOBuffer(buf.get(), buf->size()); 430 new DrainableIOBuffer(buf.get(), buf->size());
432 while (total_bytes_written != kTestDataSize) { 431 while (total_bytes_written != kTestDataSize) {
433 rv = stream->Write(drainable.get(), drainable->BytesRemaining(), 432 rv = stream->Write(
434 callback.callback()); 433 drainable.get(), drainable->BytesRemaining(), callback.callback());
435 if (rv == ERR_IO_PENDING) 434 if (rv == ERR_IO_PENDING)
436 rv = callback.WaitForResult(); 435 rv = callback.WaitForResult();
437 EXPECT_LT(0, rv); 436 EXPECT_LT(0, rv);
438 if (rv <= 0) 437 if (rv <= 0)
439 break; 438 break;
440 drainable->DidConsume(rv); 439 drainable->DidConsume(rv);
441 total_bytes_written += rv; 440 total_bytes_written += rv;
442 } 441 }
443 442
444 stream.reset(); 443 stream.reset();
(...skipping 20 matching lines...) Expand all
465 ASSERT_EQ(ERR_IO_PENDING, rv); 464 ASSERT_EQ(ERR_IO_PENDING, rv);
466 int64 offset = callback64.WaitForResult(); 465 int64 offset = callback64.WaitForResult();
467 EXPECT_EQ(offset, file_size); 466 EXPECT_EQ(offset, file_size);
468 467
469 int total_bytes_written = 0; 468 int total_bytes_written = 0;
470 469
471 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 470 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
472 scoped_refptr<DrainableIOBuffer> drainable = 471 scoped_refptr<DrainableIOBuffer> drainable =
473 new DrainableIOBuffer(buf.get(), buf->size()); 472 new DrainableIOBuffer(buf.get(), buf->size());
474 while (total_bytes_written != kTestDataSize) { 473 while (total_bytes_written != kTestDataSize) {
475 rv = stream->Write(drainable.get(), drainable->BytesRemaining(), 474 rv = stream->Write(
476 callback.callback()); 475 drainable.get(), drainable->BytesRemaining(), callback.callback());
477 if (rv == ERR_IO_PENDING) 476 if (rv == ERR_IO_PENDING)
478 rv = callback.WaitForResult(); 477 rv = callback.WaitForResult();
479 EXPECT_LT(0, rv); 478 EXPECT_LT(0, rv);
480 if (rv <= 0) 479 if (rv <= 0)
481 break; 480 break;
482 drainable->DidConsume(rv); 481 drainable->DidConsume(rv);
483 total_bytes_written += rv; 482 total_bytes_written += rv;
484 } 483 }
485 484
486 EXPECT_EQ(kTestDataSize, total_bytes_written); 485 EXPECT_EQ(kTestDataSize, total_bytes_written);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 rv = stream_->Write( 561 rv = stream_->Write(
563 drainable_.get(), drainable_->BytesRemaining(), callback.callback()); 562 drainable_.get(), drainable_->BytesRemaining(), callback.callback());
564 DCHECK_EQ(ERR_IO_PENDING, rv); 563 DCHECK_EQ(ERR_IO_PENDING, rv);
565 rv = callback.WaitForResult(); 564 rv = callback.WaitForResult();
566 drainable_->DidConsume(total_bytes_written); 565 drainable_->DidConsume(total_bytes_written);
567 *total_bytes_written_ += total_bytes_written; 566 *total_bytes_written_ += total_bytes_written;
568 *total_bytes_read_ += total_bytes_read; 567 *total_bytes_read_ += total_bytes_read;
569 *data_read_ += data_read; 568 *data_read_ += data_read;
570 } else { // We're done writing all data. Start reading the data. 569 } else { // We're done writing all data. Start reading the data.
571 TestInt64CompletionCallback callback64; 570 TestInt64CompletionCallback callback64;
572 EXPECT_EQ(ERR_IO_PENDING, 571 EXPECT_EQ(
573 stream_->Seek(base::File::FROM_BEGIN, 0, 572 ERR_IO_PENDING,
574 callback64.callback())); 573 stream_->Seek(base::File::FROM_BEGIN, 0, callback64.callback()));
575 { 574 {
576 base::MessageLoop::ScopedNestableTaskAllower allow( 575 base::MessageLoop::ScopedNestableTaskAllower allow(
577 base::MessageLoop::current()); 576 base::MessageLoop::current());
578 EXPECT_LE(0, callback64.WaitForResult()); 577 EXPECT_LE(0, callback64.WaitForResult());
579 } 578 }
580 579
581 TestCompletionCallback callback; 580 TestCompletionCallback callback;
582 for (;;) { 581 for (;;) {
583 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); 582 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
584 rv = stream_->Read(buf.get(), buf->size(), callback.callback()); 583 rv = stream_->Read(buf.get(), buf->size(), callback.callback());
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
629 EXPECT_EQ(OK, open_callback.WaitForResult()); 628 EXPECT_EQ(OK, open_callback.WaitForResult());
630 629
631 TestInt64CompletionCallback callback64; 630 TestInt64CompletionCallback callback64;
632 EXPECT_EQ(ERR_IO_PENDING, 631 EXPECT_EQ(ERR_IO_PENDING,
633 stream->Seek(base::File::FROM_END, 0, callback64.callback())); 632 stream->Seek(base::File::FROM_END, 0, callback64.callback()));
634 EXPECT_EQ(file_size, callback64.WaitForResult()); 633 EXPECT_EQ(file_size, callback64.WaitForResult());
635 634
636 int total_bytes_written = 0; 635 int total_bytes_written = 0;
637 int total_bytes_read = 0; 636 int total_bytes_read = 0;
638 std::string data_read; 637 std::string data_read;
639 TestWriteReadCompletionCallback callback(stream.get(), &total_bytes_written, 638 TestWriteReadCompletionCallback callback(
640 &total_bytes_read, &data_read); 639 stream.get(), &total_bytes_written, &total_bytes_read, &data_read);
641 640
642 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 641 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
643 rv = stream->Write(buf.get(), buf->size(), callback.callback()); 642 rv = stream->Write(buf.get(), buf->size(), callback.callback());
644 if (rv == ERR_IO_PENDING) 643 if (rv == ERR_IO_PENDING)
645 rv = callback.WaitForResult(); 644 rv = callback.WaitForResult();
646 EXPECT_LT(0, rv); 645 EXPECT_LT(0, rv);
647 EXPECT_EQ(kTestDataSize, total_bytes_written); 646 EXPECT_EQ(kTestDataSize, total_bytes_written);
648 647
649 stream.reset(); 648 stream.reset();
650 649
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 752 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
754 EXPECT_EQ(kTestDataSize * 2, file_size); 753 EXPECT_EQ(kTestDataSize * 2, file_size);
755 } 754 }
756 755
757 TEST_F(FileStreamTest, OpenAndDelete) { 756 TEST_F(FileStreamTest, OpenAndDelete) {
758 scoped_refptr<base::SequencedWorkerPool> pool( 757 scoped_refptr<base::SequencedWorkerPool> pool(
759 new base::SequencedWorkerPool(1, "StreamTest")); 758 new base::SequencedWorkerPool(1, "StreamTest"));
760 759
761 bool prev = base::ThreadRestrictions::SetIOAllowed(false); 760 bool prev = base::ThreadRestrictions::SetIOAllowed(false);
762 scoped_ptr<FileStream> stream(new FileStream(pool.get())); 761 scoped_ptr<FileStream> stream(new FileStream(pool.get()));
763 int flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE | 762 int flags =
764 base::File::FLAG_ASYNC; 763 base::File::FLAG_OPEN | base::File::FLAG_WRITE | base::File::FLAG_ASYNC;
765 TestCompletionCallback open_callback; 764 TestCompletionCallback open_callback;
766 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); 765 int rv = stream->Open(temp_file_path(), flags, open_callback.callback());
767 EXPECT_EQ(ERR_IO_PENDING, rv); 766 EXPECT_EQ(ERR_IO_PENDING, rv);
768 767
769 // Delete the stream without waiting for the open operation to be 768 // Delete the stream without waiting for the open operation to be
770 // complete. Should be safe. 769 // complete. Should be safe.
771 stream.reset(); 770 stream.reset();
772 771
773 // Force an operation through the pool. 772 // Force an operation through the pool.
774 scoped_ptr<FileStream> stream2(new FileStream(pool.get())); 773 scoped_ptr<FileStream> stream2(new FileStream(pool.get()));
775 TestCompletionCallback open_callback2; 774 TestCompletionCallback open_callback2;
776 rv = stream2->Open(temp_file_path(), flags, open_callback2.callback()); 775 rv = stream2->Open(temp_file_path(), flags, open_callback2.callback());
777 EXPECT_EQ(OK, open_callback2.GetResult(rv)); 776 EXPECT_EQ(OK, open_callback2.GetResult(rv));
778 stream2.reset(); 777 stream2.reset();
779 778
780 pool->Shutdown(); 779 pool->Shutdown();
781 780
782 // open_callback won't be called. 781 // open_callback won't be called.
783 base::RunLoop().RunUntilIdle(); 782 base::RunLoop().RunUntilIdle();
784 EXPECT_FALSE(open_callback.have_result()); 783 EXPECT_FALSE(open_callback.have_result());
785 base::ThreadRestrictions::SetIOAllowed(prev); 784 base::ThreadRestrictions::SetIOAllowed(prev);
786 } 785 }
787 786
788 // Verify that Write() errors are mapped correctly. 787 // Verify that Write() errors are mapped correctly.
789 TEST_F(FileStreamTest, WriteError) { 788 TEST_F(FileStreamTest, WriteError) {
790 // Try opening file as read-only and then writing to it using FileStream. 789 // Try opening file as read-only and then writing to it using FileStream.
791 uint32 flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 790 uint32 flags =
792 base::File::FLAG_ASYNC; 791 base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
793 792
794 base::File file(temp_file_path(), flags); 793 base::File file(temp_file_path(), flags);
795 ASSERT_TRUE(file.IsValid()); 794 ASSERT_TRUE(file.IsValid());
796 795
797 scoped_ptr<FileStream> stream( 796 scoped_ptr<FileStream> stream(
798 new FileStream(file.Pass(), base::MessageLoopProxy::current())); 797 new FileStream(file.Pass(), base::MessageLoopProxy::current()));
799 798
800 scoped_refptr<IOBuffer> buf = new IOBuffer(1); 799 scoped_refptr<IOBuffer> buf = new IOBuffer(1);
801 buf->data()[0] = 0; 800 buf->data()[0] = 0;
802 801
803 TestCompletionCallback callback; 802 TestCompletionCallback callback;
804 int rv = stream->Write(buf.get(), 1, callback.callback()); 803 int rv = stream->Write(buf.get(), 1, callback.callback());
805 if (rv == ERR_IO_PENDING) 804 if (rv == ERR_IO_PENDING)
806 rv = callback.WaitForResult(); 805 rv = callback.WaitForResult();
807 EXPECT_LT(rv, 0); 806 EXPECT_LT(rv, 0);
808 807
809 stream.reset(); 808 stream.reset();
810 base::RunLoop().RunUntilIdle(); 809 base::RunLoop().RunUntilIdle();
811 } 810 }
812 811
813 // Verify that Read() errors are mapped correctly. 812 // Verify that Read() errors are mapped correctly.
814 TEST_F(FileStreamTest, ReadError) { 813 TEST_F(FileStreamTest, ReadError) {
815 // Try opening file for write and then reading from it using FileStream. 814 // Try opening file for write and then reading from it using FileStream.
816 uint32 flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE | 815 uint32 flags =
817 base::File::FLAG_ASYNC; 816 base::File::FLAG_OPEN | base::File::FLAG_WRITE | base::File::FLAG_ASYNC;
818 817
819 base::File file(temp_file_path(), flags); 818 base::File file(temp_file_path(), flags);
820 ASSERT_TRUE(file.IsValid()); 819 ASSERT_TRUE(file.IsValid());
821 820
822 scoped_ptr<FileStream> stream( 821 scoped_ptr<FileStream> stream(
823 new FileStream(file.Pass(), base::MessageLoopProxy::current())); 822 new FileStream(file.Pass(), base::MessageLoopProxy::current()));
824 823
825 scoped_refptr<IOBuffer> buf = new IOBuffer(1); 824 scoped_refptr<IOBuffer> buf = new IOBuffer(1);
826 TestCompletionCallback callback; 825 TestCompletionCallback callback;
827 int rv = stream->Read(buf.get(), 1, callback.callback()); 826 int rv = stream->Read(buf.get(), 1, callback.callback());
828 if (rv == ERR_IO_PENDING) 827 if (rv == ERR_IO_PENDING)
829 rv = callback.WaitForResult(); 828 rv = callback.WaitForResult();
830 EXPECT_LT(rv, 0); 829 EXPECT_LT(rv, 0);
831 830
832 stream.reset(); 831 stream.reset();
833 base::RunLoop().RunUntilIdle(); 832 base::RunLoop().RunUntilIdle();
(...skipping 12 matching lines...) Expand all
846 // Insert the image into MediaStore. MediaStore will do some conversions, and 845 // Insert the image into MediaStore. MediaStore will do some conversions, and
847 // return the content URI. 846 // return the content URI.
848 base::FilePath path = base::InsertImageIntoMediaStore(image_file); 847 base::FilePath path = base::InsertImageIntoMediaStore(image_file);
849 EXPECT_TRUE(path.IsContentUri()); 848 EXPECT_TRUE(path.IsContentUri());
850 EXPECT_TRUE(base::PathExists(path)); 849 EXPECT_TRUE(base::PathExists(path));
851 int64 file_size; 850 int64 file_size;
852 EXPECT_TRUE(base::GetFileSize(path, &file_size)); 851 EXPECT_TRUE(base::GetFileSize(path, &file_size));
853 EXPECT_LT(0, file_size); 852 EXPECT_LT(0, file_size);
854 853
855 FileStream stream(base::MessageLoopProxy::current()); 854 FileStream stream(base::MessageLoopProxy::current());
856 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 855 int flags =
857 base::File::FLAG_ASYNC; 856 base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
858 TestCompletionCallback callback; 857 TestCompletionCallback callback;
859 int rv = stream.Open(path, flags, callback.callback()); 858 int rv = stream.Open(path, flags, callback.callback());
860 EXPECT_EQ(ERR_IO_PENDING, rv); 859 EXPECT_EQ(ERR_IO_PENDING, rv);
861 EXPECT_EQ(OK, callback.WaitForResult()); 860 EXPECT_EQ(OK, callback.WaitForResult());
862 861
863 int total_bytes_read = 0; 862 int total_bytes_read = 0;
864 863
865 std::string data_read; 864 std::string data_read;
866 for (;;) { 865 for (;;) {
867 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); 866 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
868 rv = stream.Read(buf.get(), buf->size(), callback.callback()); 867 rv = stream.Read(buf.get(), buf->size(), callback.callback());
869 if (rv == ERR_IO_PENDING) 868 if (rv == ERR_IO_PENDING)
870 rv = callback.WaitForResult(); 869 rv = callback.WaitForResult();
871 EXPECT_LE(0, rv); 870 EXPECT_LE(0, rv);
872 if (rv <= 0) 871 if (rv <= 0)
873 break; 872 break;
874 total_bytes_read += rv; 873 total_bytes_read += rv;
875 data_read.append(buf->data(), rv); 874 data_read.append(buf->data(), rv);
876 } 875 }
877 EXPECT_EQ(file_size, total_bytes_read); 876 EXPECT_EQ(file_size, total_bytes_read);
878 } 877 }
879 #endif 878 #endif
880 879
881 } // namespace 880 } // namespace
882 881
883 } // namespace net 882 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698