| Index: sync/syncable/directory_backing_store_unittest.cc
|
| diff --git a/sync/syncable/directory_backing_store_unittest.cc b/sync/syncable/directory_backing_store_unittest.cc
|
| deleted file mode 100644
|
| index ed4d375b1bc394b875cccf9c1194d1259ea1dba8..0000000000000000000000000000000000000000
|
| --- a/sync/syncable/directory_backing_store_unittest.cc
|
| +++ /dev/null
|
| @@ -1,4273 +0,0 @@
|
| -// Copyright 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "sync/syncable/directory_backing_store.h"
|
| -
|
| -#include <stddef.h>
|
| -#include <stdint.h>
|
| -
|
| -#include <map>
|
| -#include <memory>
|
| -#include <string>
|
| -
|
| -#include "base/files/file_path.h"
|
| -#include "base/files/scoped_temp_dir.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/run_loop.h"
|
| -#include "base/stl_util.h"
|
| -#include "base/strings/string_number_conversions.h"
|
| -#include "base/strings/stringprintf.h"
|
| -#include "build/build_config.h"
|
| -#include "sql/connection.h"
|
| -#include "sql/statement.h"
|
| -#include "sql/test/test_helpers.h"
|
| -#include "sync/base/sync_export.h"
|
| -#include "sync/internal_api/public/base/node_ordinal.h"
|
| -#include "sync/protocol/bookmark_specifics.pb.h"
|
| -#include "sync/protocol/sync.pb.h"
|
| -#include "sync/syncable/directory.h"
|
| -#include "sync/syncable/on_disk_directory_backing_store.h"
|
| -#include "sync/syncable/syncable-inl.h"
|
| -#include "sync/test/directory_backing_store_corruption_testing.h"
|
| -#include "sync/test/test_directory_backing_store.h"
|
| -#include "sync/util/time.h"
|
| -#include "testing/gtest/include/gtest/gtest-param-test.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace syncer {
|
| -namespace syncable {
|
| -namespace {
|
| -
|
| -// A handler that simply sets |catastrophic_error_handler_was_called| to true.
|
| -void CatastrophicErrorHandler(bool* catastrophic_error_handler_was_called) {
|
| - *catastrophic_error_handler_was_called = true;
|
| -}
|
| -
|
| -// Create a dirty EntryKernel with an ID derived from |id| + |id_suffix|.
|
| -std::unique_ptr<EntryKernel> CreateEntry(int id, const std::string& id_suffix) {
|
| - std::unique_ptr<EntryKernel> entry(new EntryKernel());
|
| - std::string id_string = base::Int64ToString(id) + id_suffix;
|
| - entry->put(ID, Id::CreateFromClientString(id_string));
|
| - entry->put(META_HANDLE, id);
|
| - entry->mark_dirty(NULL);
|
| - return entry;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -SYNC_EXPORT extern const int32_t kCurrentPageSizeKB;
|
| -SYNC_EXPORT extern const int32_t kCurrentDBVersion;
|
| -
|
| -class MigrationTest : public testing::TestWithParam<int> {
|
| - public:
|
| - void SetUp() override { ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); }
|
| -
|
| - protected:
|
| - std::string GetUsername() {
|
| - return "nick@chromium.org";
|
| - }
|
| -
|
| - base::FilePath GetDatabasePath() {
|
| - return temp_dir_.path().Append(Directory::kSyncDatabaseFilename);
|
| - }
|
| -
|
| - static bool LoadAndIgnoreReturnedData(DirectoryBackingStore *dbs) {
|
| - Directory::MetahandlesMap tmp_handles_map;
|
| - JournalIndex delete_journals;
|
| - MetahandleSet metahandles_to_purge;
|
| - STLValueDeleter<Directory::MetahandlesMap> deleter(&tmp_handles_map);
|
| - Directory::KernelLoadInfo kernel_load_info;
|
| - return dbs->Load(&tmp_handles_map, &delete_journals, &metahandles_to_purge,
|
| - &kernel_load_info) == OPENED;
|
| - }
|
| -
|
| - void SetUpVersion67Database(sql::Connection* connection);
|
| - void SetUpVersion68Database(sql::Connection* connection);
|
| - void SetUpVersion69Database(sql::Connection* connection);
|
| - void SetUpVersion70Database(sql::Connection* connection);
|
| - void SetUpVersion71Database(sql::Connection* connection);
|
| - void SetUpVersion72Database(sql::Connection* connection);
|
| - void SetUpVersion73Database(sql::Connection* connection);
|
| - void SetUpVersion74Database(sql::Connection* connection);
|
| - void SetUpVersion75Database(sql::Connection* connection);
|
| - void SetUpVersion76Database(sql::Connection* connection);
|
| - void SetUpVersion77Database(sql::Connection* connection);
|
| - void SetUpVersion78Database(sql::Connection* connection);
|
| - void SetUpVersion79Database(sql::Connection* connection);
|
| - void SetUpVersion80Database(sql::Connection* connection);
|
| - void SetUpVersion81Database(sql::Connection* connection);
|
| - void SetUpVersion82Database(sql::Connection* connection);
|
| - void SetUpVersion83Database(sql::Connection* connection);
|
| - void SetUpVersion84Database(sql::Connection* connection);
|
| - void SetUpVersion85Database(sql::Connection* connection);
|
| - void SetUpVersion86Database(sql::Connection* connection);
|
| - void SetUpVersion87Database(sql::Connection* connection);
|
| - void SetUpVersion88Database(sql::Connection* connection);
|
| - void SetUpVersion89Database(sql::Connection* connection);
|
| - void SetUpVersion90Database(sql::Connection* connection);
|
| -
|
| - void SetUpCurrentDatabaseAndCheckVersion(sql::Connection* connection) {
|
| - SetUpVersion90Database(connection); // Prepopulates data.
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), connection));
|
| - ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion());
|
| -
|
| - ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get()));
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - }
|
| -
|
| - private:
|
| - base::MessageLoop message_loop_;
|
| - base::ScopedTempDir temp_dir_;
|
| -};
|
| -
|
| -class DirectoryBackingStoreTest : public MigrationTest {};
|
| -
|
| -#if defined(OS_WIN)
|
| -
|
| -// On Windows, we used to store timestamps in FILETIME format.
|
| -#define LEGACY_META_PROTO_TIMES_1 129079956640320000LL
|
| -#define LEGACY_META_PROTO_TIMES_2 128976886618480000LL
|
| -#define LEGACY_META_PROTO_TIMES_4 129002163642690000LL
|
| -#define LEGACY_META_PROTO_TIMES_5 129001555500000000LL
|
| -#define LEGACY_META_PROTO_TIMES_6 129053976170000000LL
|
| -#define LEGACY_META_PROTO_TIMES_7 128976864758480000LL
|
| -#define LEGACY_META_PROTO_TIMES_8 128976864758480000LL
|
| -#define LEGACY_META_PROTO_TIMES_9 128976864758480000LL
|
| -#define LEGACY_META_PROTO_TIMES_10 128976864758480000LL
|
| -#define LEGACY_META_PROTO_TIMES_11 129079956948440000LL
|
| -#define LEGACY_META_PROTO_TIMES_12 129079957513650000LL
|
| -#define LEGACY_META_PROTO_TIMES_13 129079957985300000LL
|
| -#define LEGACY_META_PROTO_TIMES_14 129079958383000000LL
|
| -
|
| -#define LEGACY_META_PROTO_TIMES_STR_1 "129079956640320000"
|
| -#define LEGACY_META_PROTO_TIMES_STR_2 "128976886618480000"
|
| -#define LEGACY_META_PROTO_TIMES_STR_4 "129002163642690000"
|
| -#define LEGACY_META_PROTO_TIMES_STR_5 "129001555500000000"
|
| -#define LEGACY_META_PROTO_TIMES_STR_6 "129053976170000000"
|
| -#define LEGACY_META_PROTO_TIMES_STR_7 "128976864758480000"
|
| -#define LEGACY_META_PROTO_TIMES_STR_8 "128976864758480000"
|
| -#define LEGACY_META_PROTO_TIMES_STR_9 "128976864758480000"
|
| -#define LEGACY_META_PROTO_TIMES_STR_10 "128976864758480000"
|
| -#define LEGACY_META_PROTO_TIMES_STR_11 "129079956948440000"
|
| -#define LEGACY_META_PROTO_TIMES_STR_12 "129079957513650000"
|
| -#define LEGACY_META_PROTO_TIMES_STR_13 "129079957985300000"
|
| -#define LEGACY_META_PROTO_TIMES_STR_14 "129079958383000000"
|
| -
|
| -// Generated via:
|
| -//
|
| -// ruby -ane '$F[1].sub!("LEGACY_", ""); $F[2] = Integer($F[2].sub!("LL", "")) /
|
| -// 10000 - 11644473600000; print "#{$F[0]} #{$F[1]} #{$F[2]}LL"'
|
| -//
|
| -// Magic numbers taken from
|
| -// http://stackoverflow.com/questions/5398557/
|
| -// java-library-for-dealing-with-win32-filetime .
|
| -
|
| -// Now we store them in Java format (ms since the Unix epoch).
|
| -#define META_PROTO_TIMES_1 1263522064032LL
|
| -#define META_PROTO_TIMES_2 1253215061848LL
|
| -#define META_PROTO_TIMES_4 1255742764269LL
|
| -#define META_PROTO_TIMES_5 1255681950000LL
|
| -#define META_PROTO_TIMES_6 1260924017000LL
|
| -#define META_PROTO_TIMES_7 1253212875848LL
|
| -#define META_PROTO_TIMES_8 1253212875848LL
|
| -#define META_PROTO_TIMES_9 1253212875848LL
|
| -#define META_PROTO_TIMES_10 1253212875848LL
|
| -#define META_PROTO_TIMES_11 1263522094844LL
|
| -#define META_PROTO_TIMES_12 1263522151365LL
|
| -#define META_PROTO_TIMES_13 1263522198530LL
|
| -#define META_PROTO_TIMES_14 1263522238300LL
|
| -
|
| -#define META_PROTO_TIMES_STR_1 "1263522064032"
|
| -#define META_PROTO_TIMES_STR_2 "1253215061848"
|
| -#define META_PROTO_TIMES_STR_4 "1255742764269"
|
| -#define META_PROTO_TIMES_STR_5 "1255681950000"
|
| -#define META_PROTO_TIMES_STR_6 "1260924017000"
|
| -#define META_PROTO_TIMES_STR_7 "1253212875848"
|
| -#define META_PROTO_TIMES_STR_8 "1253212875848"
|
| -#define META_PROTO_TIMES_STR_9 "1253212875848"
|
| -#define META_PROTO_TIMES_STR_10 "1253212875848"
|
| -#define META_PROTO_TIMES_STR_11 "1263522094844"
|
| -#define META_PROTO_TIMES_STR_12 "1263522151365"
|
| -#define META_PROTO_TIMES_STR_13 "1263522198530"
|
| -#define META_PROTO_TIMES_STR_14 "1263522238300"
|
| -
|
| -#else
|
| -
|
| -// On other platforms, we used to store timestamps in time_t format (s
|
| -// since the Unix epoch).
|
| -#define LEGACY_META_PROTO_TIMES_1 1263522064LL
|
| -#define LEGACY_META_PROTO_TIMES_2 1253215061LL
|
| -#define LEGACY_META_PROTO_TIMES_4 1255742764LL
|
| -#define LEGACY_META_PROTO_TIMES_5 1255681950LL
|
| -#define LEGACY_META_PROTO_TIMES_6 1260924017LL
|
| -#define LEGACY_META_PROTO_TIMES_7 1253212875LL
|
| -#define LEGACY_META_PROTO_TIMES_8 1253212875LL
|
| -#define LEGACY_META_PROTO_TIMES_9 1253212875LL
|
| -#define LEGACY_META_PROTO_TIMES_10 1253212875LL
|
| -#define LEGACY_META_PROTO_TIMES_11 1263522094LL
|
| -#define LEGACY_META_PROTO_TIMES_12 1263522151LL
|
| -#define LEGACY_META_PROTO_TIMES_13 1263522198LL
|
| -#define LEGACY_META_PROTO_TIMES_14 1263522238LL
|
| -
|
| -#define LEGACY_META_PROTO_TIMES_STR_1 "1263522064"
|
| -#define LEGACY_META_PROTO_TIMES_STR_2 "1253215061"
|
| -#define LEGACY_META_PROTO_TIMES_STR_4 "1255742764"
|
| -#define LEGACY_META_PROTO_TIMES_STR_5 "1255681950"
|
| -#define LEGACY_META_PROTO_TIMES_STR_6 "1260924017"
|
| -#define LEGACY_META_PROTO_TIMES_STR_7 "1253212875"
|
| -#define LEGACY_META_PROTO_TIMES_STR_8 "1253212875"
|
| -#define LEGACY_META_PROTO_TIMES_STR_9 "1253212875"
|
| -#define LEGACY_META_PROTO_TIMES_STR_10 "1253212875"
|
| -#define LEGACY_META_PROTO_TIMES_STR_11 "1263522094"
|
| -#define LEGACY_META_PROTO_TIMES_STR_12 "1263522151"
|
| -#define LEGACY_META_PROTO_TIMES_STR_13 "1263522198"
|
| -#define LEGACY_META_PROTO_TIMES_STR_14 "1263522238"
|
| -
|
| -// Now we store them in Java format (ms since the Unix epoch).
|
| -#define META_PROTO_TIMES_1 1263522064000LL
|
| -#define META_PROTO_TIMES_2 1253215061000LL
|
| -#define META_PROTO_TIMES_4 1255742764000LL
|
| -#define META_PROTO_TIMES_5 1255681950000LL
|
| -#define META_PROTO_TIMES_6 1260924017000LL
|
| -#define META_PROTO_TIMES_7 1253212875000LL
|
| -#define META_PROTO_TIMES_8 1253212875000LL
|
| -#define META_PROTO_TIMES_9 1253212875000LL
|
| -#define META_PROTO_TIMES_10 1253212875000LL
|
| -#define META_PROTO_TIMES_11 1263522094000LL
|
| -#define META_PROTO_TIMES_12 1263522151000LL
|
| -#define META_PROTO_TIMES_13 1263522198000LL
|
| -#define META_PROTO_TIMES_14 1263522238000LL
|
| -
|
| -#define META_PROTO_TIMES_STR_1 "1263522064000"
|
| -#define META_PROTO_TIMES_STR_2 "1253215061000"
|
| -#define META_PROTO_TIMES_STR_4 "1255742764000"
|
| -#define META_PROTO_TIMES_STR_5 "1255681950000"
|
| -#define META_PROTO_TIMES_STR_6 "1260924017000"
|
| -#define META_PROTO_TIMES_STR_7 "1253212875000"
|
| -#define META_PROTO_TIMES_STR_8 "1253212875000"
|
| -#define META_PROTO_TIMES_STR_9 "1253212875000"
|
| -#define META_PROTO_TIMES_STR_10 "1253212875000"
|
| -#define META_PROTO_TIMES_STR_11 "1263522094000"
|
| -#define META_PROTO_TIMES_STR_12 "1263522151000"
|
| -#define META_PROTO_TIMES_STR_13 "1263522198000"
|
| -#define META_PROTO_TIMES_STR_14 "1263522238000"
|
| -
|
| -#endif
|
| -
|
| -// Helper macros for the database dumps in the SetUpVersion*Database
|
| -// functions.
|
| -#define LEGACY_META_PROTO_TIMES(x) LEGACY_META_PROTO_TIMES_##x
|
| -#define LEGACY_META_PROTO_TIMES_STR(x) LEGACY_META_PROTO_TIMES_STR_##x
|
| -#define LEGACY_PROTO_TIME_VALS(x) \
|
| - LEGACY_META_PROTO_TIMES_STR(x) "," \
|
| - LEGACY_META_PROTO_TIMES_STR(x) "," \
|
| - LEGACY_META_PROTO_TIMES_STR(x) "," \
|
| - LEGACY_META_PROTO_TIMES_STR(x)
|
| -#define META_PROTO_TIMES(x) META_PROTO_TIMES_##x
|
| -#define META_PROTO_TIMES_STR(x) META_PROTO_TIMES_STR_##x
|
| -#define META_PROTO_TIMES_VALS(x) \
|
| - META_PROTO_TIMES_STR(x) "," \
|
| - META_PROTO_TIMES_STR(x) "," \
|
| - META_PROTO_TIMES_STR(x) "," \
|
| - META_PROTO_TIMES_STR(x)
|
| -
|
| -namespace {
|
| -
|
| -// Helper functions for testing.
|
| -
|
| -enum ShouldIncludeDeletedItems {
|
| - INCLUDE_DELETED_ITEMS,
|
| - DONT_INCLUDE_DELETED_ITEMS
|
| -};
|
| -
|
| -// Returns a map from metahandle -> expected legacy time (in proto
|
| -// format).
|
| -std::map<int64_t, int64_t> GetExpectedLegacyMetaProtoTimes(
|
| - enum ShouldIncludeDeletedItems include_deleted) {
|
| - std::map<int64_t, int64_t> expected_legacy_meta_proto_times;
|
| - expected_legacy_meta_proto_times[1] = LEGACY_META_PROTO_TIMES(1);
|
| - if (include_deleted == INCLUDE_DELETED_ITEMS) {
|
| - expected_legacy_meta_proto_times[2] = LEGACY_META_PROTO_TIMES(2);
|
| - expected_legacy_meta_proto_times[4] = LEGACY_META_PROTO_TIMES(4);
|
| - expected_legacy_meta_proto_times[5] = LEGACY_META_PROTO_TIMES(5);
|
| - }
|
| - expected_legacy_meta_proto_times[6] = LEGACY_META_PROTO_TIMES(6);
|
| - expected_legacy_meta_proto_times[7] = LEGACY_META_PROTO_TIMES(7);
|
| - expected_legacy_meta_proto_times[8] = LEGACY_META_PROTO_TIMES(8);
|
| - expected_legacy_meta_proto_times[9] = LEGACY_META_PROTO_TIMES(9);
|
| - expected_legacy_meta_proto_times[10] = LEGACY_META_PROTO_TIMES(10);
|
| - expected_legacy_meta_proto_times[11] = LEGACY_META_PROTO_TIMES(11);
|
| - expected_legacy_meta_proto_times[12] = LEGACY_META_PROTO_TIMES(12);
|
| - expected_legacy_meta_proto_times[13] = LEGACY_META_PROTO_TIMES(13);
|
| - expected_legacy_meta_proto_times[14] = LEGACY_META_PROTO_TIMES(14);
|
| - return expected_legacy_meta_proto_times;
|
| -}
|
| -
|
| -// Returns a map from metahandle -> expected time (in proto format).
|
| -std::map<int64_t, int64_t> GetExpectedMetaProtoTimes(
|
| - enum ShouldIncludeDeletedItems include_deleted) {
|
| - std::map<int64_t, int64_t> expected_meta_proto_times;
|
| - expected_meta_proto_times[1] = META_PROTO_TIMES(1);
|
| - if (include_deleted == INCLUDE_DELETED_ITEMS) {
|
| - expected_meta_proto_times[2] = META_PROTO_TIMES(2);
|
| - expected_meta_proto_times[4] = META_PROTO_TIMES(4);
|
| - expected_meta_proto_times[5] = META_PROTO_TIMES(5);
|
| - }
|
| - expected_meta_proto_times[6] = META_PROTO_TIMES(6);
|
| - expected_meta_proto_times[7] = META_PROTO_TIMES(7);
|
| - expected_meta_proto_times[8] = META_PROTO_TIMES(8);
|
| - expected_meta_proto_times[9] = META_PROTO_TIMES(9);
|
| - expected_meta_proto_times[10] = META_PROTO_TIMES(10);
|
| - expected_meta_proto_times[11] = META_PROTO_TIMES(11);
|
| - expected_meta_proto_times[12] = META_PROTO_TIMES(12);
|
| - expected_meta_proto_times[13] = META_PROTO_TIMES(13);
|
| - expected_meta_proto_times[14] = META_PROTO_TIMES(14);
|
| - return expected_meta_proto_times;
|
| -}
|
| -
|
| -// Returns a map from metahandle -> expected time (as a Time object).
|
| -std::map<int64_t, base::Time> GetExpectedMetaTimes() {
|
| - std::map<int64_t, base::Time> expected_meta_times;
|
| - const std::map<int64_t, int64_t>& expected_meta_proto_times =
|
| - GetExpectedMetaProtoTimes(INCLUDE_DELETED_ITEMS);
|
| - for (std::map<int64_t, int64_t>::const_iterator it =
|
| - expected_meta_proto_times.begin();
|
| - it != expected_meta_proto_times.end(); ++it) {
|
| - expected_meta_times[it->first] = ProtoTimeToTime(it->second);
|
| - }
|
| - return expected_meta_times;
|
| -}
|
| -
|
| -// Extracts a map from metahandle -> time (in proto format) from the
|
| -// given database.
|
| -std::map<int64_t, int64_t> GetMetaProtoTimes(sql::Connection* db) {
|
| - sql::Statement s(db->GetCachedStatement(
|
| - SQL_FROM_HERE,
|
| - "SELECT metahandle, mtime, server_mtime, ctime, server_ctime "
|
| - "FROM metas"));
|
| - EXPECT_EQ(5, s.ColumnCount());
|
| - std::map<int64_t, int64_t> meta_times;
|
| - while (s.Step()) {
|
| - int64_t metahandle = s.ColumnInt64(0);
|
| - int64_t mtime = s.ColumnInt64(1);
|
| - int64_t server_mtime = s.ColumnInt64(2);
|
| - int64_t ctime = s.ColumnInt64(3);
|
| - int64_t server_ctime = s.ColumnInt64(4);
|
| - EXPECT_EQ(mtime, server_mtime);
|
| - EXPECT_EQ(mtime, ctime);
|
| - EXPECT_EQ(mtime, server_ctime);
|
| - meta_times[metahandle] = mtime;
|
| - }
|
| - EXPECT_TRUE(s.Succeeded());
|
| - return meta_times;
|
| -}
|
| -
|
| -::testing::AssertionResult AssertTimesMatch(const char* t1_expr,
|
| - const char* t2_expr,
|
| - const base::Time& t1,
|
| - const base::Time& t2) {
|
| - if (t1 == t2)
|
| - return ::testing::AssertionSuccess();
|
| -
|
| - return ::testing::AssertionFailure()
|
| - << t1_expr << " and " << t2_expr
|
| - << " (internal values: " << t1.ToInternalValue()
|
| - << " and " << t2.ToInternalValue()
|
| - << ") (proto time: " << TimeToProtoTime(t1)
|
| - << " and " << TimeToProtoTime(t2)
|
| - << ") do not match";
|
| -}
|
| -
|
| -// Expect that all time fields of the given entry kernel will be the
|
| -// given time.
|
| -void ExpectTime(const EntryKernel& entry_kernel,
|
| - const base::Time& expected_time) {
|
| - EXPECT_PRED_FORMAT2(AssertTimesMatch,
|
| - expected_time, entry_kernel.ref(CTIME));
|
| - EXPECT_PRED_FORMAT2(AssertTimesMatch,
|
| - expected_time, entry_kernel.ref(SERVER_CTIME));
|
| - EXPECT_PRED_FORMAT2(AssertTimesMatch,
|
| - expected_time, entry_kernel.ref(MTIME));
|
| - EXPECT_PRED_FORMAT2(AssertTimesMatch,
|
| - expected_time, entry_kernel.ref(SERVER_MTIME));
|
| -}
|
| -
|
| -// Expect that all the entries in |entries| have times matching those in
|
| -// the given map (from metahandle to expect time).
|
| -void ExpectTimes(const Directory::MetahandlesMap& handles_map,
|
| - const std::map<int64_t, base::Time>& expected_times) {
|
| - for (Directory::MetahandlesMap::const_iterator it = handles_map.begin();
|
| - it != handles_map.end(); ++it) {
|
| - int64_t meta_handle = it->first;
|
| - SCOPED_TRACE(meta_handle);
|
| - std::map<int64_t, base::Time>::const_iterator it2 =
|
| - expected_times.find(meta_handle);
|
| - if (it2 == expected_times.end()) {
|
| - ADD_FAILURE() << "Could not find expected time for " << meta_handle;
|
| - continue;
|
| - }
|
| - ExpectTime(*it->second, it2->second);
|
| - }
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -void MigrationTest::SetUpVersion67Database(sql::Connection* connection) {
|
| - // This is a version 67 database dump whose contents were backformed from
|
| - // the contents of the version 68 database dump (the v68 migration was
|
| - // actually written first).
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), "
|
| - "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);"
|
| - "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL,"
|
| - "base_version bigint default -1,server_version bigint default 0,"
|
| - "mtime bigint default 0,server_mtime bigint default 0,"
|
| - "ctime bigint default 0,server_ctime bigint default 0,"
|
| - "server_position_in_parent bigint default 0,"
|
| - "local_external_id bigint default 0,id varchar(255) default 'r',"
|
| - "parent_id varchar(255) default 'r',"
|
| - "server_parent_id varchar(255) default 'r',"
|
| - "prev_id varchar(255) default 'r',next_id varchar(255) default 'r',"
|
| - "is_unsynced bit default 0,is_unapplied_update bit default 0,"
|
| - "is_del bit default 0,is_dir bit default 0,"
|
| - "is_bookmark_object bit default 0,server_is_dir bit default 0,"
|
| - "server_is_del bit default 0,server_is_bookmark_object bit default 0,"
|
| - "name varchar(255), " /* COLLATE PATHNAME, */
|
| - "unsanitized_name varchar(255)," /* COLLATE PATHNAME, */
|
| - "non_unique_name varchar,"
|
| - "server_name varchar(255)," /* COLLATE PATHNAME */
|
| - "server_non_unique_name varchar,"
|
| - "bookmark_url varchar,server_bookmark_url varchar,"
|
| - "singleton_tag varchar,bookmark_favicon blob,"
|
| - "server_bookmark_favicon blob);"
|
| - "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1)
|
| - ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL,"
|
| - "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);"
|
| - "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2)
|
| - ",-2097152,"
|
| - "4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,1,0,1,1,"
|
| - "'Deleted Item',NULL,'Deleted Item','Deleted Item','Deleted Item',"
|
| - "'http://www.google.com/','http://www.google.com/2',NULL,'AASGASGA',"
|
| - "'ASADGADGADG');"
|
| - "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4)
|
| - ",-3145728,"
|
| - "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,1,0,1,1,"
|
| - "'Welcome to Chromium',NULL,'Welcome to Chromium',"
|
| - "'Welcome to Chromium','Welcome to Chromium',"
|
| - "'http://www.google.com/chrome/intl/en/welcome.html',"
|
| - "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL,"
|
| - "NULL);"
|
| - "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5)
|
| - ",1048576,"
|
| - "7,'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,1,0,1,1,"
|
| - "'Google',NULL,'Google','Google','Google','http://www.google.com/',"
|
| - "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG');"
|
| - "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6)
|
| - ",-4194304,"
|
| - "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1,"
|
| - "'The Internet',NULL,'The Internet','The Internet',"
|
| - "'The Internet',NULL,NULL,NULL,NULL,NULL);"
|
| - "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7)
|
| - ","
|
| - "1048576,0,'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1,"
|
| - "'Google Chrome',NULL,'Google Chrome','Google Chrome',"
|
| - "'Google Chrome',NULL,NULL,'google_chrome',NULL,NULL);"
|
| - "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8)
|
| - ",1048576,"
|
| - "0,'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks',"
|
| - "NULL,'Bookmarks','Bookmarks','Bookmarks',NULL,NULL,"
|
| - "'google_chrome_bookmarks',NULL,NULL);"
|
| - "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9)
|
| - ","
|
| - "1048576,1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0,"
|
| - "1,'Bookmark Bar',NULL,'Bookmark Bar','Bookmark Bar','Bookmark Bar',"
|
| - "NULL,NULL,'bookmark_bar',NULL,NULL);"
|
| - "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10)
|
| - ",2097152,"
|
| - "2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1,"
|
| - "'Other Bookmarks',NULL,'Other Bookmarks','Other Bookmarks',"
|
| - "'Other Bookmarks',NULL,NULL,'other_bookmarks',"
|
| - "NULL,NULL);"
|
| - "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11)
|
| - ",-1048576,"
|
| - "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1,"
|
| - "'Home (The Chromium Projects)',NULL,'Home (The Chromium Projects)',"
|
| - "'Home (The Chromium Projects)','Home (The Chromium Projects)',"
|
| - "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL,"
|
| - "'AGATWA','AFAGVASF');"
|
| - "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12)
|
| - ",0,9,"
|
| - "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,1,0,1,"
|
| - "'Extra Bookmarks',NULL,'Extra Bookmarks','Extra Bookmarks',"
|
| - "'Extra Bookmarks',NULL,NULL,NULL,NULL,NULL);"
|
| - "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13)
|
| - ",-917504,"
|
| - "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,1,0,0,"
|
| - "1,'ICANN | Internet Corporation for Assigned Names and Numbers',"
|
| - "'ICANN Internet Corporation for Assigned Names and Numbers',"
|
| - "'ICANN | Internet Corporation for Assigned Names and Numbers',"
|
| - "'ICANN | Internet Corporation for Assigned Names and Numbers',"
|
| - "'ICANN | Internet Corporation for Assigned Names and Numbers',"
|
| - "'http://www.icann.com/','http://www.icann.com/',NULL,"
|
| - "'PNGAXF0AAFF','DAAFASF');"
|
| - "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14)
|
| - ",1048576,"
|
| - "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1,"
|
| - "'The WebKit Open Source Project',NULL,"
|
| - "'The WebKit Open Source Project','The WebKit Open Source Project',"
|
| - "'The WebKit Open Source Project','http://webkit.org/',"
|
| - "'http://webkit.org/x',NULL,'PNGX','PNG2Y');"
|
| - "CREATE TABLE share_info (id VARCHAR(128) primary key, "
|
| - "last_sync_timestamp INT, name VARCHAR(128), "
|
| - "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), "
|
| - "db_create_version VARCHAR(128), db_create_time int, "
|
| - "next_id bigint default -2, cache_guid VARCHAR(32));"
|
| - "INSERT INTO share_info VALUES('nick@chromium.org',694,"
|
| - "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb',"
|
| - "'Unknown',1263522064,-65542,"
|
| - "'9010788312004066376x-6609234393368420856x');"
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO share_version VALUES('nick@chromium.org',68);"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion68Database(sql::Connection* connection) {
|
| - // This sets up an actual version 68 database dump. The IDs were
|
| - // canonicalized to be less huge, and the favicons were overwritten
|
| - // with random junk so that they didn't contain any unprintable
|
| - // characters. A few server URLs were tweaked so that they'd be
|
| - // different from the local URLs. Lastly, the custom collation on
|
| - // the server_non_unique_name column was removed.
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), "
|
| - "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);"
|
| - "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL,"
|
| - "base_version bigint default -1,server_version bigint default 0,"
|
| - "mtime bigint default 0,server_mtime bigint default 0,"
|
| - "ctime bigint default 0,server_ctime bigint default 0,"
|
| - "server_position_in_parent bigint default 0,"
|
| - "local_external_id bigint default 0,id varchar(255) default 'r',"
|
| - "parent_id varchar(255) default 'r',"
|
| - "server_parent_id varchar(255) default 'r',"
|
| - "prev_id varchar(255) default 'r',next_id varchar(255) default 'r',"
|
| - "is_unsynced bit default 0,is_unapplied_update bit default 0,"
|
| - "is_del bit default 0,is_dir bit default 0,"
|
| - "is_bookmark_object bit default 0,server_is_dir bit default 0,"
|
| - "server_is_del bit default 0,"
|
| - "server_is_bookmark_object bit default 0,"
|
| - "non_unique_name varchar,server_non_unique_name varchar(255),"
|
| - "bookmark_url varchar,server_bookmark_url varchar,"
|
| - "singleton_tag varchar,bookmark_favicon blob,"
|
| - "server_bookmark_favicon blob);"
|
| - "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1)
|
| - ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL,"
|
| - "NULL,NULL,NULL,NULL,NULL,NULL);"
|
| - "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2)
|
| - ",-2097152,"
|
| - "4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,1,0,1,1,"
|
| - "'Deleted Item','Deleted Item','http://www.google.com/',"
|
| - "'http://www.google.com/2',NULL,'AASGASGA','ASADGADGADG');"
|
| - "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4)
|
| - ",-3145728,"
|
| - "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,1,0,1,1,"
|
| - "'Welcome to Chromium','Welcome to Chromium',"
|
| - "'http://www.google.com/chrome/intl/en/welcome.html',"
|
| - "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL,"
|
| - "NULL);"
|
| - "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5)
|
| - ",1048576,"
|
| - "7,'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,1,0,1,1,"
|
| - "'Google','Google','http://www.google.com/',"
|
| - "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG');"
|
| - "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6)
|
| - ",-4194304,"
|
| - "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1,"
|
| - "'The Internet','The Internet',NULL,NULL,NULL,NULL,NULL);"
|
| - "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7)
|
| - ","
|
| - "1048576,0,'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1,"
|
| - "'Google Chrome','Google Chrome',NULL,NULL,'google_chrome',NULL,"
|
| - "NULL);"
|
| - "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8)
|
| - ",1048576,"
|
| - "0,'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks',"
|
| - "'Bookmarks',NULL,NULL,'google_chrome_bookmarks',NULL,NULL);"
|
| - "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9)
|
| - ","
|
| - "1048576,1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0,"
|
| - "1,'Bookmark Bar','Bookmark Bar',NULL,NULL,'bookmark_bar',NULL,"
|
| - "NULL);"
|
| - "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10)
|
| - ",2097152,"
|
| - "2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1,"
|
| - "'Other Bookmarks','Other Bookmarks',NULL,NULL,'other_bookmarks',"
|
| - "NULL,NULL);"
|
| - "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11)
|
| - ",-1048576,"
|
| - "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1,"
|
| - "'Home (The Chromium Projects)','Home (The Chromium Projects)',"
|
| - "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL,"
|
| - "'AGATWA','AFAGVASF');"
|
| - "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12)
|
| - ",0,9,"
|
| - "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,1,0,1,"
|
| - "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,NULL,NULL,NULL);"
|
| - "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13)
|
| - ",-917504,"
|
| - "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,1,0,0,"
|
| - "1,'ICANN | Internet Corporation for Assigned Names and Numbers',"
|
| - "'ICANN | Internet Corporation for Assigned Names and Numbers',"
|
| - "'http://www.icann.com/','http://www.icann.com/',NULL,"
|
| - "'PNGAXF0AAFF','DAAFASF');"
|
| - "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14)
|
| - ",1048576,"
|
| - "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1,"
|
| - "'The WebKit Open Source Project','The WebKit Open Source Project',"
|
| - "'http://webkit.org/','http://webkit.org/x',NULL,'PNGX','PNG2Y');"
|
| - "CREATE TABLE share_info (id VARCHAR(128) primary key, "
|
| - "last_sync_timestamp INT, name VARCHAR(128), "
|
| - "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), "
|
| - "db_create_version VARCHAR(128), db_create_time int, "
|
| - "next_id bigint default -2, cache_guid VARCHAR(32));"
|
| - "INSERT INTO share_info VALUES('nick@chromium.org',694,"
|
| - "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb',"
|
| - "'Unknown',1263522064,-65542,"
|
| - "'9010788312004066376x-6609234393368420856x');"
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO share_version VALUES('nick@chromium.org',68);"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion69Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), "
|
| - "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);"
|
| - "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL,"
|
| - "base_version bigint default -1,server_version bigint default 0,"
|
| - "mtime bigint default 0,server_mtime bigint default 0,"
|
| - "ctime bigint default 0,server_ctime bigint default 0,"
|
| - "server_position_in_parent bigint default 0,"
|
| - "local_external_id bigint default 0,id varchar(255) default 'r',"
|
| - "parent_id varchar(255) default 'r',"
|
| - "server_parent_id varchar(255) default 'r',"
|
| - "prev_id varchar(255) default 'r',next_id varchar(255) default 'r',"
|
| - "is_unsynced bit default 0,is_unapplied_update bit default 0,"
|
| - "is_del bit default 0,is_dir bit default 0,"
|
| - "is_bookmark_object bit default 0,server_is_dir bit default 0,"
|
| - "server_is_del bit default 0,"
|
| - "server_is_bookmark_object bit default 0,"
|
| - "non_unique_name varchar,server_non_unique_name varchar(255),"
|
| - "bookmark_url varchar,server_bookmark_url varchar,"
|
| - "singleton_tag varchar,bookmark_favicon blob,"
|
| - "server_bookmark_favicon blob, specifics blob, "
|
| - "server_specifics blob);"
|
| - "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1)
|
| - ",0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL,NULL,NULL,NULL,NULL,"
|
| - "NULL,NULL,X'',X'');"
|
| - "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2)
|
| - ",-2097152,"
|
| - "4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,1,0,1,1,"
|
| - "'Deleted Item','Deleted Item','http://www.google.com/',"
|
| - "'http://www.google.com/2',NULL,'AASGASGA','ASADGADGADG',"
|
| - "X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F120841415"
|
| - "34741534741',X'C28810260A17687474703A2F2F7777772E676F6F676C652E636F"
|
| - "6D2F32120B4153414447414447414447');"
|
| - "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4)
|
| - ",-3145728,"
|
| - "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,1,0,1,1,"
|
| - "'Welcome to Chromium','Welcome to Chromium',"
|
| - "'http://www.google.com/chrome/intl/en/welcome.html',"
|
| - "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL,NULL,"
|
| - "X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6"
|
| - "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A3168"
|
| - "7474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F6"
|
| - "56E2F77656C636F6D652E68746D6C1200');"
|
| - "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5)
|
| - ",1048576,7,"
|
| - "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,1,0,1,1,"
|
| - "'Google','Google','http://www.google.com/',"
|
| - "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG',X'C28810220A166"
|
| - "87474703A2F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'"
|
| - "C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464"
|
| - "447415347');"
|
| - "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6)
|
| - ",-4194304,6"
|
| - ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1,'The Internet',"
|
| - "'The Internet',NULL,NULL,NULL,NULL,NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7)
|
| - ",1048576,0,"
|
| - "'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1,'Google Chrome',"
|
| - "'Google Chrome',NULL,NULL,'google_chrome',NULL,NULL,NULL,NULL);"
|
| - "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8)
|
| - ",1048576,0,"
|
| - "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks',"
|
| - "'Bookmarks',NULL,NULL,'google_chrome_bookmarks',NULL,NULL,"
|
| - "X'C2881000',X'C2881000');"
|
| - "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9)
|
| - ",1048576,1,"
|
| - "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0,1,"
|
| - "'Bookmark Bar','Bookmark Bar',NULL,NULL,'bookmark_bar',NULL,NULL,"
|
| - "X'C2881000',X'C2881000');"
|
| - "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10)
|
| - ",2097152,2,"
|
| - "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1,"
|
| - "'Other Bookmarks','Other Bookmarks',NULL,NULL,'other_bookmarks',"
|
| - "NULL,NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11)
|
| - ",-1048576,"
|
| - "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1,"
|
| - "'Home (The Chromium Projects)','Home (The Chromium Projects)',"
|
| - "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL,"
|
| - "'AGATWA','AFAGVASF',X'C28810220A18687474703A2F2F6465762E6368726F6D6"
|
| - "9756D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F646576"
|
| - "2E6368726F6D69756D2E6F72672F6F7468657212084146414756415346');"
|
| - "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12)
|
| - ",0,9,"
|
| - "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,1,0,1,"
|
| - "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,NULL,NULL,NULL,"
|
| - "X'C2881000',X'C2881000');"
|
| - "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13)
|
| - ",-917504,"
|
| - "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,1,0,0,"
|
| - "1,'ICANN | Internet Corporation for Assigned Names and Numbers',"
|
| - "'ICANN | Internet Corporation for Assigned Names and Numbers',"
|
| - "'http://www.icann.com/','http://www.icann.com/',NULL,'PNGAXF0AAFF',"
|
| - "'DAAFASF',X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F1"
|
| - "20B504E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963"
|
| - "616E6E2E636F6D2F120744414146415346');"
|
| - "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14)
|
| - ",1048576,11,"
|
| - "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1,"
|
| - "'The WebKit Open Source Project','The WebKit Open Source Project',"
|
| - "'http://webkit.org/','http://webkit.org/x',NULL,'PNGX','PNG2Y',"
|
| - "X'C288101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C2"
|
| - "88101C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259');"
|
| - "CREATE TABLE share_info (id VARCHAR(128) primary key, "
|
| - "last_sync_timestamp INT, name VARCHAR(128), "
|
| - "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), "
|
| - "db_create_version VARCHAR(128), db_create_time int, "
|
| - "next_id bigint default -2, cache_guid VARCHAR(32));"
|
| - "INSERT INTO share_info VALUES('nick@chromium.org',694,"
|
| - "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb',"
|
| - "'Unknown',1263522064,-65542,"
|
| - "'9010788312004066376x-6609234393368420856x');"
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO share_version VALUES('nick@chromium.org',69);"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion70Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), "
|
| - "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);"
|
| - "CREATE TABLE share_info (id VARCHAR(128) primary key, "
|
| - "last_sync_timestamp INT, name VARCHAR(128), "
|
| - "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), "
|
| - "db_create_version VARCHAR(128), db_create_time int, "
|
| - "next_id bigint default -2, cache_guid VARCHAR(32));"
|
| - "INSERT INTO share_info VALUES('nick@chromium.org',694,"
|
| - "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb',"
|
| - "'Unknown',1263522064,-65542,"
|
| - "'9010788312004066376x-6609234393368420856x');"
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO share_version VALUES('nick@chromium.org',70);"
|
| - "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL,"
|
| - "base_version bigint default -1,server_version bigint default 0,"
|
| - "mtime bigint default 0,server_mtime bigint default 0,"
|
| - "ctime bigint default 0,server_ctime bigint default 0,"
|
| - "server_position_in_parent bigint default 0,"
|
| - "local_external_id bigint default 0,id varchar(255) default 'r',"
|
| - "parent_id varchar(255) default 'r',"
|
| - "server_parent_id varchar(255) default 'r',"
|
| - "prev_id varchar(255) default 'r',next_id varchar(255) default 'r',"
|
| - "is_unsynced bit default 0,is_unapplied_update bit default 0,"
|
| - "is_del bit default 0,is_dir bit default 0,"
|
| - "server_is_dir bit default 0,server_is_del bit default 0,"
|
| - "non_unique_name varchar,server_non_unique_name varchar(255),"
|
| - "unique_server_tag varchar,unique_client_tag varchar,"
|
| - "specifics blob,server_specifics blob);"
|
| - "INSERT INTO metas VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1)
|
| - ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'');"
|
| - "INSERT INTO metas VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2) ","
|
| - "-2097152,4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,"
|
| - "1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A"
|
| - "2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X'C2881026"
|
| - "0A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B415341444741"
|
| - "4447414447');"
|
| - "INSERT INTO metas VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4)
|
| - ",-3145728,"
|
| - "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,"
|
| - "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A"
|
| - "31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E74"
|
| - "6C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F"
|
| - "2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F7765"
|
| - "6C636F6D652E68746D6C1200');"
|
| - "INSERT INTO metas VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5)
|
| - ",1048576,7,"
|
| - "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google',"
|
| - "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C6"
|
| - "52E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F77777"
|
| - "72E676F6F676C652E636F6D2F12084147464447415347');"
|
| - "INSERT INTO metas VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6)
|
| - ",-4194304,"
|
| - "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet',"
|
| - "'The Internet',NULL,NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO metas VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7)
|
| - ",1048576,0,"
|
| - "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome',"
|
| - "'Google Chrome','google_chrome',NULL,NULL,NULL);"
|
| - "INSERT INTO metas VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8)
|
| - ",1048576,0,"
|
| - "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks',"
|
| - "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',"
|
| - "X'C2881000');"
|
| - "INSERT INTO metas VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9)
|
| - ",1048576,"
|
| - "1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,"
|
| - "'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881000',"
|
| - "X'C2881000');"
|
| - "INSERT INTO metas VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10)
|
| - ","
|
| - "2097152,2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,"
|
| - "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL,"
|
| - "X'C2881000',X'C2881000');"
|
| - "INSERT INTO metas VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11)
|
| - ",-1048576,"
|
| - "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,"
|
| - "'Home (The Chromium Projects)','Home (The Chromium Projects)',"
|
| - "NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F"
|
| - "72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636872"
|
| - "6F6D69756D2E6F72672F6F7468657212084146414756415346');"
|
| - "INSERT INTO metas VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12)
|
| - ",0,9,"
|
| - "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,"
|
| - "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000',"
|
| - "X'C2881000');"
|
| - "INSERT INTO metas VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13)
|
| - ",-917504,"
|
| - "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,"
|
| - "'ICANN | Internet Corporation for Assigned Names and Numbers',"
|
| - "'ICANN | Internet Corporation for Assigned Names and Numbers',"
|
| - "NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F"
|
| - "120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772E69"
|
| - "63616E6E2E636F6D2F120744414146415346');"
|
| - "INSERT INTO metas VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14)
|
| - ",1048576,"
|
| - "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,"
|
| - "'The WebKit Open Source Project','The WebKit Open Source Project',"
|
| - "NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450"
|
| - "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F78120550"
|
| - "4E473259');"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion71Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), "
|
| - "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);"
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',71);"
|
| - "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL,"
|
| - "base_version bigint default -1,server_version bigint default 0,"
|
| - "mtime bigint default 0,server_mtime bigint default 0,ctime bigint "
|
| - "default 0,server_ctime bigint default 0,server_position_in_parent "
|
| - "bigint default 0,local_external_id bigint default 0,id varchar(255) "
|
| - "default 'r',parent_id varchar(255) default 'r',server_parent_id "
|
| - "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id "
|
| - "varchar(255) default 'r',is_unsynced bit default 0,"
|
| - "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit "
|
| - "default 0,server_is_dir bit default 0,server_is_del bit default 0,"
|
| - "non_unique_name varchar,server_non_unique_name varchar(255),"
|
| - "unique_server_tag varchar,unique_client_tag varchar,specifics blob,"
|
| - "server_specifics blob);"
|
| - "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1)
|
| - ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,"
|
| - "NULL,NULL,X'',X'');"
|
| - "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2)
|
| - ",-2097152,4,"
|
| - "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,"
|
| - "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F"
|
| - "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768"
|
| - "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144"
|
| - "47');"
|
| - "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4)
|
| - ",-3145728,3,"
|
| - "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,"
|
| - "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31"
|
| - "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F"
|
| - "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777"
|
| - "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D"
|
| - "652E68746D6C1200');"
|
| - "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5)
|
| - ",1048576,7,"
|
| - "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google',"
|
| - "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652"
|
| - "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6"
|
| - "76F6F676C652E636F6D2F12084147464447415347');"
|
| - "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6)
|
| - ",-4194304,6,"
|
| - "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet',"
|
| - "'The Internet',NULL,NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7)
|
| - ",1048576,0,"
|
| - "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'"
|
| - ",'google_chrome',NULL,NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8)
|
| - ",1048576,0,"
|
| - "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks',"
|
| - "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9)
|
| - ",1048576,1,"
|
| - "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar',"
|
| - "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10)
|
| - ",2097152,2,"
|
| - "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,"
|
| - "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL,"
|
| - "X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11)
|
| - ",-1048576,8,"
|
| - "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,"
|
| - "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL,"
|
| - "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1"
|
| - "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756"
|
| - "D2E6F72672F6F7468657212084146414756415346');"
|
| - "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12)
|
| - ",0,9,"
|
| - "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,"
|
| - "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000',"
|
| - "X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13)
|
| - ",-917504,10,"
|
| - "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,"
|
| - "'ICANN | Internet Corporation for Assigned Names and Numbers',"
|
| - "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL,"
|
| - "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504"
|
| - "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2"
|
| - "E636F6D2F120744414146415346');"
|
| - "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14)
|
| - ",1048576,11,"
|
| - "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,"
|
| - "'The WebKit Open Source Project','The WebKit Open Source Project',"
|
| - "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450"
|
| - "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E"
|
| - "473259');"
|
| - "CREATE TABLE models (model_id BLOB primary key, "
|
| - "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',694,1);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, "
|
| - "store_birthday TEXT, db_create_version TEXT, db_create_time INT, "
|
| - "next_id INT default -2, cache_guid TEXT);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,"
|
| - "'9010788312004066376x-6609234393368420856x');"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion72Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',72);"
|
| - "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL,"
|
| - "base_version bigint default -1,server_version bigint default 0,"
|
| - "mtime bigint default 0,server_mtime bigint default 0,ctime bigint "
|
| - "default 0,server_ctime bigint default 0,server_position_in_parent "
|
| - "bigint default 0,local_external_id bigint default 0,id varchar(255) "
|
| - "default 'r',parent_id varchar(255) default 'r',server_parent_id "
|
| - "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id "
|
| - "varchar(255) default 'r',is_unsynced bit default 0,"
|
| - "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit "
|
| - "default 0,server_is_dir bit default 0,server_is_del bit default 0,"
|
| - "non_unique_name varchar,server_non_unique_name varchar(255),"
|
| - "unique_server_tag varchar,unique_client_tag varchar,specifics blob,"
|
| - "server_specifics blob);"
|
| - "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1)
|
| - ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,"
|
| - "NULL,NULL,X'',X'');"
|
| - "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2)
|
| - ",-2097152,4,"
|
| - "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,"
|
| - "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F"
|
| - "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768"
|
| - "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144"
|
| - "47');"
|
| - "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4)
|
| - ",-3145728,3,"
|
| - "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,"
|
| - "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31"
|
| - "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F"
|
| - "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777"
|
| - "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D"
|
| - "652E68746D6C1200');"
|
| - "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5)
|
| - ",1048576,7,"
|
| - "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google',"
|
| - "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652"
|
| - "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6"
|
| - "76F6F676C652E636F6D2F12084147464447415347');"
|
| - "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6)
|
| - ",-4194304,6,"
|
| - "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet',"
|
| - "'The Internet',NULL,NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7)
|
| - ",1048576,0,"
|
| - "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'"
|
| - ",'google_chrome',NULL,NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8)
|
| - ",1048576,0,"
|
| - "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks',"
|
| - "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9)
|
| - ",1048576,1,"
|
| - "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar',"
|
| - "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10)
|
| - ",2097152,2,"
|
| - "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,"
|
| - "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL,"
|
| - "X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11)
|
| - ",-1048576,8,"
|
| - "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,"
|
| - "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL,"
|
| - "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1"
|
| - "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756"
|
| - "D2E6F72672F6F7468657212084146414756415346');"
|
| - "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12)
|
| - ",0,9,"
|
| - "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,"
|
| - "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000',"
|
| - "X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13)
|
| - ",-917504,10,"
|
| - "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,"
|
| - "'ICANN | Internet Corporation for Assigned Names and Numbers',"
|
| - "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL,"
|
| - "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504"
|
| - "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2"
|
| - "E636F6D2F120744414146415346');"
|
| - "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14)
|
| - ",1048576,11,"
|
| - "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,"
|
| - "'The WebKit Open Source Project','The WebKit Open Source Project',"
|
| - "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450"
|
| - "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E"
|
| - "473259');"
|
| - "CREATE TABLE models (model_id BLOB primary key, "
|
| - "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',694,1);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, "
|
| - "store_birthday TEXT, db_create_version TEXT, db_create_time INT, "
|
| - "next_id INT default -2, cache_guid TEXT);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,"
|
| - "'9010788312004066376x-6609234393368420856x');"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion73Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',73);"
|
| - "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL,"
|
| - "base_version bigint default -1,server_version bigint default 0,"
|
| - "mtime bigint default 0,server_mtime bigint default 0,ctime bigint "
|
| - "default 0,server_ctime bigint default 0,server_position_in_parent "
|
| - "bigint default 0,local_external_id bigint default 0,id varchar(255) "
|
| - "default 'r',parent_id varchar(255) default 'r',server_parent_id "
|
| - "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id "
|
| - "varchar(255) default 'r',is_unsynced bit default 0,"
|
| - "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit "
|
| - "default 0,server_is_dir bit default 0,server_is_del bit default 0,"
|
| - "non_unique_name varchar,server_non_unique_name varchar(255),"
|
| - "unique_server_tag varchar,unique_client_tag varchar,specifics blob,"
|
| - "server_specifics blob);"
|
| - "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1)
|
| - ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,"
|
| - "NULL,NULL,X'',X'');"
|
| - "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2)
|
| - ",-2097152,4,"
|
| - "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,"
|
| - "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F"
|
| - "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768"
|
| - "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144"
|
| - "47');"
|
| - "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4)
|
| - ",-3145728,3,"
|
| - "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,"
|
| - "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31"
|
| - "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F"
|
| - "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777"
|
| - "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D"
|
| - "652E68746D6C1200');"
|
| - "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5)
|
| - ",1048576,7,"
|
| - "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google',"
|
| - "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652"
|
| - "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6"
|
| - "76F6F676C652E636F6D2F12084147464447415347');"
|
| - "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6)
|
| - ",-4194304,6,"
|
| - "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet',"
|
| - "'The Internet',NULL,NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7)
|
| - ",1048576,0,"
|
| - "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'"
|
| - ",'google_chrome',NULL,NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8)
|
| - ",1048576,0,"
|
| - "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks',"
|
| - "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9)
|
| - ",1048576,1,"
|
| - "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar',"
|
| - "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10)
|
| - ",2097152,2,"
|
| - "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,"
|
| - "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL,"
|
| - "X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11)
|
| - ",-1048576,8,"
|
| - "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,"
|
| - "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL,"
|
| - "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1"
|
| - "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756"
|
| - "D2E6F72672F6F7468657212084146414756415346');"
|
| - "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12)
|
| - ",0,9,"
|
| - "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,"
|
| - "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000',"
|
| - "X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13)
|
| - ",-917504,10,"
|
| - "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,"
|
| - "'ICANN | Internet Corporation for Assigned Names and Numbers',"
|
| - "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL,"
|
| - "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504"
|
| - "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2"
|
| - "E636F6D2F120744414146415346');"
|
| - "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14)
|
| - ",1048576,11,"
|
| - "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,"
|
| - "'The WebKit Open Source Project','The WebKit Open Source Project',"
|
| - "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450"
|
| - "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E"
|
| - "473259');"
|
| - "CREATE TABLE models (model_id BLOB primary key, "
|
| - "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',694,1);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, "
|
| - "store_birthday TEXT, db_create_version TEXT, db_create_time INT, "
|
| - "next_id INT default -2, cache_guid TEXT, "
|
| - "notification_state BLOB);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,"
|
| - "'9010788312004066376x-6609234393368420856x',X'C2881000');"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion74Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',74);"
|
| - "CREATE TABLE models (model_id BLOB primary key, last_download_timestamp"
|
| - " INT, initial_sync_ended BOOLEAN default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',694,1);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthd"
|
| - "ay TEXT, db_create_version TEXT, db_create_time INT, next_id INT de"
|
| - "fault -2, cache_guid TEXT , notification_state BLOB, autofill_migra"
|
| - "tion_state INT default 0, bookmarks_added_during_autofill_migration"
|
| - " INT default 0, autofill_migration_time INT default 0, autofill_ent"
|
| - "ries_added_during_migration INT default 0, autofill_profiles_added_"
|
| - "during_migration INT default 0);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'"
|
| - ",'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542"
|
| - ",'9010788312004066376x-6609234393368420856x',NULL,0,0,0,0,0);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,bas"
|
| - "e_version bigint default -1,server_version bigint default 0,mtime b"
|
| - "igint default 0,server_mtime bigint default 0,ctime bigint default "
|
| - "0,server_ctime bigint default 0,server_position_in_parent bigint de"
|
| - "fault 0,local_external_id bigint default 0,id varchar(255) default "
|
| - "'r',parent_id varchar(255) default 'r',server_parent_id varchar(255"
|
| - ") default 'r',prev_id varchar(255) default 'r',next_id varchar(255)"
|
| - " default 'r',is_unsynced bit default 0,is_unapplied_update bit defa"
|
| - "ult 0,is_del bit default 0,is_dir bit default 0,server_is_dir bit d"
|
| - "efault 0,server_is_del bit default 0,non_unique_name varchar,server"
|
| - "_non_unique_name varchar(255),unique_server_tag varchar,unique_clie"
|
| - "nt_tag varchar,specifics blob,server_specifics blob);"
|
| - "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1)
|
| - ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'"
|
| - "');"
|
| - "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2)
|
| - ",-2097152,4,'s_ID_2','s_ID"
|
| - "_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Item','Deleted "
|
| - "Item',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E6"
|
| - "36F6D2F12084141534741534741',X'C28810260A17687474703A2F2F7777772E67"
|
| - "6F6F676C652E636F6D2F32120B4153414447414447414447');"
|
| - "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4)
|
| - ",-3145728,3,'s_ID_4','s_ID"
|
| - "_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to Chromium','W"
|
| - "elcome to Chromium',NULL,NULL,X'C28810350A31687474703A2F2F7777772E6"
|
| - "76F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E"
|
| - "68746D6C1200',X'C28810350A31687474703A2F2F7777772E676F6F676C652E636"
|
| - "F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E68746D6C1200');"
|
| - "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5)
|
| - ",1048576,7,'s_ID_5','s_ID_"
|
| - "9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Google',NULL,NU"
|
| - "LL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F120841"
|
| - "47415347415347',X'C28810220A16687474703A2F2F7777772E676F6F676C652E6"
|
| - "36F6D2F12084147464447415347');"
|
| - "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6)
|
| - ",-4194304,6,'s_ID_6','s_ID"
|
| - "_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The Internet',NULL"
|
| - ",NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7)
|
| - ",1048576,0,'s_ID_7','r','r"
|
| - "','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google_chrom"
|
| - "e',NULL,NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8)
|
| - ",1048576,0,'s_ID_8','s_ID_"
|
| - "7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks','google_chr"
|
| - "ome_bookmarks',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9)
|
| - ",1048576,1,'s_ID_9','s_ID_"
|
| - "8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar'"
|
| - ",'bookmark_bar',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10)
|
| - ",2097152,2,'s_ID_10','s_I"
|
| - "D_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks','Other Boo"
|
| - "kmarks','other_bookmarks',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11)
|
| - ",-1048576,8,'s_ID_11','s_"
|
| - "ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chromium Projec"
|
| - "ts)','Home (The Chromium Projects)',NULL,NULL,X'C28810220A186874747"
|
| - "03A2F2F6465762E6368726F6D69756D2E6F72672F1206414741545741',X'C28810"
|
| - "290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74686572120"
|
| - "84146414756415346');"
|
| - "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12)
|
| - ",0,9,'s_ID_12','s_ID_6','"
|
| - "s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bo"
|
| - "okmarks',NULL,NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13)
|
| - ",-917504,10,'s_ID_13','s_"
|
| - "ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN | Internet Co"
|
| - "rporation for Assigned Names and Numbers','ICANN | Internet Corpora"
|
| - "tion for Assigned Names and Numbers',NULL,NULL,X'C28810240A15687474"
|
| - "703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',X'C"
|
| - "28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F12074441414641"
|
| - "5346');"
|
| - "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14)
|
| - ",1048576,11,'s_ID_14','s_"
|
| - "ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Open Source Pr"
|
| - "oject','The WebKit Open Source Project',NULL,NULL,X'C288101A0A12687"
|
| - "474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101C0A13687474"
|
| - "703A2F2F7765626B69742E6F72672F781205504E473259');"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion75Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',75);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthd"
|
| - "ay TEXT, db_create_version TEXT, db_create_time INT, next_id INT de"
|
| - "fault -2, cache_guid TEXT , notification_state BLOB, autofill_migra"
|
| - "tion_state INT default 0,bookmarks_added_during_autofill_migration "
|
| - "INT default 0, autofill_migration_time INT default 0, autofill_entr"
|
| - "ies_added_during_migration INT default 0, autofill_profiles_added_d"
|
| - "uring_migration INT default 0);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org"
|
| - "','c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-655"
|
| - "42,'9010788312004066376x-6609234393368420856x',NULL,0,0,0,0,0);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, "
|
| - "initial_sync_ended BOOLEAN default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,ba"
|
| - "se_version bigint default -1,server_version bigint default 0,mtime"
|
| - " bigint default 0,server_mtime bigint default 0,ctime bigint defau"
|
| - "lt 0,server_ctime bigint default 0,server_position_in_parent bigin"
|
| - "t default 0,local_external_id bigint default 0,id varchar(255) def"
|
| - "ault 'r',parent_id varchar(255) default 'r',server_parent_id varch"
|
| - "ar(255) default 'r',prev_id varchar(255) default 'r',next_id varch"
|
| - "ar(255) default 'r',is_unsynced bit default 0,is_unapplied_update "
|
| - "bit default 0,is_del bit default 0,is_dir bit default 0,server_is_"
|
| - "dir bit default 0,server_is_del bit default 0,non_unique_name varc"
|
| - "har,server_non_unique_name varchar(255),unique_server_tag varchar,"
|
| - "unique_client_tag varchar,specifics blob,server_specifics blob);"
|
| - "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1)
|
| - ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NUL"
|
| - "L,X'',X'');"
|
| - "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2)
|
| - ",-2097152,4,'s_ID_"
|
| - "2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Ite"
|
| - "m','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F7777772"
|
| - "E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A176874"
|
| - "74703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474"
|
| - "14447');"
|
| - "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4)
|
| - ",-3145728,3,'s_ID_"
|
| - "4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to "
|
| - "Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A316874747"
|
| - "03A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F65"
|
| - "6E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7"
|
| - "777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F7765"
|
| - "6C636F6D652E68746D6C1200');"
|
| - "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5)
|
| - ",1048576,7,'s_ID_5"
|
| - "','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Goo"
|
| - "gle',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C65"
|
| - "2E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F777"
|
| - "7772E676F6F676C652E636F6D2F12084147464447415347');"
|
| - "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6)
|
| - ",-4194304,6,'s_ID_"
|
| - "6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The In"
|
| - "ternet',NULL,NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7)
|
| - ",1048576,0,'s_ID_7"
|
| - "','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','"
|
| - "google_chrome',NULL,NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8)
|
| - ",1048576,0,'s_ID_8"
|
| - "','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks'"
|
| - ",'google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9)
|
| - ",1048576,1,'s_ID_9"
|
| - "','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','B"
|
| - "ookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10)
|
| - ",2097152,2,'s_ID_"
|
| - "10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks"
|
| - "','Other Bookmarks','other_bookmarks',NULL,X'C2881000',X'C28810"
|
| - "00');"
|
| - "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11)
|
| - ",-1048576,8,'s_ID"
|
| - "_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chr"
|
| - "omium Projects)','Home (The Chromium Projects)',NULL,NULL,X'C28"
|
| - "810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F120641"
|
| - "4741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756"
|
| - "D2E6F72672F6F7468657212084146414756415346');"
|
| - "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12)
|
| - ",0,9,'s_ID_12','s"
|
| - "_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmark"
|
| - "s','Extra Bookmarks',NULL,NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13)
|
| - ",-917504,10,'s_ID"
|
| - "_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN |"
|
| - " Internet Corporation for Assigned Names and Numbers','ICANN | "
|
| - "Internet Corporation for Assigned Names and Numbers',NULL,NULL,"
|
| - "X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504"
|
| - "E474158463041414646',X'C28810200A15687474703A2F2F7777772E696361"
|
| - "6E6E2E636F6D2F120744414146415346');"
|
| - "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14)
|
| - ",1048576,11,'s_ID"
|
| - "_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Op"
|
| - "en Source Project','The WebKit Open Source Project',NULL,NULL,X"
|
| - "'C288101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',"
|
| - "X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E473"
|
| - "259');"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion76Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',76);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in"
|
| - "itial_sync_ended BOOLEAN default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0,mtime big"
|
| - "int default 0,server_mtime bigint default 0,ctime bigint default 0,s"
|
| - "erver_ctime bigint default 0,server_position_in_parent bigint defaul"
|
| - "t 0,local_external_id bigint default 0,id varchar(255) default 'r',p"
|
| - "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
|
| - "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
|
| - "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
|
| - "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
|
| - "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
|
| - "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
|
| - "har,specifics blob,server_specifics blob);"
|
| - "INSERT INTO 'metas' VALUES(1,-1,0," LEGACY_PROTO_TIME_VALS(1)
|
| - ",0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'')"
|
| - ";"
|
| - "INSERT INTO 'metas' VALUES(2,669,669," LEGACY_PROTO_TIME_VALS(2)
|
| - ",-2097152,4,'s_ID_2','s_ID_9"
|
| - "','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Item','Deleted Ite"
|
| - "m',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6"
|
| - "D2F12084141534741534741',X'C28810260A17687474703A2F2F7777772E676F6F6"
|
| - "76C652E636F6D2F32120B4153414447414447414447');"
|
| - "INSERT INTO 'metas' VALUES(4,681,681," LEGACY_PROTO_TIME_VALS(4)
|
| - ",-3145728,3,'s_ID_4','s_ID_9"
|
| - "','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to Chromium','Welc"
|
| - "ome to Chromium',NULL,NULL,X'C28810350A31687474703A2F2F7777772E676F6"
|
| - "F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E68746"
|
| - "D6C1200',X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6"
|
| - "368726F6D652F696E746C2F656E2F77656C636F6D652E68746D6C1200');"
|
| - "INSERT INTO 'metas' VALUES(5,677,677," LEGACY_PROTO_TIME_VALS(5)
|
| - ",1048576,7,'s_ID_5','s_ID_9'"
|
| - ",'s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Google',NULL,NULL,"
|
| - "X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F1208414741"
|
| - "5347415347',X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D"
|
| - "2F12084147464447415347');"
|
| - "INSERT INTO 'metas' VALUES(6,694,694," LEGACY_PROTO_TIME_VALS(6)
|
| - ",-4194304,6,'s_ID_6','s_ID_9"
|
| - "','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The Internet',NULL,NU"
|
| - "LL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(7,663,663," LEGACY_PROTO_TIME_VALS(7)
|
| - ",1048576,0,'s_ID_7','r','r',"
|
| - "'r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google_chrome',"
|
| - "NULL,NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(8,664,664," LEGACY_PROTO_TIME_VALS(8)
|
| - ",1048576,0,'s_ID_8','s_ID_7'"
|
| - ",'s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks','google_chrome"
|
| - "_bookmarks',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(9,665,665," LEGACY_PROTO_TIME_VALS(9)
|
| - ",1048576,1,'s_ID_9','s_ID_8'"
|
| - ",'s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar','b"
|
| - "ookmark_bar',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(10,666,666," LEGACY_PROTO_TIME_VALS(10)
|
| - ",2097152,2,'s_ID_10','s_ID_"
|
| - "8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks','Other Bookma"
|
| - "rks','other_bookmarks',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(11,683,683," LEGACY_PROTO_TIME_VALS(11)
|
| - ",-1048576,8,'s_ID_11','s_ID"
|
| - "_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chromium Projects)"
|
| - "','Home (The Chromium Projects)',NULL,NULL,X'C28810220A18687474703A2"
|
| - "F2F6465762E6368726F6D69756D2E6F72672F1206414741545741',X'C28810290A1"
|
| - "D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74686572120841464"
|
| - "14756415346');"
|
| - "INSERT INTO 'metas' VALUES(12,685,685," LEGACY_PROTO_TIME_VALS(12)
|
| - ",0,9,'s_ID_12','s_ID_6','s_"
|
| - "ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookm"
|
| - "arks',NULL,NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(13,687,687," LEGACY_PROTO_TIME_VALS(13)
|
| - ",-917504,10,'s_ID_13','s_ID"
|
| - "_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN | Internet Corpo"
|
| - "ration for Assigned Names and Numbers','ICANN | Internet Corporation"
|
| - " for Assigned Names and Numbers',NULL,NULL,X'C28810240A15687474703A2"
|
| - "F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',X'C288102"
|
| - "00A15687474703A2F2F7777772E6963616E6E2E636F6D2F120744414146415346');"
|
| - "INSERT INTO 'metas' VALUES(14,692,692," LEGACY_PROTO_TIME_VALS(14)
|
| - ",1048576,11,'s_ID_14','s_ID"
|
| - "_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Open Source Proje"
|
| - "ct','The WebKit Open Source Project',NULL,NULL,X'C288101A0A126874747"
|
| - "03A2F2F7765626B69742E6F72672F1204504E4758',X'C288101C0A13687474703A2"
|
| - "F2F7765626B69742E6F72672F781205504E473259');"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
|
| - "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa"
|
| - "ult -2, cache_guid TEXT , notification_state BLOB);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'"
|
| - "9010788312004066376x-6609234393368420856x',NULL);"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion77Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',77);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in"
|
| - "itial_sync_ended BOOLEAN default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0,server_po"
|
| - "sition_in_parent bigint default 0,local_external_id bigint default 0"
|
| - ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
|
| - "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
|
| - "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
|
| - "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
|
| - "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
|
| - "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
|
| - "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
|
| - "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
|
| - "har,specifics blob,server_specifics blob);"
|
| - "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1)
|
| - ",'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'');"
|
| - "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4,"
|
| - META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_"
|
| - "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X"
|
| - "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534"
|
| - "14447414447414447');"
|
| - "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3,"
|
| - META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_"
|
| - "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL"
|
| - ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6"
|
| - "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687"
|
| - "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656"
|
| - "E2F77656C636F6D652E68746D6C1200');"
|
| - "INSERT INTO 'metas' VALUES(5,677,677,1048576,7," META_PROTO_TIMES_VALS(5)
|
| - ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','"
|
| - "Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E"
|
| - "636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E67"
|
| - "6F6F676C652E636F6D2F12084147464447415347');"
|
| - "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6,"
|
| - META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1"
|
| - ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'"
|
| - ");"
|
| - "INSERT INTO 'metas' VALUES(7,663,663,1048576,0," META_PROTO_TIMES_VALS(7)
|
| - ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Goo"
|
| - "gle Chrome','google_chrome',NULL,NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(8,664,664,1048576,0," META_PROTO_TIMES_VALS(8)
|
| - ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmar"
|
| - "ks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(9,665,665,1048576,1," META_PROTO_TIMES_VALS(9)
|
| - ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'"
|
| - ",'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(10,666,666,2097152,2,"
|
| - META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',"
|
| - "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU"
|
| - "LL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8,"
|
| - META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'"
|
| - ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj"
|
| - "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756"
|
| - "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636"
|
| - "8726F6D69756D2E6F72672F6F7468657212084146414756415346');"
|
| - "INSERT INTO 'metas' VALUES(12,685,685,0,9," META_PROTO_TIMES_VALS(12)
|
| - ",'s_ID_12','s_ID_6','s_"
|
| - "ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookm"
|
| - "arks',NULL,NULL,X'C2881000',X'C2881000');"
|
| - "INSERT INTO 'metas' VALUES(13,687,687,-917504,10,"
|
| - META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_"
|
| - "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names "
|
| - "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu"
|
| - "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636"
|
| - "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772"
|
| - "E6963616E6E2E636F6D2F120744414146415346');"
|
| - "INSERT INTO 'metas' VALUES(14,692,692,1048576,11,"
|
| - META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'"
|
| - ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc"
|
| - "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726"
|
| - "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7"
|
| - "81205504E473259');"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
|
| - "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa"
|
| - "ult -2, cache_guid TEXT , notification_state BLOB);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'"
|
| - "9010788312004066376x-6609234393368420856x',NULL);"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion78Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',78);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in"
|
| - "itial_sync_ended BOOLEAN default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0,server_po"
|
| - "sition_in_parent bigint default 0,local_external_id bigint default 0"
|
| - ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
|
| - "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
|
| - "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
|
| - "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
|
| - "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
|
| - "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
|
| - "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
|
| - "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
|
| - "har,specifics blob,server_specifics blob, base_server_specifics BLOB"
|
| - ");"
|
| - "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','"
|
| - "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);"
|
| - "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4,"
|
| - META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_"
|
| - "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X"
|
| - "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534"
|
| - "14447414447414447',NULL);"
|
| - "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3,"
|
| - META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_"
|
| - "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL"
|
| - ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6"
|
| - "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687"
|
| - "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656"
|
| - "E2F77656C636F6D652E68746D6C1200',NULL);"
|
| - "INSERT INTO 'metas' VALUES(5,677,677,1048576,7,"
|
| - META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_"
|
| - "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2"
|
| - "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N"
|
| - "ULL);"
|
| - "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6,"
|
| - META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1"
|
| - ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'"
|
| - ",NULL);"
|
| - "INSERT INTO 'metas' VALUES(7,663,663,1048576,0,"
|
| - META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog"
|
| - "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(8,664,664,1048576,0,"
|
| - META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1"
|
| - ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810"
|
| - "00',X'C2881000',NULL);"
|
| - "INSERT INTO 'metas' VALUES(9,665,665,1048576,1,"
|
| - META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0"
|
| - ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881"
|
| - "000',X'C2881000',NULL);"
|
| - "INSERT INTO 'metas' VALUES(10,666,666,2097152,2,"
|
| - META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',"
|
| - "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU"
|
| - "LL,X'C2881000',X'C2881000',NULL);"
|
| - "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8,"
|
| - META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'"
|
| - ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj"
|
| - "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756"
|
| - "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636"
|
| - "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);"
|
| - "INSERT INTO 'metas' VALUES(12,685,685,0,9,"
|
| - META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_"
|
| - "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C"
|
| - "2881000',X'C2881000',NULL);"
|
| - "INSERT INTO 'metas' VALUES(13,687,687,-917504,10,"
|
| - META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_"
|
| - "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names "
|
| - "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu"
|
| - "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636"
|
| - "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772"
|
| - "E6963616E6E2E636F6D2F120744414146415346',NULL);"
|
| - "INSERT INTO 'metas' VALUES(14,692,692,1048576,11,"
|
| - META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'"
|
| - ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc"
|
| - "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726"
|
| - "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7"
|
| - "81205504E473259',NULL);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
|
| - "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa"
|
| - "ult -2, cache_guid TEXT , notification_state BLOB);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542,'"
|
| - "9010788312004066376x-6609234393368420856x',NULL);"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion79Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',79);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in"
|
| - "itial_sync_ended BOOLEAN default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0,server_po"
|
| - "sition_in_parent bigint default 0,local_external_id bigint default 0"
|
| - ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
|
| - "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
|
| - "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
|
| - "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
|
| - "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
|
| - "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
|
| - "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
|
| - "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
|
| - "har,specifics blob,server_specifics blob, base_server_specifics BLOB"
|
| - ");"
|
| - "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','"
|
| - "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);"
|
| - "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4,"
|
| - META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_"
|
| - "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X"
|
| - "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534"
|
| - "14447414447414447',NULL);"
|
| - "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3,"
|
| - META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_"
|
| - "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL"
|
| - ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6"
|
| - "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687"
|
| - "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656"
|
| - "E2F77656C636F6D652E68746D6C1200',NULL);"
|
| - "INSERT INTO 'metas' VALUES(5,677,677,1048576,7,"
|
| - META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_"
|
| - "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2"
|
| - "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N"
|
| - "ULL);"
|
| - "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6,"
|
| - META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1"
|
| - ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'"
|
| - ",NULL);"
|
| - "INSERT INTO 'metas' VALUES(7,663,663,1048576,0,"
|
| - META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog"
|
| - "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(8,664,664,1048576,0,"
|
| - META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1"
|
| - ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810"
|
| - "00',X'C2881000',NULL);"
|
| - "INSERT INTO 'metas' VALUES(9,665,665,1048576,1,"
|
| - META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0"
|
| - ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881"
|
| - "000',X'C2881000',NULL);"
|
| - "INSERT INTO 'metas' VALUES(10,666,666,2097152,2,"
|
| - META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',"
|
| - "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU"
|
| - "LL,X'C2881000',X'C2881000',NULL);"
|
| - "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8,"
|
| - META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'"
|
| - ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj"
|
| - "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756"
|
| - "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636"
|
| - "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);"
|
| - "INSERT INTO 'metas' VALUES(12,685,685,0,9,"
|
| - META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_"
|
| - "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C"
|
| - "2881000',X'C2881000',NULL);"
|
| - "INSERT INTO 'metas' VALUES(13,687,687,-917504,10,"
|
| - META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_"
|
| - "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names "
|
| - "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu"
|
| - "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636"
|
| - "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772"
|
| - "E6963616E6E2E636F6D2F120744414146415346',NULL);"
|
| - "INSERT INTO 'metas' VALUES(14,692,692,1048576,11,"
|
| - META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'"
|
| - ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc"
|
| - "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726"
|
| - "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7"
|
| - "81205504E473259',NULL);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
|
| - "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa"
|
| - "ult -2, cache_guid TEXT , notification_state BLOB);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,"
|
| - "-131078,'9010788312004066376x-6609234393368420856x',NULL);"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion80Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',80);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in"
|
| - "itial_sync_ended BOOLEAN default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0,server_po"
|
| - "sition_in_parent bigint default 0,local_external_id bigint default 0"
|
| - ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
|
| - "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
|
| - "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
|
| - "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
|
| - "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
|
| - "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
|
| - "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
|
| - "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
|
| - "har,specifics blob,server_specifics blob, base_server_specifics BLOB"
|
| - ");"
|
| - "INSERT INTO 'metas' VALUES(1,-1,0,0,0," META_PROTO_TIMES_VALS(1) ",'r','"
|
| - "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL);"
|
| - "INSERT INTO 'metas' VALUES(2,669,669,-2097152,4,"
|
| - META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_"
|
| - "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X"
|
| - "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534"
|
| - "14447414447414447',NULL);"
|
| - "INSERT INTO 'metas' VALUES(4,681,681,-3145728,3,"
|
| - META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_"
|
| - "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL"
|
| - ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6"
|
| - "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687"
|
| - "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656"
|
| - "E2F77656C636F6D652E68746D6C1200',NULL);"
|
| - "INSERT INTO 'metas' VALUES(5,677,677,1048576,7,"
|
| - META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_"
|
| - "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2"
|
| - "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N"
|
| - "ULL);"
|
| - "INSERT INTO 'metas' VALUES(6,694,694,-4194304,6,"
|
| - META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1"
|
| - ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'"
|
| - ",NULL);"
|
| - "INSERT INTO 'metas' VALUES(7,663,663,1048576,0,"
|
| - META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog"
|
| - "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(8,664,664,1048576,0,"
|
| - META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1"
|
| - ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810"
|
| - "00',X'C2881000',NULL);"
|
| - "INSERT INTO 'metas' VALUES(9,665,665,1048576,1,"
|
| - META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0"
|
| - ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881"
|
| - "000',X'C2881000',NULL);"
|
| - "INSERT INTO 'metas' VALUES(10,666,666,2097152,2,"
|
| - META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',"
|
| - "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU"
|
| - "LL,X'C2881000',X'C2881000',NULL);"
|
| - "INSERT INTO 'metas' VALUES(11,683,683,-1048576,8,"
|
| - META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'"
|
| - ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj"
|
| - "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756"
|
| - "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636"
|
| - "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL);"
|
| - "INSERT INTO 'metas' VALUES(12,685,685,0,9,"
|
| - META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_"
|
| - "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C"
|
| - "2881000',X'C2881000',NULL);"
|
| - "INSERT INTO 'metas' VALUES(13,687,687,-917504,10,"
|
| - META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_"
|
| - "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names "
|
| - "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu"
|
| - "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636"
|
| - "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772"
|
| - "E6963616E6E2E636F6D2F120744414146415346',NULL);"
|
| - "INSERT INTO 'metas' VALUES(14,692,692,1048576,11,"
|
| - META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'"
|
| - ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc"
|
| - "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726"
|
| - "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7"
|
| - "81205504E473259',NULL);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
|
| - "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa"
|
| - "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips "
|
| - "blob);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,"
|
| - "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -
|
| -// Helper definitions to create the version 81 DB tables.
|
| -namespace {
|
| -
|
| -const int V80_ROW_COUNT = 13;
|
| -const int64_t V80_POSITIONS[V80_ROW_COUNT] = {
|
| - 0, -2097152, -3145728, 1048576, -4194304, 1048576, 1048576,
|
| - 1048576, 2097152, -1048576, 0, -917504, 1048576};
|
| -
|
| -std::string V81_Ordinal(int n) {
|
| - return Int64ToNodeOrdinal(V80_POSITIONS[n]).ToInternalValue();
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// Unlike the earlier versions, the rows for version 81 are generated
|
| -// programmatically to accurately handle unprintable characters for the
|
| -// server_ordinal_in_parent field.
|
| -void MigrationTest::SetUpVersion81Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',81);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in"
|
| - "itial_sync_ended BOOLEAN default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0, "
|
| - "local_external_id bigint default 0"
|
| - ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
|
| - "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
|
| - "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
|
| - "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
|
| - "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
|
| - "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
|
| - "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
|
| - "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
|
| - "har,specifics blob,server_specifics blob, base_server_specifics BLOB"
|
| - ", server_ordinal_in_parent blob);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
|
| - "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa"
|
| - "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips "
|
| - "blob);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,"
|
| - "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);"));
|
| -
|
| - const char* insert_stmts[V80_ROW_COUNT] = {
|
| - "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','"
|
| - "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(2,669,669,4,"
|
| - META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_"
|
| - "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X"
|
| - "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534"
|
| - "14447414447414447',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(4,681,681,3,"
|
| - META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_"
|
| - "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL"
|
| - ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6"
|
| - "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687"
|
| - "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656"
|
| - "E2F77656C636F6D652E68746D6C1200',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(5,677,677,7,"
|
| - META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_"
|
| - "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2"
|
| - "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N"
|
| - "ULL,?);",
|
| - "INSERT INTO 'metas' VALUES(6,694,694,6,"
|
| - META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1"
|
| - ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'"
|
| - ",NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(7,663,663,0,"
|
| - META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog"
|
| - "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(8,664,664,0,"
|
| - META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1"
|
| - ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810"
|
| - "00',X'C2881000',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(9,665,665,1,"
|
| - META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0"
|
| - ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881"
|
| - "000',X'C2881000',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(10,666,666,2,"
|
| - META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',"
|
| - "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU"
|
| - "LL,X'C2881000',X'C2881000',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(11,683,683,8,"
|
| - META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'"
|
| - ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj"
|
| - "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756"
|
| - "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636"
|
| - "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(12,685,685,9,"
|
| - META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_"
|
| - "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C"
|
| - "2881000',X'C2881000',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(13,687,687,10,"
|
| - META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_"
|
| - "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names "
|
| - "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu"
|
| - "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636"
|
| - "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772"
|
| - "E6963616E6E2E636F6D2F120744414146415346',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(14,692,692,11,"
|
| - META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'"
|
| - ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc"
|
| - "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726"
|
| - "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7"
|
| - "81205504E473259',NULL,?);" };
|
| -
|
| - for (int i = 0; i < V80_ROW_COUNT; i++) {
|
| - sql::Statement s(connection->GetUniqueStatement(insert_stmts[i]));
|
| - std::string ord = V81_Ordinal(i);
|
| - s.BindBlob(0, ord.data(), ord.length());
|
| - ASSERT_TRUE(s.Run());
|
| - s.Reset(true);
|
| - }
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion82Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',82);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in"
|
| - "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT "
|
| - "default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0, "
|
| - "local_external_id bigint default 0"
|
| - ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
|
| - "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
|
| - "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
|
| - "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
|
| - "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
|
| - "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
|
| - "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
|
| - "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
|
| - "har,specifics blob,server_specifics blob, base_server_specifics BLOB"
|
| - ", server_ordinal_in_parent blob);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
|
| - "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa"
|
| - "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips "
|
| - "blob);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,"
|
| - "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);"));
|
| -
|
| - const char* insert_stmts[V80_ROW_COUNT] = {
|
| - "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','"
|
| - "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(2,669,669,4,"
|
| - META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_"
|
| - "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X"
|
| - "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534"
|
| - "14447414447414447',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(4,681,681,3,"
|
| - META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_"
|
| - "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL"
|
| - ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6"
|
| - "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687"
|
| - "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656"
|
| - "E2F77656C636F6D652E68746D6C1200',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(5,677,677,7,"
|
| - META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_"
|
| - "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2"
|
| - "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N"
|
| - "ULL,?);",
|
| - "INSERT INTO 'metas' VALUES(6,694,694,6,"
|
| - META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1"
|
| - ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'"
|
| - ",NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(7,663,663,0,"
|
| - META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog"
|
| - "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(8,664,664,0,"
|
| - META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1"
|
| - ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810"
|
| - "00',X'C2881000',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(9,665,665,1,"
|
| - META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0"
|
| - ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881"
|
| - "000',X'C2881000',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(10,666,666,2,"
|
| - META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',"
|
| - "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU"
|
| - "LL,X'C2881000',X'C2881000',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(11,683,683,8,"
|
| - META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'"
|
| - ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj"
|
| - "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756"
|
| - "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636"
|
| - "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(12,685,685,9,"
|
| - META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_"
|
| - "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C"
|
| - "2881000',X'C2881000',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(13,687,687,10,"
|
| - META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_"
|
| - "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names "
|
| - "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu"
|
| - "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636"
|
| - "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772"
|
| - "E6963616E6E2E636F6D2F120744414146415346',NULL,?);",
|
| - "INSERT INTO 'metas' VALUES(14,692,692,11,"
|
| - META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'"
|
| - ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc"
|
| - "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726"
|
| - "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7"
|
| - "81205504E473259',NULL,?);" };
|
| -
|
| - for (int i = 0; i < V80_ROW_COUNT; i++) {
|
| - sql::Statement s(connection->GetUniqueStatement(insert_stmts[i]));
|
| - std::string ord = V81_Ordinal(i);
|
| - s.BindBlob(0, ord.data(), ord.length());
|
| - ASSERT_TRUE(s.Run());
|
| - s.Reset(true);
|
| - }
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion83Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',83);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in"
|
| - "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT "
|
| - "default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0, "
|
| - "local_external_id bigint default 0"
|
| - ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
|
| - "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
|
| - "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
|
| - "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
|
| - "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
|
| - "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
|
| - "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
|
| - "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
|
| - "har,specifics blob,server_specifics blob, base_server_specifics BLOB"
|
| - ", server_ordinal_in_parent blob, transaction_version bigint default "
|
| - "0);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
|
| - "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa"
|
| - "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips "
|
| - "blob);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,"
|
| - "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);"));
|
| -
|
| - const char* insert_stmts[V80_ROW_COUNT] = {
|
| - "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','"
|
| - "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(2,669,669,4,"
|
| - META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_"
|
| - "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X"
|
| - "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534"
|
| - "14447414447414447',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(4,681,681,3,"
|
| - META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_"
|
| - "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL"
|
| - ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6"
|
| - "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687"
|
| - "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656"
|
| - "E2F77656C636F6D652E68746D6C1200',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(5,677,677,7,"
|
| - META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_"
|
| - "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2"
|
| - "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N"
|
| - "ULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(6,694,694,6,"
|
| - META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1"
|
| - ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'"
|
| - ",NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(7,663,663,0,"
|
| - META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog"
|
| - "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);"
|
| - "",
|
| - "INSERT INTO 'metas' VALUES(8,664,664,0,"
|
| - META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1"
|
| - ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810"
|
| - "00',X'C2881000',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(9,665,665,1,"
|
| - META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0"
|
| - ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881"
|
| - "000',X'C2881000',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(10,666,666,2,"
|
| - META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',"
|
| - "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU"
|
| - "LL,X'C2881000',X'C2881000',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(11,683,683,8,"
|
| - META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'"
|
| - ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj"
|
| - "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756"
|
| - "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636"
|
| - "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(12,685,685,9,"
|
| - META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_"
|
| - "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C"
|
| - "2881000',X'C2881000',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(13,687,687,10,"
|
| - META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_"
|
| - "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names "
|
| - "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu"
|
| - "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636"
|
| - "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772"
|
| - "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(14,692,692,11,"
|
| - META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'"
|
| - ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc"
|
| - "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726"
|
| - "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7"
|
| - "81205504E473259',NULL,?,0);" };
|
| -
|
| - for (int i = 0; i < V80_ROW_COUNT; i++) {
|
| - sql::Statement s(connection->GetUniqueStatement(insert_stmts[i]));
|
| - std::string ord = V81_Ordinal(i);
|
| - s.BindBlob(0, ord.data(), ord.length());
|
| - ASSERT_TRUE(s.Run());
|
| - s.Reset(true);
|
| - }
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion84Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',84);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in"
|
| - "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT "
|
| - "default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0, "
|
| - "local_external_id bigint default 0"
|
| - ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
|
| - "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
|
| - "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
|
| - "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
|
| - "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
|
| - "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
|
| - "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
|
| - "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
|
| - "har,specifics blob,server_specifics blob, base_server_specifics BLOB"
|
| - ", server_ordinal_in_parent blob, transaction_version bigint default "
|
| - "0);"
|
| - "CREATE TABLE 'deleted_metas'"
|
| - "(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0, "
|
| - "local_external_id bigint default 0"
|
| - ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
|
| - "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
|
| - "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
|
| - "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
|
| - "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
|
| - "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
|
| - "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
|
| - "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
|
| - "har,specifics blob,server_specifics blob, base_server_specifics BLOB"
|
| - ", server_ordinal_in_parent blob, transaction_version bigint default "
|
| - "0);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
|
| - "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa"
|
| - "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips "
|
| - "blob);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,"
|
| - "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);"));
|
| -
|
| - const char* insert_stmts[V80_ROW_COUNT] = {
|
| - "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','"
|
| - "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(2,669,669,4,"
|
| - META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_"
|
| - "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X"
|
| - "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534"
|
| - "14447414447414447',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(4,681,681,3,"
|
| - META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_"
|
| - "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL"
|
| - ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6"
|
| - "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687"
|
| - "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656"
|
| - "E2F77656C636F6D652E68746D6C1200',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(5,677,677,7,"
|
| - META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_"
|
| - "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2"
|
| - "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N"
|
| - "ULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(6,694,694,6,"
|
| - META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1"
|
| - ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'"
|
| - ",NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(7,663,663,0,"
|
| - META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog"
|
| - "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);"
|
| - "",
|
| - "INSERT INTO 'metas' VALUES(8,664,664,0,"
|
| - META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1"
|
| - ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810"
|
| - "00',X'C2881000',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(9,665,665,1,"
|
| - META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0"
|
| - ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881"
|
| - "000',X'C2881000',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(10,666,666,2,"
|
| - META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',"
|
| - "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU"
|
| - "LL,X'C2881000',X'C2881000',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(11,683,683,8,"
|
| - META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'"
|
| - ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj"
|
| - "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756"
|
| - "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636"
|
| - "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(12,685,685,9,"
|
| - META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_"
|
| - "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C"
|
| - "2881000',X'C2881000',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(13,687,687,10,"
|
| - META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_"
|
| - "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names "
|
| - "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu"
|
| - "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636"
|
| - "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772"
|
| - "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(14,692,692,11,"
|
| - META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'"
|
| - ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc"
|
| - "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726"
|
| - "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7"
|
| - "81205504E473259',NULL,?,0);" };
|
| -
|
| - for (int i = 0; i < V80_ROW_COUNT; i++) {
|
| - sql::Statement s(connection->GetUniqueStatement(insert_stmts[i]));
|
| - std::string ord = V81_Ordinal(i);
|
| - s.BindBlob(0, ord.data(), ord.length());
|
| - ASSERT_TRUE(s.Run());
|
| - s.Reset(true);
|
| - }
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion85Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',85);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, "
|
| - "transaction_version BIGINT default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605', 1);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0, "
|
| - "local_external_id bigint default 0"
|
| - ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
|
| - "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
|
| - "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
|
| - "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
|
| - "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
|
| - "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
|
| - "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
|
| - "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
|
| - "har,specifics blob,server_specifics blob, base_server_specifics BLOB"
|
| - ", server_ordinal_in_parent blob, transaction_version bigint default "
|
| - "0);"
|
| - "CREATE TABLE 'deleted_metas'"
|
| - "(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0, "
|
| - "local_external_id bigint default 0"
|
| - ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
|
| - "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
|
| - "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
|
| - "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
|
| - "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
|
| - "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
|
| - "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
|
| - "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
|
| - "har,specifics blob,server_specifics blob, base_server_specifics BLOB"
|
| - ", server_ordinal_in_parent blob, transaction_version bigint default "
|
| - "0);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
|
| - "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa"
|
| - "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips "
|
| - "blob);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,"
|
| - "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);"));
|
| -
|
| - const char* insert_stmts[V80_ROW_COUNT] = {
|
| - "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','"
|
| - "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(2,669,669,4,"
|
| - META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_"
|
| - "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X"
|
| - "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534"
|
| - "14447414447414447',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(4,681,681,3,"
|
| - META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_"
|
| - "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL"
|
| - ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6"
|
| - "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687"
|
| - "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656"
|
| - "E2F77656C636F6D652E68746D6C1200',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(5,677,677,7,"
|
| - META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_"
|
| - "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2"
|
| - "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1"
|
| - "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N"
|
| - "ULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(6,694,694,6,"
|
| - META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1"
|
| - ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'"
|
| - ",NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(7,663,663,0,"
|
| - META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog"
|
| - "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);"
|
| - "",
|
| - "INSERT INTO 'metas' VALUES(8,664,664,0,"
|
| - META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1"
|
| - ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810"
|
| - "00',X'C2881000',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(9,665,665,1,"
|
| - META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0"
|
| - ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881"
|
| - "000',X'C2881000',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(10,666,666,2,"
|
| - META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',"
|
| - "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU"
|
| - "LL,X'C2881000',X'C2881000',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(11,683,683,8,"
|
| - META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'"
|
| - ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj"
|
| - "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756"
|
| - "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636"
|
| - "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(12,685,685,9,"
|
| - META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_"
|
| - "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C"
|
| - "2881000',X'C2881000',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(13,687,687,10,"
|
| - META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_"
|
| - "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names "
|
| - "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu"
|
| - "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636"
|
| - "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772"
|
| - "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);",
|
| - "INSERT INTO 'metas' VALUES(14,692,692,11,"
|
| - META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'"
|
| - ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc"
|
| - "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726"
|
| - "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7"
|
| - "81205504E473259',NULL,?,0);" };
|
| -
|
| - for (int i = 0; i < V80_ROW_COUNT; i++) {
|
| - sql::Statement s(connection->GetUniqueStatement(insert_stmts[i]));
|
| - std::string ord = V81_Ordinal(i);
|
| - s.BindBlob(0, ord.data(), ord.length());
|
| - ASSERT_TRUE(s.Run());
|
| - s.Reset(true);
|
| - }
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion86Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',86);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB,"
|
| - " transaction_version BIGINT default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,b"
|
| - "ase_version bigint default -1,server_version bigint default 0,local_e"
|
| - "xternal_id bigint default 0,transaction_version bigint default 0,mtim"
|
| - "e bigint default 0,server_mtime bigint default 0,ctime bigint default"
|
| - " 0,server_ctime bigint default 0,id varchar(255) default 'r',parent_i"
|
| - "d varchar(255) default 'r',server_parent_id varchar(255) default 'r',"
|
| - "is_unsynced bit default 0,is_unapplied_update bit default 0,is_del bi"
|
| - "t default 0,is_dir bit default 0,server_is_dir bit default 0,server_i"
|
| - "s_del bit default 0,non_unique_name varchar,server_non_unique_name va"
|
| - "rchar(255),unique_server_tag varchar,unique_client_tag varchar,unique"
|
| - "_bookmark_tag varchar,specifics blob,server_specifics blob,base_serve"
|
| - "r_specifics blob,server_unique_position blob,unique_position blob);"
|
| - "INSERT INTO 'metas' VALUES(1,-1,0,0,0,"
|
| - META_PROTO_TIMES_VALS(1)
|
| - ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,"
|
| - "X'',X'',X'',NULL,X'2200',X'2200');"
|
| - "INSERT INTO 'metas' VALUES(6,694,694,6,0,"
|
| - META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The"
|
| - " Internet','The Internet',NULL,NULL,X'6754307476346749735A5734654D653"
|
| - "273625336557753582F77673D',X'C2881000',X'C2881000',NULL,X'22247FFFFFF"
|
| - "FFFC000006754307476346749735A5734654D653273625336557753582F77673D',X'"
|
| - "22247FFFFFFFFFC000006754307476346749735A5734654D653273625336557753582"
|
| - "F77673D');"
|
| - "INSERT INTO 'metas' VALUES(7,663,663,0,0,"
|
| - META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome"
|
| - "','Google Chrome','google_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'2"
|
| - "200');"
|
| - "INSERT INTO 'metas' VALUES(8,664,664,0,0,"
|
| - META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Boo"
|
| - "kmarks','Bookmarks','google_chrome_bookmarks',NULL,X'',X'C2881000',X'"
|
| - "C2881000',NULL,X'2200',X'2200');"
|
| - "INSERT INTO 'metas' VALUES(9,665,665,1,0,"
|
| - META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Boo"
|
| - "kmark Bar','Bookmark Bar','bookmark_bar',NULL,X'',X'C2881000',X'C2881"
|
| - "000',NULL,X'2200',X'2200');"
|
| - "INSERT INTO 'metas' VALUES(10,666,666,2,0,"
|
| - META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'O"
|
| - "ther Bookmarks','Other Bookmarks','other_bookmarks',NULL,X'',X'C28810"
|
| - "00',X'C2881000',NULL,X'2200',X'2200');"
|
| - "INSERT INTO 'metas' VALUES(11,683,683,8,0,"
|
| - META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'H"
|
| - "ome (The Chromium Projects)','Home (The Chromium Projects)',NULL,NULL"
|
| - ",X'50514C784A456D623579366267644237646A7A2B62314130346E493D',X'C28810"
|
| - "220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F120641474154574"
|
| - "1',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74"
|
| - "68657212084146414756415346',NULL,X'22247FFFFFFFFFF0000050514C784A456D"
|
| - "623579366267644237646A7A2B62314130346E493D',X'22247FFFFFFFFFF00000505"
|
| - "14C784A456D623579366267644237646A7A2B62314130346E493D');"
|
| - "INSERT INTO 'metas' VALUES(12,685,685,9,0,"
|
| - META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'E"
|
| - "xtra Bookmarks','Extra Bookmarks',NULL,NULL,X'7867626A704A646134635A6"
|
| - "F616C376A49513338734B46324837773D',X'C2881000',X'C2881000',NULL,X'222"
|
| - "480000000000000007867626A704A646134635A6F616C376A49513338734B46324837"
|
| - "773D',X'222480000000000000007867626A704A646134635A6F616C376A495133387"
|
| - "34B46324837773D');"
|
| - "INSERT INTO 'metas' VALUES(13,687,687,10,0,"
|
| - META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'I"
|
| - "CANN | Internet Corporation for Assigned Names and Numbers','ICANN | "
|
| - "Internet Corporation for Assigned Names and Numbers',NULL,NULL,X'3142"
|
| - "756B572F7741766956504179672B304A614A514B3452384A413D',X'C28810240A156"
|
| - "87474703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',"
|
| - "X'C28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F1207444141464"
|
| - "15346',NULL,X'22247FFFFFFFFFF200003142756B572F7741766956504179672B304"
|
| - "A614A514B3452384A413D',X'22247FFFFFFFFFF200003142756B572F774176695650"
|
| - "4179672B304A614A514B3452384A413D');"
|
| - "INSERT INTO 'metas' VALUES(14,692,692,11,0,"
|
| - META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'T"
|
| - "he WebKit Open Source Project','The WebKit Open Source Project',NULL,"
|
| - "NULL,X'5A5678314E7976364579524D3177494F7236563159552F6E644C553D',X'C2"
|
| - "88101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101"
|
| - "C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259',NULL,X'222"
|
| - "480000000001000005A5678314E7976364579524D3177494F7236563159552F6E644C"
|
| - "553D',X'222480000000001000005A5678314E7976364579524D3177494F723656315"
|
| - "9552F6E644C553D');"
|
| - "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA"
|
| - "IL,base_version bigint default -1,server_version bigint default 0,loc"
|
| - "al_external_id bigint default 0,transaction_version bigint default 0,"
|
| - "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def"
|
| - "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare"
|
| - "nt_id varchar(255) default 'r',server_parent_id varchar(255) default "
|
| - "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de"
|
| - "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv"
|
| - "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam"
|
| - "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un"
|
| - "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s"
|
| - "erver_specifics blob,server_unique_position blob,unique_position blob"
|
| - ");"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birt"
|
| - "hday TEXT, db_create_version TEXT, db_create_time INT, next_id INT de"
|
| - "fault -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB"
|
| - ");"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.or"
|
| - "g','c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-13107"
|
| - "8,'9010788312004066376x-6609234393368420856x',NULL,NULL);"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion87Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',87);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, tr"
|
| - "ansaction_version BIGINT default 0);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0,local_exte"
|
| - "rnal_id bigint default 0,transaction_version bigint default 0,mtime b"
|
| - "igint default 0,server_mtime bigint default 0,ctime bigint default 0,"
|
| - "server_ctime bigint default 0,id varchar(255) default 'r',parent_id v"
|
| - "archar(255) default 'r',server_parent_id varchar(255) default 'r',is_"
|
| - "unsynced bit default 0,is_unapplied_update bit default 0,is_del bit d"
|
| - "efault 0,is_dir bit default 0,server_is_dir bit default 0,server_is_d"
|
| - "el bit default 0,non_unique_name varchar,server_non_unique_name varch"
|
| - "ar(255),unique_server_tag varchar,unique_client_tag varchar,unique_bo"
|
| - "okmark_tag varchar,specifics blob,server_specifics blob,base_server_s"
|
| - "pecifics blob,server_unique_position blob,unique_position blob,attach"
|
| - "ment_metadata blob);"
|
| - "INSERT INTO 'metas' VALUES(1,-1,0,0,0,"
|
| - META_PROTO_TIMES_VALS(1)
|
| - ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X''"
|
| - ",X'',X'',NULL,X'2200',X'2200',NULL);"
|
| - "INSERT INTO 'metas' VALUES(6,694,694,6,0,"
|
| - META_PROTO_TIMES_VALS(6)
|
| - ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The "
|
| - "Internet','The Internet',NULL,NULL,X'6754307476346749735A5734654D6532"
|
| - "73625336557753582F77673D',X'C2881000',X'C2881000',NULL,X'22247FFFFFFF"
|
| - "FFC000006754307476346749735A5734654D653273625336557753582F77673D',X'2"
|
| - "2247FFFFFFFFFC000006754307476346749735A5734654D653273625336557753582F"
|
| - "77673D',NULL);"
|
| - "INSERT INTO 'metas' VALUES(7,663,663,0,0,"
|
| - META_PROTO_TIMES_VALS(7)
|
| - ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome'"
|
| - ",'Google Chrome','google_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'22"
|
| - "00',NULL);"
|
| - "INSERT INTO 'metas' VALUES(8,664,664,0,0,"
|
| - META_PROTO_TIMES_VALS(8)
|
| - ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Book"
|
| - "marks','Bookmarks','google_chrome_bookmarks',NULL,X'',X'C2881000',X'C"
|
| - "2881000',NULL,X'2200',X'2200',NULL);"
|
| - "INSERT INTO 'metas' VALUES(9,665,665,1,0,"
|
| - META_PROTO_TIMES_VALS(9)
|
| - ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Book"
|
| - "mark Bar','Bookmark Bar','bookmark_bar',NULL,X'',X'C2881000',X'C28810"
|
| - "00',NULL,X'2200',X'2200',NULL);"
|
| - "INSERT INTO 'metas' VALUES(10,666,666,2,0,"
|
| - META_PROTO_TIMES_VALS(10)
|
| - ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'Ot"
|
| - "her Bookmarks','Other Bookmarks','other_bookmarks',NULL,X'',X'C288100"
|
| - "0',X'C2881000',NULL,X'2200',X'2200',NULL);"
|
| - "INSERT INTO 'metas' VALUES(11,683,683,8,0,"
|
| - META_PROTO_TIMES_VALS(11)
|
| - ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'Ho"
|
| - "me (The Chromium Projects)','Home (The Chromium Projects)',NULL,NULL,"
|
| - "X'50514C784A456D623579366267644237646A7A2B62314130346E493D',X'C288102"
|
| - "20A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1206414741545741"
|
| - "',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F746"
|
| - "8657212084146414756415346',NULL,X'22247FFFFFFFFFF0000050514C784A456D6"
|
| - "23579366267644237646A7A2B62314130346E493D',X'22247FFFFFFFFFF000005051"
|
| - "4C784A456D623579366267644237646A7A2B62314130346E493D',NULL);"
|
| - "INSERT INTO 'metas' VALUES(12,685,685,9,0,"
|
| - META_PROTO_TIMES_VALS(12)
|
| - ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'Ex"
|
| - "tra Bookmarks','Extra Bookmarks',NULL,NULL,X'7867626A704A646134635A6F"
|
| - "616C376A49513338734B46324837773D',X'C2881000',X'C2881000',NULL,X'2224"
|
| - "80000000000000007867626A704A646134635A6F616C376A49513338734B463248377"
|
| - "73D',X'222480000000000000007867626A704A646134635A6F616C376A4951333873"
|
| - "4B46324837773D',NULL);"
|
| - "INSERT INTO 'metas' VALUES(13,687,687,10,0,"
|
| - META_PROTO_TIMES_VALS(13)
|
| - ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'I"
|
| - "CANN | Internet Corporation for Assigned Names and Numbers','ICANN | "
|
| - "Internet Corporation for Assigned Names and Numbers',NULL,NULL,X'3142"
|
| - "756B572F7741766956504179672B304A614A514B3452384A413D',X'C28810240A156"
|
| - "87474703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',"
|
| - "X'C28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F1207444141464"
|
| - "15346',NULL,X'22247FFFFFFFFFF200003142756B572F7741766956504179672B304"
|
| - "A614A514B3452384A413D',X'22247FFFFFFFFFF200003142756B572F774176695650"
|
| - "4179672B304A614A514B3452384A413D',NULL);"
|
| - "INSERT INTO 'metas' VALUES(14,692,692,11,0,"
|
| - META_PROTO_TIMES_VALS(14)
|
| - ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'T"
|
| - "he WebKit Open Source Project','The WebKit Open Source Project',NULL,"
|
| - "NULL,X'5A5678314E7976364579524D3177494F7236563159552F6E644C553D',X'C2"
|
| - "88101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101"
|
| - "C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259',NULL,X'222"
|
| - "480000000001000005A5678314E7976364579524D3177494F7236563159552F6E644C"
|
| - "553D',X'222480000000001000005A5678314E7976364579524D3177494F723656315"
|
| - "9552F6E644C553D',NULL);"
|
| - "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA"
|
| - "IL,base_version bigint default -1,server_version bigint default 0,loc"
|
| - "al_external_id bigint default 0,transaction_version bigint default 0,"
|
| - "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def"
|
| - "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare"
|
| - "nt_id varchar(255) default 'r',server_parent_id varchar(255) default "
|
| - "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de"
|
| - "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv"
|
| - "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam"
|
| - "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un"
|
| - "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s"
|
| - "erver_specifics blob,server_unique_position blob,unique_position blob"
|
| - ",attachment_metadata blob);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
|
| - "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defau"
|
| - "lt -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-131078,'"
|
| - "9010788312004066376x-6609234393368420856x',NULL,NULL);"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion88Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',88);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB,"
|
| - " transaction_version BIGINT default 0, context BLOB);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1,NULL);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0,local_exte"
|
| - "rnal_id bigint default 0,transaction_version bigint default 0,mtime b"
|
| - "igint default 0,server_mtime bigint default 0,ctime bigint default 0,"
|
| - "server_ctime bigint default 0,id varchar(255) default 'r',parent_id v"
|
| - "archar(255) default 'r',server_parent_id varchar(255) default 'r',is_"
|
| - "unsynced bit default 0,is_unapplied_update bit default 0,is_del bit d"
|
| - "efault 0,is_dir bit default 0,server_is_dir bit default 0,server_is_d"
|
| - "el bit default 0,non_unique_name varchar,server_non_unique_name varch"
|
| - "ar(255),unique_server_tag varchar,unique_client_tag varchar,unique_bo"
|
| - "okmark_tag varchar,specifics blob,server_specifics blob,base_server_s"
|
| - "pecifics blob,server_unique_position blob,unique_position blob,attach"
|
| - "ment_metadata blob);"
|
| - "INSERT INTO 'metas' VALUES(1,-1,0,0,0,"
|
| - META_PROTO_TIMES_VALS(1)
|
| - ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X''"
|
| - ",X'',X'',NULL,X'2200',X'2200',NULL);"
|
| - "INSERT INTO 'metas' VALUES(6,694,694,6,0,"
|
| - META_PROTO_TIMES_VALS(6)
|
| - ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The "
|
| - "Internet','The Internet',NULL,NULL,X'6754307476346749735A5734654D6532"
|
| - "73625336557753582F77673D',X'C2881000',X'C2881000',NULL,X'22247FFFFFFF"
|
| - "FFC000006754307476346749735A5734654D653273625336557753582F77673D',X'2"
|
| - "2247FFFFFFFFFC000006754307476346749735A5734654D653273625336557753582F"
|
| - "77673D',NULL);"
|
| - "INSERT INTO 'metas' VALUES(7,663,663,0,0,"
|
| - META_PROTO_TIMES_VALS(7)
|
| - ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome'"
|
| - ",'Google Chrome','google_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'22"
|
| - "00',NULL);"
|
| - "INSERT INTO 'metas' VALUES(8,664,664,0,0,"
|
| - META_PROTO_TIMES_VALS(8)
|
| - ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Book"
|
| - "marks','Bookmarks','google_chrome_bookmarks',NULL,X'',X'C2881000',X'C"
|
| - "2881000',NULL,X'2200',X'2200',NULL);"
|
| - "INSERT INTO 'metas' VALUES(9,665,665,1,0,"
|
| - META_PROTO_TIMES_VALS(9)
|
| - ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Book"
|
| - "mark Bar','Bookmark Bar','bookmark_bar',NULL,X'',X'C2881000',X'C28810"
|
| - "00',NULL,X'2200',X'2200',NULL);"
|
| - "INSERT INTO 'metas' VALUES(10,666,666,2,0,"
|
| - META_PROTO_TIMES_VALS(10)
|
| - ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'Ot"
|
| - "her Bookmarks','Other Bookmarks','other_bookmarks',NULL,X'',X'C288100"
|
| - "0',X'C2881000',NULL,X'2200',X'2200',NULL);"
|
| - "INSERT INTO 'metas' VALUES(11,683,683,8,0,"
|
| - META_PROTO_TIMES_VALS(11)
|
| - ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'Ho"
|
| - "me (The Chromium Projects)','Home (The Chromium Projects)',NULL,NULL,"
|
| - "X'50514C784A456D623579366267644237646A7A2B62314130346E493D',X'C288102"
|
| - "20A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1206414741545741"
|
| - "',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F746"
|
| - "8657212084146414756415346',NULL,X'22247FFFFFFFFFF0000050514C784A456D6"
|
| - "23579366267644237646A7A2B62314130346E493D',X'22247FFFFFFFFFF000005051"
|
| - "4C784A456D623579366267644237646A7A2B62314130346E493D',NULL);"
|
| - "INSERT INTO 'metas' VALUES(12,685,685,9,0,"
|
| - META_PROTO_TIMES_VALS(12)
|
| - ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'Ex"
|
| - "tra Bookmarks','Extra Bookmarks',NULL,NULL,X'7867626A704A646134635A6F"
|
| - "616C376A49513338734B46324837773D',X'C2881000',X'C2881000',NULL,X'2224"
|
| - "80000000000000007867626A704A646134635A6F616C376A49513338734B463248377"
|
| - "73D',X'222480000000000000007867626A704A646134635A6F616C376A4951333873"
|
| - "4B46324837773D',NULL);"
|
| - "INSERT INTO 'metas' VALUES(13,687,687,10,0,"
|
| - META_PROTO_TIMES_VALS(13)
|
| - ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'I"
|
| - "CANN | Internet Corporation for Assigned Names and Numbers','ICANN | "
|
| - "Internet Corporation for Assigned Names and Numbers',NULL,NULL,X'3142"
|
| - "756B572F7741766956504179672B304A614A514B3452384A413D',X'C28810240A156"
|
| - "87474703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',"
|
| - "X'C28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F1207444141464"
|
| - "15346',NULL,X'22247FFFFFFFFFF200003142756B572F7741766956504179672B304"
|
| - "A614A514B3452384A413D',X'22247FFFFFFFFFF200003142756B572F774176695650"
|
| - "4179672B304A614A514B3452384A413D',NULL);"
|
| - "INSERT INTO 'metas' VALUES(14,692,692,11,0,"
|
| - META_PROTO_TIMES_VALS(14)
|
| - ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'T"
|
| - "he WebKit Open Source Project','The WebKit Open Source Project',NULL,"
|
| - "NULL,X'5A5678314E7976364579524D3177494F7236563159552F6E644C553D',X'C2"
|
| - "88101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101"
|
| - "C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259',NULL,X'222"
|
| - "480000000001000005A5678314E7976364579524D3177494F7236563159552F6E644C"
|
| - "553D',X'222480000000001000005A5678314E7976364579524D3177494F723656315"
|
| - "9552F6E644C553D',NULL);"
|
| - "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA"
|
| - "IL,base_version bigint default -1,server_version bigint default 0,loc"
|
| - "al_external_id bigint default 0,transaction_version bigint default 0,"
|
| - "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def"
|
| - "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare"
|
| - "nt_id varchar(255) default 'r',server_parent_id varchar(255) default "
|
| - "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de"
|
| - "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv"
|
| - "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam"
|
| - "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un"
|
| - "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s"
|
| - "erver_specifics blob,server_unique_position blob,unique_position blob"
|
| - ",attachment_metadata blob);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
|
| - "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defau"
|
| - "lt -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-131078,'"
|
| - "9010788312004066376x-6609234393368420856x',NULL,NULL);"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion89Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',89);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, tr"
|
| - "ansaction_version BIGINT default 0, context BLOB);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1,NULL);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0,local_exte"
|
| - "rnal_id bigint default 0,transaction_version bigint default 0,mtime b"
|
| - "igint default 0,server_mtime bigint default 0,ctime bigint default 0,"
|
| - "server_ctime bigint default 0,id varchar(255) default 'r',parent_id v"
|
| - "archar(255) default 'r',server_parent_id varchar(255) default 'r',is_"
|
| - "unsynced bit default 0,is_unapplied_update bit default 0,is_del bit d"
|
| - "efault 0,is_dir bit default 0,server_is_dir bit default 0,server_is_d"
|
| - "el bit default 0,non_unique_name varchar,server_non_unique_name varch"
|
| - "ar(255),unique_server_tag varchar,unique_client_tag varchar,unique_bo"
|
| - "okmark_tag varchar,specifics blob,server_specifics blob,base_server_s"
|
| - "pecifics blob,server_unique_position blob,unique_position blob,attach"
|
| - "ment_metadata blob,server_attachment_metadata blob);"
|
| - "INSERT INTO 'metas' VALUES(1,-1,0,0,0,"
|
| - META_PROTO_TIMES_VALS(1)
|
| - ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',X'',NULL,X'2200'"
|
| - ",X'2200',NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(6,694,694,6,0,"
|
| - META_PROTO_TIMES_VALS(6)
|
| - ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The Internet','The Internet'"
|
| - ",NULL,NULL,X'6754307476346749735A5734654D653273625336557753582F77673D"
|
| - "',X'C2881000',X'C2881000',NULL,X'22247FFFFFFFFFC000006754307476346749"
|
| - "735A5734654D653273625336557753582F77673D',X'22247FFFFFFFFFC0000067543"
|
| - "07476346749735A5734654D653273625336557753582F77673D',NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(7,663,663,0,0,"
|
| - META_PROTO_TIMES_VALS(7)
|
| - ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google"
|
| - "_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'2200',NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(8,664,664,0,0,"
|
| - META_PROTO_TIMES_VALS(8)
|
| - ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Bookmarks','Bookmarks','goog"
|
| - "le_chrome_bookmarks',NULL,X'',X'C2881000',X'C2881000',NULL,X'2200',X'"
|
| - "2200',NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(9,665,665,1,0,"
|
| - META_PROTO_TIMES_VALS(9)
|
| - ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar'"
|
| - ",'bookmark_bar',NULL,X'',X'C2881000',X'C2881000',NULL,X'2200',X'2200'"
|
| - ",NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(10,666,666,2,0,"
|
| - META_PROTO_TIMES_VALS(10)
|
| - ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'Other Bookmarks','Other Boo"
|
| - "kmarks','other_bookmarks',NULL,X'',X'C2881000',X'C2881000',NULL,X'220"
|
| - "0',X'2200',NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(11,683,683,8,0,"
|
| - META_PROTO_TIMES_VALS(11)
|
| - ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'Home (The Chromium Projects"
|
| - ")','Home (The Chromium Projects)',NULL,NULL,X'50514C784A456D623579366"
|
| - "267644237646A7A2B62314130346E493D',X'C28810220A18687474703A2F2F646576"
|
| - "2E6368726F6D69756D2E6F72672F1206414741545741',X'C28810290A1D687474703"
|
| - "A2F2F6465762E6368726F6D69756D2E6F72672F6F7468657212084146414756415346"
|
| - "',NULL,X'22247FFFFFFFFFF0000050514C784A456D623579366267644237646A7A2B"
|
| - "62314130346E493D',X'22247FFFFFFFFFF0000050514C784A456D623579366267644"
|
| - "237646A7A2B62314130346E493D',NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(12,685,685,9,0,"
|
| - META_PROTO_TIMES_VALS(12)
|
| - ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'Extra Bookmarks','Extra Boo"
|
| - "kmarks',NULL,NULL,X'7867626A704A646134635A6F616C376A49513338734B46324"
|
| - "837773D',X'C2881000',X'C2881000',NULL,X'222480000000000000007867626A7"
|
| - "04A646134635A6F616C376A49513338734B46324837773D',X'222480000000000000"
|
| - "007867626A704A646134635A6F616C376A49513338734B46324837773D',NULL,NULL"
|
| - ");"
|
| - "INSERT INTO 'metas' VALUES(13,687,687,10,0,"
|
| - META_PROTO_TIMES_VALS(13)
|
| - ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'ICANN | Internet Corporatio"
|
| - "n for Assigned Names and Numbers','ICANN | Internet Corporation for A"
|
| - "ssigned Names and Numbers',NULL,NULL,X'3142756B572F774176695650417967"
|
| - "2B304A614A514B3452384A413D',X'C28810240A15687474703A2F2F7777772E69636"
|
| - "16E6E2E636F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F"
|
| - "2F7777772E6963616E6E2E636F6D2F120744414146415346',NULL,X'22247FFFFFFF"
|
| - "FFF200003142756B572F7741766956504179672B304A614A514B3452384A413D',X'2"
|
| - "2247FFFFFFFFFF200003142756B572F7741766956504179672B304A614A514B345238"
|
| - "4A413D',NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(14,692,692,11,0,"
|
| - META_PROTO_TIMES_VALS(14)
|
| - ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'The WebKit Open Source Proj"
|
| - "ect','The WebKit Open Source Project',NULL,NULL,X'5A5678314E797636457"
|
| - "9524D3177494F7236563159552F6E644C553D',X'C288101A0A12687474703A2F2F77"
|
| - "65626B69742E6F72672F1204504E4758',X'C288101C0A13687474703A2F2F7765626"
|
| - "B69742E6F72672F781205504E473259',NULL,X'222480000000001000005A5678314"
|
| - "E7976364579524D3177494F7236563159552F6E644C553D',X'222480000000001000"
|
| - "005A5678314E7976364579524D3177494F7236563159552F6E644C553D',NULL,NULL"
|
| - ");"
|
| - "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA"
|
| - "IL,base_version bigint default -1,server_version bigint default 0,loc"
|
| - "al_external_id bigint default 0,transaction_version bigint default 0,"
|
| - "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def"
|
| - "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare"
|
| - "nt_id varchar(255) default 'r',server_parent_id varchar(255) default "
|
| - "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de"
|
| - "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv"
|
| - "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam"
|
| - "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un"
|
| - "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s"
|
| - "erver_specifics blob,server_unique_position blob,unique_position blob"
|
| - ",attachment_metadata blob,server_attachment_metadata blob);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
|
| - "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defau"
|
| - "lt -2, cache_guid TEXT, notification_state BLOB, bag_of_chips BLOB);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-131078,'"
|
| - "9010788312004066376x-6609234393368420856x',NULL,NULL);"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -void MigrationTest::SetUpVersion90Database(sql::Connection* connection) {
|
| - ASSERT_TRUE(connection->is_open());
|
| - ASSERT_TRUE(connection->BeginTransaction());
|
| - ASSERT_TRUE(connection->Execute(
|
| - "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
|
| - "INSERT INTO 'share_version' VALUES('nick@chromium.org',90);"
|
| - "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, tr"
|
| - "ansaction_version BIGINT default 0, context BLOB);"
|
| - "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1,NULL);"
|
| - "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
|
| - "_version bigint default -1,server_version bigint default 0,local_exte"
|
| - "rnal_id bigint default 0,transaction_version bigint default 0,mtime b"
|
| - "igint default 0,server_mtime bigint default 0,ctime bigint default 0,"
|
| - "server_ctime bigint default 0,id varchar(255) default 'r',parent_id v"
|
| - "archar(255) default 'r',server_parent_id varchar(255) default 'r',is_"
|
| - "unsynced bit default 0,is_unapplied_update bit default 0,is_del bit d"
|
| - "efault 0,is_dir bit default 0,server_is_dir bit default 0,server_is_d"
|
| - "el bit default 0,non_unique_name varchar,server_non_unique_name varch"
|
| - "ar(255),unique_server_tag varchar,unique_client_tag varchar,unique_bo"
|
| - "okmark_tag varchar,specifics blob,server_specifics blob,base_server_s"
|
| - "pecifics blob,server_unique_position blob,unique_position blob,attach"
|
| - "ment_metadata blob,server_attachment_metadata blob);"
|
| - "INSERT INTO 'metas' VALUES(1,-1,0,0,0,"
|
| - META_PROTO_TIMES_VALS(1)
|
| - ",'r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',X'',NULL,X'2200'"
|
| - ",X'2200',NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(6,694,694,6,0,"
|
| - META_PROTO_TIMES_VALS(6)
|
| - ",'s_ID_6','s_ID_9','s_ID_9',0,0,0,1,1,0,'The Internet','The Internet'"
|
| - ",NULL,NULL,X'6754307476346749735A5734654D653273625336557753582F77673D"
|
| - "',X'C2881000',X'C2881000',NULL,X'22247FFFFFFFFFC000006754307476346749"
|
| - "735A5734654D653273625336557753582F77673D',X'22247FFFFFFFFFC0000067543"
|
| - "07476346749735A5734654D653273625336557753582F77673D',NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(7,663,663,0,0,"
|
| - META_PROTO_TIMES_VALS(7)
|
| - ",'s_ID_7','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google"
|
| - "_chrome',NULL,X'',NULL,NULL,NULL,X'2200',X'2200',NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(8,664,664,0,0,"
|
| - META_PROTO_TIMES_VALS(8)
|
| - ",'s_ID_8','s_ID_7','s_ID_7',0,0,0,1,1,0,'Bookmarks','Bookmarks','goog"
|
| - "le_chrome_bookmarks',NULL,X'',X'C2881000',X'C2881000',NULL,X'2200',X'"
|
| - "2200',NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(9,665,665,1,0,"
|
| - META_PROTO_TIMES_VALS(9)
|
| - ",'s_ID_9','s_ID_8','s_ID_8',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar'"
|
| - ",'bookmark_bar',NULL,X'',X'C2881000',X'C2881000',NULL,X'2200',X'2200'"
|
| - ",NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(10,666,666,2,0,"
|
| - META_PROTO_TIMES_VALS(10)
|
| - ",'s_ID_10','s_ID_8','s_ID_8',0,0,0,1,1,0,'Other Bookmarks','Other Boo"
|
| - "kmarks','other_bookmarks',NULL,X'',X'C2881000',X'C2881000',NULL,X'220"
|
| - "0',X'2200',NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(11,683,683,8,0,"
|
| - META_PROTO_TIMES_VALS(11)
|
| - ",'s_ID_11','s_ID_6','s_ID_6',0,0,0,0,0,0,'Home (The Chromium Projects"
|
| - ")','Home (The Chromium Projects)',NULL,NULL,X'50514C784A456D623579366"
|
| - "267644237646A7A2B62314130346E493D',X'C28810220A18687474703A2F2F646576"
|
| - "2E6368726F6D69756D2E6F72672F1206414741545741',X'C28810290A1D687474703"
|
| - "A2F2F6465762E6368726F6D69756D2E6F72672F6F7468657212084146414756415346"
|
| - "',NULL,X'22247FFFFFFFFFF0000050514C784A456D623579366267644237646A7A2B"
|
| - "62314130346E493D',X'22247FFFFFFFFFF0000050514C784A456D623579366267644"
|
| - "237646A7A2B62314130346E493D',NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(12,685,685,9,0,"
|
| - META_PROTO_TIMES_VALS(12)
|
| - ",'s_ID_12','s_ID_6','s_ID_6',0,0,0,1,1,0,'Extra Bookmarks','Extra Boo"
|
| - "kmarks',NULL,NULL,X'7867626A704A646134635A6F616C376A49513338734B46324"
|
| - "837773D',X'C2881000',X'C2881000',NULL,X'222480000000000000007867626A7"
|
| - "04A646134635A6F616C376A49513338734B46324837773D',X'222480000000000000"
|
| - "007867626A704A646134635A6F616C376A49513338734B46324837773D',NULL,NULL"
|
| - ");"
|
| - "INSERT INTO 'metas' VALUES(13,687,687,10,0,"
|
| - META_PROTO_TIMES_VALS(13)
|
| - ",'s_ID_13','s_ID_6','s_ID_6',0,0,0,0,0,0,'ICANN | Internet Corporatio"
|
| - "n for Assigned Names and Numbers','ICANN | Internet Corporation for A"
|
| - "ssigned Names and Numbers',NULL,NULL,X'3142756B572F774176695650417967"
|
| - "2B304A614A514B3452384A413D',X'C28810240A15687474703A2F2F7777772E69636"
|
| - "16E6E2E636F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F"
|
| - "2F7777772E6963616E6E2E636F6D2F120744414146415346',NULL,X'22247FFFFFFF"
|
| - "FFF200003142756B572F7741766956504179672B304A614A514B3452384A413D',X'2"
|
| - "2247FFFFFFFFFF200003142756B572F7741766956504179672B304A614A514B345238"
|
| - "4A413D',NULL,NULL);"
|
| - "INSERT INTO 'metas' VALUES(14,692,692,11,0,"
|
| - META_PROTO_TIMES_VALS(14)
|
| - ",'s_ID_14','s_ID_6','s_ID_6',0,0,0,0,0,0,'The WebKit Open Source Proj"
|
| - "ect','The WebKit Open Source Project',NULL,NULL,X'5A5678314E797636457"
|
| - "9524D3177494F7236563159552F6E644C553D',X'C288101A0A12687474703A2F2F77"
|
| - "65626B69742E6F72672F1204504E4758',X'C288101C0A13687474703A2F2F7765626"
|
| - "B69742E6F72672F781205504E473259',NULL,X'222480000000001000005A5678314"
|
| - "E7976364579524D3177494F7236563159552F6E644C553D',X'222480000000001000"
|
| - "005A5678314E7976364579524D3177494F7236563159552F6E644C553D',NULL,NULL"
|
| - ");"
|
| - "CREATE TABLE deleted_metas (metahandle bigint primary key ON CONFLICT FA"
|
| - "IL,base_version bigint default -1,server_version bigint default 0,loc"
|
| - "al_external_id bigint default 0,transaction_version bigint default 0,"
|
| - "mtime bigint default 0,server_mtime bigint default 0,ctime bigint def"
|
| - "ault 0,server_ctime bigint default 0,id varchar(255) default 'r',pare"
|
| - "nt_id varchar(255) default 'r',server_parent_id varchar(255) default "
|
| - "'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is_de"
|
| - "l bit default 0,is_dir bit default 0,server_is_dir bit default 0,serv"
|
| - "er_is_del bit default 0,non_unique_name varchar,server_non_unique_nam"
|
| - "e varchar(255),unique_server_tag varchar,unique_client_tag varchar,un"
|
| - "ique_bookmark_tag varchar,specifics blob,server_specifics blob,base_s"
|
| - "erver_specifics blob,server_unique_position blob,unique_position blob"
|
| - ",attachment_metadata blob,server_attachment_metadata blob);"
|
| - "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
|
| - "y TEXT, cache_guid TEXT, bag_of_chips BLOB);"
|
| - "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
|
| - "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','9010788312004066376x-66092343"
|
| - "93368420856x',NULL);"));
|
| - ASSERT_TRUE(connection->CommitTransaction());
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion67To68) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| -
|
| - SetUpVersion67Database(&connection);
|
| -
|
| - // Columns existing before version 67.
|
| - ASSERT_TRUE(connection.DoesColumnExist("metas", "name"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("metas", "unsanitized_name"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("metas", "server_name"));
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| -
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - ASSERT_TRUE(dbs->MigrateVersion67To68());
|
| - ASSERT_EQ(68, dbs->GetVersion());
|
| - ASSERT_TRUE(dbs->needs_column_refresh());
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion68To69) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion68Database(&connection);
|
| -
|
| - {
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| -
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - ASSERT_TRUE(dbs->MigrateVersion68To69());
|
| - ASSERT_EQ(69, dbs->GetVersion());
|
| - ASSERT_TRUE(dbs->needs_column_refresh());
|
| - }
|
| -
|
| - ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics"));
|
| - sql::Statement s(connection.GetUniqueStatement("SELECT non_unique_name,"
|
| - "is_del, is_dir, id, specifics, server_specifics FROM metas "
|
| - "WHERE metahandle = 2"));
|
| - ASSERT_TRUE(s.Step());
|
| - ASSERT_EQ("Deleted Item", s.ColumnString(0));
|
| - ASSERT_TRUE(s.ColumnBool(1));
|
| - ASSERT_FALSE(s.ColumnBool(2));
|
| - ASSERT_EQ("s_ID_2", s.ColumnString(3));
|
| - sync_pb::EntitySpecifics specifics;
|
| - specifics.ParseFromArray(s.ColumnBlob(4), s.ColumnByteLength(4));
|
| - ASSERT_TRUE(specifics.has_bookmark());
|
| - ASSERT_EQ("http://www.google.com/", specifics.bookmark().url());
|
| - ASSERT_EQ("AASGASGA", specifics.bookmark().favicon());
|
| - specifics.ParseFromArray(s.ColumnBlob(5), s.ColumnByteLength(5));
|
| - ASSERT_TRUE(specifics.has_bookmark());
|
| - ASSERT_EQ("http://www.google.com/2", specifics.bookmark().url());
|
| - ASSERT_EQ("ASADGADGADG", specifics.bookmark().favicon());
|
| - ASSERT_FALSE(s.Step());
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion69To70) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion69Database(&connection);
|
| -
|
| - ASSERT_TRUE(connection.DoesColumnExist("metas", "singleton_tag"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_server_tag"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_client_tag"));
|
| -
|
| - {
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| -
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - ASSERT_TRUE(dbs->MigrateVersion69To70());
|
| - ASSERT_EQ(70, dbs->GetVersion());
|
| - ASSERT_TRUE(dbs->needs_column_refresh());
|
| - }
|
| -
|
| - EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag"));
|
| - EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag"));
|
| - sql::Statement s(connection.GetUniqueStatement("SELECT id"
|
| - " FROM metas WHERE unique_server_tag = 'google_chrome'"));
|
| - ASSERT_TRUE(s.Step());
|
| - EXPECT_EQ("s_ID_7", s.ColumnString(0));
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion70To71) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion70Database(&connection);
|
| -
|
| - ASSERT_TRUE(connection.DoesColumnExist("share_info", "last_sync_timestamp"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("share_info", "initial_sync_ended"));
|
| - ASSERT_FALSE(connection.DoesTableExist("models"));
|
| -
|
| - {
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| -
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - ASSERT_TRUE(dbs->MigrateVersion70To71());
|
| - ASSERT_EQ(71, dbs->GetVersion());
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - }
|
| -
|
| - ASSERT_FALSE(connection.DoesColumnExist("share_info", "last_sync_timestamp"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("share_info", "initial_sync_ended"));
|
| - ASSERT_TRUE(connection.DoesTableExist("models"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("models", "initial_sync_ended"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("models", "last_download_timestamp"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("models", "model_id"));
|
| -
|
| - sql::Statement s(connection.GetUniqueStatement("SELECT model_id, "
|
| - "initial_sync_ended, last_download_timestamp FROM models"));
|
| - ASSERT_TRUE(s.Step());
|
| - std::string model_id = s.ColumnString(0);
|
| - EXPECT_EQ("C2881000", base::HexEncode(model_id.data(), model_id.size()))
|
| - << "Model ID is expected to be the empty BookmarkSpecifics proto.";
|
| - EXPECT_TRUE(s.ColumnBool(1));
|
| - EXPECT_EQ(694, s.ColumnInt64(2));
|
| - ASSERT_FALSE(s.Step());
|
| -}
|
| -
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion71To72) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion71Database(&connection);
|
| -
|
| - ASSERT_TRUE(connection.DoesTableExist("extended_attributes"));
|
| -
|
| - {
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| -
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - ASSERT_TRUE(dbs->MigrateVersion71To72());
|
| - ASSERT_EQ(72, dbs->GetVersion());
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - }
|
| -
|
| - ASSERT_FALSE(connection.DoesTableExist("extended_attributes"));
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion72To73) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion72Database(&connection);
|
| -
|
| - ASSERT_FALSE(connection.DoesColumnExist("share_info", "notification_state"));
|
| -
|
| - {
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| -
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - ASSERT_TRUE(dbs->MigrateVersion72To73());
|
| - ASSERT_EQ(73, dbs->GetVersion());
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - }
|
| -
|
| - ASSERT_TRUE(connection.DoesColumnExist("share_info", "notification_state"));
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion73To74) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion73Database(&connection);
|
| -
|
| - ASSERT_FALSE(
|
| - connection.DoesColumnExist("share_info", "autofill_migration_state"));
|
| - ASSERT_FALSE(
|
| - connection.DoesColumnExist("share_info",
|
| - "bookmarks_added_during_autofill_migration"));
|
| - ASSERT_FALSE(
|
| - connection.DoesColumnExist("share_info", "autofill_migration_time"));
|
| - ASSERT_FALSE(
|
| - connection.DoesColumnExist("share_info",
|
| - "autofill_entries_added_during_migration"));
|
| -
|
| - ASSERT_FALSE(
|
| - connection.DoesColumnExist("share_info",
|
| - "autofill_profiles_added_during_migration"));
|
| -
|
| - {
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| -
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - ASSERT_TRUE(dbs->MigrateVersion73To74());
|
| - ASSERT_EQ(74, dbs->GetVersion());
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - }
|
| -
|
| - ASSERT_TRUE(
|
| - connection.DoesColumnExist("share_info", "autofill_migration_state"));
|
| - ASSERT_TRUE(
|
| - connection.DoesColumnExist("share_info",
|
| - "bookmarks_added_during_autofill_migration"));
|
| - ASSERT_TRUE(
|
| - connection.DoesColumnExist("share_info", "autofill_migration_time"));
|
| - ASSERT_TRUE(
|
| - connection.DoesColumnExist("share_info",
|
| - "autofill_entries_added_during_migration"));
|
| -
|
| - ASSERT_TRUE(
|
| - connection.DoesColumnExist("share_info",
|
| - "autofill_profiles_added_during_migration"));
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion74To75) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion74Database(&connection);
|
| -
|
| - ASSERT_FALSE(connection.DoesColumnExist("models", "progress_marker"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("models", "last_download_timestamp"));
|
| -
|
| - {
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| -
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - ASSERT_TRUE(dbs->MigrateVersion74To75());
|
| - ASSERT_EQ(75, dbs->GetVersion());
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - }
|
| -
|
| - ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp"));
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion75To76) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion75Database(&connection);
|
| -
|
| - ASSERT_TRUE(
|
| - connection.DoesColumnExist("share_info", "autofill_migration_state"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("share_info",
|
| - "bookmarks_added_during_autofill_migration"));
|
| - ASSERT_TRUE(
|
| - connection.DoesColumnExist("share_info", "autofill_migration_time"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("share_info",
|
| - "autofill_entries_added_during_migration"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("share_info",
|
| - "autofill_profiles_added_during_migration"));
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - ASSERT_TRUE(dbs->MigrateVersion75To76());
|
| - ASSERT_EQ(76, dbs->GetVersion());
|
| - ASSERT_TRUE(dbs->needs_column_refresh());
|
| - // Cannot actual refresh columns due to version 76 not containing all
|
| - // necessary columns.
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion76To77) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion76Database(&connection);
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| -
|
| - EXPECT_EQ(GetExpectedLegacyMetaProtoTimes(INCLUDE_DELETED_ITEMS),
|
| - GetMetaProtoTimes(&connection));
|
| - // Since the proto times are expected to be in a legacy format, they may not
|
| - // be compatible with ProtoTimeToTime, so we don't call ExpectTimes().
|
| -
|
| - ASSERT_TRUE(dbs->MigrateVersion76To77());
|
| - ASSERT_EQ(77, dbs->GetVersion());
|
| -
|
| - EXPECT_EQ(GetExpectedMetaProtoTimes(INCLUDE_DELETED_ITEMS),
|
| - GetMetaProtoTimes(&connection));
|
| - // Cannot actually load entries due to version 77 not having all required
|
| - // columns.
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion77To78) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion77Database(&connection);
|
| -
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas", "BASE_SERVER_SPECIFICS"));
|
| -
|
| - {
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - ASSERT_TRUE(dbs->MigrateVersion77To78());
|
| - ASSERT_EQ(78, dbs->GetVersion());
|
| -
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - }
|
| -
|
| - ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics"));
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion78To79) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion78Database(&connection);
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - ASSERT_TRUE(dbs->MigrateVersion78To79());
|
| - ASSERT_EQ(79, dbs->GetVersion());
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion79To80) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion79Database(&connection);
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - ASSERT_TRUE(dbs->MigrateVersion79To80());
|
| - ASSERT_EQ(80, dbs->GetVersion());
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| -
|
| - // Ensure the bag_of_chips has been set.
|
| - Directory::MetahandlesMap handles_map;
|
| - JournalIndex delete_journals;
|
| - MetahandleSet metahandles_to_purge;
|
| - STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map);
|
| - Directory::KernelLoadInfo load_info;
|
| -
|
| - ASSERT_TRUE(dbs->Load(&handles_map, &delete_journals, &metahandles_to_purge,
|
| - &load_info));
|
| - // Check that the initial value is the serialization of an empty ChipBag.
|
| - sync_pb::ChipBag chip_bag;
|
| - std::string serialized_chip_bag;
|
| - ASSERT_TRUE(chip_bag.SerializeToString(&serialized_chip_bag));
|
| - EXPECT_EQ(serialized_chip_bag, load_info.kernel_info.bag_of_chips);
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion80To81) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion80Database(&connection);
|
| -
|
| - sql::Statement s(connection.GetUniqueStatement(
|
| - "SELECT metahandle, server_position_in_parent "
|
| - "FROM metas WHERE unique_server_tag = 'google_chrome'"));
|
| - ASSERT_TRUE(s.Step());
|
| - ASSERT_EQ(sql::COLUMN_TYPE_INTEGER, s.ColumnType(1));
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_TRUE(dbs->MigrateVersion80To81());
|
| - ASSERT_EQ(81, dbs->GetVersion());
|
| -
|
| - // Test that ordinal values are preserved correctly.
|
| - sql::Statement new_s(connection.GetUniqueStatement(
|
| - "SELECT metahandle, server_ordinal_in_parent "
|
| - "FROM metas WHERE unique_server_tag = 'google_chrome'"));
|
| - ASSERT_TRUE(new_s.Step());
|
| - ASSERT_EQ(sql::COLUMN_TYPE_BLOB, new_s.ColumnType(1));
|
| -
|
| - std::string expected_ordinal = Int64ToNodeOrdinal(1048576).ToInternalValue();
|
| - std::string actual_ordinal;
|
| - new_s.ColumnBlobAsString(1, &actual_ordinal);
|
| - ASSERT_EQ(expected_ordinal, actual_ordinal);
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion81To82) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion81Database(&connection);
|
| - ASSERT_FALSE(connection.DoesColumnExist("models", "transaction_version"));
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - ASSERT_TRUE(dbs->MigrateVersion81To82());
|
| - ASSERT_EQ(82, dbs->GetVersion());
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| -
|
| - ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version"));
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion82To83) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion82Database(&connection);
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas", "transaction_version"));
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_TRUE(dbs->MigrateVersion82To83());
|
| - ASSERT_EQ(83, dbs->GetVersion());
|
| -
|
| - ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version"));
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion83To84) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion83Database(&connection);
|
| - ASSERT_FALSE(connection.DoesTableExist("deleted_metas"));
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_TRUE(dbs->MigrateVersion83To84());
|
| - ASSERT_EQ(84, dbs->GetVersion());
|
| -
|
| - ASSERT_TRUE(connection.DoesTableExist("deleted_metas"));
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion84To85) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion84Database(&connection);
|
| - ASSERT_TRUE(connection.DoesColumnExist("models", "initial_sync_ended"));
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_TRUE(dbs->MigrateVersion84To85());
|
| - ASSERT_EQ(85, dbs->GetVersion());
|
| - ASSERT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended"));
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion85To86) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion85Database(&connection);
|
| - EXPECT_TRUE(connection.DoesColumnExist("metas", "next_id"));
|
| - EXPECT_TRUE(connection.DoesColumnExist("metas", "prev_id"));
|
| - EXPECT_TRUE(connection.DoesColumnExist("metas", "server_ordinal_in_parent"));
|
| - EXPECT_FALSE(connection.DoesColumnExist("metas", "unique_position"));
|
| - EXPECT_FALSE(connection.DoesColumnExist("metas", "server_unique_position"));
|
| - EXPECT_FALSE(connection.DoesColumnExist("metas", "unique_bookmark_tag"));
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_TRUE(dbs->MigrateVersion85To86());
|
| - EXPECT_EQ(86, dbs->GetVersion());
|
| - EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_position"));
|
| - EXPECT_TRUE(connection.DoesColumnExist("metas", "server_unique_position"));
|
| - EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_bookmark_tag"));
|
| - ASSERT_TRUE(dbs->needs_column_refresh());
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion86To87) {
|
| - sql::Connection connection;
|
| - EXPECT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion86Database(&connection);
|
| - EXPECT_FALSE(connection.DoesColumnExist("metas", "attachment_metadata"));
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - EXPECT_TRUE(dbs->MigrateVersion86To87());
|
| - EXPECT_EQ(87, dbs->GetVersion());
|
| - EXPECT_TRUE(connection.DoesColumnExist("metas", "attachment_metadata"));
|
| - EXPECT_TRUE(dbs->needs_column_refresh());
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion87To88) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion87Database(&connection);
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_TRUE(dbs->MigrateVersion87To88());
|
| - ASSERT_EQ(88, dbs->GetVersion());
|
| - ASSERT_TRUE(connection.DoesColumnExist("models", "context"));
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion88To89) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion88Database(&connection);
|
| - ASSERT_FALSE(
|
| - connection.DoesColumnExist("metas", "server_attachment_metadata"));
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_TRUE(dbs->MigrateVersion88To89());
|
| - ASSERT_EQ(89, dbs->GetVersion());
|
| - EXPECT_TRUE(
|
| - connection.DoesColumnExist("metas", "server_attachment_metadata"));
|
| - EXPECT_TRUE(dbs->needs_column_refresh());
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MigrateVersion89To90) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion89Database(&connection);
|
| - ASSERT_TRUE(connection.DoesColumnExist("share_info", "db_create_version"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("share_info", "db_create_time"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("share_info", "next_id"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("share_info", "notification_state"));
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_TRUE(dbs->MigrateVersion89To90());
|
| - ASSERT_EQ(90, dbs->GetVersion());
|
| - EXPECT_TRUE(dbs->needs_column_refresh());
|
| -
|
| - ASSERT_TRUE(dbs->RefreshColumns());
|
| - EXPECT_FALSE(dbs->needs_column_refresh());
|
| -
|
| - ASSERT_FALSE(connection.DoesColumnExist("share_info", "db_create_version"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("share_info", "db_create_time"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("share_info", "next_id"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("share_info", "notification_state"));
|
| -}
|
| -
|
| -// The purpose of this test case is to make it easier to get a dump of the
|
| -// database so you can implement a SetUpVersionYDatabase method. Here's what
|
| -// you should do:
|
| -//
|
| -// 1. Say you're going from version X to version Y. Write the migration
|
| -// method MigrateVersionXToY.
|
| -// 2. Update the test below to call SetUpVersionXDatabase and then
|
| -// MigrateVersionXToY. You now have a database at version Y. Let's dump it.
|
| -// 3. Set a breakpoint to stop execution just after the connection is
|
| -// destroyed. Examine temp_dir_ to find the version Y database that was
|
| -// created on disk. E.g. (gdb) p temp_dir_.path().value().c_str()
|
| -// 4. Dump the database using the sqlite3 command line tool:
|
| -// > .output foo_dump.sql
|
| -// > .dump
|
| -// 5. Replace the timestamp columns with META_PROTO_TIMES(x) (or
|
| -// LEGACY_META_PROTO_TIMES(x) if before Version 77). Use this dump to write
|
| -// a SetupVersionYDatabase method.
|
| -TEST_F(DirectoryBackingStoreTest, MigrateToLatestAndDump) {
|
| - {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.Open(GetDatabasePath()));
|
| - SetUpVersion89Database(&connection); // Update this.
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_TRUE(dbs->MigrateVersion89To90()); // Update this.
|
| - ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get()));
|
| - EXPECT_EQ(90, dbs->GetVersion()); // Update this.
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - }
|
| - // Set breakpoint here.
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, DetectInvalidPosition) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| - SetUpVersion86Database(&connection);
|
| -
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - ASSERT_EQ(86, dbs->GetVersion());
|
| -
|
| - // Insert row with bad position.
|
| - sql::Statement s(connection.GetUniqueStatement(
|
| - "INSERT INTO metas "
|
| - "( id, metahandle, is_dir, ctime, mtime,"
|
| - " unique_position, server_unique_position) "
|
| - "VALUES('c-invalid', 9999, 1, 0, 0, 'BAD_POS', 'BAD_POS')"));
|
| - ASSERT_TRUE(s.Run());
|
| -
|
| - // Trying to unpack this entry should signal that the DB is corrupted.
|
| - Directory::MetahandlesMap handles_map;
|
| - JournalIndex delete_journals;
|
| - MetahandleSet metahandles_to_purge;
|
| - STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map);
|
| - Directory::KernelLoadInfo kernel_load_info;
|
| - ASSERT_EQ(FAILED_DATABASE_CORRUPT,
|
| - dbs->Load(&handles_map, &delete_journals, &metahandles_to_purge,
|
| - &kernel_load_info));
|
| -}
|
| -
|
| -TEST_P(MigrationTest, ToCurrentVersion) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.Open(GetDatabasePath()));
|
| - // Assume all old versions have an old page size.
|
| - connection.set_page_size(4096);
|
| - switch (GetParam()) {
|
| - case 67:
|
| - SetUpVersion67Database(&connection);
|
| - break;
|
| - case 68:
|
| - SetUpVersion68Database(&connection);
|
| - break;
|
| - case 69:
|
| - SetUpVersion69Database(&connection);
|
| - break;
|
| - case 70:
|
| - SetUpVersion70Database(&connection);
|
| - break;
|
| - case 71:
|
| - SetUpVersion71Database(&connection);
|
| - break;
|
| - case 72:
|
| - SetUpVersion72Database(&connection);
|
| - break;
|
| - case 73:
|
| - SetUpVersion73Database(&connection);
|
| - break;
|
| - case 74:
|
| - SetUpVersion74Database(&connection);
|
| - break;
|
| - case 75:
|
| - SetUpVersion75Database(&connection);
|
| - break;
|
| - case 76:
|
| - SetUpVersion76Database(&connection);
|
| - break;
|
| - case 77:
|
| - SetUpVersion77Database(&connection);
|
| - break;
|
| - case 78:
|
| - SetUpVersion78Database(&connection);
|
| - break;
|
| - case 79:
|
| - SetUpVersion79Database(&connection);
|
| - break;
|
| - case 80:
|
| - SetUpVersion80Database(&connection);
|
| - break;
|
| - case 81:
|
| - SetUpVersion81Database(&connection);
|
| - break;
|
| - case 82:
|
| - SetUpVersion82Database(&connection);
|
| - break;
|
| - case 83:
|
| - SetUpVersion83Database(&connection);
|
| - break;
|
| - case 84:
|
| - SetUpVersion84Database(&connection);
|
| - break;
|
| - case 85:
|
| - SetUpVersion85Database(&connection);
|
| - break;
|
| - case 86:
|
| - SetUpVersion86Database(&connection);
|
| - break;
|
| - case 87:
|
| - SetUpVersion87Database(&connection);
|
| - break;
|
| - case 88:
|
| - SetUpVersion88Database(&connection);
|
| - break;
|
| - case 89:
|
| - SetUpVersion89Database(&connection);
|
| - break;
|
| - case 90:
|
| - SetUpVersion90Database(&connection);
|
| - break;
|
| - default:
|
| - // If you see this error, it may mean that you've increased the
|
| - // database version number but you haven't finished adding unit tests
|
| - // for the database migration code. You need to need to supply a
|
| - // SetUpVersionYDatabase function with a dump of the test database
|
| - // at the new schema. See the MigrateToLatestAndDump test case.
|
| - FAIL() << "Need to supply database dump for version " << GetParam();
|
| - }
|
| - connection.Close();
|
| -
|
| - syncable::Directory::KernelLoadInfo dir_info;
|
| - Directory::MetahandlesMap handles_map;
|
| - JournalIndex delete_journals;
|
| - MetahandleSet metahandles_to_purge;
|
| - STLValueDeleter<Directory::MetahandlesMap> index_deleter(&handles_map);
|
| -
|
| - {
|
| - std::unique_ptr<OnDiskDirectoryBackingStore> dbs(
|
| - new OnDiskDirectoryBackingStore(GetUsername(), GetDatabasePath()));
|
| - ASSERT_EQ(OPENED, dbs->Load(&handles_map, &delete_journals,
|
| - &metahandles_to_purge, &dir_info));
|
| - if (!metahandles_to_purge.empty())
|
| - dbs->DeleteEntries(DirectoryBackingStore::METAS_TABLE,
|
| - metahandles_to_purge);
|
| - ASSERT_FALSE(dbs->needs_column_refresh());
|
| - ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion());
|
| - int pageSize = 0;
|
| - ASSERT_TRUE(dbs->GetDatabasePageSize(&pageSize));
|
| - ASSERT_EQ(kCurrentPageSizeKB, pageSize);
|
| - }
|
| -
|
| - ASSERT_TRUE(connection.Open(GetDatabasePath()));
|
| -
|
| - // Columns deleted in Version 67.
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas", "name"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas", "unsanitized_name"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas", "server_name"));
|
| -
|
| - // Columns added in Version 68.
|
| - ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics"));
|
| -
|
| - // Columns deleted in Version 68.
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas", "is_bookmark_object"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas",
|
| - "server_is_bookmark_object"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_favicon"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_url"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas", "server_bookmark_url"));
|
| -
|
| - // Renamed a column in Version 70
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas", "singleton_tag"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag"));
|
| - ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag"));
|
| -
|
| - // Removed extended attributes in Version 72.
|
| - ASSERT_FALSE(connection.DoesTableExist("extended_attributes"));
|
| -
|
| - // Column replaced in version 75.
|
| - ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("models", "last_download_timestamp"));
|
| -
|
| - // Columns removed in version 76.
|
| - ASSERT_FALSE(
|
| - connection.DoesColumnExist("share_info", "autofill_migration_state"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("share_info",
|
| - "bookmarks_added_during_autofill_migration"));
|
| - ASSERT_FALSE(
|
| - connection.DoesColumnExist("share_info", "autofill_migration_time"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("share_info",
|
| - "autofill_entries_added_during_migration"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("share_info",
|
| - "autofill_profiles_added_during_migration"));
|
| -
|
| - // Column added in version 78.
|
| - ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics"));
|
| -
|
| - // Column added in version 82.
|
| - ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version"));
|
| -
|
| - // Column added in version 83.
|
| - ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version"));
|
| -
|
| - // Table added in version 84.
|
| - ASSERT_TRUE(connection.DoesTableExist("deleted_metas"));
|
| -
|
| - // Column removed in version 85.
|
| - ASSERT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended"));
|
| -
|
| - // Columns removed in version 86.
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas", "next_id"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas", "prev_id"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("metas", "server_ordinal_in_parent"));
|
| -
|
| - // Column added in version 87.
|
| - ASSERT_TRUE(connection.DoesColumnExist("metas", "attachment_metadata"));
|
| -
|
| - // Column added in version 88.
|
| - ASSERT_TRUE(connection.DoesColumnExist("models", "context"));
|
| -
|
| - // Column added in version 89.
|
| - ASSERT_TRUE(
|
| - connection.DoesColumnExist("metas", "server_attachment_metadata"));
|
| -
|
| - // Columns removed in version 90.
|
| - ASSERT_FALSE(connection.DoesColumnExist("share_info", "db_create_version"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("share_info", "db_create_time"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("share_info", "next_id"));
|
| - ASSERT_FALSE(connection.DoesColumnExist("share_info", "notification_state"));
|
| -
|
| - // Check download_progress state (v75 migration)
|
| - ASSERT_EQ(694,
|
| - dir_info.kernel_info.download_progress[BOOKMARKS]
|
| - .timestamp_token_for_migration());
|
| - ASSERT_FALSE(
|
| - dir_info.kernel_info.download_progress[BOOKMARKS]
|
| - .has_token());
|
| - ASSERT_EQ(32904,
|
| - dir_info.kernel_info.download_progress[BOOKMARKS]
|
| - .data_type_id());
|
| - ASSERT_FALSE(
|
| - dir_info.kernel_info.download_progress[THEMES]
|
| - .has_timestamp_token_for_migration());
|
| - ASSERT_TRUE(
|
| - dir_info.kernel_info.download_progress[THEMES]
|
| - .has_token());
|
| - ASSERT_TRUE(
|
| - dir_info.kernel_info.download_progress[THEMES]
|
| - .token().empty());
|
| - ASSERT_EQ(41210,
|
| - dir_info.kernel_info.download_progress[THEMES]
|
| - .data_type_id());
|
| -
|
| - // Check metas
|
| - EXPECT_EQ(GetExpectedMetaProtoTimes(DONT_INCLUDE_DELETED_ITEMS),
|
| - GetMetaProtoTimes(&connection));
|
| - ExpectTimes(handles_map, GetExpectedMetaTimes());
|
| -
|
| - Directory::MetahandlesMap::iterator it = handles_map.find(1);
|
| - ASSERT_TRUE(it != handles_map.end());
|
| - ASSERT_EQ(1, it->second->ref(META_HANDLE));
|
| - EXPECT_TRUE(it->second->ref(ID).IsRoot());
|
| - EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid());
|
| - EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
|
| - EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty());
|
| - EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
|
| - EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
|
| -
|
| - // Items 2, 4, and 5 were deleted.
|
| - it = handles_map.find(2);
|
| - ASSERT_TRUE(it == handles_map.end());
|
| - it = handles_map.find(4);
|
| - ASSERT_TRUE(it == handles_map.end());
|
| - it = handles_map.find(5);
|
| - ASSERT_TRUE(it == handles_map.end());
|
| -
|
| - it = handles_map.find(6);
|
| - ASSERT_EQ(6, it->second->ref(META_HANDLE));
|
| - EXPECT_TRUE(it->second->ref(IS_DIR));
|
| - EXPECT_TRUE(it->second->ref(SERVER_IS_DIR));
|
| - EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url());
|
| - EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_url());
|
| - EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_favicon());
|
| - EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_favicon());
|
| - EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid());
|
| - EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
|
| - EXPECT_EQ(UniquePosition::kSuffixLength,
|
| - it->second->ref(UNIQUE_BOOKMARK_TAG).length());
|
| - EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
|
| - EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
|
| -
|
| - it = handles_map.find(7);
|
| - ASSERT_EQ(7, it->second->ref(META_HANDLE));
|
| - EXPECT_EQ("google_chrome", it->second->ref(UNIQUE_SERVER_TAG));
|
| - EXPECT_FALSE(it->second->ref(SPECIFICS).has_bookmark());
|
| - EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).has_bookmark());
|
| - // Make sure we didn't assign positions to google_chrome.
|
| - EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid());
|
| - EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
|
| - EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty());
|
| - EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
|
| - EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
|
| -
|
| - it = handles_map.find(8);
|
| - ASSERT_EQ(8, it->second->ref(META_HANDLE));
|
| - EXPECT_EQ("google_chrome_bookmarks", it->second->ref(UNIQUE_SERVER_TAG));
|
| - EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark());
|
| - EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark());
|
| - ASSERT_EQ(it->second->ref(ID).value(), "s_ID_8");
|
| - // Make sure we didn't mistake the bookmark root node for a real bookmark.
|
| - EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid());
|
| - EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
|
| - EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty());
|
| - EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
|
| - EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
|
| -
|
| - it = handles_map.find(9);
|
| - ASSERT_EQ(9, it->second->ref(META_HANDLE));
|
| - EXPECT_EQ("bookmark_bar", it->second->ref(UNIQUE_SERVER_TAG));
|
| - EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark());
|
| - EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark());
|
| - // Make sure we didn't assign positions to bookmark_bar.
|
| - EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid());
|
| - EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
|
| - EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty());
|
| - EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
|
| - EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
|
| -
|
| - it = handles_map.find(10);
|
| - ASSERT_EQ(10, it->second->ref(META_HANDLE));
|
| - EXPECT_FALSE(it->second->ref(IS_DEL));
|
| - EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark());
|
| - EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark());
|
| - EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url());
|
| - EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_favicon());
|
| - EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_url());
|
| - EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_favicon());
|
| - EXPECT_EQ("other_bookmarks", it->second->ref(UNIQUE_SERVER_TAG));
|
| - EXPECT_EQ("Other Bookmarks", it->second->ref(NON_UNIQUE_NAME));
|
| - EXPECT_EQ("Other Bookmarks", it->second->ref(SERVER_NON_UNIQUE_NAME));
|
| - ASSERT_EQ(it->second->ref(ID).value(), "s_ID_10");
|
| - EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
|
| - EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
|
| - // Make sure we didn't assign positions to server-created folders, either.
|
| - EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid());
|
| - EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
|
| - EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty());
|
| - EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
|
| - EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
|
| -
|
| - it = handles_map.find(11);
|
| - ASSERT_EQ(11, it->second->ref(META_HANDLE));
|
| - EXPECT_FALSE(it->second->ref(IS_DEL));
|
| - EXPECT_FALSE(it->second->ref(IS_DIR));
|
| - EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark());
|
| - EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark());
|
| - EXPECT_EQ("http://dev.chromium.org/",
|
| - it->second->ref(SPECIFICS).bookmark().url());
|
| - EXPECT_EQ("AGATWA", it->second->ref(SPECIFICS).bookmark().favicon());
|
| - EXPECT_EQ("http://dev.chromium.org/other",
|
| - it->second->ref(SERVER_SPECIFICS).bookmark().url());
|
| - EXPECT_EQ("AFAGVASF", it->second->ref(SERVER_SPECIFICS).bookmark().favicon());
|
| - EXPECT_EQ("", it->second->ref(UNIQUE_SERVER_TAG));
|
| - EXPECT_EQ("Home (The Chromium Projects)", it->second->ref(NON_UNIQUE_NAME));
|
| - EXPECT_EQ("Home (The Chromium Projects)",
|
| - it->second->ref(SERVER_NON_UNIQUE_NAME));
|
| - EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid());
|
| - EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
|
| - EXPECT_EQ(UniquePosition::kSuffixLength,
|
| - it->second->ref(UNIQUE_BOOKMARK_TAG).length());
|
| - EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
|
| -
|
| - it = handles_map.find(12);
|
| - ASSERT_EQ(12, it->second->ref(META_HANDLE));
|
| - EXPECT_FALSE(it->second->ref(IS_DEL));
|
| - EXPECT_TRUE(it->second->ref(IS_DIR));
|
| - EXPECT_EQ("Extra Bookmarks", it->second->ref(NON_UNIQUE_NAME));
|
| - EXPECT_EQ("Extra Bookmarks", it->second->ref(SERVER_NON_UNIQUE_NAME));
|
| - EXPECT_TRUE(it->second->ref(SPECIFICS).has_bookmark());
|
| - EXPECT_TRUE(it->second->ref(SERVER_SPECIFICS).has_bookmark());
|
| - EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_url());
|
| - EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_url());
|
| - EXPECT_FALSE(it->second->ref(SPECIFICS).bookmark().has_favicon());
|
| - EXPECT_FALSE(it->second->ref(SERVER_SPECIFICS).bookmark().has_favicon());
|
| - EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid());
|
| - EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
|
| - EXPECT_EQ(UniquePosition::kSuffixLength,
|
| - it->second->ref(UNIQUE_BOOKMARK_TAG).length());
|
| - EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
|
| - EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
|
| -
|
| - it = handles_map.find(13);
|
| - ASSERT_EQ(13, it->second->ref(META_HANDLE));
|
| - EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid());
|
| - EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
|
| - EXPECT_EQ(UniquePosition::kSuffixLength,
|
| - it->second->ref(UNIQUE_BOOKMARK_TAG).length());
|
| - EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
|
| - EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
|
| -
|
| - it = handles_map.find(14);
|
| - ASSERT_EQ(14, it->second->ref(META_HANDLE));
|
| - EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid());
|
| - EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
|
| - EXPECT_EQ(UniquePosition::kSuffixLength,
|
| - it->second->ref(UNIQUE_BOOKMARK_TAG).length());
|
| - EXPECT_TRUE(it->second->ref(ATTACHMENT_METADATA).IsInitialized());
|
| - EXPECT_TRUE(it->second->ref(SERVER_ATTACHMENT_METADATA).IsInitialized());
|
| -
|
| - ASSERT_EQ(static_cast<size_t>(10), handles_map.size());
|
| -
|
| - // Make sure that the syncable::Directory and the migration code agree on
|
| - // which items should or should not have unique position values. This test
|
| - // may become obsolete if the directory's definition of that function
|
| - // changes, but, until then, this is a useful test.
|
| - for (it = handles_map.begin(); it != handles_map.end(); it++) {
|
| - SCOPED_TRACE(it->second->ref(ID));
|
| - if (it->second->ShouldMaintainPosition()) {
|
| - EXPECT_TRUE(it->second->ref(UNIQUE_POSITION).IsValid());
|
| - EXPECT_TRUE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
|
| - EXPECT_FALSE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty());
|
| - } else {
|
| - EXPECT_FALSE(it->second->ref(UNIQUE_POSITION).IsValid());
|
| - EXPECT_FALSE(it->second->ref(SERVER_UNIQUE_POSITION).IsValid());
|
| - EXPECT_TRUE(it->second->ref(UNIQUE_BOOKMARK_TAG).empty());
|
| - }
|
| - }
|
| -}
|
| -
|
| -INSTANTIATE_TEST_CASE_P(DirectoryBackingStore, MigrationTest,
|
| - testing::Range(67, kCurrentDBVersion + 1));
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, ModelTypeIds) {
|
| - ModelTypeSet protocol_types = ProtocolTypes();
|
| - for (ModelTypeSet::Iterator iter = protocol_types.First(); iter.Good();
|
| - iter.Inc()) {
|
| - std::string model_id =
|
| - TestDirectoryBackingStore::ModelTypeEnumToModelId(iter.Get());
|
| - EXPECT_EQ(iter.Get(),
|
| - TestDirectoryBackingStore::ModelIdToModelTypeEnum(model_id.data(),
|
| - model_id.size()));
|
| - }
|
| -}
|
| -
|
| -namespace {
|
| -
|
| -class OnDiskDirectoryBackingStoreForTest : public OnDiskDirectoryBackingStore {
|
| - public:
|
| - OnDiskDirectoryBackingStoreForTest(const std::string& dir_name,
|
| - const base::FilePath& backing_filepath);
|
| - ~OnDiskDirectoryBackingStoreForTest() override;
|
| - bool DidFailFirstOpenAttempt();
|
| -
|
| - protected:
|
| - void ReportFirstTryOpenFailure() override;
|
| -
|
| - private:
|
| - bool first_open_failed_;
|
| -};
|
| -
|
| -OnDiskDirectoryBackingStoreForTest::OnDiskDirectoryBackingStoreForTest(
|
| - const std::string& dir_name,
|
| - const base::FilePath& backing_filepath) :
|
| - OnDiskDirectoryBackingStore(dir_name, backing_filepath),
|
| - first_open_failed_(false) { }
|
| -
|
| -OnDiskDirectoryBackingStoreForTest::~OnDiskDirectoryBackingStoreForTest() { }
|
| -
|
| -void OnDiskDirectoryBackingStoreForTest::ReportFirstTryOpenFailure() {
|
| - // Do nothing, just like we would in release-mode. In debug mode, we DCHECK.
|
| - first_open_failed_ = true;
|
| -}
|
| -
|
| -bool OnDiskDirectoryBackingStoreForTest::DidFailFirstOpenAttempt() {
|
| - return first_open_failed_;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -// This is a whitebox test intended to exercise the code path where the on-disk
|
| -// directory load code decides to delete the current directory and start fresh.
|
| -//
|
| -// This is considered "minor" corruption because the database recreation is
|
| -// expected to succeed. The alternative, where recreation does not succeed (ie.
|
| -// due to read-only file system), is not tested here.
|
| -TEST_F(DirectoryBackingStoreTest, MinorCorruption) {
|
| - {
|
| - std::unique_ptr<OnDiskDirectoryBackingStore> dbs(
|
| - new OnDiskDirectoryBackingStore(GetUsername(), GetDatabasePath()));
|
| - EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get()));
|
| - }
|
| -
|
| - // Corrupt the root node.
|
| - {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.Open(GetDatabasePath()));
|
| - ASSERT_TRUE(connection.Execute(
|
| - "UPDATE metas SET parent_id='bogus' WHERE id = 'r';"));
|
| - }
|
| -
|
| - {
|
| - std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs(
|
| - new OnDiskDirectoryBackingStoreForTest(GetUsername(),
|
| - GetDatabasePath()));
|
| -
|
| - EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get()));
|
| - EXPECT_TRUE(dbs->DidFailFirstOpenAttempt());
|
| - }
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, MinorCorruptionAndUpgrade) {
|
| - {
|
| - std::unique_ptr<OnDiskDirectoryBackingStore> dbs(
|
| - new OnDiskDirectoryBackingStore(GetUsername(), GetDatabasePath()));
|
| - EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get()));
|
| - }
|
| -
|
| - // Make the node look outdated with an invalid version.
|
| - {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.Open(GetDatabasePath()));
|
| - ASSERT_TRUE(connection.Execute("UPDATE share_version SET data = 0;"));
|
| - ASSERT_TRUE(connection.Execute("PRAGMA page_size=4096;"));
|
| - ASSERT_TRUE(connection.Execute("VACUUM;"));
|
| - }
|
| -
|
| - {
|
| - std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs(
|
| - new OnDiskDirectoryBackingStoreForTest(GetUsername(),
|
| - GetDatabasePath()));
|
| - dbs->SetCatastrophicErrorHandler(base::Bind(&base::DoNothing));
|
| -
|
| - EXPECT_TRUE(LoadAndIgnoreReturnedData(dbs.get()));
|
| - EXPECT_TRUE(dbs->DidFailFirstOpenAttempt());
|
| -
|
| - int page_size = 0;
|
| - ASSERT_TRUE(dbs->GetDatabasePageSize(&page_size));
|
| - EXPECT_EQ(kCurrentPageSizeKB, page_size);
|
| - }
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, DeleteEntries) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.OpenInMemory());
|
| -
|
| - SetUpCurrentDatabaseAndCheckVersion(&connection);
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - Directory::MetahandlesMap handles_map;
|
| - JournalIndex delete_journals;
|
| - MetahandleSet metahandles_to_purge;
|
| - Directory::KernelLoadInfo kernel_load_info;
|
| - STLValueDeleter<Directory::MetahandlesMap> index_deleter(&handles_map);
|
| -
|
| - dbs->Load(&handles_map, &delete_journals, &metahandles_to_purge,
|
| - &kernel_load_info);
|
| - size_t initial_size = handles_map.size();
|
| - ASSERT_LT(0U, initial_size) << "Test requires handles_map to delete.";
|
| - int64_t first_to_die = handles_map.begin()->second->ref(META_HANDLE);
|
| - MetahandleSet to_delete;
|
| - to_delete.insert(first_to_die);
|
| - EXPECT_TRUE(dbs->DeleteEntries(to_delete));
|
| -
|
| - STLDeleteValues(&handles_map);
|
| - metahandles_to_purge.clear();
|
| - dbs->LoadEntries(&handles_map, &metahandles_to_purge);
|
| -
|
| - EXPECT_EQ(initial_size - 1, handles_map.size());
|
| - bool delete_failed = false;
|
| - for (Directory::MetahandlesMap::iterator it = handles_map.begin();
|
| - it != handles_map.end(); ++it) {
|
| - if (it->first == first_to_die) {
|
| - delete_failed = true;
|
| - break;
|
| - }
|
| - }
|
| - EXPECT_FALSE(delete_failed);
|
| -
|
| - to_delete.clear();
|
| - for (Directory::MetahandlesMap::iterator it = handles_map.begin();
|
| - it != handles_map.end(); ++it) {
|
| - to_delete.insert(it->first);
|
| - }
|
| -
|
| - EXPECT_TRUE(dbs->DeleteEntries(to_delete));
|
| -
|
| - STLDeleteValues(&handles_map);
|
| - metahandles_to_purge.clear();
|
| - dbs->LoadEntries(&handles_map, &metahandles_to_purge);
|
| - EXPECT_EQ(0U, handles_map.size());
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, GenerateCacheGUID) {
|
| - const std::string& guid1 = TestDirectoryBackingStore::GenerateCacheGUID();
|
| - const std::string& guid2 = TestDirectoryBackingStore::GenerateCacheGUID();
|
| - EXPECT_EQ(24U, guid1.size());
|
| - EXPECT_EQ(24U, guid2.size());
|
| - // In theory this test can fail, but it won't before the universe
|
| - // dies of heat death.
|
| - EXPECT_NE(guid1, guid2);
|
| -}
|
| -
|
| -TEST_F(DirectoryBackingStoreTest, IncreaseDatabasePageSizeFrom4KTo32K) {
|
| - sql::Connection connection;
|
| - ASSERT_TRUE(connection.Open(GetDatabasePath()));
|
| -
|
| - SetUpCurrentDatabaseAndCheckVersion(&connection);
|
| - std::unique_ptr<TestDirectoryBackingStore> dbs(
|
| - new TestDirectoryBackingStore(GetUsername(), &connection));
|
| - Directory::MetahandlesMap handles_map;
|
| - JournalIndex delete_journals;
|
| - MetahandleSet metahandles_to_purge;
|
| - Directory::KernelLoadInfo kernel_load_info;
|
| - STLValueDeleter<Directory::MetahandlesMap> index_deleter(&handles_map);
|
| -
|
| - DirOpenResult open_result = dbs->Load(
|
| - &handles_map, &delete_journals, &metahandles_to_purge, &kernel_load_info);
|
| - EXPECT_EQ(open_result, OPENED);
|
| -
|
| - // Set up database's page size to 4096
|
| - EXPECT_TRUE(dbs->db_->Execute("PRAGMA page_size=4096;"));
|
| - EXPECT_TRUE(dbs->Vacuum());
|
| -
|
| - // Check if update is successful.
|
| - int pageSize = 0;
|
| - EXPECT_TRUE(dbs->GetDatabasePageSize(&pageSize));
|
| - EXPECT_NE(kCurrentPageSizeKB, pageSize);
|
| - EXPECT_TRUE(dbs->UpdatePageSizeIfNecessary());
|
| - pageSize = 0;
|
| - EXPECT_TRUE(dbs->GetDatabasePageSize(&pageSize));
|
| - EXPECT_EQ(kCurrentPageSizeKB, pageSize);
|
| -}
|
| -
|
| -// See that a catastrophic error handler remains set across instances of the
|
| -// underlying sql:Connection.
|
| -TEST_F(DirectoryBackingStoreTest, CatastrophicErrorHandler_KeptAcrossReset) {
|
| - std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs(
|
| - new OnDiskDirectoryBackingStoreForTest(GetUsername(), GetDatabasePath()));
|
| - // See that by default there is no catastrophic error handler.
|
| - ASSERT_FALSE(dbs->db_->has_error_callback());
|
| - // Set one and see that it was set.
|
| - dbs->SetCatastrophicErrorHandler(
|
| - base::Bind(&CatastrophicErrorHandler, nullptr));
|
| - ASSERT_TRUE(dbs->db_->has_error_callback());
|
| - // Recreate the Connection and see that the handler remains set.
|
| - dbs->ResetAndCreateConnection();
|
| - ASSERT_TRUE(dbs->db_->has_error_callback());
|
| -}
|
| -
|
| -// Verify that database corruption encountered during Load will trigger the
|
| -// catastrohpic error handler.
|
| -TEST_F(DirectoryBackingStoreTest,
|
| - CatastrophicErrorHandler_InvocationDuringLoad) {
|
| - bool was_called = false;
|
| - const base::Closure handler =
|
| - base::Bind(&CatastrophicErrorHandler, &was_called);
|
| - {
|
| - std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs(
|
| - new OnDiskDirectoryBackingStoreForTest(GetUsername(),
|
| - GetDatabasePath()));
|
| - dbs->SetCatastrophicErrorHandler(handler);
|
| - ASSERT_TRUE(dbs->db_->has_error_callback());
|
| - // Load the DB, and save one entry.
|
| - ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get()));
|
| - ASSERT_FALSE(dbs->DidFailFirstOpenAttempt());
|
| - Directory::SaveChangesSnapshot snapshot;
|
| - snapshot.dirty_metas.insert(CreateEntry(2, "").release());
|
| - ASSERT_TRUE(dbs->SaveChanges(snapshot));
|
| - }
|
| -
|
| - base::RunLoop().RunUntilIdle();
|
| - // No catastrophic errors have happened. See that it hasn't be called yet.
|
| - ASSERT_FALSE(was_called);
|
| -
|
| - // Corrupt the DB. Some forms of corruption (like this one) will be detected
|
| - // upon loading the Sync DB.
|
| - ASSERT_TRUE(sql::test::CorruptSizeInHeader(GetDatabasePath()));
|
| -
|
| - {
|
| - std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs(
|
| - new OnDiskDirectoryBackingStoreForTest(GetUsername(),
|
| - GetDatabasePath()));
|
| - dbs->SetCatastrophicErrorHandler(handler);
|
| - ASSERT_TRUE(dbs->db_->has_error_callback());
|
| - ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get()));
|
| -
|
| - // See that the first open failed as expected.
|
| - ASSERT_TRUE(dbs->DidFailFirstOpenAttempt());
|
| - }
|
| -
|
| - // At this point the handler has been posted but not executed.
|
| - ASSERT_FALSE(was_called);
|
| - // Pump the message loop and see that it is executed.
|
| - base::RunLoop().RunUntilIdle();
|
| - ASSERT_TRUE(was_called);
|
| -}
|
| -
|
| -// Verify that database corruption encountered during SaveChanges will trigger
|
| -// the catastrohpic error handler.
|
| -TEST_F(DirectoryBackingStoreTest,
|
| - CatastrophicErrorHandler_InvocationDuringSaveChanges) {
|
| - bool was_called = false;
|
| - const base::Closure handler =
|
| - base::Bind(&CatastrophicErrorHandler, &was_called);
|
| - // Create a DB with many entries.
|
| - std::unique_ptr<OnDiskDirectoryBackingStoreForTest> dbs(
|
| - new OnDiskDirectoryBackingStoreForTest(GetUsername(), GetDatabasePath()));
|
| - dbs->SetCatastrophicErrorHandler(handler);
|
| - ASSERT_TRUE(dbs->db_->has_error_callback());
|
| - ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get()));
|
| - ASSERT_FALSE(dbs->DidFailFirstOpenAttempt());
|
| - Directory::SaveChangesSnapshot snapshot;
|
| - const std::string suffix(400, 'o');
|
| - for (int i = 0; i < corruption_testing::kNumEntriesRequiredForCorruption;
|
| - ++i) {
|
| - std::unique_ptr<EntryKernel> large_entry = CreateEntry(i, suffix);
|
| - snapshot.dirty_metas.insert(large_entry.release());
|
| - }
|
| - ASSERT_TRUE(dbs->SaveChanges(snapshot));
|
| - // Corrupt it.
|
| - ASSERT_TRUE(corruption_testing::CorruptDatabase(GetDatabasePath()));
|
| - // Attempt to save all those entries again. See that it fails (because of the
|
| - // corruption).
|
| - //
|
| - // If this test fails because SaveChanges returned true, it may mean you need
|
| - // to increase the number of entries written to the DB. See also
|
| - // |kNumEntriesRequiredForCorruption|.
|
| - ASSERT_FALSE(dbs->SaveChanges(snapshot));
|
| - // At this point the handler has been posted but not executed.
|
| - ASSERT_FALSE(was_called);
|
| - // Pump the message loop and see that it is executed.
|
| - base::RunLoop().RunUntilIdle();
|
| - ASSERT_TRUE(was_called);
|
| -}
|
| -
|
| -} // namespace syncable
|
| -} // namespace syncer
|
|
|