| Index: chrome/browser/sync/syncable/directory_backing_store_unittest.cc
|
| diff --git a/chrome/browser/sync/syncable/directory_backing_store_unittest.cc b/chrome/browser/sync/syncable/directory_backing_store_unittest.cc
|
| index 0daed9174c0262a804ddc8f5dd4c0785fa13f953..3d6d143519f8658fdb85dd1c172552502cbb1075 100644
|
| --- a/chrome/browser/sync/syncable/directory_backing_store_unittest.cc
|
| +++ b/chrome/browser/sync/syncable/directory_backing_store_unittest.cc
|
| @@ -46,6 +46,7 @@ class MigrationTest : public testing::TestWithParam<int> {
|
| void SetUpVersion68Database();
|
| void SetUpVersion69Database();
|
| void SetUpVersion70Database();
|
| + void SetUpVersion71Database();
|
|
|
| void SetUpCurrentDatabaseAndCheckVersion() {
|
| SetUpVersion70Database(); // Prepopulates data.
|
| @@ -75,7 +76,7 @@ void MigrationTest::SetUpVersion67Database() {
|
| 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,"
|
| + "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,"
|
| @@ -529,6 +530,111 @@ void MigrationTest::SetUpVersion70Database() {
|
| ASSERT_TRUE(connection.CommitTransaction());
|
| }
|
|
|
| +void MigrationTest::SetUpVersion71Database() {
|
| + sql::Connection connection;
|
| + ASSERT_TRUE(connection.Open(GetDatabasePath()));
|
| + 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,129079956640320000,0,"
|
| + "129079956640320000,0,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,128976886618480000,"
|
| + "128976886618480000,128976886618480000,128976886618480000,-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,129002163642690000,"
|
| + "129002163642690000,129002163642690000,129002163642690000,-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,129001555500000000,"
|
| + "129001555500000000,129001555500000000,129001555500000000,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,129053976170000000,"
|
| + "129053976170000000,129053976170000000,129053976170000000,-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,128976864758480000,"
|
| + "128976864758480000,128976864758480000,128976864758480000,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,128976864758480000,"
|
| + "128976864758480000,128976864758480000,128976864758480000,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,128976864758480000,"
|
| + "128976864758480000,128976864758480000,128976864758480000,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,128976864758480000,"
|
| + "128976864758480000,128976864758480000,128976864758480000,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,129079956948440000,"
|
| + "129079956948440000,129079956948440000,129079956948440000,-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,129079957513650000,"
|
| + "129079957513650000,129079957513650000,129079957513650000,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,129079957985300000,"
|
| + "129079957985300000,129079957985300000,129079957985300000,-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,129079958383000000,"
|
| + "129079958383000000,129079958383000000,129079958383000000,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());
|
| +}
|
| TEST_F(DirectoryBackingStoreTest, MigrateVersion67To68) {
|
| SetUpVersion67Database();
|
|
|
| @@ -674,6 +780,31 @@ TEST_F(DirectoryBackingStoreTest, MigrateVersion70To71) {
|
| ASSERT_FALSE(s.Step());
|
| }
|
|
|
| +
|
| +TEST_F(DirectoryBackingStoreTest, MigrateVersion71To72) {
|
| + SetUpVersion71Database();
|
| +
|
| + {
|
| + sql::Connection connection;
|
| + ASSERT_TRUE(connection.Open(GetDatabasePath()));
|
| + ASSERT_TRUE(connection.DoesTableExist("extended_attributes"));
|
| + }
|
| +
|
| + scoped_ptr<DirectoryBackingStore> dbs(
|
| + new DirectoryBackingStore(GetUsername(), GetDatabasePath()));
|
| +
|
| + dbs->BeginLoad();
|
| + ASSERT_FALSE(dbs->needs_column_refresh_);
|
| + ASSERT_TRUE(dbs->MigrateVersion71To72());
|
| + ASSERT_EQ(72, dbs->GetVersion());
|
| + dbs->EndLoad();
|
| + ASSERT_FALSE(dbs->needs_column_refresh_);
|
| +
|
| + sql::Connection connection;
|
| + ASSERT_TRUE(connection.Open(GetDatabasePath()));
|
| + ASSERT_FALSE(connection.DoesTableExist("extended_attributes"));
|
| +}
|
| +
|
| TEST_P(MigrationTest, ToCurrentVersion) {
|
| switch (GetParam()) {
|
| case 67:
|
| @@ -688,6 +819,9 @@ TEST_P(MigrationTest, ToCurrentVersion) {
|
| case 70:
|
| SetUpVersion70Database();
|
| break;
|
| + case 71:
|
| + SetUpVersion71Database();
|
| + 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
|
| @@ -739,6 +873,9 @@ TEST_P(MigrationTest, ToCurrentVersion) {
|
| 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"));
|
| }
|
|
|
| MetahandlesIndex index;
|
|
|