Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(339)

Side by Side Diff: sync/syncable/directory_backing_store_unittest.cc

Issue 11474036: Remove initial_sync_ended bits (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Another rebase Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sync/syncable/directory_backing_store.cc ('k') | sync/syncable/syncable_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "testing/gtest/include/gtest/gtest.h" 5 #include "testing/gtest/include/gtest/gtest.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 void SetUpVersion74Database(sql::Connection* connection); 61 void SetUpVersion74Database(sql::Connection* connection);
62 void SetUpVersion75Database(sql::Connection* connection); 62 void SetUpVersion75Database(sql::Connection* connection);
63 void SetUpVersion76Database(sql::Connection* connection); 63 void SetUpVersion76Database(sql::Connection* connection);
64 void SetUpVersion77Database(sql::Connection* connection); 64 void SetUpVersion77Database(sql::Connection* connection);
65 void SetUpVersion78Database(sql::Connection* connection); 65 void SetUpVersion78Database(sql::Connection* connection);
66 void SetUpVersion79Database(sql::Connection* connection); 66 void SetUpVersion79Database(sql::Connection* connection);
67 void SetUpVersion80Database(sql::Connection* connection); 67 void SetUpVersion80Database(sql::Connection* connection);
68 void SetUpVersion81Database(sql::Connection* connection); 68 void SetUpVersion81Database(sql::Connection* connection);
69 void SetUpVersion82Database(sql::Connection* connection); 69 void SetUpVersion82Database(sql::Connection* connection);
70 void SetUpVersion83Database(sql::Connection* connection); 70 void SetUpVersion83Database(sql::Connection* connection);
71 void SetUpVersion84Database(sql::Connection* connection);
72 void SetUpVersion85Database(sql::Connection* connection);
71 73
72 void SetUpCurrentDatabaseAndCheckVersion(sql::Connection* connection) { 74 void SetUpCurrentDatabaseAndCheckVersion(sql::Connection* connection) {
73 SetUpVersion77Database(connection); // Prepopulates data. 75 SetUpVersion85Database(connection); // Prepopulates data.
74 scoped_ptr<TestDirectoryBackingStore> dbs( 76 scoped_ptr<TestDirectoryBackingStore> dbs(
75 new TestDirectoryBackingStore(GetUsername(), connection)); 77 new TestDirectoryBackingStore(GetUsername(), connection));
76 78
77 ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get())); 79 ASSERT_TRUE(LoadAndIgnoreReturnedData(dbs.get()));
78 ASSERT_FALSE(dbs->needs_column_refresh_); 80 ASSERT_FALSE(dbs->needs_column_refresh_);
79 ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); 81 ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion());
80 } 82 }
81 83
82 private: 84 private:
83 base::ScopedTempDir temp_dir_; 85 base::ScopedTempDir temp_dir_;
(...skipping 1877 matching lines...) Expand 10 before | Expand all | Expand 10 after
1961 s.Reset(true); 1963 s.Reset(true);
1962 } 1964 }
1963 ASSERT_TRUE(connection->CommitTransaction()); 1965 ASSERT_TRUE(connection->CommitTransaction());
1964 } 1966 }
1965 1967
1966 void MigrationTest::SetUpVersion82Database(sql::Connection* connection) { 1968 void MigrationTest::SetUpVersion82Database(sql::Connection* connection) {
1967 ASSERT_TRUE(connection->is_open()); 1969 ASSERT_TRUE(connection->is_open());
1968 ASSERT_TRUE(connection->BeginTransaction()); 1970 ASSERT_TRUE(connection->BeginTransaction());
1969 ASSERT_TRUE(connection->Execute( 1971 ASSERT_TRUE(connection->Execute(
1970 "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 1972 "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
1971 "INSERT INTO 'share_version' VALUES('nick@chromium.org',81);" 1973 "INSERT INTO 'share_version' VALUES('nick@chromium.org',82);"
1972 "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 1974 "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in"
1973 "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT " 1975 "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT "
1974 "default 0);" 1976 "default 0);"
1975 "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);" 1977 "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);"
1976 "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 1978 "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
1977 "_version bigint default -1,server_version bigint default 0, " 1979 "_version bigint default -1,server_version bigint default 0, "
1978 "local_external_id bigint default 0" 1980 "local_external_id bigint default 0"
1979 ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 1981 ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
1980 "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 1982 "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
1981 "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 1983 "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
2067 s.Reset(true); 2069 s.Reset(true);
2068 } 2070 }
2069 ASSERT_TRUE(connection->CommitTransaction()); 2071 ASSERT_TRUE(connection->CommitTransaction());
2070 } 2072 }
2071 2073
2072 void MigrationTest::SetUpVersion83Database(sql::Connection* connection) { 2074 void MigrationTest::SetUpVersion83Database(sql::Connection* connection) {
2073 ASSERT_TRUE(connection->is_open()); 2075 ASSERT_TRUE(connection->is_open());
2074 ASSERT_TRUE(connection->BeginTransaction()); 2076 ASSERT_TRUE(connection->BeginTransaction());
2075 ASSERT_TRUE(connection->Execute( 2077 ASSERT_TRUE(connection->Execute(
2076 "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 2078 "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
2077 "INSERT INTO 'share_version' VALUES('nick@chromium.org',81);" 2079 "INSERT INTO 'share_version' VALUES('nick@chromium.org',83);"
2078 "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in" 2080 "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in"
2079 "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT " 2081 "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT "
2080 "default 0);" 2082 "default 0);"
2081 "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);" 2083 "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);"
2082 "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base" 2084 "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
2083 "_version bigint default -1,server_version bigint default 0, " 2085 "_version bigint default -1,server_version bigint default 0, "
2084 "local_external_id bigint default 0" 2086 "local_external_id bigint default 0"
2085 ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d" 2087 ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
2086 "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p" 2088 "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
2087 "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa" 2089 "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
2088 "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul" 2090 "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
2089 "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is" 2091 "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
2090 "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0," 2092 "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
2091 "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu" 2093 "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
2092 "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc" 2094 "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
2093 "har,specifics blob,server_specifics blob, base_server_specifics BLOB" 2095 "har,specifics blob,server_specifics blob, base_server_specifics BLOB"
2096 ", server_ordinal_in_parent blob, transaction_version bigint default "
2097 "0);"
2098 "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
2099 "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa"
2100 "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips "
2101 "blob);"
2102 "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
2103 "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,"
2104 "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);"));
2105
2106 const char* insert_stmts[V80_ROW_COUNT] = {
2107 "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','"
2108 "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);",
2109 "INSERT INTO 'metas' VALUES(2,669,669,4,"
2110 META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_"
2111 "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1"
2112 "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X"
2113 "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534"
2114 "14447414447414447',NULL,?,0);",
2115 "INSERT INTO 'metas' VALUES(4,681,681,3,"
2116 META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_"
2117 "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL"
2118 ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6"
2119 "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687"
2120 "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656"
2121 "E2F77656C636F6D652E68746D6C1200',NULL,?,0);",
2122 "INSERT INTO 'metas' VALUES(5,677,677,7,"
2123 META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_"
2124 "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2"
2125 "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1"
2126 "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N"
2127 "ULL,?,0);",
2128 "INSERT INTO 'metas' VALUES(6,694,694,6,"
2129 META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1"
2130 ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'"
2131 ",NULL,?,0);",
2132 "INSERT INTO 'metas' VALUES(7,663,663,0,"
2133 META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog"
2134 "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);"
2135 "",
2136 "INSERT INTO 'metas' VALUES(8,664,664,0,"
2137 META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1"
2138 ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810"
2139 "00',X'C2881000',NULL,?,0);",
2140 "INSERT INTO 'metas' VALUES(9,665,665,1,"
2141 META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0"
2142 ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881"
2143 "000',X'C2881000',NULL,?,0);",
2144 "INSERT INTO 'metas' VALUES(10,666,666,2,"
2145 META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',"
2146 "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU"
2147 "LL,X'C2881000',X'C2881000',NULL,?,0);",
2148 "INSERT INTO 'metas' VALUES(11,683,683,8,"
2149 META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'"
2150 ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj"
2151 "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756"
2152 "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636"
2153 "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);",
2154 "INSERT INTO 'metas' VALUES(12,685,685,9,"
2155 META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_"
2156 "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C"
2157 "2881000',X'C2881000',NULL,?,0);",
2158 "INSERT INTO 'metas' VALUES(13,687,687,10,"
2159 META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_"
2160 "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names "
2161 "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu"
2162 "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636"
2163 "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772"
2164 "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);",
2165 "INSERT INTO 'metas' VALUES(14,692,692,11,"
2166 META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'"
2167 ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc"
2168 "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726"
2169 "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7"
2170 "81205504E473259',NULL,?,0);" };
2171
2172 for (int i = 0; i < V80_ROW_COUNT; i++) {
2173 sql::Statement s(connection->GetUniqueStatement(insert_stmts[i]));
2174 std::string ord = V81_Ordinal(i);
2175 s.BindBlob(0, ord.data(), ord.length());
2176 ASSERT_TRUE(s.Run());
2177 s.Reset(true);
2178 }
2179 ASSERT_TRUE(connection->CommitTransaction());
2180 }
2181
2182 void MigrationTest::SetUpVersion84Database(sql::Connection* connection) {
2183 ASSERT_TRUE(connection->is_open());
2184 ASSERT_TRUE(connection->BeginTransaction());
2185 ASSERT_TRUE(connection->Execute(
2186 "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
2187 "INSERT INTO 'share_version' VALUES('nick@chromium.org',84);"
2188 "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, in"
2189 "itial_sync_ended BOOLEAN default 0, transaction_version BIGINT "
2190 "default 0);"
2191 "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605',1, 1);"
2192 "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
2193 "_version bigint default -1,server_version bigint default 0, "
2194 "local_external_id bigint default 0"
2195 ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
2196 "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
2197 "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
2198 "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
2199 "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
2200 "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
2201 "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
2202 "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
2203 "har,specifics blob,server_specifics blob, base_server_specifics BLOB"
2204 ", server_ordinal_in_parent blob, transaction_version bigint default "
2205 "0);"
2206 "CREATE TABLE 'deleted_metas'"
2207 "(metahandle bigint primary key ON CONFLICT FAIL,base"
2208 "_version bigint default -1,server_version bigint default 0, "
2209 "local_external_id bigint default 0"
2210 ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
2211 "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
2212 "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
2213 "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
2214 "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
2215 "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
2216 "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
2217 "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
2218 "har,specifics blob,server_specifics blob, base_server_specifics BLOB"
2094 ", server_ordinal_in_parent blob, transaction_verion bigint default 0" 2219 ", server_ordinal_in_parent blob, transaction_verion bigint default 0"
2095 ");" 2220 ");"
2096 "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda" 2221 "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
2222 "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa"
2223 "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips "
2224 "blob);"
2225 "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
2226 "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,"
2227 "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);"));
2228
2229 const char* insert_stmts[V80_ROW_COUNT] = {
2230 "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','"
2231 "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);",
2232 "INSERT INTO 'metas' VALUES(2,669,669,4,"
2233 META_PROTO_TIMES_VALS(2) ",'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_"
2234 "2',0,0,1,0,0,1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A1"
2235 "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X"
2236 "'C28810260A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534"
2237 "14447414447414447',NULL,?,0);",
2238 "INSERT INTO 'metas' VALUES(4,681,681,3,"
2239 META_PROTO_TIMES_VALS(4) ",'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_"
2240 "4',0,0,1,0,0,1,'Welcome to Chromium','Welcome to Chromium',NULL,NULL"
2241 ",X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6"
2242 "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687"
2243 "474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656"
2244 "E2F77656C636F6D652E68746D6C1200',NULL,?,0);",
2245 "INSERT INTO 'metas' VALUES(5,677,677,7,"
2246 META_PROTO_TIMES_VALS(5) ",'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_"
2247 "5',0,0,1,0,0,1,'Google','Google',NULL,NULL,X'C28810220A16687474703A2"
2248 "F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'C28810220A1"
2249 "6687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464447415347',N"
2250 "ULL,?,0);",
2251 "INSERT INTO 'metas' VALUES(6,694,694,6,"
2252 META_PROTO_TIMES_VALS(6) ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1"
2253 ",1,0,'The Internet','The Internet',NULL,NULL,X'C2881000',X'C2881000'"
2254 ",NULL,?,0);",
2255 "INSERT INTO 'metas' VALUES(7,663,663,0,"
2256 META_PROTO_TIMES_VALS(7) ",'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Goog"
2257 "le Chrome','Google Chrome','google_chrome',NULL,NULL,NULL,NULL,?,0);"
2258 "",
2259 "INSERT INTO 'metas' VALUES(8,664,664,0,"
2260 META_PROTO_TIMES_VALS(8) ",'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1"
2261 ",1,0,'Bookmarks','Bookmarks','google_chrome_bookmarks',NULL,X'C28810"
2262 "00',X'C2881000',NULL,?,0);",
2263 "INSERT INTO 'metas' VALUES(9,665,665,1,"
2264 META_PROTO_TIMES_VALS(9) ",'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0"
2265 ",0,0,1,1,0,'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881"
2266 "000',X'C2881000',NULL,?,0);",
2267 "INSERT INTO 'metas' VALUES(10,666,666,2,"
2268 META_PROTO_TIMES_VALS(10) ",'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',"
2269 "0,0,0,1,1,0,'Other Bookmarks','Other Bookmarks','other_bookmarks',NU"
2270 "LL,X'C2881000',X'C2881000',NULL,?,0);",
2271 "INSERT INTO 'metas' VALUES(11,683,683,8,"
2272 META_PROTO_TIMES_VALS(11) ",'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13'"
2273 ",0,0,0,0,0,0,'Home (The Chromium Projects)','Home (The Chromium Proj"
2274 "ects)',NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756"
2275 "D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636"
2276 "8726F6D69756D2E6F72672F6F7468657212084146414756415346',NULL,?,0);",
2277 "INSERT INTO 'metas' VALUES(12,685,685,9,"
2278 META_PROTO_TIMES_VALS(12) ",'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_"
2279 "ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C"
2280 "2881000',X'C2881000',NULL,?,0);",
2281 "INSERT INTO 'metas' VALUES(13,687,687,10,"
2282 META_PROTO_TIMES_VALS(13) ",'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_"
2283 "ID_12',0,0,0,0,0,0,'ICANN | Internet Corporation for Assigned Names "
2284 "and Numbers','ICANN | Internet Corporation for Assigned Names and Nu"
2285 "mbers',NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636"
2286 "F6D2F120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772"
2287 "E6963616E6E2E636F6D2F120744414146415346',NULL,?,0);",
2288 "INSERT INTO 'metas' VALUES(14,692,692,11,"
2289 META_PROTO_TIMES_VALS(14) ",'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r'"
2290 ",0,0,0,0,0,0,'The WebKit Open Source Project','The WebKit Open Sourc"
2291 "e Project',NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F726"
2292 "72F1204504E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F7"
2293 "81205504E473259',NULL,?,0);" };
2294
2295 for (int i = 0; i < V80_ROW_COUNT; i++) {
2296 sql::Statement s(connection->GetUniqueStatement(insert_stmts[i]));
2297 std::string ord = V81_Ordinal(i);
2298 s.BindBlob(0, ord.data(), ord.length());
2299 ASSERT_TRUE(s.Run());
2300 s.Reset(true);
2301 }
2302 ASSERT_TRUE(connection->CommitTransaction());
2303 }
2304
2305 void MigrationTest::SetUpVersion85Database(sql::Connection* connection) {
2306 ASSERT_TRUE(connection->is_open());
2307 ASSERT_TRUE(connection->BeginTransaction());
2308 ASSERT_TRUE(connection->Execute(
2309 "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);"
2310 "INSERT INTO 'share_version' VALUES('nick@chromium.org',85);"
2311 "CREATE TABLE models (model_id BLOB primary key, progress_marker BLOB, "
2312 "transaction_version BIGINT default 0);"
2313 "INSERT INTO 'models' VALUES(X'C2881000',X'0888810218B605', 1);"
2314 "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,base"
2315 "_version bigint default -1,server_version bigint default 0, "
2316 "local_external_id bigint default 0"
2317 ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
2318 "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
2319 "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
2320 "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
2321 "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
2322 "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
2323 "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
2324 "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
2325 "har,specifics blob,server_specifics blob, base_server_specifics BLOB"
2326 ", server_ordinal_in_parent blob, transaction_version bigint default "
2327 "0);"
2328 "CREATE TABLE 'deleted_metas'"
2329 "(metahandle bigint primary key ON CONFLICT FAIL,base"
2330 "_version bigint default -1,server_version bigint default 0, "
2331 "local_external_id bigint default 0"
2332 ",mtime bigint default 0,server_mtime bigint default 0,ctime bigint d"
2333 "efault 0,server_ctime bigint default 0,id varchar(255) default 'r',p"
2334 "arent_id varchar(255) default 'r',server_parent_id varchar(255) defa"
2335 "ult 'r',prev_id varchar(255) default 'r',next_id varchar(255) defaul"
2336 "t 'r',is_unsynced bit default 0,is_unapplied_update bit default 0,is"
2337 "_del bit default 0,is_dir bit default 0,server_is_dir bit default 0,"
2338 "server_is_del bit default 0,non_unique_name varchar,server_non_uniqu"
2339 "e_name varchar(255),unique_server_tag varchar,unique_client_tag varc"
2340 "har,specifics blob,server_specifics blob, base_server_specifics BLOB"
2341 ", server_ordinal_in_parent blob, transaction_verion bigint default 0"
2342 ");"
2343 "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthda"
2097 "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa" 2344 "y TEXT, db_create_version TEXT, db_create_time INT, next_id INT defa"
2098 "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips " 2345 "ult -2, cache_guid TEXT , notification_state BLOB, bag_of_chips "
2099 "blob);" 2346 "blob);"
2100 "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 2347 "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org',"
2101 "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064," 2348 "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,"
2102 "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);")); 2349 "-131078,'9010788312004066376x-6609234393368420856x',NULL, NULL);"));
2103 2350
2104 const char* insert_stmts[V80_ROW_COUNT] = { 2351 const char* insert_stmts[V80_ROW_COUNT] = {
2105 "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','" 2352 "INSERT INTO 'metas' VALUES(1,-1,0,0," META_PROTO_TIMES_VALS(1) ",'r','"
2106 "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);", 2353 "r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'',NULL,?,0);",
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after
2625 ASSERT_FALSE(connection.DoesTableExist("deleted_metas")); 2872 ASSERT_FALSE(connection.DoesTableExist("deleted_metas"));
2626 2873
2627 scoped_ptr<TestDirectoryBackingStore> dbs( 2874 scoped_ptr<TestDirectoryBackingStore> dbs(
2628 new TestDirectoryBackingStore(GetUsername(), &connection)); 2875 new TestDirectoryBackingStore(GetUsername(), &connection));
2629 ASSERT_TRUE(dbs->MigrateVersion83To84()); 2876 ASSERT_TRUE(dbs->MigrateVersion83To84());
2630 ASSERT_EQ(84, dbs->GetVersion()); 2877 ASSERT_EQ(84, dbs->GetVersion());
2631 2878
2632 ASSERT_TRUE(connection.DoesTableExist("deleted_metas")); 2879 ASSERT_TRUE(connection.DoesTableExist("deleted_metas"));
2633 } 2880 }
2634 2881
2882 TEST_F(DirectoryBackingStoreTest, MigrateVersion84To85) {
2883 sql::Connection connection;
2884 ASSERT_TRUE(connection.OpenInMemory());
2885 SetUpVersion84Database(&connection);
2886 ASSERT_TRUE(connection.DoesColumnExist("models", "initial_sync_ended"));
2887
2888 scoped_ptr<TestDirectoryBackingStore> dbs(
2889 new TestDirectoryBackingStore(GetUsername(), &connection));
2890 ASSERT_TRUE(dbs->MigrateVersion84To85());
2891 ASSERT_EQ(85, dbs->GetVersion());
2892 ASSERT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended"));
2893 }
2894
2635 TEST_P(MigrationTest, ToCurrentVersion) { 2895 TEST_P(MigrationTest, ToCurrentVersion) {
2636 sql::Connection connection; 2896 sql::Connection connection;
2637 ASSERT_TRUE(connection.OpenInMemory()); 2897 ASSERT_TRUE(connection.OpenInMemory());
2638 switch (GetParam()) { 2898 switch (GetParam()) {
2639 case 67: 2899 case 67:
2640 SetUpVersion67Database(&connection); 2900 SetUpVersion67Database(&connection);
2641 break; 2901 break;
2642 case 68: 2902 case 68:
2643 SetUpVersion68Database(&connection); 2903 SetUpVersion68Database(&connection);
2644 break; 2904 break;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2680 break; 2940 break;
2681 case 81: 2941 case 81:
2682 SetUpVersion81Database(&connection); 2942 SetUpVersion81Database(&connection);
2683 break; 2943 break;
2684 case 82: 2944 case 82:
2685 SetUpVersion82Database(&connection); 2945 SetUpVersion82Database(&connection);
2686 break; 2946 break;
2687 case 83: 2947 case 83:
2688 SetUpVersion83Database(&connection); 2948 SetUpVersion83Database(&connection);
2689 break; 2949 break;
2950 case 84:
2951 SetUpVersion84Database(&connection);
2952 break;
2690 default: 2953 default:
2691 // If you see this error, it may mean that you've increased the 2954 // If you see this error, it may mean that you've increased the
2692 // database version number but you haven't finished adding unit tests 2955 // database version number but you haven't finished adding unit tests
2693 // for the database migration code. You need to need to supply a 2956 // for the database migration code. You need to need to supply a
2694 // SetUpVersionXXDatabase function with a dump of the test database 2957 // SetUpVersionXXDatabase function with a dump of the test database
2695 // at the old schema. Here's one way to do that: 2958 // at the old schema. Here's one way to do that:
2696 // 1. Start on a clean tree (with none of your pending schema changes). 2959 // 1. Start on a clean tree (with none of your pending schema changes).
2697 // 2. Set a breakpoint in this function and run the unit test. 2960 // 2. Set a breakpoint in this function and run the unit test.
2698 // 3. Allow this test to run to completion (step out of the call), 2961 // 3. Allow this test to run to completion (step out of the call),
2699 // without allowing ~MigrationTest to execute. 2962 // without allowing ~MigrationTest to execute.
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
2765 3028
2766 // Column added in version 78. 3029 // Column added in version 78.
2767 ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics")); 3030 ASSERT_TRUE(connection.DoesColumnExist("metas", "base_server_specifics"));
2768 3031
2769 // Column added in version 82. 3032 // Column added in version 82.
2770 ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version")); 3033 ASSERT_TRUE(connection.DoesColumnExist("models", "transaction_version"));
2771 3034
2772 // Column added in version 83. 3035 // Column added in version 83.
2773 ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version")); 3036 ASSERT_TRUE(connection.DoesColumnExist("metas", "transaction_version"));
2774 3037
3038 // Table added in version 84.
3039 ASSERT_TRUE(connection.DoesTableExist("deleted_metas"));
3040
3041 // Column removed in version 85.
3042 ASSERT_FALSE(connection.DoesColumnExist("models", "initial_sync_ended"));
3043
2775 // Check download_progress state (v75 migration) 3044 // Check download_progress state (v75 migration)
2776 ASSERT_EQ(694, 3045 ASSERT_EQ(694,
2777 dir_info.kernel_info.download_progress[BOOKMARKS] 3046 dir_info.kernel_info.download_progress[BOOKMARKS]
2778 .timestamp_token_for_migration()); 3047 .timestamp_token_for_migration());
2779 ASSERT_FALSE( 3048 ASSERT_FALSE(
2780 dir_info.kernel_info.download_progress[BOOKMARKS] 3049 dir_info.kernel_info.download_progress[BOOKMARKS]
2781 .has_token()); 3050 .has_token());
2782 ASSERT_EQ(32904, 3051 ASSERT_EQ(32904,
2783 dir_info.kernel_info.download_progress[BOOKMARKS] 3052 dir_info.kernel_info.download_progress[BOOKMARKS]
2784 .data_type_id()); 3053 .data_type_id());
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
3023 const std::string& guid2 = TestDirectoryBackingStore::GenerateCacheGUID(); 3292 const std::string& guid2 = TestDirectoryBackingStore::GenerateCacheGUID();
3024 EXPECT_EQ(24U, guid1.size()); 3293 EXPECT_EQ(24U, guid1.size());
3025 EXPECT_EQ(24U, guid2.size()); 3294 EXPECT_EQ(24U, guid2.size());
3026 // In theory this test can fail, but it won't before the universe 3295 // In theory this test can fail, but it won't before the universe
3027 // dies of heat death. 3296 // dies of heat death.
3028 EXPECT_NE(guid1, guid2); 3297 EXPECT_NE(guid1, guid2);
3029 } 3298 }
3030 3299
3031 } // namespace syncable 3300 } // namespace syncable
3032 } // namespace syncer 3301 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/syncable/directory_backing_store.cc ('k') | sync/syncable/syncable_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698