1c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be 3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file. 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/file_util.h" 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "net/disk_cache/storage_block.h" 7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "net/disk_cache/storage_block-inl.h" 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "net/disk_cache/disk_cache_test_base.h" 9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "net/disk_cache/disk_cache_test_util.h" 10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "testing/gtest/include/gtest/gtest.h" 11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(DiskCacheTest, StorageBlock_LoadStore) { 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott FilePath filename = GetCacheFilePath().AppendASCII("a_test"); 14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott scoped_refptr<disk_cache::MappedFile> file(new disk_cache::MappedFile); 15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ASSERT_TRUE(CreateCacheTestFile(filename)); 16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ASSERT_TRUE(file->Init(filename, 8192)); 17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott disk_cache::CacheEntryBlock entry1(file, disk_cache::Addr(0xa0010001)); 19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott memset(entry1.Data(), 0, sizeof(disk_cache::EntryStore)); 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott entry1.Data()->hash = 0xaa5555aa; 21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott entry1.Data()->rankings_node = 0xa0010002; 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_TRUE(entry1.Store()); 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott entry1.Data()->hash = 0x88118811; 25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott entry1.Data()->rankings_node = 0xa0040009; 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_TRUE(entry1.Load()); 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0xaa5555aa, entry1.Data()->hash); 29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0xa0010002, entry1.Data()->rankings_node); 30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(DiskCacheTest, StorageBlock_SetData) { 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott FilePath filename = GetCacheFilePath().AppendASCII("a_test"); 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott scoped_refptr<disk_cache::MappedFile> file(new disk_cache::MappedFile); 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ASSERT_TRUE(CreateCacheTestFile(filename)); 36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ASSERT_TRUE(file->Init(filename, 8192)); 37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott disk_cache::CacheEntryBlock entry1(file, disk_cache::Addr(0xa0010001)); 39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott entry1.Data()->hash = 0xaa5555aa; 40c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 41c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott disk_cache::CacheEntryBlock entry2(file, disk_cache::Addr(0xa0010002)); 42c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_TRUE(entry2.Load()); 43c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_TRUE(entry2.Data() != NULL); 44c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_TRUE(0 == entry2.Data()->hash); 45c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 46c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_TRUE(entry2.Data() != entry1.Data()); 47c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott entry2.SetData(entry1.Data()); 48c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0xaa5555aa, entry2.Data()->hash); 49c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_TRUE(entry2.Data() == entry1.Data()); 50c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 51c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 52c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(DiskCacheTest, StorageBlock_SetModified) { 53c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott FilePath filename = GetCacheFilePath().AppendASCII("a_test"); 54c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott scoped_refptr<disk_cache::MappedFile> file(new disk_cache::MappedFile); 55c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ASSERT_TRUE(CreateCacheTestFile(filename)); 56c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ASSERT_TRUE(file->Init(filename, 8192)); 57c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 58c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott disk_cache::CacheEntryBlock* entry1 = 59c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott new disk_cache::CacheEntryBlock(file, disk_cache::Addr(0xa0010003)); 60c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_TRUE(entry1->Load()); 61c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_TRUE(0 == entry1->Data()->hash); 62c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott entry1->Data()->hash = 0x45687912; 63c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott entry1->set_modified(); 64c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott delete entry1; 65c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 66c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott disk_cache::CacheEntryBlock entry2(file, disk_cache::Addr(0xa0010003)); 67c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_TRUE(entry2.Load()); 68c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_TRUE(0x45687912 == entry2.Data()->hash); 69c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 70