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

Side by Side Diff: net/disk_cache/entry_sync_tests.cc

Issue 127083002: **STILLBAKING** Decouple disk cache tests from backends. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: upstream rebase Created 6 years, 10 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/entry_sync_tests.h ('k') | net/disk_cache/entry_tests.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) 2014 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/entry_sync_tests.h"
6
7 #include "base/bind.h"
8 #include "net/base/io_buffer.h"
9 #include "net/base/net_errors.h"
10 #include "net/base/test_completion_callback.h"
11 #include "base/strings/string_util.h"
12 #include "base/time/time.h"
13 #include "net/disk_cache/disk_cache.h"
14 #include "net/disk_cache/disk_cache_test.h"
15 #include "net/disk_cache/disk_cache_test_util.h"
16
17 namespace disk_cache {
18
19 namespace {
20
21 void InternalSyncIOBackground(Entry* entry) {
22 const int kSize1 = 10;
23 scoped_refptr<net::IOBuffer> buffer1(new net::IOBuffer(kSize1));
24 CacheTestFillBuffer(buffer1->data(), kSize1, false);
25 EXPECT_EQ(
26 0,
27 entry->ReadData(0, 0, buffer1.get(), kSize1, net::CompletionCallback()));
28 base::strlcpy(buffer1->data(), "the data", kSize1);
29 EXPECT_EQ(10,
30 entry->WriteData(
31 0, 0, buffer1.get(), kSize1, net::CompletionCallback(), false));
32 memset(buffer1->data(), 0, kSize1);
33 EXPECT_EQ(
34 10,
35 entry->ReadData(0, 0, buffer1.get(), kSize1, net::CompletionCallback()));
36 EXPECT_STREQ("the data", buffer1->data());
37
38 const int kSize2 = 5000;
39 const int kSize3 = 10000;
40 scoped_refptr<net::IOBuffer> buffer2(new net::IOBuffer(kSize2));
41 scoped_refptr<net::IOBuffer> buffer3(new net::IOBuffer(kSize3));
42 memset(buffer3->data(), 0, kSize3);
43 CacheTestFillBuffer(buffer2->data(), kSize2, false);
44 base::strlcpy(buffer2->data(), "The really big data goes here", kSize2);
45 EXPECT_EQ(
46 5000,
47 entry->WriteData(
48 1, 1500, buffer2.get(), kSize2, net::CompletionCallback(), false));
49 memset(buffer2->data(), 0, kSize2);
50 EXPECT_EQ(4989,
51 entry->ReadData(
52 1, 1511, buffer2.get(), kSize2, net::CompletionCallback()));
53 EXPECT_STREQ("big data goes here", buffer2->data());
54 EXPECT_EQ(
55 5000,
56 entry->ReadData(1, 0, buffer2.get(), kSize2, net::CompletionCallback()));
57 EXPECT_EQ(0, memcmp(buffer2->data(), buffer3->data(), 1500));
58 EXPECT_EQ(1500,
59 entry->ReadData(
60 1, 5000, buffer2.get(), kSize2, net::CompletionCallback()));
61
62 EXPECT_EQ(0,
63 entry->ReadData(
64 1, 6500, buffer2.get(), kSize2, net::CompletionCallback()));
65 EXPECT_EQ(
66 6500,
67 entry->ReadData(1, 0, buffer3.get(), kSize3, net::CompletionCallback()));
68 EXPECT_EQ(8192,
69 entry->WriteData(
70 1, 0, buffer3.get(), 8192, net::CompletionCallback(), false));
71 EXPECT_EQ(
72 8192,
73 entry->ReadData(1, 0, buffer3.get(), kSize3, net::CompletionCallback()));
74 EXPECT_EQ(8192, entry->GetDataSize(1));
75
76 // We need to delete the memory buffer on this thread.
77 EXPECT_EQ(0, entry->WriteData(
78 0, 0, NULL, 0, net::CompletionCallback(), true));
79 EXPECT_EQ(0, entry->WriteData(
80 1, 0, NULL, 0, net::CompletionCallback(), true));
81 }
82
83 TEST_P(DiskCacheEntrySyncTest, InternalSyncIO) {
84 InitCache();
85
86 Entry* entry = NULL;
87 ASSERT_EQ(net::OK, CreateEntry("the first key", &entry));
88 ASSERT_TRUE(NULL != entry);
89
90 net::TestCompletionCallback cb;
91
92 // The bulk of the test runs from within the callback, on the cache thread.
93 GetCacheThread()->PostTaskAndReply(FROM_HERE,
94 base::Bind(&InternalSyncIOBackground, entry) ,
95 base::Bind(cb.callback(), net::OK));
96 EXPECT_EQ(net::OK, cb.WaitForResult());
97
98 entry->Doom();
99 entry->Close();
100 FlushQueueForTest();
101 EXPECT_EQ(0, cache()->GetEntryCount());
102 }
103
104 void ExternalSyncIOBackground(Entry* entry) {
105 const int kSize1 = 17000;
106 const int kSize2 = 25000;
107 scoped_refptr<net::IOBuffer> buffer1(new net::IOBuffer(kSize1));
108 scoped_refptr<net::IOBuffer> buffer2(new net::IOBuffer(kSize2));
109 CacheTestFillBuffer(buffer1->data(), kSize1, false);
110 CacheTestFillBuffer(buffer2->data(), kSize2, false);
111 base::strlcpy(buffer1->data(), "the data", kSize1);
112 EXPECT_EQ(17000,
113 entry->WriteData(
114 0, 0, buffer1.get(), kSize1, net::CompletionCallback(), false));
115 memset(buffer1->data(), 0, kSize1);
116 EXPECT_EQ(
117 17000,
118 entry->ReadData(0, 0, buffer1.get(), kSize1, net::CompletionCallback()));
119 EXPECT_STREQ("the data", buffer1->data());
120
121 base::strlcpy(buffer2->data(), "The really big data goes here", kSize2);
122 EXPECT_EQ(
123 25000,
124 entry->WriteData(
125 1, 10000, buffer2.get(), kSize2, net::CompletionCallback(), false));
126 memset(buffer2->data(), 0, kSize2);
127 EXPECT_EQ(24989,
128 entry->ReadData(
129 1, 10011, buffer2.get(), kSize2, net::CompletionCallback()));
130 EXPECT_STREQ("big data goes here", buffer2->data());
131 EXPECT_EQ(
132 25000,
133 entry->ReadData(1, 0, buffer2.get(), kSize2, net::CompletionCallback()));
134 EXPECT_EQ(5000,
135 entry->ReadData(
136 1, 30000, buffer2.get(), kSize2, net::CompletionCallback()));
137
138 EXPECT_EQ(0,
139 entry->ReadData(
140 1, 35000, buffer2.get(), kSize2, net::CompletionCallback()));
141 EXPECT_EQ(
142 17000,
143 entry->ReadData(1, 0, buffer1.get(), kSize1, net::CompletionCallback()));
144 EXPECT_EQ(
145 17000,
146 entry->WriteData(
147 1, 20000, buffer1.get(), kSize1, net::CompletionCallback(), false));
148 EXPECT_EQ(37000, entry->GetDataSize(1));
149
150 // We need to delete the memory buffer on this thread.
151 EXPECT_EQ(0, entry->WriteData(
152 0, 0, NULL, 0, net::CompletionCallback(), true));
153 EXPECT_EQ(0, entry->WriteData(
154 1, 0, NULL, 0, net::CompletionCallback(), true));
155 }
156
157 TEST_P(DiskCacheEntrySyncTest, ExternalSyncIO) {
158 InitCache();
159
160 Entry* entry;
161 ASSERT_EQ(net::OK, CreateEntry("the first key", &entry));
162
163 net::TestCompletionCallback cb;
164
165 // The bulk of the test runs from within the callback, on the cache thread.
166 GetCacheThread()->PostTaskAndReply(FROM_HERE,
167 base::Bind(&ExternalSyncIOBackground, entry),
168 base::Bind(cb.callback(), net::OK));
169 EXPECT_EQ(net::OK, cb.WaitForResult());
170
171 entry->Doom();
172 entry->Close();
173 FlushQueueForTest();
174 EXPECT_EQ(0, cache()->GetEntryCount());
175 }
176
177 } // namespace
178
179 } // namespace disk_cache
OLDNEW
« no previous file with comments | « net/disk_cache/entry_sync_tests.h ('k') | net/disk_cache/entry_tests.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698