summaryrefslogtreecommitdiffstats
path: root/net/disk_cache/flash/segment_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'net/disk_cache/flash/segment_unittest.cc')
-rw-r--r--net/disk_cache/flash/segment_unittest.cc217
1 files changed, 95 insertions, 122 deletions
diff --git a/net/disk_cache/flash/segment_unittest.cc b/net/disk_cache/flash/segment_unittest.cc
index 5bf3b6b..bbbcc80 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