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

Side by Side Diff: components/precache/core/precache_url_table_unittest.cc

Issue 2229983002: Send the list of used and unused resources for precache (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed nits Created 4 years, 3 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/precache/core/precache_url_table.h" 5 #include "components/precache/core/precache_url_table.h"
6 6
7 #include <map> 7 #include <map>
8 #include <memory> 8 #include <memory>
9 #include <set>
9 10
10 #include "base/compiler_specific.h" 11 #include "base/compiler_specific.h"
11 #include "base/time/time.h" 12 #include "base/time/time.h"
12 #include "sql/connection.h" 13 #include "sql/connection.h"
14 #include "sql/statement.h"
15 #include "testing/gmock/include/gmock/gmock.h"
13 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
14 17
15 namespace precache { 18 namespace precache {
16 19
17 namespace { 20 namespace {
18 21
19 class PrecacheURLTableTest : public testing::Test { 22 class PrecacheURLTableTest : public testing::Test {
20 public: 23 public:
21 PrecacheURLTableTest() {} 24 PrecacheURLTableTest() {}
22 ~PrecacheURLTableTest() override {} 25 ~PrecacheURLTableTest() override {}
23 26
24 protected: 27 protected:
25 void SetUp() override { 28 void SetUp() override {
26 precache_url_table_.reset(new PrecacheURLTable()); 29 precache_url_table_.reset(new PrecacheURLTable());
27 db_.reset(new sql::Connection()); 30 db_.reset(new sql::Connection());
28 ASSERT_TRUE(db_->OpenInMemory()); 31 ASSERT_TRUE(db_->OpenInMemory());
29 precache_url_table_->Init(db_.get()); 32 ASSERT_TRUE(precache_url_table_->Init(db_.get()));
30 } 33 }
31 34
32 std::unique_ptr<PrecacheURLTable> precache_url_table_; 35 std::unique_ptr<PrecacheURLTable> precache_url_table_;
33 std::unique_ptr<sql::Connection> db_; 36 std::unique_ptr<sql::Connection> db_;
34 }; 37 };
35 38
36 TEST_F(PrecacheURLTableTest, AddURLWithNoExistingRow) { 39 TEST_F(PrecacheURLTableTest, AddURLWithNoExistingRow) {
37 const base::Time kTime = base::Time::FromInternalValue(100); 40 const base::Time kTime = base::Time::FromInternalValue(100);
38 precache_url_table_->AddURL(GURL("http://url.com"), kTime); 41 precache_url_table_->AddURL(GURL("http://url.com"), 1, true, kTime);
39 42
40 std::map<GURL, base::Time> expected_map; 43 std::map<GURL, base::Time> expected_map;
41 expected_map[GURL("http://url.com")] = kTime; 44 expected_map[GURL("http://url.com")] = kTime;
42 45
43 std::map<GURL, base::Time> actual_map; 46 std::map<GURL, base::Time> actual_map;
44 precache_url_table_->GetAllDataForTesting(&actual_map); 47 precache_url_table_->GetAllDataForTesting(&actual_map);
45 EXPECT_EQ(expected_map, actual_map); 48 EXPECT_EQ(expected_map, actual_map);
46 } 49 }
47 50
48 TEST_F(PrecacheURLTableTest, AddURLWithExistingRow) { 51 TEST_F(PrecacheURLTableTest, AddURLWithExistingRow) {
49 const base::Time kOldTime = base::Time::FromInternalValue(50); 52 const base::Time kOldTime = base::Time::FromInternalValue(50);
50 const base::Time kNewTime = base::Time::FromInternalValue(100); 53 const base::Time kNewTime = base::Time::FromInternalValue(100);
51 precache_url_table_->AddURL(GURL("http://url.com"), kOldTime); 54 precache_url_table_->AddURL(GURL("http://url.com"), 1, true, kOldTime);
52 precache_url_table_->AddURL(GURL("http://url.com"), kNewTime); 55 precache_url_table_->AddURL(GURL("http://url.com"), 1, true, kNewTime);
53 56
54 std::map<GURL, base::Time> expected_map; 57 std::map<GURL, base::Time> expected_map;
55 expected_map[GURL("http://url.com")] = kNewTime; 58 expected_map[GURL("http://url.com")] = kNewTime;
56 59
57 std::map<GURL, base::Time> actual_map; 60 std::map<GURL, base::Time> actual_map;
58 precache_url_table_->GetAllDataForTesting(&actual_map); 61 precache_url_table_->GetAllDataForTesting(&actual_map);
59 EXPECT_EQ(expected_map, actual_map); 62 EXPECT_EQ(expected_map, actual_map);
60 } 63 }
61 64
62 TEST_F(PrecacheURLTableTest, DeleteURL) { 65 TEST_F(PrecacheURLTableTest, SetURLAsNotPrecached) {
63 const base::Time kStaysTime = base::Time::FromInternalValue(50); 66 const base::Time kStaysTime = base::Time::FromInternalValue(50);
64 const base::Time kDeletedTime = base::Time::FromInternalValue(100); 67 const base::Time kDeletedTime = base::Time::FromInternalValue(100);
65 68
66 precache_url_table_->AddURL(GURL("http://stays.com"), kStaysTime); 69 precache_url_table_->AddURL(GURL("http://stays.com"), 1, true, kStaysTime);
67 precache_url_table_->AddURL(GURL("http://deleted.com"), kDeletedTime); 70 precache_url_table_->AddURL(GURL("http://deleted.com"), 1, true,
71 kDeletedTime);
68 72
69 precache_url_table_->DeleteURL(GURL("http://deleted.com")); 73 precache_url_table_->SetURLAsNotPrecached(GURL("http://deleted.com"));
70 74
71 std::map<GURL, base::Time> expected_map; 75 std::map<GURL, base::Time> expected_map;
72 expected_map[GURL("http://stays.com")] = kStaysTime; 76 expected_map[GURL("http://stays.com")] = kStaysTime;
73 77
74 std::map<GURL, base::Time> actual_map; 78 std::map<GURL, base::Time> actual_map;
75 precache_url_table_->GetAllDataForTesting(&actual_map); 79 precache_url_table_->GetAllDataForTesting(&actual_map);
76 EXPECT_EQ(expected_map, actual_map); 80 EXPECT_EQ(expected_map, actual_map);
77 } 81 }
78 82
79 TEST_F(PrecacheURLTableTest, HasURL) { 83 TEST_F(PrecacheURLTableTest, IsURLPrecached) {
80 EXPECT_FALSE(precache_url_table_->HasURL(GURL("http://url.com"))); 84 EXPECT_FALSE(precache_url_table_->IsURLPrecached(GURL("http://url.com")));
81 85
82 precache_url_table_->AddURL(GURL("http://url.com"), 86 precache_url_table_->AddURL(GURL("http://url.com"), 1, true,
83 base::Time::FromInternalValue(100)); 87 base::Time::FromInternalValue(100));
84 88
85 EXPECT_TRUE(precache_url_table_->HasURL(GURL("http://url.com"))); 89 EXPECT_TRUE(precache_url_table_->IsURLPrecached(GURL("http://url.com")));
86 90
87 precache_url_table_->DeleteURL(GURL("http://url.com")); 91 precache_url_table_->SetURLAsNotPrecached(GURL("http://url.com"));
88 92
89 EXPECT_FALSE(precache_url_table_->HasURL(GURL("http://url.com"))); 93 EXPECT_FALSE(precache_url_table_->IsURLPrecached(GURL("http://url.com")));
90 } 94 }
91 95
92 TEST_F(PrecacheURLTableTest, DeleteAllPrecachedBefore) { 96 TEST_F(PrecacheURLTableTest, DeleteAllPrecachedBefore) {
93 const base::Time kOldTime = base::Time::FromInternalValue(10); 97 const base::Time kOldTime = base::Time::FromInternalValue(10);
94 const base::Time kBeforeTime = base::Time::FromInternalValue(20); 98 const base::Time kBeforeTime = base::Time::FromInternalValue(20);
95 const base::Time kEndTime = base::Time::FromInternalValue(30); 99 const base::Time kEndTime = base::Time::FromInternalValue(30);
96 const base::Time kAfterTime = base::Time::FromInternalValue(40); 100 const base::Time kAfterTime = base::Time::FromInternalValue(40);
97 101
98 precache_url_table_->AddURL(GURL("http://old.com"), kOldTime); 102 precache_url_table_->AddURL(GURL("http://old.com"), 1, true, kOldTime);
99 precache_url_table_->AddURL(GURL("http://before.com"), kBeforeTime); 103 precache_url_table_->AddURL(GURL("http://before.com"), 1, true, kBeforeTime);
100 precache_url_table_->AddURL(GURL("http://end.com"), kEndTime); 104 precache_url_table_->AddURL(GURL("http://end.com"), 1, true, kEndTime);
101 precache_url_table_->AddURL(GURL("http://after.com"), kAfterTime); 105 precache_url_table_->AddURL(GURL("http://after.com"), 1, true, kAfterTime);
102 106
103 precache_url_table_->DeleteAllPrecachedBefore(kEndTime); 107 precache_url_table_->DeleteAllPrecachedBefore(kEndTime);
104 108
105 std::map<GURL, base::Time> expected_map; 109 std::map<GURL, base::Time> expected_map;
106 expected_map[GURL("http://end.com")] = kEndTime; 110 expected_map[GURL("http://end.com")] = kEndTime;
107 expected_map[GURL("http://after.com")] = kAfterTime; 111 expected_map[GURL("http://after.com")] = kAfterTime;
108 112
109 std::map<GURL, base::Time> actual_map; 113 std::map<GURL, base::Time> actual_map;
110 precache_url_table_->GetAllDataForTesting(&actual_map); 114 precache_url_table_->GetAllDataForTesting(&actual_map);
111 EXPECT_EQ(expected_map, actual_map); 115 EXPECT_EQ(expected_map, actual_map);
112 } 116 }
113 117
118 TEST_F(PrecacheURLTableTest, TableMigration) {
119 // Create the previous version of the URL table.
120 precache_url_table_.reset(new PrecacheURLTable());
121 db_.reset(new sql::Connection());
122 ASSERT_TRUE(db_->OpenInMemory());
123 ASSERT_TRUE(db_->Execute(
124 "CREATE TABLE IF NOT EXISTS precache_urls (url TEXT PRIMARY KEY, time "
125 "INTEGER)"));
126
127 // Populate data for the previous version.
128 const std::string old_urls[] = {"http://foo.com", "http://bar.com",
129 "http://foobar.com"};
130 for (const auto& url : old_urls) {
131 sql::Statement statement(db_->GetCachedStatement(
132 SQL_FROM_HERE, "INSERT INTO precache_urls (url, time) VALUES(?,100)"));
133 statement.BindString(0, url);
134 statement.Run();
135 }
136
137 // Verify the migration.
138 ASSERT_TRUE(precache_url_table_->Init(db_.get()));
139 EXPECT_TRUE(db_->DoesColumnExist("precache_urls", "was_used"));
140 EXPECT_TRUE(db_->DoesColumnExist("precache_urls", "is_precached"));
141 EXPECT_TRUE(db_->DoesColumnExist("precache_urls", "referrer_host_id"));
142
143 std::set<std::string> actual_urls;
144 sql::Statement statement(
145 db_->GetCachedStatement(SQL_FROM_HERE,
146 "select url, referrer_host_id, was_used, "
147 "is_precached from precache_urls"));
148 while (statement.Step()) {
149 actual_urls.insert(statement.ColumnString(0));
150 EXPECT_EQ(0, statement.ColumnInt(1));
151 EXPECT_EQ(0, statement.ColumnInt(2));
152 EXPECT_EQ(0, statement.ColumnInt(3));
153 }
154 EXPECT_THAT(std::set<std::string>(begin(old_urls), end(old_urls)),
155 ::testing::ContainerEq(actual_urls));
156 }
157
114 } // namespace 158 } // namespace
115 159
116 } // namespace precache 160 } // namespace precache
OLDNEW
« no previous file with comments | « components/precache/core/precache_url_table.cc ('k') | components/precache/core/proto/precache.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698