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

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

Issue 1841863002: Update monet. (Closed) Base URL: https://github.com/domokit/monet.git@master
Patch Set: Created 4 years, 8 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
« no previous file with comments | « net/base/file_stream_context_win.cc ('k') | net/base/filename_util.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
11 #include "base/message_loop/message_loop.h" 11 #include "base/message_loop/message_loop.h"
12 #include "base/message_loop/message_loop_proxy.h"
13 #include "base/path_service.h" 12 #include "base/path_service.h"
14 #include "base/run_loop.h" 13 #include "base/run_loop.h"
15 #include "base/strings/string_util.h" 14 #include "base/strings/string_util.h"
16 #include "base/synchronization/waitable_event.h" 15 #include "base/synchronization/waitable_event.h"
17 #include "base/test/test_timeouts.h" 16 #include "base/test/test_timeouts.h"
17 #include "base/thread_task_runner_handle.h"
18 #include "base/threading/sequenced_worker_pool.h" 18 #include "base/threading/sequenced_worker_pool.h"
19 #include "base/threading/thread_restrictions.h" 19 #include "base/threading/thread_restrictions.h"
20 #include "net/base/io_buffer.h" 20 #include "net/base/io_buffer.h"
21 #include "net/base/net_errors.h" 21 #include "net/base/net_errors.h"
22 #include "net/base/test_completion_callback.h" 22 #include "net/base/test_completion_callback.h"
23 #include "net/log/test_net_log.h" 23 #include "net/log/test_net_log.h"
24 #include "testing/gtest/include/gtest/gtest.h" 24 #include "testing/gtest/include/gtest/gtest.h"
25 #include "testing/platform_test.h" 25 #include "testing/platform_test.h"
26 26
27 #if defined(OS_ANDROID) 27 #if defined(OS_ANDROID)
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 const base::FilePath temp_file_path() const { return temp_file_path_; } 64 const base::FilePath temp_file_path() const { return temp_file_path_; }
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::ThreadTaskRunnerHandle::Get());
75 int flags = base::File::FLAG_OPEN | 75 int flags = base::File::FLAG_OPEN |
76 base::File::FLAG_READ | 76 base::File::FLAG_READ |
77 base::File::FLAG_ASYNC; 77 base::File::FLAG_ASYNC;
78 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 78 int rv = stream.Open(temp_file_path(), flags, callback.callback());
79 EXPECT_EQ(ERR_IO_PENDING, rv); 79 EXPECT_EQ(ERR_IO_PENDING, rv);
80 EXPECT_EQ(OK, callback.WaitForResult()); 80 EXPECT_EQ(OK, callback.WaitForResult());
81 EXPECT_TRUE(stream.IsOpen()); 81 EXPECT_TRUE(stream.IsOpen());
82 EXPECT_TRUE(stream.GetFileForTesting().IsValid()); 82 EXPECT_TRUE(stream.GetFileForTesting().IsValid());
83 EXPECT_EQ(ERR_IO_PENDING, stream.Close(callback.callback())); 83 EXPECT_EQ(ERR_IO_PENDING, stream.Close(callback.callback()));
84 EXPECT_EQ(OK, callback.WaitForResult()); 84 EXPECT_EQ(OK, callback.WaitForResult());
85 EXPECT_FALSE(stream.IsOpen()); 85 EXPECT_FALSE(stream.IsOpen());
86 EXPECT_FALSE(stream.GetFileForTesting().IsValid()); 86 EXPECT_FALSE(stream.GetFileForTesting().IsValid());
87 } 87 }
88 88
89 TEST_F(FileStreamTest, OpenExplicitCloseOrphaned) { 89 TEST_F(FileStreamTest, OpenExplicitCloseOrphaned) {
90 TestCompletionCallback callback; 90 TestCompletionCallback callback;
91 scoped_ptr<FileStream> stream(new FileStream( 91 scoped_ptr<FileStream> stream(
92 base::MessageLoopProxy::current())); 92 new FileStream(base::ThreadTaskRunnerHandle::Get()));
93 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 93 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ |
94 base::File::FLAG_ASYNC; 94 base::File::FLAG_ASYNC;
95 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 95 int rv = stream->Open(temp_file_path(), flags, callback.callback());
96 EXPECT_EQ(ERR_IO_PENDING, rv); 96 EXPECT_EQ(ERR_IO_PENDING, rv);
97 EXPECT_EQ(OK, callback.WaitForResult()); 97 EXPECT_EQ(OK, callback.WaitForResult());
98 EXPECT_TRUE(stream->IsOpen()); 98 EXPECT_TRUE(stream->IsOpen());
99 EXPECT_TRUE(stream->GetFileForTesting().IsValid()); 99 EXPECT_TRUE(stream->GetFileForTesting().IsValid());
100 EXPECT_EQ(ERR_IO_PENDING, stream->Close(callback.callback())); 100 EXPECT_EQ(ERR_IO_PENDING, stream->Close(callback.callback()));
101 stream.reset(); 101 stream.reset();
102 // File isn't actually closed yet. 102 // File isn't actually closed yet.
103 base::RunLoop runloop; 103 base::RunLoop runloop;
104 runloop.RunUntilIdle(); 104 runloop.RunUntilIdle();
105 // The file should now be closed, though the callback has not been called. 105 // The file should now be closed, though the callback has not been called.
106 } 106 }
107 107
108 // Test the use of FileStream with a file handle provided at construction. 108 // Test the use of FileStream with a file handle provided at construction.
109 TEST_F(FileStreamTest, UseFileHandle) { 109 TEST_F(FileStreamTest, UseFileHandle) {
110 int rv = 0; 110 int rv = 0;
111 TestCompletionCallback callback; 111 TestCompletionCallback callback;
112 TestInt64CompletionCallback callback64; 112 TestInt64CompletionCallback callback64;
113 // 1. Test reading with a file handle. 113 // 1. Test reading with a file handle.
114 ASSERT_EQ(kTestDataSize, 114 ASSERT_EQ(kTestDataSize,
115 base::WriteFile(temp_file_path(), kTestData, kTestDataSize)); 115 base::WriteFile(temp_file_path(), kTestData, kTestDataSize));
116 int flags = base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_READ | 116 int flags = base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_READ |
117 base::File::FLAG_ASYNC; 117 base::File::FLAG_ASYNC;
118 base::File file(temp_file_path(), flags); 118 base::File file(temp_file_path(), flags);
119 119
120 // Seek to the beginning of the file and read. 120 // Seek to the beginning of the file and read.
121 scoped_ptr<FileStream> read_stream( 121 scoped_ptr<FileStream> read_stream(
122 new FileStream(file.Pass(), base::MessageLoopProxy::current())); 122 new FileStream(file.Pass(), base::ThreadTaskRunnerHandle::Get()));
123 ASSERT_EQ(ERR_IO_PENDING, 123 ASSERT_EQ(ERR_IO_PENDING,
124 read_stream->Seek(base::File::FROM_BEGIN, 0, 124 read_stream->Seek(base::File::FROM_BEGIN, 0,
125 callback64.callback())); 125 callback64.callback()));
126 ASSERT_EQ(0, callback64.WaitForResult()); 126 ASSERT_EQ(0, callback64.WaitForResult());
127 // Read into buffer and compare. 127 // Read into buffer and compare.
128 scoped_refptr<IOBufferWithSize> read_buffer = 128 scoped_refptr<IOBufferWithSize> read_buffer =
129 new IOBufferWithSize(kTestDataSize); 129 new IOBufferWithSize(kTestDataSize);
130 rv = read_stream->Read(read_buffer.get(), kTestDataSize, callback.callback()); 130 rv = read_stream->Read(read_buffer.get(), kTestDataSize, callback.callback());
131 ASSERT_EQ(kTestDataSize, callback.GetResult(rv)); 131 ASSERT_EQ(kTestDataSize, callback.GetResult(rv));
132 ASSERT_EQ(0, memcmp(kTestData, read_buffer->data(), kTestDataSize)); 132 ASSERT_EQ(0, memcmp(kTestData, read_buffer->data(), kTestDataSize));
133 read_stream.reset(); 133 read_stream.reset();
134 134
135 // 2. Test writing with a file handle. 135 // 2. Test writing with a file handle.
136 base::DeleteFile(temp_file_path(), false); 136 base::DeleteFile(temp_file_path(), false);
137 flags = base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_WRITE | 137 flags = base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_WRITE |
138 base::File::FLAG_ASYNC; 138 base::File::FLAG_ASYNC;
139 file.Initialize(temp_file_path(), flags); 139 file.Initialize(temp_file_path(), flags);
140 140
141 scoped_ptr<FileStream> write_stream( 141 scoped_ptr<FileStream> write_stream(
142 new FileStream(file.Pass(), base::MessageLoopProxy::current())); 142 new FileStream(file.Pass(), base::ThreadTaskRunnerHandle::Get()));
143 ASSERT_EQ(ERR_IO_PENDING, 143 ASSERT_EQ(ERR_IO_PENDING,
144 write_stream->Seek(base::File::FROM_BEGIN, 0, 144 write_stream->Seek(base::File::FROM_BEGIN, 0,
145 callback64.callback())); 145 callback64.callback()));
146 ASSERT_EQ(0, callback64.WaitForResult()); 146 ASSERT_EQ(0, callback64.WaitForResult());
147 scoped_refptr<IOBufferWithSize> write_buffer = CreateTestDataBuffer(); 147 scoped_refptr<IOBufferWithSize> write_buffer = CreateTestDataBuffer();
148 rv = write_stream->Write(write_buffer.get(), kTestDataSize, 148 rv = write_stream->Write(write_buffer.get(), kTestDataSize,
149 callback.callback()); 149 callback.callback());
150 ASSERT_EQ(kTestDataSize, callback.GetResult(rv)); 150 ASSERT_EQ(kTestDataSize, callback.GetResult(rv));
151 write_stream.reset(); 151 write_stream.reset();
152 152
153 // Read into buffer and compare to make sure the handle worked fine. 153 // Read into buffer and compare to make sure the handle worked fine.
154 ASSERT_EQ(kTestDataSize, 154 ASSERT_EQ(kTestDataSize,
155 base::ReadFile(temp_file_path(), read_buffer->data(), 155 base::ReadFile(temp_file_path(), read_buffer->data(),
156 kTestDataSize)); 156 kTestDataSize));
157 ASSERT_EQ(0, memcmp(kTestData, read_buffer->data(), kTestDataSize)); 157 ASSERT_EQ(0, memcmp(kTestData, read_buffer->data(), kTestDataSize));
158 } 158 }
159 159
160 TEST_F(FileStreamTest, UseClosedStream) { 160 TEST_F(FileStreamTest, UseClosedStream) {
161 int rv = 0; 161 int rv = 0;
162 TestCompletionCallback callback; 162 TestCompletionCallback callback;
163 TestInt64CompletionCallback callback64; 163 TestInt64CompletionCallback callback64;
164 164
165 FileStream stream(base::MessageLoopProxy::current()); 165 FileStream stream(base::ThreadTaskRunnerHandle::Get());
166 166
167 EXPECT_FALSE(stream.IsOpen()); 167 EXPECT_FALSE(stream.IsOpen());
168 168
169 // Try seeking... 169 // Try seeking...
170 rv = stream.Seek(base::File::FROM_BEGIN, 5, callback64.callback()); 170 rv = stream.Seek(base::File::FROM_BEGIN, 5, callback64.callback());
171 EXPECT_EQ(ERR_UNEXPECTED, callback64.GetResult(rv)); 171 EXPECT_EQ(ERR_UNEXPECTED, callback64.GetResult(rv));
172 172
173 // Try reading... 173 // Try reading...
174 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(10); 174 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(10);
175 rv = stream.Read(buf.get(), buf->size(), callback.callback()); 175 rv = stream.Read(buf.get(), buf->size(), callback.callback());
176 EXPECT_EQ(ERR_UNEXPECTED, callback.GetResult(rv)); 176 EXPECT_EQ(ERR_UNEXPECTED, callback.GetResult(rv));
177 } 177 }
178 178
179 TEST_F(FileStreamTest, Read) { 179 TEST_F(FileStreamTest, Read) {
180 int64 file_size; 180 int64 file_size;
181 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 181 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
182 182
183 FileStream stream(base::MessageLoopProxy::current()); 183 FileStream stream(base::ThreadTaskRunnerHandle::Get());
184 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 184 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ |
185 base::File::FLAG_ASYNC; 185 base::File::FLAG_ASYNC;
186 TestCompletionCallback callback; 186 TestCompletionCallback callback;
187 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 187 int rv = stream.Open(temp_file_path(), flags, callback.callback());
188 EXPECT_EQ(OK, callback.GetResult(rv)); 188 EXPECT_EQ(OK, callback.GetResult(rv));
189 189
190 int total_bytes_read = 0; 190 int total_bytes_read = 0;
191 191
192 std::string data_read; 192 std::string data_read;
193 for (;;) { 193 for (;;) {
194 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); 194 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
195 rv = stream.Read(buf.get(), buf->size(), callback.callback()); 195 rv = stream.Read(buf.get(), buf->size(), callback.callback());
196 rv = callback.GetResult(rv); 196 rv = callback.GetResult(rv);
197 EXPECT_LE(0, rv); 197 EXPECT_LE(0, rv);
198 if (rv <= 0) 198 if (rv <= 0)
199 break; 199 break;
200 total_bytes_read += rv; 200 total_bytes_read += rv;
201 data_read.append(buf->data(), rv); 201 data_read.append(buf->data(), rv);
202 } 202 }
203 EXPECT_EQ(file_size, total_bytes_read); 203 EXPECT_EQ(file_size, total_bytes_read);
204 EXPECT_EQ(kTestData, data_read); 204 EXPECT_EQ(kTestData, data_read);
205 } 205 }
206 206
207 TEST_F(FileStreamTest, Read_EarlyDelete) { 207 TEST_F(FileStreamTest, Read_EarlyDelete) {
208 int64 file_size; 208 int64 file_size;
209 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 209 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
210 210
211 scoped_ptr<FileStream> stream( 211 scoped_ptr<FileStream> stream(
212 new FileStream(base::MessageLoopProxy::current())); 212 new FileStream(base::ThreadTaskRunnerHandle::Get()));
213 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 213 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ |
214 base::File::FLAG_ASYNC; 214 base::File::FLAG_ASYNC;
215 TestCompletionCallback callback; 215 TestCompletionCallback callback;
216 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 216 int rv = stream->Open(temp_file_path(), flags, callback.callback());
217 EXPECT_EQ(ERR_IO_PENDING, rv); 217 EXPECT_EQ(ERR_IO_PENDING, rv);
218 EXPECT_EQ(OK, callback.WaitForResult()); 218 EXPECT_EQ(OK, callback.WaitForResult());
219 219
220 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); 220 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
221 rv = stream->Read(buf.get(), buf->size(), callback.callback()); 221 rv = stream->Read(buf.get(), buf->size(), callback.callback());
222 stream.reset(); // Delete instead of closing it. 222 stream.reset(); // Delete instead of closing it.
223 if (rv < 0) { 223 if (rv < 0) {
224 EXPECT_EQ(ERR_IO_PENDING, rv); 224 EXPECT_EQ(ERR_IO_PENDING, rv);
225 // The callback should not be called if the request is cancelled. 225 // The callback should not be called if the request is cancelled.
226 base::RunLoop().RunUntilIdle(); 226 base::RunLoop().RunUntilIdle();
227 EXPECT_FALSE(callback.have_result()); 227 EXPECT_FALSE(callback.have_result());
228 } else { 228 } else {
229 EXPECT_EQ(std::string(kTestData, rv), std::string(buf->data(), rv)); 229 EXPECT_EQ(std::string(kTestData, rv), std::string(buf->data(), rv));
230 } 230 }
231 } 231 }
232 232
233 TEST_F(FileStreamTest, Read_FromOffset) { 233 TEST_F(FileStreamTest, Read_FromOffset) {
234 int64 file_size; 234 int64 file_size;
235 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 235 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
236 236
237 FileStream stream(base::MessageLoopProxy::current()); 237 FileStream stream(base::ThreadTaskRunnerHandle::Get());
238 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 238 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ |
239 base::File::FLAG_ASYNC; 239 base::File::FLAG_ASYNC;
240 TestCompletionCallback callback; 240 TestCompletionCallback callback;
241 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 241 int rv = stream.Open(temp_file_path(), flags, callback.callback());
242 EXPECT_EQ(ERR_IO_PENDING, rv); 242 EXPECT_EQ(ERR_IO_PENDING, rv);
243 EXPECT_EQ(OK, callback.WaitForResult()); 243 EXPECT_EQ(OK, callback.WaitForResult());
244 244
245 TestInt64CompletionCallback callback64; 245 TestInt64CompletionCallback callback64;
246 const int64 kOffset = 3; 246 const int64 kOffset = 3;
247 rv = stream.Seek(base::File::FROM_BEGIN, kOffset, callback64.callback()); 247 rv = stream.Seek(base::File::FROM_BEGIN, kOffset, callback64.callback());
(...skipping 13 matching lines...) Expand all
261 if (rv <= 0) 261 if (rv <= 0)
262 break; 262 break;
263 total_bytes_read += rv; 263 total_bytes_read += rv;
264 data_read.append(buf->data(), rv); 264 data_read.append(buf->data(), rv);
265 } 265 }
266 EXPECT_EQ(file_size - kOffset, total_bytes_read); 266 EXPECT_EQ(file_size - kOffset, total_bytes_read);
267 EXPECT_EQ(kTestData + kOffset, data_read); 267 EXPECT_EQ(kTestData + kOffset, data_read);
268 } 268 }
269 269
270 TEST_F(FileStreamTest, SeekAround) { 270 TEST_F(FileStreamTest, SeekAround) {
271 FileStream stream(base::MessageLoopProxy::current()); 271 FileStream stream(base::ThreadTaskRunnerHandle::Get());
272 int flags = base::File::FLAG_OPEN | base::File::FLAG_ASYNC | 272 int flags = base::File::FLAG_OPEN | base::File::FLAG_ASYNC |
273 base::File::FLAG_READ; 273 base::File::FLAG_READ;
274 TestCompletionCallback callback; 274 TestCompletionCallback callback;
275 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 275 int rv = stream.Open(temp_file_path(), flags, callback.callback());
276 EXPECT_EQ(ERR_IO_PENDING, rv); 276 EXPECT_EQ(ERR_IO_PENDING, rv);
277 EXPECT_EQ(OK, callback.WaitForResult()); 277 EXPECT_EQ(OK, callback.WaitForResult());
278 278
279 TestInt64CompletionCallback callback64; 279 TestInt64CompletionCallback callback64;
280 280
281 const int64 kOffset = 3; 281 const int64 kOffset = 3;
(...skipping 14 matching lines...) Expand all
296 296
297 const int kTestDataLen = arraysize(kTestData) - 1; 297 const int kTestDataLen = arraysize(kTestData) - 1;
298 298
299 rv = stream.Seek(base::File::FROM_END, -kTestDataLen, callback64.callback()); 299 rv = stream.Seek(base::File::FROM_END, -kTestDataLen, callback64.callback());
300 ASSERT_EQ(ERR_IO_PENDING, rv); 300 ASSERT_EQ(ERR_IO_PENDING, rv);
301 new_offset = callback64.WaitForResult(); 301 new_offset = callback64.WaitForResult();
302 EXPECT_EQ(0, new_offset); 302 EXPECT_EQ(0, new_offset);
303 } 303 }
304 304
305 TEST_F(FileStreamTest, Write) { 305 TEST_F(FileStreamTest, Write) {
306 FileStream stream(base::MessageLoopProxy::current()); 306 FileStream stream(base::ThreadTaskRunnerHandle::Get());
307 int flags = base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE | 307 int flags = base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE |
308 base::File::FLAG_ASYNC; 308 base::File::FLAG_ASYNC;
309 TestCompletionCallback callback; 309 TestCompletionCallback callback;
310 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 310 int rv = stream.Open(temp_file_path(), flags, callback.callback());
311 EXPECT_EQ(OK, callback.GetResult(rv)); 311 EXPECT_EQ(OK, callback.GetResult(rv));
312 312
313 int64 file_size; 313 int64 file_size;
314 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 314 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
315 EXPECT_EQ(0, file_size); 315 EXPECT_EQ(0, file_size);
316 316
317 scoped_refptr<IOBuffer> buf = CreateTestDataBuffer(); 317 scoped_refptr<IOBuffer> buf = CreateTestDataBuffer();
318 rv = stream.Write(buf.get(), kTestDataSize, callback.callback()); 318 rv = stream.Write(buf.get(), kTestDataSize, callback.callback());
319 rv = callback.GetResult(rv); 319 rv = callback.GetResult(rv);
320 EXPECT_EQ(kTestDataSize, rv); 320 EXPECT_EQ(kTestDataSize, rv);
321 321
322 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 322 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
323 EXPECT_EQ(kTestDataSize, file_size); 323 EXPECT_EQ(kTestDataSize, file_size);
324 324
325 std::string data_read; 325 std::string data_read;
326 EXPECT_TRUE(base::ReadFileToString(temp_file_path(), &data_read)); 326 EXPECT_TRUE(base::ReadFileToString(temp_file_path(), &data_read));
327 EXPECT_EQ(kTestData, data_read); 327 EXPECT_EQ(kTestData, data_read);
328 } 328 }
329 329
330 TEST_F(FileStreamTest, Write_EarlyDelete) { 330 TEST_F(FileStreamTest, Write_EarlyDelete) {
331 scoped_ptr<FileStream> stream( 331 scoped_ptr<FileStream> stream(
332 new FileStream(base::MessageLoopProxy::current())); 332 new FileStream(base::ThreadTaskRunnerHandle::Get()));
333 int flags = base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE | 333 int flags = base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE |
334 base::File::FLAG_ASYNC; 334 base::File::FLAG_ASYNC;
335 TestCompletionCallback callback; 335 TestCompletionCallback callback;
336 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 336 int rv = stream->Open(temp_file_path(), flags, callback.callback());
337 EXPECT_EQ(ERR_IO_PENDING, rv); 337 EXPECT_EQ(ERR_IO_PENDING, rv);
338 EXPECT_EQ(OK, callback.WaitForResult()); 338 EXPECT_EQ(OK, callback.WaitForResult());
339 339
340 int64 file_size; 340 int64 file_size;
341 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 341 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
342 EXPECT_EQ(0, file_size); 342 EXPECT_EQ(0, file_size);
343 343
344 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 344 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
345 rv = stream->Write(buf.get(), buf->size(), callback.callback()); 345 rv = stream->Write(buf.get(), buf->size(), callback.callback());
346 stream.reset(); 346 stream.reset();
347 if (rv < 0) { 347 if (rv < 0) {
348 EXPECT_EQ(ERR_IO_PENDING, rv); 348 EXPECT_EQ(ERR_IO_PENDING, rv);
349 // The callback should not be called if the request is cancelled. 349 // The callback should not be called if the request is cancelled.
350 base::RunLoop().RunUntilIdle(); 350 base::RunLoop().RunUntilIdle();
351 EXPECT_FALSE(callback.have_result()); 351 EXPECT_FALSE(callback.have_result());
352 } else { 352 } else {
353 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 353 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
354 EXPECT_EQ(file_size, rv); 354 EXPECT_EQ(file_size, rv);
355 } 355 }
356 } 356 }
357 357
358 TEST_F(FileStreamTest, Write_FromOffset) { 358 TEST_F(FileStreamTest, Write_FromOffset) {
359 int64 file_size; 359 int64 file_size;
360 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 360 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
361 361
362 FileStream stream(base::MessageLoopProxy::current()); 362 FileStream stream(base::ThreadTaskRunnerHandle::Get());
363 int flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE | 363 int flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE |
364 base::File::FLAG_ASYNC; 364 base::File::FLAG_ASYNC;
365 TestCompletionCallback callback; 365 TestCompletionCallback callback;
366 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 366 int rv = stream.Open(temp_file_path(), flags, callback.callback());
367 EXPECT_EQ(ERR_IO_PENDING, rv); 367 EXPECT_EQ(ERR_IO_PENDING, rv);
368 EXPECT_EQ(OK, callback.WaitForResult()); 368 EXPECT_EQ(OK, callback.WaitForResult());
369 369
370 TestInt64CompletionCallback callback64; 370 TestInt64CompletionCallback callback64;
371 const int64 kOffset = 0; 371 const int64 kOffset = 0;
372 rv = stream.Seek(base::File::FROM_END, kOffset, callback64.callback()); 372 rv = stream.Seek(base::File::FROM_END, kOffset, callback64.callback());
(...skipping 19 matching lines...) Expand all
392 } 392 }
393 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 393 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
394 EXPECT_EQ(file_size, kTestDataSize * 2); 394 EXPECT_EQ(file_size, kTestDataSize * 2);
395 } 395 }
396 396
397 TEST_F(FileStreamTest, BasicReadWrite) { 397 TEST_F(FileStreamTest, BasicReadWrite) {
398 int64 file_size; 398 int64 file_size;
399 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 399 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
400 400
401 scoped_ptr<FileStream> stream( 401 scoped_ptr<FileStream> stream(
402 new FileStream(base::MessageLoopProxy::current())); 402 new FileStream(base::ThreadTaskRunnerHandle::Get()));
403 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 403 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ |
404 base::File::FLAG_WRITE | base::File::FLAG_ASYNC; 404 base::File::FLAG_WRITE | base::File::FLAG_ASYNC;
405 TestCompletionCallback callback; 405 TestCompletionCallback callback;
406 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 406 int rv = stream->Open(temp_file_path(), flags, callback.callback());
407 EXPECT_EQ(ERR_IO_PENDING, rv); 407 EXPECT_EQ(ERR_IO_PENDING, rv);
408 EXPECT_EQ(OK, callback.WaitForResult()); 408 EXPECT_EQ(OK, callback.WaitForResult());
409 409
410 int64 total_bytes_read = 0; 410 int64 total_bytes_read = 0;
411 411
412 std::string data_read; 412 std::string data_read;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 445
446 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 446 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
447 EXPECT_EQ(kTestDataSize * 2, file_size); 447 EXPECT_EQ(kTestDataSize * 2, file_size);
448 } 448 }
449 449
450 TEST_F(FileStreamTest, BasicWriteRead) { 450 TEST_F(FileStreamTest, BasicWriteRead) {
451 int64 file_size; 451 int64 file_size;
452 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 452 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
453 453
454 scoped_ptr<FileStream> stream( 454 scoped_ptr<FileStream> stream(
455 new FileStream(base::MessageLoopProxy::current())); 455 new FileStream(base::ThreadTaskRunnerHandle::Get()));
456 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 456 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ |
457 base::File::FLAG_WRITE | base::File::FLAG_ASYNC; 457 base::File::FLAG_WRITE | base::File::FLAG_ASYNC;
458 TestCompletionCallback callback; 458 TestCompletionCallback callback;
459 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 459 int rv = stream->Open(temp_file_path(), flags, callback.callback());
460 EXPECT_EQ(ERR_IO_PENDING, rv); 460 EXPECT_EQ(ERR_IO_PENDING, rv);
461 EXPECT_EQ(OK, callback.WaitForResult()); 461 EXPECT_EQ(OK, callback.WaitForResult());
462 462
463 TestInt64CompletionCallback callback64; 463 TestInt64CompletionCallback callback64;
464 rv = stream->Seek(base::File::FROM_END, 0, callback64.callback()); 464 rv = stream->Seek(base::File::FROM_END, 0, callback64.callback());
465 ASSERT_EQ(ERR_IO_PENDING, rv); 465 ASSERT_EQ(ERR_IO_PENDING, rv);
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 scoped_refptr<DrainableIOBuffer> drainable_; 616 scoped_refptr<DrainableIOBuffer> drainable_;
617 617
618 DISALLOW_COPY_AND_ASSIGN(TestWriteReadCompletionCallback); 618 DISALLOW_COPY_AND_ASSIGN(TestWriteReadCompletionCallback);
619 }; 619 };
620 620
621 TEST_F(FileStreamTest, WriteRead) { 621 TEST_F(FileStreamTest, WriteRead) {
622 int64 file_size; 622 int64 file_size;
623 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 623 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
624 624
625 scoped_ptr<FileStream> stream( 625 scoped_ptr<FileStream> stream(
626 new FileStream(base::MessageLoopProxy::current())); 626 new FileStream(base::ThreadTaskRunnerHandle::Get()));
627 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 627 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ |
628 base::File::FLAG_WRITE | base::File::FLAG_ASYNC; 628 base::File::FLAG_WRITE | base::File::FLAG_ASYNC;
629 TestCompletionCallback open_callback; 629 TestCompletionCallback open_callback;
630 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); 630 int rv = stream->Open(temp_file_path(), flags, open_callback.callback());
631 EXPECT_EQ(ERR_IO_PENDING, rv); 631 EXPECT_EQ(ERR_IO_PENDING, rv);
632 EXPECT_EQ(OK, open_callback.WaitForResult()); 632 EXPECT_EQ(OK, open_callback.WaitForResult());
633 633
634 TestInt64CompletionCallback callback64; 634 TestInt64CompletionCallback callback64;
635 EXPECT_EQ(ERR_IO_PENDING, 635 EXPECT_EQ(ERR_IO_PENDING,
636 stream->Seek(base::File::FROM_END, 0, callback64.callback())); 636 stream->Seek(base::File::FROM_END, 0, callback64.callback()));
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 scoped_refptr<DrainableIOBuffer> drainable_; 723 scoped_refptr<DrainableIOBuffer> drainable_;
724 724
725 DISALLOW_COPY_AND_ASSIGN(TestWriteCloseCompletionCallback); 725 DISALLOW_COPY_AND_ASSIGN(TestWriteCloseCompletionCallback);
726 }; 726 };
727 727
728 TEST_F(FileStreamTest, WriteClose) { 728 TEST_F(FileStreamTest, WriteClose) {
729 int64 file_size; 729 int64 file_size;
730 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 730 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
731 731
732 scoped_ptr<FileStream> stream( 732 scoped_ptr<FileStream> stream(
733 new FileStream(base::MessageLoopProxy::current())); 733 new FileStream(base::ThreadTaskRunnerHandle::Get()));
734 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 734 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ |
735 base::File::FLAG_WRITE | base::File::FLAG_ASYNC; 735 base::File::FLAG_WRITE | base::File::FLAG_ASYNC;
736 TestCompletionCallback open_callback; 736 TestCompletionCallback open_callback;
737 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); 737 int rv = stream->Open(temp_file_path(), flags, open_callback.callback());
738 EXPECT_EQ(ERR_IO_PENDING, rv); 738 EXPECT_EQ(ERR_IO_PENDING, rv);
739 EXPECT_EQ(OK, open_callback.WaitForResult()); 739 EXPECT_EQ(OK, open_callback.WaitForResult());
740 740
741 TestInt64CompletionCallback callback64; 741 TestInt64CompletionCallback callback64;
742 EXPECT_EQ(ERR_IO_PENDING, 742 EXPECT_EQ(ERR_IO_PENDING,
743 stream->Seek(base::File::FROM_END, 0, callback64.callback())); 743 stream->Seek(base::File::FROM_END, 0, callback64.callback()));
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 // Verify that Write() errors are mapped correctly. 793 // Verify that Write() errors are mapped correctly.
794 TEST_F(FileStreamTest, WriteError) { 794 TEST_F(FileStreamTest, WriteError) {
795 // Try opening file as read-only and then writing to it using FileStream. 795 // Try opening file as read-only and then writing to it using FileStream.
796 uint32 flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 796 uint32 flags = base::File::FLAG_OPEN | base::File::FLAG_READ |
797 base::File::FLAG_ASYNC; 797 base::File::FLAG_ASYNC;
798 798
799 base::File file(temp_file_path(), flags); 799 base::File file(temp_file_path(), flags);
800 ASSERT_TRUE(file.IsValid()); 800 ASSERT_TRUE(file.IsValid());
801 801
802 scoped_ptr<FileStream> stream( 802 scoped_ptr<FileStream> stream(
803 new FileStream(file.Pass(), base::MessageLoopProxy::current())); 803 new FileStream(file.Pass(), base::ThreadTaskRunnerHandle::Get()));
804 804
805 scoped_refptr<IOBuffer> buf = new IOBuffer(1); 805 scoped_refptr<IOBuffer> buf = new IOBuffer(1);
806 buf->data()[0] = 0; 806 buf->data()[0] = 0;
807 807
808 TestCompletionCallback callback; 808 TestCompletionCallback callback;
809 int rv = stream->Write(buf.get(), 1, callback.callback()); 809 int rv = stream->Write(buf.get(), 1, callback.callback());
810 if (rv == ERR_IO_PENDING) 810 if (rv == ERR_IO_PENDING)
811 rv = callback.WaitForResult(); 811 rv = callback.WaitForResult();
812 EXPECT_LT(rv, 0); 812 EXPECT_LT(rv, 0);
813 813
814 stream.reset(); 814 stream.reset();
815 base::RunLoop().RunUntilIdle(); 815 base::RunLoop().RunUntilIdle();
816 } 816 }
817 817
818 // Verify that Read() errors are mapped correctly. 818 // Verify that Read() errors are mapped correctly.
819 TEST_F(FileStreamTest, ReadError) { 819 TEST_F(FileStreamTest, ReadError) {
820 // Try opening file for write and then reading from it using FileStream. 820 // Try opening file for write and then reading from it using FileStream.
821 uint32 flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE | 821 uint32 flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE |
822 base::File::FLAG_ASYNC; 822 base::File::FLAG_ASYNC;
823 823
824 base::File file(temp_file_path(), flags); 824 base::File file(temp_file_path(), flags);
825 ASSERT_TRUE(file.IsValid()); 825 ASSERT_TRUE(file.IsValid());
826 826
827 scoped_ptr<FileStream> stream( 827 scoped_ptr<FileStream> stream(
828 new FileStream(file.Pass(), base::MessageLoopProxy::current())); 828 new FileStream(file.Pass(), base::ThreadTaskRunnerHandle::Get()));
829 829
830 scoped_refptr<IOBuffer> buf = new IOBuffer(1); 830 scoped_refptr<IOBuffer> buf = new IOBuffer(1);
831 TestCompletionCallback callback; 831 TestCompletionCallback callback;
832 int rv = stream->Read(buf.get(), 1, callback.callback()); 832 int rv = stream->Read(buf.get(), 1, callback.callback());
833 if (rv == ERR_IO_PENDING) 833 if (rv == ERR_IO_PENDING)
834 rv = callback.WaitForResult(); 834 rv = callback.WaitForResult();
835 EXPECT_LT(rv, 0); 835 EXPECT_LT(rv, 0);
836 836
837 stream.reset(); 837 stream.reset();
838 base::RunLoop().RunUntilIdle(); 838 base::RunLoop().RunUntilIdle();
(...skipping 11 matching lines...) Expand all
850 850
851 // Insert the image into MediaStore. MediaStore will do some conversions, and 851 // Insert the image into MediaStore. MediaStore will do some conversions, and
852 // return the content URI. 852 // return the content URI.
853 base::FilePath path = base::InsertImageIntoMediaStore(image_file); 853 base::FilePath path = base::InsertImageIntoMediaStore(image_file);
854 EXPECT_TRUE(path.IsContentUri()); 854 EXPECT_TRUE(path.IsContentUri());
855 EXPECT_TRUE(base::PathExists(path)); 855 EXPECT_TRUE(base::PathExists(path));
856 int64 file_size; 856 int64 file_size;
857 EXPECT_TRUE(base::GetFileSize(path, &file_size)); 857 EXPECT_TRUE(base::GetFileSize(path, &file_size));
858 EXPECT_LT(0, file_size); 858 EXPECT_LT(0, file_size);
859 859
860 FileStream stream(base::MessageLoopProxy::current()); 860 FileStream stream(base::ThreadTaskRunnerHandle::Get());
861 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 861 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ |
862 base::File::FLAG_ASYNC; 862 base::File::FLAG_ASYNC;
863 TestCompletionCallback callback; 863 TestCompletionCallback callback;
864 int rv = stream.Open(path, flags, callback.callback()); 864 int rv = stream.Open(path, flags, callback.callback());
865 EXPECT_EQ(ERR_IO_PENDING, rv); 865 EXPECT_EQ(ERR_IO_PENDING, rv);
866 EXPECT_EQ(OK, callback.WaitForResult()); 866 EXPECT_EQ(OK, callback.WaitForResult());
867 867
868 int total_bytes_read = 0; 868 int total_bytes_read = 0;
869 869
870 std::string data_read; 870 std::string data_read;
871 for (;;) { 871 for (;;) {
872 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); 872 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
873 rv = stream.Read(buf.get(), buf->size(), callback.callback()); 873 rv = stream.Read(buf.get(), buf->size(), callback.callback());
874 if (rv == ERR_IO_PENDING) 874 if (rv == ERR_IO_PENDING)
875 rv = callback.WaitForResult(); 875 rv = callback.WaitForResult();
876 EXPECT_LE(0, rv); 876 EXPECT_LE(0, rv);
877 if (rv <= 0) 877 if (rv <= 0)
878 break; 878 break;
879 total_bytes_read += rv; 879 total_bytes_read += rv;
880 data_read.append(buf->data(), rv); 880 data_read.append(buf->data(), rv);
881 } 881 }
882 EXPECT_EQ(file_size, total_bytes_read); 882 EXPECT_EQ(file_size, total_bytes_read);
883 } 883 }
884 #endif 884 #endif
885 885
886 } // namespace 886 } // namespace
887 887
888 } // namespace net 888 } // namespace net
OLDNEW
« no previous file with comments | « net/base/file_stream_context_win.cc ('k') | net/base/filename_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698