Chromium Code Reviews| 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 |
| index c91326545dd1afa8394b9d23086c91a2cd9e55bc..65836c8bc0aeee89152948a8c8132f81d3d9664d 100644 |
| --- a/sync/syncable/directory_backing_store_unittest.cc |
| +++ b/sync/syncable/directory_backing_store_unittest.cc |
| @@ -74,9 +74,10 @@ class MigrationTest : public testing::TestWithParam<int> { |
| void SetUpVersion84Database(sql::Connection* connection); |
| void SetUpVersion85Database(sql::Connection* connection); |
| void SetUpVersion86Database(sql::Connection* connection); |
| + void SetUpVersion87Database(sql::Connection* connection); |
| void SetUpCurrentDatabaseAndCheckVersion(sql::Connection* connection) { |
| - SetUpVersion86Database(connection); // Prepopulates data. |
| + SetUpVersion87Database(connection); // Prepopulates data. |
| scoped_ptr<TestDirectoryBackingStore> dbs( |
| new TestDirectoryBackingStore(GetUsername(), connection)); |
| ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); |
| @@ -2534,6 +2535,112 @@ void MigrationTest::SetUpVersion86Database(sql::Connection* connection) { |
| ASSERT_TRUE(connection->CommitTransaction()); |
| } |
| +void MigrationTest::SetUpVersion87Database(sql::Connection* connection) { |
|
maniscalco
2014/04/03 16:59:37
I'm afraid this patch is off an older HEAD. I rec
Nicolas Zea
2014/04/03 21:01:11
Done.
|
| + 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," |
| + " 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,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()); |
| +} |
| + |
| TEST_F(DirectoryBackingStoreTest, MigrateVersion67To68) { |
| sql::Connection connection; |
| ASSERT_TRUE(connection.OpenInMemory()); |
| @@ -2998,6 +3105,18 @@ TEST_F(DirectoryBackingStoreTest, MigrateVersion85To86) { |
| ASSERT_TRUE(dbs->needs_column_refresh_); |
| } |
| +TEST_F(DirectoryBackingStoreTest, MigrateVersion86To87) { |
| + sql::Connection connection; |
| + ASSERT_TRUE(connection.OpenInMemory()); |
| + SetUpVersion86Database(&connection); |
| + |
| + scoped_ptr<TestDirectoryBackingStore> dbs( |
| + new TestDirectoryBackingStore(GetUsername(), &connection)); |
| + ASSERT_TRUE(dbs->MigrateVersion86To87()); |
| + ASSERT_EQ(87, dbs->GetVersion()); |
| + ASSERT_TRUE(connection.DoesColumnExist("models", "context")); |
| +} |
| + |
| // 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: |
| @@ -3019,13 +3138,13 @@ TEST_F(DirectoryBackingStoreTest, MigrateToLatestAndDump) { |
| { |
| sql::Connection connection; |
| ASSERT_TRUE(connection.Open(GetDatabasePath())); |
| - SetUpVersion85Database(&connection); // Update this. |
| + SetUpVersion86Database(&connection); // Update this. |
| scoped_ptr<TestDirectoryBackingStore> dbs( |
| new TestDirectoryBackingStore(GetUsername(), &connection)); |
| - ASSERT_TRUE(dbs->MigrateVersion85To86()); // Update this. |
| + ASSERT_TRUE(dbs->MigrateVersion86To87()); // Update this. |
| ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); |
| - EXPECT_EQ(86, dbs->GetVersion()); // Update this. |
| + EXPECT_EQ(87, dbs->GetVersion()); // Update this. |
| ASSERT_FALSE(dbs->needs_column_refresh_); |
| } |
| // Set breakpoint here. |
| @@ -3121,6 +3240,9 @@ TEST_P(MigrationTest, ToCurrentVersion) { |
| case 86: |
| SetUpVersion86Database(&connection); |
| break; |
| + case 87: |
| + SetUpVersion87Database(&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 |