OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2015 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 "base/files/scoped_temp_dir.h" | |
6 #include "base/threading/platform_thread.h" | |
7 #include "services/url_response_disk_cache/url_response_disk_cache_db.h" | |
8 #include "testing/gtest/include/gtest/gtest.h" | |
9 | |
10 namespace mojo { | |
11 | |
12 namespace { | |
13 | |
14 class URLResponseDiskCacheDBTest : public ::testing::Test { | |
15 protected: | |
16 void SetUp() override { | |
17 ASSERT_TRUE(tmp_dir_.CreateUniqueTempDir()); | |
18 Open(); | |
19 } | |
20 | |
21 void Open() { | |
22 db_ = nullptr; | |
23 base::FilePath db_path = tmp_dir_.path().Append("db"); | |
24 db_ = new URLResponseDiskCacheDB(db_path); | |
25 } | |
26 | |
27 CacheEntryPtr NewEntry() { | |
28 CacheEntryPtr entry = CacheEntry::New(); | |
29 entry->response = URLResponse::New(); | |
30 entry->entry_directory = "/cache"; | |
31 entry->response_body_path = "/cache/content"; | |
32 return entry.Pass(); | |
33 } | |
34 | |
35 base::ScopedTempDir tmp_dir_; | |
36 scoped_refptr<URLResponseDiskCacheDB> db_; | |
37 }; | |
38 | |
39 TEST_F(URLResponseDiskCacheDBTest, Create) {} | |
40 | |
41 TEST_F(URLResponseDiskCacheDBTest, Version) { | |
42 EXPECT_EQ(0lu, db_->GetVersion()); | |
43 db_->SetVersion(15); | |
44 EXPECT_EQ(15lu, db_->GetVersion()); | |
45 } | |
46 | |
47 TEST_F(URLResponseDiskCacheDBTest, Persist) { | |
48 db_->SetVersion(15); | |
49 EXPECT_EQ(15lu, db_->GetVersion()); | |
50 Open(); | |
51 EXPECT_EQ(15lu, db_->GetVersion()); | |
52 } | |
53 | |
54 TEST_F(URLResponseDiskCacheDBTest, Entry) { | |
55 std::string origin = "origin"; | |
56 std::string url = "url"; | |
57 db_->PutNew(origin, url, NewEntry()); | |
58 CacheEntryPtr entry = db_->GetNewest(origin, url); | |
59 EXPECT_TRUE(entry); | |
60 Open(); | |
61 entry = db_->GetNewest(origin, url); | |
62 EXPECT_TRUE(entry); | |
63 } | |
64 | |
65 TEST_F(URLResponseDiskCacheDBTest, Newest) { | |
66 std::string origin = "origin"; | |
67 std::string url = "url"; | |
68 std::string new_entry_directory = "/newcache/"; | |
69 db_->PutNew(origin, url, NewEntry()); | |
70 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(5)); | |
71 CacheEntryPtr entry = NewEntry(); | |
72 entry->entry_directory = new_entry_directory; | |
73 db_->PutNew(origin, url, entry.Pass()); | |
74 entry = db_->GetNewest(origin, url); | |
75 EXPECT_TRUE(entry); | |
76 EXPECT_EQ(new_entry_directory, entry->entry_directory); | |
77 } | |
78 | |
79 TEST_F(URLResponseDiskCacheDBTest, Iterator) { | |
80 std::string origin = "origin"; | |
81 std::string url1 = "a"; | |
82 std::string url2 = "b"; | |
83 std::string url3 = "b"; | |
ppi
2015/09/16 12:32:27
did you mean either url2 or url3 to be "c"?
qsr
2015/09/16 13:50:29
Done.
| |
84 db_->PutNew(origin, url2, NewEntry()); | |
85 CacheEntryPtr entry = db_->GetNewest(origin, url2); | |
86 EXPECT_TRUE(entry); | |
87 db_->PutNew(origin, url1, NewEntry()); | |
88 db_->PutNew(origin, url3, NewEntry()); | |
89 entry = CacheEntry::New(); | |
90 scoped_ptr<URLResponseDiskCacheDB::Iterator> iterator = db_->GetIterator(); | |
91 EXPECT_TRUE(iterator->HasNext()); | |
92 CacheKeyPtr key; | |
93 iterator->GetNext(&key, &entry); | |
94 EXPECT_TRUE(iterator->HasNext()); | |
95 EXPECT_TRUE(key); | |
96 EXPECT_EQ(url1, key->url); | |
97 EXPECT_TRUE(entry); | |
98 iterator->GetNext(&key, &entry); | |
99 EXPECT_TRUE(iterator->HasNext()); | |
100 EXPECT_TRUE(key); | |
101 EXPECT_EQ(url2, key->url); | |
102 EXPECT_TRUE(entry); | |
103 iterator->GetNext(&key, &entry); | |
104 EXPECT_FALSE(iterator->HasNext()); | |
105 EXPECT_TRUE(key); | |
106 EXPECT_EQ(url3, key->url); | |
107 EXPECT_TRUE(entry); | |
108 } | |
109 | |
110 TEST_F(URLResponseDiskCacheDBTest, Delete) { | |
111 std::string origin = "origin"; | |
112 std::string url = "url"; | |
113 db_->PutNew(origin, url, NewEntry()); | |
114 CacheEntryPtr entry = db_->GetNewest(origin, url); | |
115 EXPECT_TRUE(entry); | |
116 entry = CacheEntry::New(); | |
117 scoped_ptr<URLResponseDiskCacheDB::Iterator> iterator = db_->GetIterator(); | |
118 EXPECT_TRUE(iterator->HasNext()); | |
119 CacheKeyPtr key; | |
120 iterator->GetNext(&key, &entry); | |
121 EXPECT_FALSE(iterator->HasNext()); | |
122 EXPECT_TRUE(key); | |
123 EXPECT_TRUE(entry); | |
124 db_->Delete(key.Pass()); | |
125 entry = db_->GetNewest(origin, url); | |
126 EXPECT_FALSE(entry); | |
127 } | |
128 | |
129 TEST_F(URLResponseDiskCacheDBTest, IteratorFrozen) { | |
130 std::string origin = "origin"; | |
131 std::string url = "url"; | |
132 db_->PutNew(origin, url, NewEntry()); | |
133 scoped_ptr<URLResponseDiskCacheDB::Iterator> iterator = db_->GetIterator(); | |
134 std::string url2 = "url2"; | |
135 db_->PutNew(origin, url2, NewEntry()); | |
136 | |
137 EXPECT_TRUE(iterator->HasNext()); | |
138 iterator->GetNext(nullptr, nullptr); | |
139 EXPECT_FALSE(iterator->HasNext()); | |
140 } | |
141 | |
142 } // namespace | |
143 | |
144 } // namespace mojo | |
OLD | NEW |