OLD | NEW |
---|---|
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 "media/cdm/ppapi/cdm_file_io_test.h" | 5 #include "media/cdm/ppapi/cdm_file_io_test.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 | 10 |
11 namespace media { | 11 namespace media { |
12 | 12 |
13 #define FILE_IO_DVLOG(level) DVLOG(level) << "File IO Test: " | 13 #define FILE_IO_DVLOG(level) DVLOG(level) << "File IO Test: " |
14 | 14 |
15 const uint8 kData[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | 15 const uint8 kData[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, |
16 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }; | 16 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }; |
17 const uint32 kDataSize = arraysize(kData); | 17 const uint32 kDataSize = arraysize(kData); |
18 | 18 |
19 const uint8 kBigData[] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, | 19 const uint8 kBigData[] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, |
20 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, | 20 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, |
21 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, | 21 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, |
22 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, | 22 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, |
23 0x00 }; | 23 0x00 }; |
24 const uint32 kBigDataSize = arraysize(kBigData); | 24 const uint32 kBigDataSize = arraysize(kBigData); |
25 | 25 |
26 // Must be > kReadSize in cdm_file_io_impl.cc. | 26 // Must be > kReadSize in cdm_file_io_impl.cc. |
27 const uint32 kLargeDataSize = 9 * 1024 + 7; | 27 const uint32 kLargeDataSize = 20 * 1024 + 7; |
28 | 28 |
29 // Macros to help add test cases/steps. | 29 // Macros to help add test cases/steps. |
30 | |
31 // |test_name| is also used as the file name. File name validity tests relies | |
32 // on this to work. | |
30 #define START_TEST_CASE(test_name) \ | 33 #define START_TEST_CASE(test_name) \ |
31 do { \ | 34 do { \ |
32 FileIOTest test_case(create_file_io_cb_, "FileIOTest." test_name); \ | 35 FileIOTest test_case(create_file_io_cb_, test_name); \ |
33 CREATE_FILE_IO // Create FileIO for each test case. | 36 CREATE_FILE_IO // Create FileIO for each test case. |
34 | 37 |
35 #define ADD_TEST_STEP(type, status, data, data_size) \ | 38 #define ADD_TEST_STEP(type, status, data, data_size) \ |
36 test_case.AddTestStep(FileIOTest::type, cdm::FileIOClient::status, \ | 39 test_case.AddTestStep(FileIOTest::type, cdm::FileIOClient::status, \ |
37 (data), (data_size)); | 40 (data), (data_size)); |
38 | 41 |
39 #define END_TEST_CASE \ | 42 #define END_TEST_CASE \ |
40 remaining_tests_.push_back(test_case); \ | 43 remaining_tests_.push_back(test_case); \ |
41 } while(0); | 44 } while(0); |
42 | 45 |
(...skipping 25 matching lines...) Expand all Loading... | |
68 | 71 |
69 FileIOTestRunner::FileIOTestRunner(const CreateFileIOCB& create_file_io_cb) | 72 FileIOTestRunner::FileIOTestRunner(const CreateFileIOCB& create_file_io_cb) |
70 : create_file_io_cb_(create_file_io_cb), | 73 : create_file_io_cb_(create_file_io_cb), |
71 total_num_tests_(0), | 74 total_num_tests_(0), |
72 num_passed_tests_(0) { | 75 num_passed_tests_(0) { |
73 // Generate |large_data_|. | 76 // Generate |large_data_|. |
74 large_data_.resize(kLargeDataSize); | 77 large_data_.resize(kLargeDataSize); |
75 for (size_t i = 0; i < kLargeDataSize; ++i) | 78 for (size_t i = 0; i < kLargeDataSize; ++i) |
76 large_data_[i] = i % kuint8max; | 79 large_data_[i] = i % kuint8max; |
77 | 80 |
78 // Generate |corrupted_big_data_|. | |
79 corrupted_big_data_.assign(kData, kData + kDataSize); | |
80 corrupted_big_data_.resize(kBigDataSize, 0); | |
81 | |
82 AddTests(); | 81 AddTests(); |
83 } | 82 } |
84 | 83 |
85 FileIOTestRunner::~FileIOTestRunner() { | 84 FileIOTestRunner::~FileIOTestRunner() { |
86 if (remaining_tests_.empty()) | 85 if (remaining_tests_.empty()) |
87 return; | 86 return; |
88 | 87 |
89 DCHECK_LT(num_passed_tests_, total_num_tests_); | 88 DCHECK_LT(num_passed_tests_, total_num_tests_); |
90 FILE_IO_DVLOG(1) << "Not Finished (probably due to timeout). " | 89 FILE_IO_DVLOG(1) << "Not Finished (probably due to timeout). " |
91 << num_passed_tests_ << " passed in " | 90 << num_passed_tests_ << " passed in " |
92 << total_num_tests_ << " tests."; | 91 << total_num_tests_ << " tests."; |
93 } | 92 } |
94 | 93 |
95 // Note: Consecutive expectations (EXPECT*) can happen in any order. | 94 // Note: Consecutive expectations (EXPECT*) can happen in any order. |
96 void FileIOTestRunner::AddTests() { | 95 void FileIOTestRunner::AddTests() { |
96 START_TEST_CASE("/FileNameStartsWithForwardSlash") | |
97 OPEN_FILE | |
98 EXPECT_FILE_OPENED(kError) | |
99 END_TEST_CASE | |
100 | |
101 START_TEST_CASE("FileNameContains/ForwardSlash") | |
102 OPEN_FILE | |
103 EXPECT_FILE_OPENED(kError) | |
104 END_TEST_CASE | |
105 | |
106 START_TEST_CASE("\\FileNameStartsWithBackslash") | |
107 OPEN_FILE | |
108 EXPECT_FILE_OPENED(kError) | |
109 END_TEST_CASE | |
110 | |
111 START_TEST_CASE("FileNameContains\\Backslash") | |
112 OPEN_FILE | |
113 EXPECT_FILE_OPENED(kError) | |
114 END_TEST_CASE | |
115 | |
116 START_TEST_CASE("_FileNameStartsWithUnderscore") | |
117 OPEN_FILE | |
118 EXPECT_FILE_OPENED(kError) | |
119 END_TEST_CASE | |
120 | |
121 START_TEST_CASE("FileNameContains_Underscore") | |
122 OPEN_FILE | |
123 EXPECT_FILE_OPENED(kSuccess) | |
124 END_TEST_CASE | |
125 | |
97 START_TEST_CASE("ReadBeforeOpeningFile") | 126 START_TEST_CASE("ReadBeforeOpeningFile") |
98 READ_FILE | 127 READ_FILE |
99 EXPECT_FILE_READ(kError, NULL, 0) | 128 EXPECT_FILE_READ(kError, NULL, 0) |
100 END_TEST_CASE | 129 END_TEST_CASE |
101 | 130 |
102 START_TEST_CASE("WriteBeforeOpeningFile") | 131 START_TEST_CASE("WriteBeforeOpeningFile") |
103 WRITE_FILE(kData, kDataSize) | 132 WRITE_FILE(kData, kDataSize) |
104 EXPECT_FILE_WRITTEN(kError) | 133 EXPECT_FILE_WRITTEN(kError) |
105 END_TEST_CASE | 134 END_TEST_CASE |
106 | 135 |
107 START_TEST_CASE("ReadBeforeFileOpened") | 136 START_TEST_CASE("ReadBeforeFileOpened") |
108 OPEN_FILE | 137 OPEN_FILE |
109 READ_FILE | 138 READ_FILE |
110 EXPECT_FILE_OPENED(kSuccess) | 139 EXPECT_FILE_OPENED(kSuccess) |
111 EXPECT_FILE_READ(kError, NULL, 0) | 140 EXPECT_FILE_READ(kError, NULL, 0) |
141 // After file opened, we can still do normal operations. | |
142 WRITE_FILE(kData, kDataSize) | |
143 EXPECT_FILE_WRITTEN(kSuccess) | |
144 READ_FILE | |
145 EXPECT_FILE_READ(kSuccess, kData, kDataSize) | |
112 END_TEST_CASE | 146 END_TEST_CASE |
113 | 147 |
114 START_TEST_CASE("WriteBeforeFileOpened") | 148 START_TEST_CASE("WriteBeforeFileOpened") |
115 OPEN_FILE | 149 OPEN_FILE |
116 WRITE_FILE(kData, kDataSize) | 150 WRITE_FILE(kData, kDataSize) |
117 EXPECT_FILE_WRITTEN(kError) | 151 EXPECT_FILE_WRITTEN(kError) |
118 EXPECT_FILE_OPENED(kSuccess) | 152 EXPECT_FILE_OPENED(kSuccess) |
153 // After file opened, we can still do normal operations. | |
154 WRITE_FILE(kData, kDataSize) | |
155 EXPECT_FILE_WRITTEN(kSuccess) | |
156 READ_FILE | |
157 EXPECT_FILE_READ(kSuccess, kData, kDataSize) | |
119 END_TEST_CASE | 158 END_TEST_CASE |
120 | 159 |
121 START_TEST_CASE("ReadDuringPendingRead") | 160 START_TEST_CASE("ReadDuringPendingRead") |
122 OPEN_FILE | 161 OPEN_FILE |
123 EXPECT_FILE_OPENED(kSuccess) | 162 EXPECT_FILE_OPENED(kSuccess) |
124 WRITE_FILE(kData, kDataSize) | 163 WRITE_FILE(kData, kDataSize) |
125 EXPECT_FILE_WRITTEN(kSuccess) | 164 EXPECT_FILE_WRITTEN(kSuccess) |
126 READ_FILE | 165 READ_FILE |
127 READ_FILE | 166 READ_FILE |
128 EXPECT_FILE_READ(kInUse, NULL, 0) | 167 EXPECT_FILE_READ(kInUse, NULL, 0) |
129 EXPECT_FILE_READ(kSuccess, kData, kDataSize) | 168 EXPECT_FILE_READ(kSuccess, kData, kDataSize) |
169 // Read again. | |
170 READ_FILE | |
171 EXPECT_FILE_READ(kSuccess, kData, kDataSize) | |
130 END_TEST_CASE | 172 END_TEST_CASE |
131 | 173 |
132 START_TEST_CASE("ReadDuringPendingWrite") | 174 START_TEST_CASE("ReadDuringPendingWrite") |
133 OPEN_FILE | 175 OPEN_FILE |
134 EXPECT_FILE_OPENED(kSuccess) | 176 EXPECT_FILE_OPENED(kSuccess) |
135 WRITE_FILE(kData, kDataSize) | 177 WRITE_FILE(kData, kDataSize) |
136 READ_FILE | 178 READ_FILE |
137 EXPECT_FILE_READ(kInUse, NULL, 0) | 179 EXPECT_FILE_READ(kInUse, NULL, 0) |
138 EXPECT_FILE_WRITTEN(kSuccess) | 180 EXPECT_FILE_WRITTEN(kSuccess) |
181 // Read again. | |
182 READ_FILE | |
183 EXPECT_FILE_READ(kSuccess, kData, kDataSize) | |
139 END_TEST_CASE | 184 END_TEST_CASE |
140 | 185 |
141 START_TEST_CASE("WriteDuringPendingRead") | 186 START_TEST_CASE("WriteDuringPendingRead") |
142 OPEN_FILE | 187 OPEN_FILE |
143 EXPECT_FILE_OPENED(kSuccess) | 188 EXPECT_FILE_OPENED(kSuccess) |
144 READ_FILE | 189 READ_FILE |
145 WRITE_FILE(kData, kDataSize) | 190 WRITE_FILE(kData, kDataSize) |
146 EXPECT_FILE_WRITTEN(kInUse) | 191 EXPECT_FILE_WRITTEN(kInUse) |
147 EXPECT_FILE_READ(kSuccess, NULL, 0) | 192 EXPECT_FILE_READ(kSuccess, NULL, 0) |
193 // We can still do normal operations. | |
194 WRITE_FILE(kData, kDataSize) | |
195 EXPECT_FILE_WRITTEN(kSuccess) | |
196 READ_FILE | |
197 EXPECT_FILE_READ(kSuccess, kData, kDataSize) | |
148 END_TEST_CASE | 198 END_TEST_CASE |
149 | 199 |
150 START_TEST_CASE("WriteDuringPendingWrite") | 200 START_TEST_CASE("WriteDuringPendingWrite") |
151 OPEN_FILE | 201 OPEN_FILE |
152 EXPECT_FILE_OPENED(kSuccess) | 202 EXPECT_FILE_OPENED(kSuccess) |
153 WRITE_FILE(kData, kDataSize) | 203 WRITE_FILE(kData, kDataSize) |
154 WRITE_FILE(kBigData, kBigDataSize) | 204 WRITE_FILE(kBigData, kBigDataSize) |
155 EXPECT_FILE_WRITTEN(kInUse) | 205 EXPECT_FILE_WRITTEN(kInUse) |
156 EXPECT_FILE_WRITTEN(kSuccess) | 206 EXPECT_FILE_WRITTEN(kSuccess) |
207 // Read to make sure original data (kData) is written. | |
208 READ_FILE | |
209 EXPECT_FILE_READ(kSuccess, kData, kDataSize) | |
157 END_TEST_CASE | 210 END_TEST_CASE |
158 | 211 |
159 START_TEST_CASE("ReadEmptyFile") | 212 START_TEST_CASE("ReadFileThatDoesNotExist") |
160 OPEN_FILE | 213 OPEN_FILE |
161 EXPECT_FILE_OPENED(kSuccess) | 214 EXPECT_FILE_OPENED(kSuccess) |
162 READ_FILE | 215 READ_FILE |
163 EXPECT_FILE_READ(kSuccess, NULL, 0) | 216 EXPECT_FILE_READ(kSuccess, NULL, 0) |
164 END_TEST_CASE | 217 END_TEST_CASE |
165 | 218 |
166 START_TEST_CASE("WriteAndRead") | 219 START_TEST_CASE("WriteAndRead") |
167 OPEN_FILE | 220 OPEN_FILE |
168 EXPECT_FILE_OPENED(kSuccess) | 221 EXPECT_FILE_OPENED(kSuccess) |
169 WRITE_FILE(kData, kDataSize) | 222 WRITE_FILE(kData, kDataSize) |
170 EXPECT_FILE_WRITTEN(kSuccess) | 223 EXPECT_FILE_WRITTEN(kSuccess) |
171 READ_FILE | 224 READ_FILE |
172 EXPECT_FILE_READ(kSuccess, kData, kDataSize) | 225 EXPECT_FILE_READ(kSuccess, kData, kDataSize) |
173 END_TEST_CASE | 226 END_TEST_CASE |
174 | 227 |
175 START_TEST_CASE("WriteZeroBytes") | 228 START_TEST_CASE("WriteAndReadEmptyFile") |
176 OPEN_FILE | 229 OPEN_FILE |
177 EXPECT_FILE_OPENED(kSuccess) | 230 EXPECT_FILE_OPENED(kSuccess) |
178 WRITE_FILE(NULL, 0) | 231 WRITE_FILE(NULL, 0) |
179 EXPECT_FILE_WRITTEN(kSuccess) | 232 EXPECT_FILE_WRITTEN(kSuccess) |
180 READ_FILE | 233 READ_FILE |
181 EXPECT_FILE_READ(kSuccess, NULL, 0) | 234 EXPECT_FILE_READ(kSuccess, NULL, 0) |
182 END_TEST_CASE | 235 END_TEST_CASE |
183 | 236 |
184 START_TEST_CASE("WriteAndReadLargeData") | 237 START_TEST_CASE("WriteAndReadLargeData") |
185 OPEN_FILE | 238 OPEN_FILE |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
231 WRITE_FILE(kData, kDataSize) | 284 WRITE_FILE(kData, kDataSize) |
232 EXPECT_FILE_WRITTEN(kSuccess) | 285 EXPECT_FILE_WRITTEN(kSuccess) |
233 CLOSE_FILE | 286 CLOSE_FILE |
234 CREATE_FILE_IO | 287 CREATE_FILE_IO |
235 OPEN_FILE | 288 OPEN_FILE |
236 EXPECT_FILE_OPENED(kSuccess) | 289 EXPECT_FILE_OPENED(kSuccess) |
237 READ_FILE | 290 READ_FILE |
238 EXPECT_FILE_READ(kSuccess, kData, kDataSize) | 291 EXPECT_FILE_READ(kSuccess, kData, kDataSize) |
239 END_TEST_CASE | 292 END_TEST_CASE |
240 | 293 |
241 START_TEST_CASE("ReopenFileInTheSameFileIO") | 294 START_TEST_CASE("MultipleReadsAndWrites") |
295 OPEN_FILE | |
296 EXPECT_FILE_OPENED(kSuccess) | |
297 // Read file which doesn't exist. | |
298 READ_FILE | |
299 EXPECT_FILE_READ(kSuccess, NULL, 0) | |
300 // Write kData to file. | |
301 WRITE_FILE(kData, kDataSize) | |
302 EXPECT_FILE_WRITTEN(kSuccess) | |
303 // Read file. | |
304 READ_FILE | |
305 EXPECT_FILE_READ(kSuccess, kData, kDataSize) | |
306 // Read file again. | |
307 READ_FILE | |
308 EXPECT_FILE_READ(kSuccess, kData, kDataSize) | |
309 // Overwrite file with large data. | |
310 WRITE_FILE(&large_data_[0], kLargeDataSize) | |
311 EXPECT_FILE_WRITTEN(kSuccess) | |
312 // Read file. | |
313 READ_FILE | |
314 EXPECT_FILE_READ(kSuccess, &large_data_[0], kLargeDataSize) | |
315 // Overwrite file with kData. | |
316 WRITE_FILE(kData, kDataSize) | |
317 EXPECT_FILE_WRITTEN(kSuccess) | |
318 // Read file. | |
319 READ_FILE | |
320 EXPECT_FILE_READ(kSuccess, kData, kDataSize) | |
321 // Overwrite file with zero bytes. | |
322 WRITE_FILE(NULL, 0) | |
323 EXPECT_FILE_WRITTEN(kSuccess) | |
324 // Read file. | |
325 READ_FILE | |
326 EXPECT_FILE_READ(kSuccess, NULL, 0) | |
327 END_TEST_CASE | |
328 | |
329 START_TEST_CASE("OpenAfterOpen") | |
330 OPEN_FILE | |
331 EXPECT_FILE_OPENED(kSuccess) | |
332 OPEN_FILE | |
333 EXPECT_FILE_OPENED(kError) | |
334 END_TEST_CASE | |
335 | |
336 START_TEST_CASE("OpenDuringPendingOpen") | |
242 OPEN_FILE | 337 OPEN_FILE |
243 OPEN_FILE | 338 OPEN_FILE |
244 EXPECT_FILE_OPENED(kError) // The second Open() failed. | 339 EXPECT_FILE_OPENED(kError) // The second Open() failed. |
245 EXPECT_FILE_OPENED(kSuccess) // The first Open() succeeded. | 340 EXPECT_FILE_OPENED(kSuccess) // The first Open() succeeded. |
246 END_TEST_CASE | 341 END_TEST_CASE |
247 | 342 |
248 START_TEST_CASE("ReopenFileInSeparateFileIO") | 343 START_TEST_CASE("ReopenFileInSeparateFileIO") |
249 OPEN_FILE | 344 OPEN_FILE |
250 EXPECT_FILE_OPENED(kSuccess) | 345 EXPECT_FILE_OPENED(kSuccess) |
251 WRITE_FILE(kData, kDataSize) | 346 WRITE_FILE(kData, kDataSize) |
(...skipping 19 matching lines...) Expand all Loading... | |
271 CLOSE_FILE | 366 CLOSE_FILE |
272 END_TEST_CASE | 367 END_TEST_CASE |
273 | 368 |
274 START_TEST_CASE("CloseDuringPendingOverwriteWithLargerData") | 369 START_TEST_CASE("CloseDuringPendingOverwriteWithLargerData") |
275 OPEN_FILE | 370 OPEN_FILE |
276 EXPECT_FILE_OPENED(kSuccess) | 371 EXPECT_FILE_OPENED(kSuccess) |
277 WRITE_FILE(kData, kDataSize) | 372 WRITE_FILE(kData, kDataSize) |
278 EXPECT_FILE_WRITTEN(kSuccess) | 373 EXPECT_FILE_WRITTEN(kSuccess) |
279 WRITE_FILE(kBigData, kBigDataSize) | 374 WRITE_FILE(kBigData, kBigDataSize) |
280 CLOSE_FILE | 375 CLOSE_FILE |
281 // The file is corrupted. See http://crbug.com/410630 | 376 // Write() didn't finish and the content of the file is not modified. |
282 CREATE_FILE_IO | 377 CREATE_FILE_IO |
283 OPEN_FILE | 378 OPEN_FILE |
284 EXPECT_FILE_OPENED(kSuccess) | 379 EXPECT_FILE_OPENED(kSuccess) |
285 READ_FILE | 380 READ_FILE |
286 EXPECT_FILE_READ(kSuccess, &corrupted_big_data_[0], kBigDataSize) | 381 EXPECT_FILE_READ(kSuccess, kData, kDataSize) |
287 END_TEST_CASE | 382 END_TEST_CASE |
288 | 383 |
289 START_TEST_CASE("CloseDuringPendingOverwriteWithSmallerData") | 384 START_TEST_CASE("CloseDuringPendingOverwriteWithSmallerData") |
290 OPEN_FILE | 385 OPEN_FILE |
291 EXPECT_FILE_OPENED(kSuccess) | 386 EXPECT_FILE_OPENED(kSuccess) |
292 WRITE_FILE(kBigData, kBigDataSize) | 387 WRITE_FILE(kBigData, kBigDataSize) |
293 EXPECT_FILE_WRITTEN(kSuccess) | 388 EXPECT_FILE_WRITTEN(kSuccess) |
294 WRITE_FILE(kData, kDataSize) | 389 WRITE_FILE(kData, kDataSize) |
295 CLOSE_FILE | 390 CLOSE_FILE |
296 // The file is corrupted. See http://crbug.com/410630 | 391 // Write() didn't finish and the content of the file is not modified. |
297 CREATE_FILE_IO | 392 CREATE_FILE_IO |
298 OPEN_FILE | 393 OPEN_FILE |
299 EXPECT_FILE_OPENED(kSuccess) | 394 EXPECT_FILE_OPENED(kSuccess) |
300 READ_FILE | 395 READ_FILE |
301 EXPECT_FILE_READ(kSuccess, kBigData, kDataSize) | 396 EXPECT_FILE_READ(kSuccess, kBigData, kBigDataSize) |
302 END_TEST_CASE | 397 END_TEST_CASE |
303 | 398 |
304 START_TEST_CASE("CloseDuringPendingRead") | 399 START_TEST_CASE("CloseDuringPendingRead") |
305 OPEN_FILE | 400 OPEN_FILE |
306 EXPECT_FILE_OPENED(kSuccess) | 401 EXPECT_FILE_OPENED(kSuccess) |
307 WRITE_FILE(kData, kDataSize) | 402 WRITE_FILE(kData, kDataSize) |
308 EXPECT_FILE_WRITTEN(kSuccess) | 403 EXPECT_FILE_WRITTEN(kSuccess) |
309 READ_FILE | 404 READ_FILE |
310 CLOSE_FILE | 405 CLOSE_FILE |
311 // Make sure the file is not modified. | 406 // Make sure the file is not modified. |
312 CREATE_FILE_IO | 407 CREATE_FILE_IO |
313 OPEN_FILE | 408 OPEN_FILE |
314 EXPECT_FILE_OPENED(kSuccess) | 409 EXPECT_FILE_OPENED(kSuccess) |
315 READ_FILE | 410 READ_FILE |
316 EXPECT_FILE_READ(kSuccess, kData, kDataSize) | 411 EXPECT_FILE_READ(kSuccess, kData, kDataSize) |
317 END_TEST_CASE | 412 END_TEST_CASE |
413 | |
414 START_TEST_CASE("StressTest") | |
xhwang
2014/09/18 05:58:08
I added this test which can pretty reliably repro
| |
415 for (int i = 0; i < 100; ++i) { | |
416 CREATE_FILE_IO | |
417 OPEN_FILE | |
418 EXPECT_FILE_OPENED(kSuccess) | |
419 WRITE_FILE(kData, kDataSize) | |
420 EXPECT_FILE_WRITTEN(kSuccess) | |
421 // TODO(xhwang): Reenable this after http:://crbug.com/415401 is fixed. | |
422 // WRITE_FILE(kBigData, kBigDataSize) | |
423 CLOSE_FILE | |
424 // Make sure the file is not modified. | |
425 CREATE_FILE_IO | |
426 OPEN_FILE | |
427 EXPECT_FILE_OPENED(kSuccess) | |
428 READ_FILE | |
429 EXPECT_FILE_READ(kSuccess, kData, kDataSize) | |
430 CLOSE_FILE | |
431 } | |
432 END_TEST_CASE | |
318 } | 433 } |
319 | 434 |
320 void FileIOTestRunner::RunAllTests(const CompletionCB& completion_cb) { | 435 void FileIOTestRunner::RunAllTests(const CompletionCB& completion_cb) { |
321 completion_cb_ = completion_cb; | 436 completion_cb_ = completion_cb; |
322 total_num_tests_ = remaining_tests_.size(); | 437 total_num_tests_ = remaining_tests_.size(); |
323 RunNextTest(); | 438 RunNextTest(); |
324 } | 439 } |
325 | 440 |
326 void FileIOTestRunner::RunNextTest() { | 441 void FileIOTestRunner::RunNextTest() { |
327 if (remaining_tests_.empty()) { | 442 if (remaining_tests_.empty()) { |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
485 void FileIOTest::OnTestComplete(bool success) { | 600 void FileIOTest::OnTestComplete(bool success) { |
486 while (!file_io_stack_.empty()) { | 601 while (!file_io_stack_.empty()) { |
487 file_io_stack_.top()->Close(); | 602 file_io_stack_.top()->Close(); |
488 file_io_stack_.pop(); | 603 file_io_stack_.pop(); |
489 } | 604 } |
490 FILE_IO_DVLOG(3) << test_name_ << (success ? " PASSED" : " FAILED"); | 605 FILE_IO_DVLOG(3) << test_name_ << (success ? " PASSED" : " FAILED"); |
491 base::ResetAndReturn(&completion_cb_).Run(success); | 606 base::ResetAndReturn(&completion_cb_).Run(success); |
492 } | 607 } |
493 | 608 |
494 } // namespace media | 609 } // namespace media |
OLD | NEW |