From 2cfcf5c0ef8dad0a87985e21a22d6eff8cc0b37a Mon Sep 17 00:00:00 2001 From: "arv@chromium.org" Date: Wed, 31 Mar 2010 00:11:41 +0000 Subject: Revert 43143 - Implement db corruption tests for diagnostic mode Uses sqlite's pragma integrity_check Tests the 5 main databases BUG=27885 TEST=none Review URL: http://codereview.chromium.org/1548005 TBR=cpu@chromium.org Review URL: http://codereview.chromium.org/1539006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43152 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/diagnostics/diagnostics_model.cc | 16 ---- chrome/browser/diagnostics/sqlite_diagnostics.cc | 96 ------------------------ chrome/browser/diagnostics/sqlite_diagnostics.h | 15 +--- 3 files changed, 4 insertions(+), 123 deletions(-) (limited to 'chrome/browser/diagnostics') diff --git a/chrome/browser/diagnostics/diagnostics_model.cc b/chrome/browser/diagnostics/diagnostics_model.cc index b7a1bc3..0fb53fc 100644 --- a/chrome/browser/diagnostics/diagnostics_model.cc +++ b/chrome/browser/diagnostics/diagnostics_model.cc @@ -14,7 +14,6 @@ #include "base/path_service.h" #include "chrome/browser/diagnostics/diagnostics_test.h" #include "chrome/browser/diagnostics/recon_diagnostics.h" -#include "chrome/browser/diagnostics/sqlite_diagnostics.h" #include "chrome/common/chrome_paths.h" namespace { @@ -87,11 +86,6 @@ class DiagnosticsModelWin : public DiagnosticsModelImpl { tests_.push_back(MakeDictonaryDirTest()); tests_.push_back(MakeInspectorDirTest()); tests_.push_back(MakeDiskSpaceTest()); - tests_.push_back(MakeSqliteWebDbTest()); - tests_.push_back(MakeSqliteCookiesDbTest()); - tests_.push_back(MakeSqliteHistoryDbTest()); - tests_.push_back(MakeSqliteArchivedHistoryDbTest()); - tests_.push_back(MakeSqliteThumbnailsDbTest()); } private: @@ -108,11 +102,6 @@ class DiagnosticsModelMac : public DiagnosticsModelImpl { tests_.push_back(MakeDictonaryDirTest()); tests_.push_back(MakeInspectorDirTest()); tests_.push_back(MakeDiskSpaceTest()); - tests_.push_back(MakeSqliteWebDbTest()); - tests_.push_back(MakeSqliteCookiesDbTest()); - tests_.push_back(MakeSqliteHistoryDbTest()); - tests_.push_back(MakeSqliteArchivedHistoryDbTest()); - tests_.push_back(MakeSqliteThumbnailsDbTest()); } private: @@ -129,11 +118,6 @@ class DiagnosticsModelPosix : public DiagnosticsModelImpl { tests_.push_back(MakeDictonaryDirTest()); tests_.push_back(MakeInspectorDirTest()); tests_.push_back(MakeDiskSpaceTest()); - tests_.push_back(MakeSqliteWebDbTest()); - tests_.push_back(MakeSqliteCookiesDbTest()); - tests_.push_back(MakeSqliteHistoryDbTest()); - tests_.push_back(MakeSqliteArchivedHistoryDbTest()); - tests_.push_back(MakeSqliteThumbnailsDbTest()); } private: diff --git a/chrome/browser/diagnostics/sqlite_diagnostics.cc b/chrome/browser/diagnostics/sqlite_diagnostics.cc index e0eeab3..fbefc33 100644 --- a/chrome/browser/diagnostics/sqlite_diagnostics.cc +++ b/chrome/browser/diagnostics/sqlite_diagnostics.cc @@ -5,16 +5,9 @@ #include "chrome/browser/diagnostics/sqlite_diagnostics.h" #include "app/sql/connection.h" -#include "app/sql/init_status.h" -#include "app/sql/statement.h" -#include "base/file_util.h" #include "base/histogram.h" #include "base/logging.h" -#include "base/path_service.h" #include "base/singleton.h" -#include "base/string_util.h" -#include "chrome/common/chrome_constants.h" -#include "chrome/common/chrome_paths.h" namespace { @@ -54,74 +47,6 @@ class BasicSqliteErrrorHandler : public sql::ErrorDelegate { } }; -struct DbTestInfo { - const char* test_name; - const FilePath::CharType* db_name; -}; - -static const DbTestInfo kTestInfo[] = { - {"Web Database", chrome::kWebDataFilename}, - {"Cookies Database", chrome::kCookieFilename}, - {"History Database", chrome::kHistoryFilename}, - {"Archived history Database", chrome::kArchivedHistoryFilename}, - {"Thumbnails Database", chrome::kThumbnailsFilename} -}; - -// Generic diagnostic test class for checking sqlite db integrity. -class SqliteIntegrityTest : public DiagnosticTest { - public: - explicit SqliteIntegrityTest(int index) - : DiagnosticTest(ASCIIToUTF16(kTestInfo[index].test_name)), - index_(index) { - } - - virtual int GetId() { return 0; } - - virtual bool ExecuteImpl(DiagnosticsModel::Observer* observer) { - FilePath path; - PathService::Get(chrome::DIR_USER_DATA, &path); - path = path.Append(FilePath::FromWStringHack(chrome::kNotSignedInProfile)); - path = path.Append(kTestInfo[index_].db_name); - if (!file_util::PathExists(path)) { - RecordFailure(ASCIIToUTF16("File not found")); - return true; - } - - int errors = 0; - { // This block scopes the lifetime of the db objects. - sql::Connection db; - db.set_exclusive_locking(); - if (!db.Open(path)) { - RecordFailure(ASCIIToUTF16("Cannot open db. Possibly corrupted")); - return true; - } - sql::Statement s(db.GetUniqueStatement("PRAGMA integrity_check;")); - if (!s) { - RecordFailure(ASCIIToUTF16("Statement failed")); - return false; - } - while (s.Step()) { - std::string result(s.ColumnString(0)); - if ("ok" != result) - ++errors; - } - } - // All done. Report to the user. - if (errors != 0) { - string16 str(ASCIIToUTF16("Database corruption detected :")); - str += IntToString16(errors) + ASCIIToUTF16(" errors"); - RecordFailure(str); - return true; - } - RecordSuccess(ASCIIToUTF16("no corruption detected")); - return true; - } - - private: - int index_; - DISALLOW_COPY_AND_ASSIGN(SqliteIntegrityTest); -}; - } // namespace sql::ErrorDelegate* GetErrorHandlerForCookieDb() { @@ -143,24 +68,3 @@ sql::ErrorDelegate* GetErrorHandlerForTextDb() { sql::ErrorDelegate* GetErrorHandlerForWebDb() { return new BasicSqliteErrrorHandler<4>(); } - -DiagnosticTest* MakeSqliteWebDbTest() { - return new SqliteIntegrityTest(0); -} - -DiagnosticTest* MakeSqliteCookiesDbTest() { - return new SqliteIntegrityTest(1); -} - -DiagnosticTest* MakeSqliteHistoryDbTest() { - return new SqliteIntegrityTest(2); -} - -DiagnosticTest* MakeSqliteArchivedHistoryDbTest() { - return new SqliteIntegrityTest(3); -} - -DiagnosticTest* MakeSqliteThumbnailsDbTest() { - return new SqliteIntegrityTest(4); -} - diff --git a/chrome/browser/diagnostics/sqlite_diagnostics.h b/chrome/browser/diagnostics/sqlite_diagnostics.h index 1618a07..ee1a7f1 100644 --- a/chrome/browser/diagnostics/sqlite_diagnostics.h +++ b/chrome/browser/diagnostics/sqlite_diagnostics.h @@ -5,25 +5,18 @@ #ifndef CHROME_BROWSER_DIAGNOSTICS_SQLITE_DIAGNOSTICS_H_ #define CHROME_BROWSER_DIAGNOSTICS_SQLITE_DIAGNOSTICS_H_ -#include "chrome/browser/diagnostics/diagnostics_test.h" - namespace sql { class ErrorDelegate; } -// The following five factories create the error handlers that we use when -// issuing sqlite commands during normal browser operation. sql::ErrorDelegate* GetErrorHandlerForCookieDb(); + sql::ErrorDelegate* GetErrorHandlerForHistoryDb(); + sql::ErrorDelegate* GetErrorHandlerForThumbnailDb(); + sql::ErrorDelegate* GetErrorHandlerForTextDb(); -sql::ErrorDelegate* GetErrorHandlerForWebDb(); -// Factories for the db integrity tests we run in diagnostic mode. -DiagnosticTest* MakeSqliteWebDbTest(); -DiagnosticTest* MakeSqliteCookiesDbTest(); -DiagnosticTest* MakeSqliteHistoryDbTest(); -DiagnosticTest* MakeSqliteArchivedHistoryDbTest(); -DiagnosticTest* MakeSqliteThumbnailsDbTest(); +sql::ErrorDelegate* GetErrorHandlerForWebDb(); #endif // CHROME_BROWSER_DIAGNOSTICS_SQLITE_DIAGNOSTICS_H_ -- cgit v1.1