| Index: trunk/src/sql/test/test_helpers.cc
|
| ===================================================================
|
| --- trunk/src/sql/test/test_helpers.cc (revision 235594)
|
| +++ trunk/src/sql/test/test_helpers.cc (working copy)
|
| @@ -21,73 +21,11 @@
|
| return s.ColumnInt(0);
|
| }
|
|
|
| -// Helper for reading a number from the SQLite header.
|
| -// See net/base/big_endian.h.
|
| -unsigned ReadBigEndian(unsigned char* buf, size_t bytes) {
|
| - unsigned r = buf[0];
|
| - for (size_t i = 1; i < bytes; i++) {
|
| - r <<= 8;
|
| - r |= buf[i];
|
| - }
|
| - return r;
|
| -}
|
| -
|
| -// Helper for writing a number to the SQLite header.
|
| -void WriteBigEndian(unsigned val, unsigned char* buf, size_t bytes) {
|
| - for (size_t i = 0; i < bytes; i++) {
|
| - buf[bytes - i - 1] = (val & 0xFF);
|
| - val >>= 8;
|
| - }
|
| -}
|
| -
|
| } // namespace
|
|
|
| namespace sql {
|
| namespace test {
|
|
|
| -bool CorruptSizeInHeader(const base::FilePath& db_path) {
|
| - // See http://www.sqlite.org/fileformat.html#database_header
|
| - const size_t kHeaderSize = 100;
|
| - const size_t kPageSizeOffset = 16;
|
| - const size_t kFileChangeCountOffset = 24;
|
| - const size_t kPageCountOffset = 28;
|
| - const size_t kVersionValidForOffset = 92; // duplicate kFileChangeCountOffset
|
| -
|
| - unsigned char header[kHeaderSize];
|
| -
|
| - file_util::ScopedFILE file(file_util::OpenFile(db_path, "rb+"));
|
| - if (!file.get())
|
| - return false;
|
| -
|
| - if (0 != fseek(file.get(), 0, SEEK_SET))
|
| - return false;
|
| - if (1u != fread(header, sizeof(header), 1, file.get()))
|
| - return false;
|
| -
|
| - int64 db_size = 0;
|
| - if (!file_util::GetFileSize(db_path, &db_size))
|
| - return false;
|
| -
|
| - const unsigned page_size = ReadBigEndian(header + kPageSizeOffset, 2);
|
| -
|
| - // One larger than the expected size.
|
| - const unsigned page_count = (db_size + page_size) / page_size;
|
| - WriteBigEndian(page_count, header + kPageCountOffset, 4);
|
| -
|
| - // Update change count so outstanding readers know the info changed.
|
| - // Both spots must match for the page count to be considered valid.
|
| - unsigned change_count = ReadBigEndian(header + kFileChangeCountOffset, 4);
|
| - WriteBigEndian(change_count + 1, header + kFileChangeCountOffset, 4);
|
| - WriteBigEndian(change_count + 1, header + kVersionValidForOffset, 4);
|
| -
|
| - if (0 != fseek(file.get(), 0, SEEK_SET))
|
| - return false;
|
| - if (1u != fwrite(header, sizeof(header), 1, file.get()))
|
| - return false;
|
| -
|
| - return true;
|
| -}
|
| -
|
| size_t CountSQLTables(sql::Connection* db) {
|
| return CountSQLItemsOfType(db, "table");
|
| }
|
| @@ -153,14 +91,5 @@
|
| return db.Execute(sql.c_str());
|
| }
|
|
|
| -std::string IntegrityCheck(sql::Connection* db) {
|
| - sql::Statement statement(db->GetUniqueStatement("PRAGMA integrity_check"));
|
| -
|
| - // SQLite should always return a row of data.
|
| - EXPECT_TRUE(statement.Step());
|
| -
|
| - return statement.ColumnString(0);
|
| -}
|
| -
|
| } // namespace test
|
| } // namespace sql
|
|
|