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->cache_directory = "/cache"; | |
31 entry->content_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_->PutNewest(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_cache_directory = "/newcache/"; | |
69 db_->PutNewest(origin, url, NewEntry()); | |
70 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(5)); | |
71 CacheEntryPtr entry = NewEntry(); | |
72 entry->cache_directory = new_cache_directory; | |
73 db_->PutNewest(origin, url, entry.Pass()); | |
74 entry = db_->GetNewest(origin, url); | |
75 EXPECT_TRUE(entry); | |
76 EXPECT_EQ(new_cache_directory, entry->cache_directory); | |
77 } | |
78 | |
79 TEST_F(URLResponseDiskCacheDBTest, Iterator) { | |
ppi
2015/09/15 15:21:22
here we are putting the entries in the same order
qsr
2015/09/16 11:46:38
Done.
| |
80 std::string origin = "origin"; | |
81 std::string url = "url"; | |
82 std::string url2 = "url2"; | |
83 db_->PutNewest(origin, url, NewEntry()); | |
84 CacheEntryPtr entry = db_->GetNewest(origin, url); | |
85 EXPECT_TRUE(entry); | |
86 db_->PutNewest(origin, url2, NewEntry()); | |
87 entry = CacheEntry::New(); | |
88 scoped_ptr<URLResponseDiskCacheDB::Iterator> iterator = db_->Iterate(); | |
89 EXPECT_TRUE(iterator->HasNext()); | |
90 CacheKeyPtr key; | |
91 iterator->GetNext(&key, &entry); | |
92 EXPECT_TRUE(iterator->HasNext()); | |
93 EXPECT_TRUE(key); | |
94 EXPECT_EQ(url, key->url); | |
95 EXPECT_TRUE(entry); | |
96 iterator->GetNext(&key, &entry); | |
97 EXPECT_FALSE(iterator->HasNext()); | |
98 EXPECT_TRUE(key); | |
99 EXPECT_EQ(url2, key->url); | |
100 EXPECT_TRUE(entry); | |
101 } | |
102 | |
103 TEST_F(URLResponseDiskCacheDBTest, Delete) { | |
104 std::string origin = "origin"; | |
105 std::string url = "url"; | |
106 db_->PutNewest(origin, url, NewEntry()); | |
107 CacheEntryPtr entry = db_->GetNewest(origin, url); | |
108 EXPECT_TRUE(entry); | |
109 entry = CacheEntry::New(); | |
110 scoped_ptr<URLResponseDiskCacheDB::Iterator> iterator = db_->Iterate(); | |
111 EXPECT_TRUE(iterator->HasNext()); | |
112 CacheKeyPtr key; | |
113 iterator->GetNext(&key, &entry); | |
114 EXPECT_FALSE(iterator->HasNext()); | |
115 EXPECT_TRUE(key); | |
116 EXPECT_TRUE(entry); | |
117 db_->Delete(key.Pass()); | |
118 entry = db_->GetNewest(origin, url); | |
119 EXPECT_FALSE(entry); | |
120 } | |
121 | |
122 TEST_F(URLResponseDiskCacheDBTest, IteratorFrozen) { | |
123 std::string origin = "origin"; | |
124 std::string url = "url"; | |
125 db_->PutNewest(origin, url, NewEntry()); | |
126 scoped_ptr<URLResponseDiskCacheDB::Iterator> iterator = db_->Iterate(); | |
127 std::string url2 = "url2"; | |
128 db_->PutNewest(origin, url2, NewEntry()); | |
129 | |
130 EXPECT_TRUE(iterator->HasNext()); | |
131 iterator->GetNext(nullptr, nullptr); | |
132 EXPECT_FALSE(iterator->HasNext()); | |
133 } | |
134 | |
135 } // namespace | |
136 | |
137 } // namespace mojo | |
OLD | NEW |