OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 // with no data. | 79 // with no data. |
80 TEST_F(TopSitesDatabaseTest, Version1) { | 80 TEST_F(TopSitesDatabaseTest, Version1) { |
81 ASSERT_TRUE(CreateDatabaseFromSQL(file_name_, "TopSites.v1.sql")); | 81 ASSERT_TRUE(CreateDatabaseFromSQL(file_name_, "TopSites.v1.sql")); |
82 | 82 |
83 TopSitesDatabase db; | 83 TopSitesDatabase db; |
84 ASSERT_TRUE(db.Init(file_name_)); | 84 ASSERT_TRUE(db.Init(file_name_)); |
85 VerifyTablesAndColumns(db.db_.get()); | 85 VerifyTablesAndColumns(db.db_.get()); |
86 VerifyDatabaseEmpty(db.db_.get()); | 86 VerifyDatabaseEmpty(db.db_.get()); |
87 } | 87 } |
88 | 88 |
| 89 // Version 2 is deprecated, the resulting schema should be current, |
| 90 // with no data. |
89 TEST_F(TopSitesDatabaseTest, Version2) { | 91 TEST_F(TopSitesDatabaseTest, Version2) { |
90 ASSERT_TRUE(CreateDatabaseFromSQL(file_name_, "TopSites.v2.sql")); | 92 ASSERT_TRUE(CreateDatabaseFromSQL(file_name_, "TopSites.v2.sql")); |
91 | 93 |
92 TopSitesDatabase db; | 94 TopSitesDatabase db; |
93 ASSERT_TRUE(db.Init(file_name_)); | 95 ASSERT_TRUE(db.Init(file_name_)); |
94 | |
95 VerifyTablesAndColumns(db.db_.get()); | 96 VerifyTablesAndColumns(db.db_.get()); |
96 | 97 VerifyDatabaseEmpty(db.db_.get()); |
97 // Basic operational check. | |
98 MostVisitedURLList urls; | |
99 std::map<GURL, Images> thumbnails; | |
100 db.GetPageThumbnails(&urls, &thumbnails); | |
101 ASSERT_EQ(3u, urls.size()); | |
102 ASSERT_EQ(3u, thumbnails.size()); | |
103 EXPECT_EQ(kUrl0, urls[0].url); // [0] because of url_rank. | |
104 // kGoogleThumbnail includes nul terminator. | |
105 ASSERT_EQ(sizeof(kGoogleThumbnail) - 1, | |
106 thumbnails[urls[0].url].thumbnail->size()); | |
107 EXPECT_TRUE(!memcmp(thumbnails[urls[0].url].thumbnail->front(), | |
108 kGoogleThumbnail, sizeof(kGoogleThumbnail) - 1)); | |
109 | |
110 ASSERT_TRUE(db.RemoveURL(urls[1])); | |
111 db.GetPageThumbnails(&urls, &thumbnails); | |
112 ASSERT_EQ(2u, urls.size()); | |
113 ASSERT_EQ(2u, thumbnails.size()); | |
114 } | 98 } |
115 | 99 |
116 TEST_F(TopSitesDatabaseTest, Version3) { | 100 TEST_F(TopSitesDatabaseTest, Version3) { |
117 ASSERT_TRUE(CreateDatabaseFromSQL(file_name_, "TopSites.v3.sql")); | 101 ASSERT_TRUE(CreateDatabaseFromSQL(file_name_, "TopSites.v3.sql")); |
118 | 102 |
119 TopSitesDatabase db; | 103 TopSitesDatabase db; |
120 ASSERT_TRUE(db.Init(file_name_)); | 104 ASSERT_TRUE(db.Init(file_name_)); |
121 | 105 |
122 VerifyTablesAndColumns(db.db_.get()); | 106 VerifyTablesAndColumns(db.db_.get()); |
123 | 107 |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 // Database is unusable at the SQLite level. | 175 // Database is unusable at the SQLite level. |
192 { | 176 { |
193 sql::test::ScopedErrorExpecter expecter; | 177 sql::test::ScopedErrorExpecter expecter; |
194 expecter.ExpectError(SQLITE_CORRUPT); | 178 expecter.ExpectError(SQLITE_CORRUPT); |
195 sql::Connection raw_db; | 179 sql::Connection raw_db; |
196 EXPECT_TRUE(raw_db.Open(file_name_)); | 180 EXPECT_TRUE(raw_db.Open(file_name_)); |
197 EXPECT_FALSE(raw_db.IsSQLValid("PRAGMA integrity_check")); | 181 EXPECT_FALSE(raw_db.IsSQLValid("PRAGMA integrity_check")); |
198 ASSERT_TRUE(expecter.SawExpectedErrors()); | 182 ASSERT_TRUE(expecter.SawExpectedErrors()); |
199 } | 183 } |
200 | 184 |
201 // Corruption should be detected and recovered during Init(). After recovery, | 185 // Corruption should be detected and recovered during Init(). |
202 // the Version2 checks should work. | |
203 { | 186 { |
204 sql::test::ScopedErrorExpecter expecter; | 187 sql::test::ScopedErrorExpecter expecter; |
205 expecter.ExpectError(SQLITE_CORRUPT); | 188 expecter.ExpectError(SQLITE_CORRUPT); |
206 | 189 |
207 TopSitesDatabase db; | 190 TopSitesDatabase db; |
208 ASSERT_TRUE(db.Init(file_name_)); | 191 ASSERT_TRUE(db.Init(file_name_)); |
209 | |
210 VerifyTablesAndColumns(db.db_.get()); | 192 VerifyTablesAndColumns(db.db_.get()); |
211 | 193 VerifyDatabaseEmpty(db.db_.get()); |
212 // Basic operational check. | |
213 MostVisitedURLList urls; | |
214 std::map<GURL, Images> thumbnails; | |
215 db.GetPageThumbnails(&urls, &thumbnails); | |
216 ASSERT_EQ(3u, urls.size()); | |
217 ASSERT_EQ(3u, thumbnails.size()); | |
218 EXPECT_EQ(kUrl0, urls[0].url); // [0] because of url_rank. | |
219 // kGoogleThumbnail includes nul terminator. | |
220 ASSERT_EQ(sizeof(kGoogleThumbnail) - 1, | |
221 thumbnails[urls[0].url].thumbnail->size()); | |
222 EXPECT_TRUE(!memcmp(thumbnails[urls[0].url].thumbnail->front(), | |
223 kGoogleThumbnail, sizeof(kGoogleThumbnail) - 1)); | |
224 | 194 |
225 ASSERT_TRUE(expecter.SawExpectedErrors()); | 195 ASSERT_TRUE(expecter.SawExpectedErrors()); |
226 } | 196 } |
227 } | 197 } |
228 | 198 |
229 TEST_F(TopSitesDatabaseTest, Recovery3) { | 199 TEST_F(TopSitesDatabaseTest, Recovery3) { |
230 // Recovery module only supports some platforms at this time. | 200 // Recovery module only supports some platforms at this time. |
231 if (!sql::Recovery::FullRecoverySupported()) | 201 if (!sql::Recovery::FullRecoverySupported()) |
232 return; | 202 return; |
233 | 203 |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
460 db.RemoveURL(url2); | 430 db.RemoveURL(url2); |
461 | 431 |
462 db.GetPageThumbnails(&urls, &thumbnails); | 432 db.GetPageThumbnails(&urls, &thumbnails); |
463 ASSERT_EQ(4u, urls.size()); | 433 ASSERT_EQ(4u, urls.size()); |
464 ASSERT_EQ(4u, thumbnails.size()); | 434 ASSERT_EQ(4u, thumbnails.size()); |
465 EXPECT_EQ(mapsUrl, urls[0].url); | 435 EXPECT_EQ(mapsUrl, urls[0].url); |
466 EXPECT_EQ(kUrl0, urls[1].url); | 436 EXPECT_EQ(kUrl0, urls[1].url); |
467 } | 437 } |
468 | 438 |
469 } // namespace history | 439 } // namespace history |
OLD | NEW |