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

Side by Side Diff: net/disk_cache/flash/log_store_unittest.cc

Issue 182093002: Remove the flash specific disk cache backend. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 months 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/disk_cache/flash/log_store_entry_unittest.cc ('k') | net/disk_cache/flash/segment.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "net/disk_cache/flash/flash_cache_test_base.h"
6 #include "net/disk_cache/flash/format.h"
7 #include "net/disk_cache/flash/log_store.h"
8 #include "net/disk_cache/flash/segment.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace disk_cache {
12
13 TEST_F(FlashCacheTest, LogStoreCreateEntry) {
14 LogStore log_store(path_, kStorageSize);
15 EXPECT_TRUE(log_store.Init());
16
17 const int32 kSize = 100;
18 const std::string buf(kSize, 0);
19
20 int32 id;
21 EXPECT_TRUE(log_store.CreateEntry(kSize, &id));
22 EXPECT_TRUE(log_store.WriteData(buf.data(), kSize/2));
23 EXPECT_TRUE(log_store.WriteData(buf.data(), kSize/2));
24 log_store.CloseEntry(id);
25
26 EXPECT_TRUE(log_store.Close());
27 }
28
29 // Also tests reading from current segment.
30 TEST_F(FlashCacheTest, LogStoreOpenEntry) {
31 LogStore log_store(path_, kStorageSize);
32 EXPECT_TRUE(log_store.Init());
33
34 const int32 kSize = 100;
35 const std::vector<char> expected(kSize, 'b');
36
37 int32 id;
38 EXPECT_TRUE(log_store.CreateEntry(kSize, &id));
39 EXPECT_TRUE(log_store.WriteData(&expected[0], kSize));
40 log_store.CloseEntry(id);
41
42 EXPECT_TRUE(log_store.OpenEntry(id));
43 std::vector<char> actual(kSize, 0);
44 EXPECT_TRUE(log_store.ReadData(id, &actual[0], kSize, 0));
45 log_store.CloseEntry(id);
46
47 EXPECT_EQ(expected, actual);
48 EXPECT_TRUE(log_store.Close());
49 }
50
51 // Also tests that writing advances segments.
52 TEST_F(FlashCacheTest, LogStoreReadFromClosedSegment) {
53 LogStore log_store(path_, kStorageSize);
54 EXPECT_TRUE(log_store.Init());
55
56 const int32 kSize = disk_cache::kFlashSegmentFreeSpace;
57 const std::vector<char> expected(kSize, 'a');
58
59 // First two entries go to segment 0.
60 int32 id1;
61 EXPECT_EQ(0, log_store.write_index_);
62 EXPECT_TRUE(log_store.CreateEntry(kSize/2, &id1));
63 EXPECT_TRUE(log_store.WriteData(&expected[0], kSize/2));
64 log_store.CloseEntry(id1);
65
66 int32 id2;
67 EXPECT_EQ(0, log_store.write_index_);
68 EXPECT_TRUE(log_store.CreateEntry(kSize/2, &id2));
69 EXPECT_TRUE(log_store.WriteData(&expected[0], kSize/2));
70 log_store.CloseEntry(id2);
71
72 // This entry goes to segment 1.
73 int32 id3;
74 EXPECT_TRUE(log_store.CreateEntry(kSize, &id3));
75 EXPECT_EQ(1, log_store.write_index_);
76 EXPECT_TRUE(log_store.WriteData(&expected[0], kSize));
77 log_store.CloseEntry(id3);
78
79 // We read from segment 0.
80 EXPECT_TRUE(log_store.OpenEntry(id1));
81 std::vector<char> actual(kSize, 0);
82 EXPECT_TRUE(log_store.ReadData(id1, &actual[0], kSize, id1));
83 log_store.CloseEntry(id1);
84
85 EXPECT_EQ(expected, actual);
86 EXPECT_TRUE(log_store.Close());
87 }
88
89 TEST_F(FlashCacheTest, LogStoreReadFromCurrentAfterClose) {
90 LogStore log_store(path_, kStorageSize);
91 EXPECT_TRUE(log_store.Init());
92
93 const int32 kSize = disk_cache::kFlashSegmentFreeSpace;
94 const std::vector<char> expected(kSize, 'a');
95
96 int32 id1;
97 EXPECT_EQ(0, log_store.write_index_);
98 EXPECT_TRUE(log_store.CreateEntry(kSize/2, &id1));
99 EXPECT_TRUE(log_store.WriteData(&expected[0], kSize/2));
100 log_store.CloseEntry(id1);
101
102 // Create a reference to above entry.
103 EXPECT_TRUE(log_store.OpenEntry(id1));
104
105 // This entry fills the first segment.
106 int32 id2;
107 EXPECT_EQ(0, log_store.write_index_);
108 EXPECT_TRUE(log_store.CreateEntry(kSize/2, &id2));
109 EXPECT_TRUE(log_store.WriteData(&expected[0], kSize/2));
110 log_store.CloseEntry(id2);
111
112 // Creating this entry forces closing of the first segment.
113 int32 id3;
114 EXPECT_TRUE(log_store.CreateEntry(kSize, &id3));
115 EXPECT_EQ(1, log_store.write_index_);
116 EXPECT_TRUE(log_store.WriteData(&expected[0], kSize));
117 log_store.CloseEntry(id3);
118
119 // Now attempt to read from the closed segment.
120 std::vector<char> actual(kSize, 0);
121 EXPECT_TRUE(log_store.ReadData(id1, &actual[0], kSize, id1));
122 log_store.CloseEntry(id1);
123
124 EXPECT_EQ(expected, actual);
125 EXPECT_TRUE(log_store.Close());
126 }
127
128 // TODO(agayev): Add a test that confirms that in-use segment is not selected as
129 // the next write segment.
130
131 } // namespace disk_cache
OLDNEW
« no previous file with comments | « net/disk_cache/flash/log_store_entry_unittest.cc ('k') | net/disk_cache/flash/segment.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698