Index: net/disk_cache/flash/segment_unittest.cc |
diff --git a/net/disk_cache/flash/segment_unittest.cc b/net/disk_cache/flash/segment_unittest.cc |
index 5bf3b6b3e07ee532ea565c9859f1066c7a74a264..bbbcc80d7aea95ca6cc0257223799e0a1dd5cf97 100644 |
--- a/net/disk_cache/flash/segment_unittest.cc |
+++ b/net/disk_cache/flash/segment_unittest.cc |
@@ -2,27 +2,16 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include <map> |
- |
-#include "base/logging.h" |
-#include "base/scoped_temp_dir.h" |
-#include "base/stl_util.h" |
#include "base/memory/scoped_ptr.h" |
-#include "net/base/net_errors.h" |
#include "net/disk_cache/disk_cache_test_util.h" |
#include "net/disk_cache/flash/segment.h" |
#include "net/disk_cache/flash/storage.h" |
+#include "net/disk_cache/flash/flash_cache_test_base.h" |
#include "net/disk_cache/flash/format.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace { |
-const int kSegmentCount = 3; |
-const int kEntryCount = 10; |
-const int32 kStorageSize = disk_cache::kFlashSegmentSize * kSegmentCount; |
-const int32 kSegmentFreeSpace = disk_cache::kFlashSegmentSize - |
- disk_cache::kFlashSummarySize; |
- |
template<int SIZE> |
struct Entry { |
enum { size = SIZE }; |
@@ -42,126 +31,110 @@ const int32 kLargeEntrySize = disk_cache::kFlashSegmentSize / 4; |
typedef Entry<kSmallEntrySize> SmallEntry; |
typedef Entry<kLargeEntrySize> LargeEntry; |
-} // namespace |
- |
-class SegmentTest : public testing::Test { |
- protected: |
- virtual void SetUp() { |
- ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
- const FilePath path(temp_dir_.path().Append(FILE_PATH_LITERAL("cache"))); |
- storage_.reset(new disk_cache::Storage(path, kStorageSize)); |
- ASSERT_TRUE(storage_->Init()); |
- } |
- |
- virtual void TearDown() { |
- storage_.reset(); |
- } |
- |
- scoped_ptr<disk_cache::Storage> storage_; |
- ScopedTempDir temp_dir_; |
-}; |
- |
-namespace disk_cache { |
+const int32 kSegmentFreeSpace = disk_cache::kFlashSegmentSize - |
+ disk_cache::kFlashSummarySize; |
-TEST_F(SegmentTest, CreateDestroy) { |
- for (int i = 0; i < kSegmentCount; ++i) { |
- scoped_ptr<disk_cache::Segment> segment( |
- new disk_cache::Segment(i, false, storage_.get())); |
+} // namespace |
- EXPECT_TRUE(segment->Init()); |
- // TODO(agayev): check offset validity via Init. |
- EXPECT_EQ(segment->offset_, disk_cache::kFlashSegmentSize * i); |
- EXPECT_EQ(segment->write_offset_, segment->offset_); |
- EXPECT_EQ(segment->summary_offset_, disk_cache::kFlashSegmentSize * (i+1) - |
- disk_cache::kFlashSummarySize); |
- EXPECT_TRUE(segment->Close()); |
- } |
+TEST_F(FlashCacheTest, CreateDestroy) { |
+ int32 index = 0; |
+ scoped_ptr<disk_cache::Segment> segment( |
+ new disk_cache::Segment(index, false, storage_.get())); |
+ EXPECT_TRUE(segment->Init()); |
+ EXPECT_TRUE(segment->Close()); |
+ |
+ index = num_segments_in_storage_ - 1; |
+ segment.reset(new disk_cache::Segment(index, false, storage_.get())); |
+ EXPECT_TRUE(segment->Init()); |
+ EXPECT_TRUE(segment->Close()); |
+ |
+ int32 invalid_index = num_segments_in_storage_; |
+ segment.reset(new disk_cache::Segment(invalid_index, false, storage_.get())); |
+ EXPECT_FALSE(segment->Init()); |
+ |
+ invalid_index = -1; |
+ segment.reset(new disk_cache::Segment(invalid_index, false, storage_.get())); |
+ EXPECT_FALSE(segment->Init()); |
} |
-TEST_F(SegmentTest, WriteDataReadData) { |
- for (int i = 0; i < kSegmentCount; ++i) { |
- scoped_ptr<disk_cache::Segment> segment( |
- new disk_cache::Segment(i, false, storage_.get())); |
- |
- EXPECT_TRUE(segment->Init()); |
- SmallEntry entry1; |
- EXPECT_TRUE(segment->CanHold(entry1.size)); |
- int32 offset; |
- EXPECT_TRUE(segment->WriteData(entry1.data, entry1.size, &offset)); |
- EXPECT_TRUE(segment->Close()); |
- |
- segment.reset(new disk_cache::Segment(i, true, storage_.get())); |
- EXPECT_TRUE(segment->Init()); |
- SmallEntry entry2; |
- EXPECT_TRUE(segment->ReadData(entry2.data, entry2.size, offset)); |
- EXPECT_EQ(entry1, entry2); |
- EXPECT_TRUE(segment->Close()); |
- } |
+TEST_F(FlashCacheTest, WriteDataReadData) { |
+ int32 index = rand() % num_segments_in_storage_; |
+ scoped_ptr<disk_cache::Segment> segment( |
+ new disk_cache::Segment(index, false, storage_.get())); |
+ |
+ EXPECT_TRUE(segment->Init()); |
+ SmallEntry entry1; |
+ EXPECT_TRUE(segment->CanHold(entry1.size)); |
+ int32 offset; |
+ EXPECT_TRUE(segment->WriteData(entry1.data, entry1.size, &offset)); |
+ EXPECT_TRUE(segment->Close()); |
+ |
+ segment.reset(new disk_cache::Segment(index, true, storage_.get())); |
+ EXPECT_TRUE(segment->Init()); |
+ SmallEntry entry2; |
+ EXPECT_TRUE(segment->ReadData(entry2.data, entry2.size, offset)); |
+ EXPECT_EQ(entry1, entry2); |
+ EXPECT_TRUE(segment->Close()); |
} |
-TEST_F(SegmentTest, WriteHeaderReadData) { |
- for (int i = 0; i < kSegmentCount; ++i) { |
- scoped_ptr<disk_cache::Segment> segment( |
- new disk_cache::Segment(i, false, storage_.get())); |
- |
- EXPECT_TRUE(segment->Init()); |
- SmallEntry entry1; |
- EXPECT_TRUE(segment->CanHold(entry1.size)); |
- int32 offset; |
- EXPECT_TRUE(segment->WriteHeader(entry1.data, entry1.size, &offset)); |
- EXPECT_EQ(1u, segment->header_offsets().size()); |
- EXPECT_EQ(offset, segment->header_offsets().front()); |
- EXPECT_TRUE(segment->Close()); |
- |
- segment.reset(new disk_cache::Segment(i, true, storage_.get())); |
- EXPECT_TRUE(segment->Init()); |
- SmallEntry entry2; |
- EXPECT_EQ(1u, segment->header_offsets().size()); |
- offset = segment->header_offsets().front(); |
- EXPECT_TRUE(segment->ReadData(entry2.data, entry2.size, offset)); |
- EXPECT_EQ(entry1, entry2); |
- EXPECT_TRUE(segment->Close()); |
- } |
+TEST_F(FlashCacheTest, WriteHeaderReadData) { |
+ int32 index = rand() % num_segments_in_storage_; |
+ scoped_ptr<disk_cache::Segment> segment( |
+ new disk_cache::Segment(index, false, storage_.get())); |
+ |
+ EXPECT_TRUE(segment->Init()); |
+ SmallEntry entry1; |
+ EXPECT_TRUE(segment->CanHold(entry1.size)); |
+ int32 offset; |
+ EXPECT_TRUE(segment->WriteHeader(entry1.data, entry1.size, &offset)); |
+ EXPECT_EQ(1u, segment->header_offsets().size()); |
+ EXPECT_EQ(offset, segment->header_offsets().front()); |
+ EXPECT_TRUE(segment->Close()); |
+ |
+ segment.reset(new disk_cache::Segment(index, true, storage_.get())); |
+ EXPECT_TRUE(segment->Init()); |
+ SmallEntry entry2; |
+ EXPECT_EQ(1u, segment->header_offsets().size()); |
+ offset = segment->header_offsets().front(); |
+ EXPECT_TRUE(segment->ReadData(entry2.data, entry2.size, offset)); |
+ EXPECT_EQ(entry1, entry2); |
+ EXPECT_TRUE(segment->Close()); |
} |
-TEST_F(SegmentTest, FillWithSmallEntries) { |
- for (int i = 0; i < kSegmentCount; ++i) { |
- scoped_ptr<disk_cache::Segment> segment( |
- new disk_cache::Segment(i, false, storage_.get())); |
- |
- EXPECT_TRUE(segment->Init()); |
- SmallEntry entry; |
- int32 num_bytes_written = 0; |
- while (segment->CanHold(entry.size)) { |
- EXPECT_TRUE(segment->WriteHeader(entry.data, entry.size, NULL)); |
- num_bytes_written += entry.size; |
- } |
- int32 space_left = kSegmentFreeSpace - num_bytes_written; |
- EXPECT_GE(space_left, entry.size); |
- EXPECT_EQ(segment->header_offsets().size(), |
- disk_cache::kFlashMaxEntryCount); |
- EXPECT_TRUE(segment->Close()); |
+TEST_F(FlashCacheTest, FillWithSmallEntries) { |
+ int32 index = rand() % num_segments_in_storage_; |
+ scoped_ptr<disk_cache::Segment> segment( |
+ new disk_cache::Segment(index, false, storage_.get())); |
+ |
+ EXPECT_TRUE(segment->Init()); |
+ SmallEntry entry; |
+ int32 num_bytes_written = 0; |
+ while (segment->CanHold(entry.size)) { |
+ EXPECT_TRUE(segment->WriteHeader(entry.data, entry.size, NULL)); |
+ num_bytes_written += entry.size; |
} |
+ int32 space_left = kSegmentFreeSpace - num_bytes_written; |
+ EXPECT_GE(space_left, entry.size); |
+ EXPECT_EQ(segment->header_offsets().size(), |
+ disk_cache::kFlashMaxEntryCount); |
+ EXPECT_TRUE(segment->Close()); |
} |
-TEST_F(SegmentTest, FillWithLargeEntries) { |
- for (int i = 0; i < kSegmentCount; ++i) { |
- scoped_ptr<disk_cache::Segment> segment( |
- new disk_cache::Segment(i, false, storage_.get())); |
- |
- EXPECT_TRUE(segment->Init()); |
- LargeEntry entry; |
- int32 num_bytes_written = 0; |
- while (segment->CanHold(entry.size)) { |
- EXPECT_TRUE(segment->WriteHeader(entry.data, entry.size, NULL)); |
- num_bytes_written += entry.size; |
- } |
- int32 space_left = kSegmentFreeSpace - num_bytes_written; |
- EXPECT_LT(space_left, entry.size); |
- EXPECT_LT(segment->header_offsets().size(), |
- disk_cache::kFlashMaxEntryCount); |
- EXPECT_TRUE(segment->Close()); |
+TEST_F(FlashCacheTest, FillWithLargeEntries) { |
+ int32 index = rand() % num_segments_in_storage_; |
+ scoped_ptr<disk_cache::Segment> segment( |
+ new disk_cache::Segment(index, false, storage_.get())); |
+ |
+ EXPECT_TRUE(segment->Init()); |
+ scoped_ptr<LargeEntry> entry(new LargeEntry); |
+ int32 num_bytes_written = 0; |
+ while (segment->CanHold(entry->size)) { |
+ EXPECT_TRUE(segment->WriteHeader(entry->data, entry->size, NULL)); |
+ num_bytes_written += entry->size; |
} |
+ int32 space_left = kSegmentFreeSpace - num_bytes_written; |
+ EXPECT_LT(space_left, entry->size); |
+ EXPECT_LT(segment->header_offsets().size(), |
+ disk_cache::kFlashMaxEntryCount); |
+ EXPECT_TRUE(segment->Close()); |
} |
- |
-} // namespace disk_cache |