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

Unified Diff: net/disk_cache/v3/block_bitmaps_unittest.cc

Issue 15203004: Disk cache: Reference CL for the implementation of file format version 3. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: IndexTable review Created 7 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/disk_cache/v3/block_bitmaps.cc ('k') | net/disk_cache/v3/disk_format_v3.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/disk_cache/v3/block_bitmaps_unittest.cc
===================================================================
--- net/disk_cache/v3/block_bitmaps_unittest.cc (revision 0)
+++ net/disk_cache/v3/block_bitmaps_unittest.cc (revision 0)
@@ -0,0 +1,70 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/disk_cache/addr.h"
+#include "net/disk_cache/block_files.h"
+#include "net/disk_cache/disk_format_base.h"
+#include "net/disk_cache/v3/block_bitmaps.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+// Tests that we add and remove blocks correctly.
+TEST(DiskCacheBlockBitmaps, V3AllocationMap) {
+ disk_cache::BlockBitmaps block_bitmaps(NULL);
+ disk_cache::BlockFilesBitmaps bitmaps;
+
+ const int kNumHeaders = 10;
+ disk_cache::BlockFileHeader headers[kNumHeaders];
+ for (int i = 0; i < kNumHeaders; i++) {
+ memset(&headers[i], 0, sizeof(headers[i]));
+ headers[i].magic = disk_cache::kBlockMagic;
+ headers[i].version = disk_cache::kBlockCurrentVersion;
+ headers[i].this_file = static_cast<int16>(i);
+ headers[i].empty[3] = 200;
+ headers[i].max_entries = 800;
+ bitmaps.push_back(disk_cache::BlockHeader(&headers[i]));
+ }
+
+ block_bitmaps.Init(bitmaps);
+
+ // Create a bunch of entries.
+ const int kSize = 100;
+ disk_cache::Addr address[kSize];
+ for (int i = 0; i < kSize; i++) {
+ SCOPED_TRACE(i);
+ int block_size = i % 4 + 1;
+ ASSERT_TRUE(block_bitmaps.CreateBlock(disk_cache::BLOCK_1K, block_size,
+ &address[i]));
+ EXPECT_EQ(disk_cache::BLOCK_1K, address[i].file_type());
+ EXPECT_EQ(block_size, address[i].num_blocks());
+ int start = address[i].start_block();
+
+ // Verify that the allocated entry doesn't cross a 4 block boundary.
+ EXPECT_EQ(start / 4, (start + block_size - 1) / 4);
+ }
+
+ for (int i = 0; i < kSize; i++) {
+ SCOPED_TRACE(i);
+ EXPECT_TRUE(block_bitmaps.IsValid(address[i]));
+ }
+
+ // The first part of the allocation map should be completely filled. We used
+ // 10 bits per each of four entries, so 250 bits total. All entries should go
+ // to the third file.
+ uint8* buffer = reinterpret_cast<uint8*>(&headers[2].allocation_map);
+ for (int i = 0; i < 29; i++) {
+ SCOPED_TRACE(i);
+ EXPECT_EQ(0xff, buffer[i]);
+ }
+
+ for (int i = 0; i < kSize; i++) {
+ SCOPED_TRACE(i);
+ block_bitmaps.DeleteBlock(address[i]);
+ }
+
+ // The allocation map should be empty.
+ for (int i =0; i < 50; i++) {
+ SCOPED_TRACE(i);
+ EXPECT_EQ(0, buffer[i]);
+ }
+}
Property changes on: net\disk_cache\v3\block_bitmaps_unittest.cc
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « net/disk_cache/v3/block_bitmaps.cc ('k') | net/disk_cache/v3/disk_format_v3.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698