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

Side by Side Diff: components/history/core/browser/top_sites_database_unittest.cc

Issue 2727553006: [sql] Convert thumbnails and top-sites databases to auto-recovery. (Closed)
Patch Set: tests and review comments Created 3 years, 9 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
« no previous file with comments | « components/history/core/browser/top_sites_database.cc ('k') | sql/recovery.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « components/history/core/browser/top_sites_database.cc ('k') | sql/recovery.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698