OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
365 EXPECT_EQ(0, memcmp(out, in, 8)); | 365 EXPECT_EQ(0, memcmp(out, in, 8)); |
366 | 366 |
367 // There should still be 16 bytes available for reading. | 367 // There should still be 16 bytes available for reading. |
368 EXPECT_TRUE(buf.GetBuffered(&buffered)); | 368 EXPECT_TRUE(buf.GetBuffered(&buffered)); |
369 EXPECT_EQ(16u, buffered); | 369 EXPECT_EQ(16u, buffered); |
370 | 370 |
371 // Read at offset 16, this should fail since we don't have that much data. | 371 // Read at offset 16, this should fail since we don't have that much data. |
372 EXPECT_EQ(SR_BLOCK, buf.ReadOffset(out, 10, 16, NULL)); | 372 EXPECT_EQ(SR_BLOCK, buf.ReadOffset(out, 10, 16, NULL)); |
373 } | 373 } |
374 | 374 |
375 class CircularFileStreamTest : public ::testing::Test { | |
376 protected: | |
377 static size_t const kMaxSize = 12; | |
378 | |
379 CircularFileStreamTest() : is_open_(false), stream_(kMaxSize) { | |
380 Pathname temp_dir; | |
381 if (Filesystem::GetAppTempFolder(&temp_dir)) { | |
382 logfile_name_ = | |
383 Filesystem::TempFilename(temp_dir, "CircularFileStreamTest"); | |
384 } | |
385 } | |
386 | |
387 virtual void SetUp() { | |
388 int error = -1; | |
389 is_open_ = stream_.Open(logfile_name_, "wb", &error); | |
390 } | |
391 | |
392 virtual void TearDown() { | |
393 if (!Filesystem::IsAbsent(logfile_name_)) { | |
394 Filesystem::DeleteFile(logfile_name_); | |
395 } | |
396 } | |
397 | |
398 bool is_open_; | |
399 CircularFileStream stream_; | |
400 std::string logfile_name_; | |
401 }; | |
402 | |
403 TEST_F(CircularFileStreamTest, ReadWriteWithinCapacity) { | |
404 EXPECT_TRUE(is_open_); | |
405 // Write contents. | |
406 const uint8_t bytes[] = {1, 2, 3, 4, 5, 6}; | |
407 size_t written = 0; | |
408 int error = 0; | |
409 EXPECT_EQ(SR_SUCCESS, stream_.Write(bytes, sizeof(bytes), &written, &error)); | |
410 EXPECT_EQ(0, error); | |
411 EXPECT_EQ(written, sizeof(bytes)); | |
412 stream_.Close(); | |
413 | |
414 // Check file contents. | |
415 uint8_t content_bytes[sizeof(bytes)] = {}; | |
416 scoped_ptr<FileStream> content_stream( | |
417 Filesystem::OpenFile(logfile_name_, "r")); | |
418 size_t num_content_bytes_read = 0; | |
419 EXPECT_TRUE(content_stream); | |
420 error = 0; | |
421 EXPECT_EQ(SR_SUCCESS, | |
422 content_stream->Read(content_bytes, sizeof(content_bytes), | |
423 &num_content_bytes_read, &error)); | |
424 EXPECT_EQ(sizeof(content_bytes), num_content_bytes_read); | |
425 ASSERT_EQ(sizeof(content_bytes), sizeof(bytes)); | |
426 EXPECT_EQ(0, memcmp(content_bytes, bytes, sizeof(content_bytes))); | |
427 | |
428 // Check read result. | |
429 error = 0; | |
430 size_t file_size = 0; | |
431 EXPECT_TRUE(stream_.Open(logfile_name_, "r", &error)); | |
432 EXPECT_TRUE(stream_.GetSize(&file_size)); | |
433 EXPECT_EQ(0, error); | |
434 EXPECT_EQ(sizeof(bytes), file_size); | |
435 scoped_ptr<uint8_t[]> read_bytes(new uint8_t[file_size]); | |
436 size_t num_read_bytes = 0; | |
437 error = 0; | |
438 EXPECT_EQ(SR_SUCCESS, stream_.ReadAll(read_bytes.get(), file_size, | |
439 &num_read_bytes, &error)); | |
440 EXPECT_EQ(sizeof(bytes), num_read_bytes); | |
441 EXPECT_EQ(0, memcmp(bytes, read_bytes.get(), file_size)); | |
442 } | |
443 | |
444 TEST_F(CircularFileStreamTest, ReadWriteAtCapacity) { | |
445 EXPECT_TRUE(is_open_); | |
446 // Write contents. | |
447 const uint8_t bytes[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; | |
448 size_t written = 0; | |
449 int error = 0; | |
450 EXPECT_EQ(SR_SUCCESS, stream_.Write(bytes, sizeof(bytes), &written, &error)); | |
451 EXPECT_EQ(0, error); | |
452 EXPECT_EQ(written, sizeof(bytes)); | |
453 stream_.Close(); | |
454 | |
455 // Check file contents. | |
456 uint8_t content_bytes[sizeof(bytes)] = {}; | |
457 scoped_ptr<FileStream> content_stream( | |
458 Filesystem::OpenFile(logfile_name_, "r")); | |
459 size_t num_content_bytes_read = 0; | |
460 EXPECT_TRUE(content_stream); | |
461 error = 0; | |
462 EXPECT_EQ(SR_SUCCESS, | |
463 content_stream->Read(content_bytes, sizeof(content_bytes), | |
464 &num_content_bytes_read, &error)); | |
465 EXPECT_EQ(sizeof(content_bytes), num_content_bytes_read); | |
466 ASSERT_EQ(sizeof(content_bytes), sizeof(bytes)); | |
467 EXPECT_EQ(0, memcmp(content_bytes, bytes, sizeof(content_bytes))); | |
468 | |
469 // Check read result. | |
470 error = 0; | |
471 size_t file_size = 0; | |
472 EXPECT_TRUE(stream_.Open(logfile_name_, "r", &error)); | |
473 EXPECT_TRUE(stream_.GetSize(&file_size)); | |
474 EXPECT_EQ(0, error); | |
475 EXPECT_EQ(sizeof(bytes), file_size); | |
476 scoped_ptr<uint8_t[]> read_bytes(new uint8_t[file_size]); | |
477 size_t num_read_bytes = 0; | |
478 error = 0; | |
479 EXPECT_EQ(SR_SUCCESS, stream_.ReadAll(read_bytes.get(), file_size, | |
480 &num_read_bytes, &error)); | |
481 EXPECT_EQ(sizeof(bytes), num_read_bytes); | |
482 EXPECT_EQ(0, memcmp(bytes, read_bytes.get(), file_size)); | |
483 } | |
484 | |
485 TEST_F(CircularFileStreamTest, ReadWriteOverCapacity) { | |
486 EXPECT_TRUE(is_open_); | |
487 // Write contents. | |
488 const uint8_t bytes[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; | |
489 size_t written = 0; | |
490 int error = 0; | |
491 EXPECT_EQ(SR_SUCCESS, | |
492 stream_.WriteAll(bytes, sizeof(bytes), &written, &error)); | |
493 EXPECT_EQ(0, error); | |
494 EXPECT_EQ(written, sizeof(bytes)); | |
495 stream_.Close(); | |
496 | |
497 // Check file contents. | |
498 uint8_t content_bytes[kMaxSize] = {}; | |
499 scoped_ptr<FileStream> content_stream( | |
500 Filesystem::OpenFile(logfile_name_, "r")); | |
501 size_t num_content_bytes_read = 0; | |
502 EXPECT_TRUE(content_stream); | |
503 error = 0; | |
504 EXPECT_EQ(SR_SUCCESS, | |
505 content_stream->Read(content_bytes, sizeof(content_bytes), | |
506 &num_content_bytes_read, &error)); | |
507 EXPECT_EQ(sizeof(content_bytes), num_content_bytes_read); | |
508 const uint8_t expected_content_bytes[] = { | |
509 1, 2, 3, 4, 5, 6, 13, 14, 15, 10, 11, 12}; | |
510 ASSERT_EQ(sizeof(content_bytes), sizeof(expected_content_bytes)); | |
511 EXPECT_EQ( | |
512 0, memcmp(expected_content_bytes, content_bytes, sizeof(content_bytes))); | |
513 | |
514 // Check read result. | |
515 error = 0; | |
516 size_t file_size = 0; | |
517 EXPECT_TRUE(stream_.Open(logfile_name_, "r", &error)); | |
518 EXPECT_TRUE(stream_.GetSize(&file_size)); | |
519 EXPECT_EQ(0, error); | |
520 EXPECT_EQ(sizeof(content_bytes), file_size); | |
521 scoped_ptr<uint8_t[]> read_bytes(new uint8_t[file_size]); | |
522 size_t num_read_bytes = 0; | |
523 error = 0; | |
524 EXPECT_EQ(SR_SUCCESS, stream_.ReadAll(read_bytes.get(), file_size, | |
525 &num_read_bytes, &error)); | |
526 | |
527 const uint8_t expected_read_bytes[] = { | |
528 1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15}; | |
529 EXPECT_EQ(sizeof(expected_read_bytes), num_read_bytes); | |
530 EXPECT_EQ(0, memcmp(expected_read_bytes, read_bytes.get(), file_size)); | |
531 } | |
532 | |
533 } // namespace rtc | 375 } // namespace rtc |
OLD | NEW |