Bug 616001 - Sync needs to check moz_places.guid and moz_bookmarks.guid if it exists.
authorPhilipp von Weitershausen <philipp@weitershausen.de>
Tue, 14 Dec 2010 15:50:50 -0800
changeset 59278 cddcf1e3cb80cca34e825b944b7589545975a45f
parent 59277 63f426d891b7ae1260c14f9e4226696e64545301
child 59279 193be5701a2ca196cb4339d1440de1308705a6f2
child 59291 ae9c0d48c4d4042858d6a79c900279c0c3626d2c
child 59389 ef51960b24ddd0b79fec1555e7d84764bac1f8af
push id1
push usershaver@mozilla.com
push dateTue, 04 Jan 2011 17:58:04 +0000
bugs616001
Bug 616001 - Sync needs to check moz_places.guid and moz_bookmarks.guid if it exists. Part 3 - Tests for a v11 places database running in Firefox 3.5/3.6
services/sync/tests/unit/head_appinfo.js.in
services/sync/tests/unit/places_v10_from_v11.sqlite
services/sync/tests/unit/test_places_guid_downgrade.js
--- a/services/sync/tests/unit/head_appinfo.js.in
+++ b/services/sync/tests/unit/head_appinfo.js.in
@@ -1,20 +1,27 @@
+var gProfD;
+
 // Load httpd from the add-on test harness or from xpcshell and declare Cc, etc.
 // without a var/const so they don't get hoisted and conflict with load_httpd.
 if (this.do_load_httpd_js == null) {
   Cc = Components.classes;
   Ci = Components.interfaces;
   Cr = Components.results;
   Cu = Components.utils;
   Cu.import("resource://harness/modules/httpd.js");
+
+  let file = Cc["@mozilla.org/file/directory_service;1"]
+               .getService(Ci.nsIProperties)
+               .get("ProfD", Ci.nsIFile);  
+  gProfD = file.clone();
 }
 else {
   do_load_httpd_js();
-  do_get_profile();
+  gProfD = do_get_profile();
 }
 
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 
 try {
   // In the context of xpcshell tests, there won't be a default AppInfo
   Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo);
 }
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e3f9ef4463fbfeb0edcd02a8592520bf2978ea42
GIT binary patch
literal 1081344
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
zZSp30gRGMNMS4~Gw)9QuucVixFH0{-pO-!(eNy_k^ik>eq~DgFmY$S;MS7p~^U}Me
zcS=7dJtDnDlBB9slmux};-!bA`=uFaQu0Zo(x7xf{<Qpu(q2g~9s5CFT>t<800000
z00000000000000000000000000000000000000000000000000000000000000000
z008h`!IsW$wW{k~+}oafY2W?V3SWHsiTUe=r=AUWb*j{}G|bR2O+$!=DH?(_Owuqx
z!#E8A8vHc)Xz<c7MuUe2Hw~jSjL_hsVVH&?8U|@_(r}rEOEg@h;Q|fkX*fs2SsENP
z*lDoQV5PxAgP8^s4MrLaH0Ws<prM}z9Svt_I8DPT8v1DHrQswECulfM!+kUyqv2i}
zj?$o|;Rp?fX*fi~Jv1Do;Q$T$Y1l_Y4-I>1*h9l^8g|jJlZG8MY^Pxx4R_P9m4+=e
zY;K&5UiYi^P1g#}?$_?3FK?tlLqj(W8))dFp_7IV8q}M}*`BYRQq|10f!e7R&&mer
zMcG^*m6ElON!9viS66Cd^>Do=e?|V0T3y<;@;PaC^{etn<YOzpP~W|>x1N&jt7TUA
z)Eui_tB=;Ls~=r;OFt+7sr(*kM0)$m{OWsGPRdW#JEf;qerzSZdO~`oezpGd^>44d
zB&+4h%4+TY)#q2|R{m~vvHt6;w%XTfe_#8btKV69cEv7r$O(C7<pZ^+Yd<c#B#ZP1
z^3M8?){obIvHpkh->&|K^qC*@RRRD200000000000000000000000000000000000
z000000000000000000000000000000000000RPp|pNqbqhItyo+dGe|U7~(AGG$vR
zW~cqLw8B)Vr2O-K<HRUeo1qn)Vah*i=i>&8ablWnVz7i4!ex&ske&$93TrqXwM@mr
zLz(2{6s;(76QbWgEzDGcjv%e52*I()^f;fLOwCNvilvccdC3(CxdTh#30h$YO~-vj
z=kQQw(KJpgGD*%J50{4*MMFA3D-yHSbi%ltGZ`lnep<1ZTF_0KD<O|3Y4y<xUD0I~
zEN0J?aVG4g6+^Ma+)TwjE9#~rW3(c$AjC4kaKJZib$Dn+&gBhMGV|_*a3bzzZFn7X
zBO{}Ug+)tnlva52Ssx$wEL*)^_Xw?+3Km=yU1q$T4+LDaV&0N)23^apdEZQOm{v>}
zW`d^q>X^>%7KUiWU}Pd0^i+)g5qD{jR^-$1AU|VwxPwN6lU8JB@-BX1aJFC_He99^
zw!&1%Z<sTd4NJ3^Xhk^UjgQ-w?7pP4c#&2t4Aqva-pbhYQciz?R*VE4$!X_;Z+S84
zJ<m?m(oDkOownve;mLEfB4jQ(Q=yqqQ53>w*_e*$bLoXabJE9I9kjw7$PP#BR@;Iv
zFl1+E-y5^rB9UT}k5AiJx1PcA<@r=LVX=-_*@PL48=}Q&*V3>!Xkq)2@C=5G^MP1o
zao$WTd<C1wmy8U1mptPpT2W19X2+eDv4p)kZ=@BY6O;MqV0A83noAp$Zv8H?IyIcL
zn5Oi!!d~{7-S((qv1A_`VDqCKUKX96LC17$s-ISj`^qWjR7{9E^Hv=jb-}{fXQxAR
zg4273&BEDYJTYvaw2cHZr&+hdVyzZ%PC1jKv!~cB^cnJz31Mt`EL7{G6=rue7hDvK
zw(Oj)msSirQ!|lb+Boc<O`K%!NE9YVLT2ZLe=>Z6^%An>jI~mYvrq8HX~p#Td}iKT
zjiw8c+<mkn=J8K+-q2KfW;Sz-jfaUJH0a~`x#2?cURq(yhdcq#Ok{3qHg=S?5%AWM
z^VNA*$l%h_irM94ww5o&Qo|A35n3UbN{*?KdBgCmMLf)A5SNZFcr%9lbft8N?RwO=
zI8|_!b?&tL9$HaK#>`VgMZ*M_%O9i_V~aJrr^GMwfl&AW8+Crv<{dV~%L`Whel|eC
z@%UIIIcHqdr}wcv4T*`7;ko=Q?_TU-ZDeXAhU%m*kysep%cj&^(Kk%4u()n6w}+jm
zsgxx+rdz0nxaHlnqC8ia99y#5o$iWf7p<s`SPR3(fG`oWxpvYD{lth{KQd<KBVqjx
zHj}H1({ql(+^jpN-_9<Ns8MGtcteZ6Vt5;CG_~Y1*%AfY*aUYst#J4(<ykQ`u`E^t
zTUn!`(Wo~Bv$mWgwuLQQIp0!XGU<%Cr}LZHWoph1PR>kb`AIRji4C&LnhWG~<>*p%
z`7YM2kSbdTeWvJe#kP^Hg?h7n+URh*Q;``Bt?&pFwK+rHGO8c*ce6DpW_2y)ja9?E
z*|&iWa&0ukhv$~Yh79R0wn^4GKUDSx1ER~*Nh>U|LZ~zmS(+b@3mt62aJ3<y!(<y8
z&Fj=#$;!S#ez!{ghWrKjWAanvPXGV_00000000000000000000000000000000000
z000000000000000000000000000000000000001h|6A<RXjE!-H~GK&RbB7m-uC26
z`!;m$>Rzi<&9llcKK+Ecb601hGOScS^{l#MSI1hVdK0beb-!xwR_{_b-gy_RbauZ+
zUstI%$iJ<Uzb(Hce_sAL`4a#D0000000000000000000000000000000000000000
z00000000000000000000000000000000000;6H}DyVTw4`&C`<;@<Y;OZzmeIM0e-
zeENxQRtzh}r=IO(#Z9!>>weYV!HRdWqO<!o@`6gWL4HXk|Firz^2_qylRp6f00000
z00000000000000000000000000000000000000000000000000000000000000000
z000000R9u&(5Y5;YiLw;v)D<ax`X|#-bCLae^e#^o&1;bN98Zd|KkU}zW@LL00000
z00000000000000000000000000000000000000000000000000000000000000000
z00000Z`hX3ZndiGUEJHAd}*KNTH%XNKhb@?@YJ)NjY6;cReQ&^g0uTI^;X)-n}5JZ
z0RR91000000000000000000000000000000000000000000000000000000000000
z00000000000002+1Gb5VH~)Zl0ssI200000000000000000000000000000000000
z000000000000000000000000000000000000002s2W%_(--EG#Q^}u~ACu?hKIyNe
zUzhTdx&HU{->$FJUG>eYpIZIN)!6FZl|NajuAHj<@7j;oE>*u>eSdYjs;PXaGE=#`
z{OR%|<+ID*Sbp#F#Im~dTP41<xA<JKRy-rVD854+D!f|w)k3&%*V6ATWtI--KbL<v
zZxa5G@NU7A`{&$KxkzqD_K&iq?1{_^nIFlVOaD#!ed$p8uEpP4j4W<V{Xr_3+L8Q3
zvXnfT_(I}G6Snx*<L{5B;%E48@K5n+zMt$o000000000000000000000000000000
z0000000000000000000000000000000Q~=N;K3~_HE~*{>h4yl!y8m1sRADtD%$CM
zj4SdnRoA<?M^uNOXSwsgZ$I~@8#Xwup4IqH&I*NMvZ~EzxGG;bN#EG}(xJ<ZJU7j8
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
zYAx%qoDmP2+8n*PCPzt*O>dncpIntU%MsC5<`z_1rpq^>r`a6tXeu!0);OlcgYvRs
zPq5U|rE~c5PnT=d8!OcQ!iu6sYuRb?ZR(7K{iS7wY`>vvs=TLlQd4KOySJu1+?gH^
z3Upd^&|79~k(!&Q$UT;yEmhUIOT!w2WwLxOx{SOoV|iAi-`sqv-0S|5hQj<Bzr)|D
zJ4L=Lt%lrgM>t>!*OX6^udP16D=WWACpDCIo-ChBTaPc)QXFj7_qI%o2e~;8bI6jF
z5y@-Im>^%M3|~d4x}v+nQdT-X9=HR(iuU$gyVsqg9w(nmW4F&8u5NR<EX8BxPjR$Y
z<ZF9#>Mc#Slj4CboZp<+sxw#GJN0AYLAO`!Z}oQCi(0#yN5_M_%Ail(XzuFNW_6z^
z-(s$oQoXUFTwCbWjgn7J-OyWET2i1Zj%1CLH^>mq(TD2%>RMCy1o`=q+h(f`cjwx4
zUUynNDDAKX8^XPkr_kO#Lf)~~Y>nRETANkXW*#m#j6bNiH<i~oJ3F<h@_u+ric2+i
zdsl8aXIMOty6Rf0i=2(YifVs~{4j8Yd?i*>gWX+fO_pyDov*bZR8?14<nBt6Pp&qi
zuQJzInmS5?iSomszN@O)*I5@(Yb2%ou{D+LIXNvE<%NYE3i+{BU}*D}=xVE)D_sfl
z)4|c9>oItWC7rWeOpE>1NQ`b3qJN3L8{HFqKK3I30000000000000000000000000
z0000000000000000000000000000000094@h9@c}i9POihf}g8rYIF-#el``R}NRi
z;(*8FY_s?jDG9OICAoVNQbol?(d)EWCBK*&o1GYaQivXieiVHvx-a%40000000000
z00000000000000000000000000000000000000000000000030%7!Z@i9POihf}g8
zrYOdW0gK(QjE4b_$Ju7_DdM3^a`z;pDkh3vr^PDy#kBa$q2s)A000000000000000
z00000000000000000000000000000000000000000001vv()&@&~aV_0000000000
z0000000000000000000000000000000000000000000000002TSz7#M=r}I|00000
z00000000000000000000000000000000000000000000000000004mFEG_n(?A|R5
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
z!OOeF$JY+MH}vU-_3J;MvuO0v70W)Jl0G!y)kpfaop4#Au^|1+V&82mSMG~WuO3QR
zG4eV6m<gwE-MBWP@Z2Xp5=7<YiPftfp6lwp_>IxlRhOn;vg3InMWGyZy=Z=8q3xU}
zRxaPVbm`VxCtfHfq}(umXnXjteJfvS$p2*J#`6cpo&AjPm#wDrmk&!HQdcN@Z&jRp
z^~#~d#FH{#F;0jr;moI>5yT{6#2NpwZDZH=v;X_<yyzsw4{6J+Z?$DEZAn}H$ZeVM
zL)udFt+v$BmbB%M+?L`GX-oCD+EPPX(w0AJTgKZcd9Ys?ym_!cx;`3?>IOd;-2Nl~
zLks`_0000000000000000000000000000000000000000000000000000000;2)Zy
zs1Z8?0q-o8DijK3x;znw(`m`HdR(e@OVDBUxHDrf$<r04Zysj%c<fH;Z;wj)j$$64
z{hNm+<|`Kr`>x}%)aq=N%VLu<db}COCaJU;nk<7ROQ$txbJSXcTCG-o?;2U(s*xM3
zq4?f4G~cSBi`7W@-Zj+Us-cP15YuAUL5%JbVqX9N0000000000000000000000000
z0000000000000000000000000000000Q|o-SsX5iqA*?*#U!yQrM|8xLoX;5f^wN<
zabn6!AvJc47(Fb+z5oCK000000000000000000000000000000000000000000000
z0000000000__vd+6h*NqMNEr!2+2{65Zx2q7+n)x79EIIM>Vkk000000000000000
z0000000000000000000000000000000000000000004l0<kS>}V5~QnR{K0&$ro@)
zewDSu;<H!-lCM?@j7wGsTBjo@xh%del@#_me3pR2<BrW7`**d*Cn|*OYNy2-D^eSq
z5Xkd*y5bYZC>27+*H!$EfE4@0F^X@7?UH1Rg_9B#!nt0#M5#Nr1h>VhG8Y;PT1{0I
z%~M5%P}+8^<~J5>ll)en!y8{$YP3U0j%tMHKvWam6RnP}i7tz7jBfm=?<)WR00000
z00000000000000000000000000000000000000000000000000;9tvRg;A_Gmsa~c
zUdb15NPd;I!{W181Cp;+3Z#rzXho+ZD7h@YE|nDaI((LZ!{bhl%^dr8wI(RC#cHR;
z8Y@y8n-IwJc)H>f6HiiP{8tsfBOt{-QTeT~U6O3EP;rXlT+u6+D0Rn{;I=qb=0amZ
ztEsA@IpH)#sn~X`<~J5>ll)en!y8|hm^S#RkTNI;(JP~#==j0ygI5e*FsK>)=kF^3
z0000000000000000000000000000000000000000000000000000000032tkl;MIX
z3NuAfOiD^l)?^tpS-RY8onEia$y5u<1VOpX@{>Paxbmy<tYmq@RC&V4M6+a-+<`ia
z-7hE=@-b7h7JoHnCCSHX<YP}bcC54atN-R+vVA=#bLCg#%tU$4>GGVk#7d7p(BSYp
z0^c}z#*VK?K^T7QL@Jc>Jn86(C_4fH?<|!n6bfawwOKQ*p3I&umEEKA`TZ(~JD_q)
zA-^i)=<rqH^ob?%xOc-74GOth@6l?CW7XQj?UH2kXSzHQhtp|^RduN(cSe1!s@>s}
z+C5=ahh(ui9d5~=8Fo4Uwr*^knjqI5d9-eVMo@}Je>HagSEExL5kF+X(H&5TMw>0Y
z?bwd_(*vILK!?Mh-tKYQBwzfkUy@>x<Vv?W{9dP}SF)vh-0>tm@9SB09*?ul;`@3*
z!&ZGYrpC4|CAv|F9*%wx-5=c--5A{!-4T7_IJP7J0000000000000000000000000
z000000000000000000000000000000007@xvQiYq<m4229GRFbk0&H1$zxh#;?dtL
Rl}AT~;^>%=Add=B{7(zqwQm3b
new file mode 100644
--- /dev/null
+++ b/services/sync/tests/unit/test_places_guid_downgrade.js
@@ -0,0 +1,174 @@
+Cu.import("resource://services-sync/util.js");
+Cu.import("resource://services-sync/engines.js");
+Cu.import("resource://services-sync/engines/history.js");
+Cu.import("resource://services-sync/engines/bookmarks.js");
+
+const kDBName = "places.sqlite";
+const storageSvc = Cc["@mozilla.org/storage/service;1"]
+                     .getService(Ci.mozIStorageService);
+
+const fxuri = Utils.makeURI("http://getfirefox.com/");
+const tburi = Utils.makeURI("http://getthunderbird.com/");
+
+function setPlacesDatabase(aFileName) {
+  removePlacesDatabase();
+  _("Copying over places.sqlite.");
+  let file = do_get_file(aFileName);
+  file.copyTo(gProfD, kDBName);
+}
+
+function removePlacesDatabase() {
+  _("Removing places.sqlite.");
+  let file = gProfD.clone();
+  file.append(kDBName);
+  try {
+    file.remove(false);
+  } catch (ex) {
+    // Windows is awesome. NOT.
+  }
+}
+
+Svc.Obs.add("places-shutdown", function () {
+  do_timeout(0, removePlacesDatabase);
+});
+
+
+// Verify initial database state. Function borrowed from places tests.
+function test_initial_state() {
+  // Mostly sanity checks our starting DB to make sure it's setup as we expect
+  // it to be.
+  let dbFile = gProfD.clone();
+  dbFile.append(kDBName);
+  let db = storageSvc.openUnsharedDatabase(dbFile);
+
+  let stmt = db.createStatement("PRAGMA journal_mode");
+  do_check_true(stmt.executeStep());
+  // WAL journal mode should have been unset this database when it was migrated
+  // down to v10.
+  do_check_neq(stmt.getString(0).toLowerCase(), "wal");
+  stmt.finalize();
+
+  do_check_true(db.indexExists("moz_bookmarks_guid_uniqueindex"));
+  do_check_true(db.indexExists("moz_places_guid_uniqueindex"));
+
+  // There should be a non-zero amount of bookmarks without a guid.
+  stmt = db.createStatement(
+    "SELECT COUNT(1) "
+  + "FROM moz_bookmarks "
+  + "WHERE guid IS NULL "
+  );
+  do_check_true(stmt.executeStep());
+  do_check_neq(stmt.getInt32(0), 0);
+  stmt.finalize();
+
+  // There should be a non-zero amount of places without a guid.
+  stmt = db.createStatement(
+    "SELECT COUNT(1) "
+  + "FROM moz_places "
+  + "WHERE guid IS NULL "
+  );
+  do_check_true(stmt.executeStep());
+  do_check_neq(stmt.getInt32(0), 0);
+  stmt.finalize();
+
+  // Check our schema version to make sure it is actually at 10.
+  do_check_eq(db.schemaVersion, 10);
+
+  db.close();
+}
+
+function test_history_guids() {
+  let engine = new HistoryEngine();
+  let store = engine._store;
+
+  Svc.History.addPageWithDetails(fxuri, "Get Firefox!", Date.now() * 1000);
+  Svc.History.addPageWithDetails(tburi, "Get Thunderbird!", Date.now() * 1000);
+
+  // Hack: flush the places db by adding a random bookmark.
+  let uri = Utils.makeURI("http://mozilla.com/");
+  let fxid = Svc.Bookmark.insertBookmark(
+    Svc.Bookmark.toolbarFolder, uri, Svc.Bookmark.DEFAULT_INDEX, "Mozilla");
+
+  let fxguid = store.GUIDForUri(fxuri, true);
+  let tbguid = store.GUIDForUri(tburi, true);
+  dump("fxguid: " + fxguid + "\n");
+  dump("tbguid: " + tbguid + "\n");
+
+  _("History: Verify GUIDs are added to the guid column.");
+  let stmt = Utils.createStatement(
+    Svc.History.DBConnection,
+    "SELECT id FROM moz_places WHERE guid = :guid");
+
+  stmt.params.guid = fxguid;
+  let result = Utils.queryAsync(stmt, ["id"]);
+  do_check_eq(result.length, 1);
+
+  stmt.params.guid = tbguid;
+  result = Utils.queryAsync(stmt, ["id"]);
+  do_check_eq(result.length, 1);
+
+  _("History: Verify GUIDs weren't added to annotations.");
+  stmt = Utils.createStatement(
+    Svc.History.DBConnection,
+    "SELECT a.content AS guid FROM moz_annos a WHERE guid = :guid");
+
+  stmt.params.guid = fxguid;
+  result = Utils.queryAsync(stmt, ["guid"]);
+  do_check_eq(result.length, 0);
+
+  stmt.params.guid = tbguid;
+  result = Utils.queryAsync(stmt, ["guid"]);
+  do_check_eq(result.length, 0);
+}
+
+function test_bookmark_guids() {
+  let engine = new BookmarksEngine();
+  let store = engine._store;
+
+  let fxid = Svc.Bookmark.insertBookmark(
+    Svc.Bookmark.toolbarFolder, fxuri, Svc.Bookmark.DEFAULT_INDEX,
+    "Get Firefox!");
+  let tbid = Svc.Bookmark.insertBookmark(
+    Svc.Bookmark.toolbarFolder, tburi, Svc.Bookmark.DEFAULT_INDEX,
+    "Get Thunderbird!");
+
+  let fxguid = store.GUIDForId(fxid);
+  let tbguid = store.GUIDForId(tbid);
+
+  _("Bookmarks: Verify GUIDs are added to the guid column.");
+  let stmt = Utils.createStatement(
+    Svc.History.DBConnection,
+    "SELECT id FROM moz_bookmarks WHERE guid = :guid");
+
+  stmt.params.guid = fxguid;
+  let result = Utils.queryAsync(stmt, ["id"]);
+  do_check_eq(result.length, 1);
+  do_check_eq(result[0].id, fxid);
+
+  stmt.params.guid = tbguid;
+  result = Utils.queryAsync(stmt, ["id"]);
+  do_check_eq(result.length, 1);
+  do_check_eq(result[0].id, tbid);
+
+  _("Bookmarks: Verify GUIDs weren't added to annotations.");
+  stmt = Utils.createStatement(
+    Svc.History.DBConnection,
+    "SELECT a.content AS guid FROM moz_items_annos a WHERE guid = :guid");
+
+  stmt.params.guid = fxguid;
+  result = Utils.queryAsync(stmt, ["guid"]);
+  do_check_eq(result.length, 0);
+
+  stmt.params.guid = tbguid;
+  result = Utils.queryAsync(stmt, ["guid"]);
+  do_check_eq(result.length, 0);
+}
+
+function run_test() {
+  setPlacesDatabase("places_v10_from_v11.sqlite");
+
+  _("Verify initial setup: v11 database is available");
+  test_initial_state();
+  test_history_guids();
+  test_bookmark_guids();
+}