From 2640109887655b3aa0cb1a2d06ddb093282d03b7 Mon Sep 17 00:00:00 2001 From: "Thiago Marcos P. Santos" Date: Mon, 21 Aug 2017 17:58:36 +0300 Subject: [PATCH] [tests] Enforce the schema downgrade behavior Which is, delete and recreate the database. --- test/fixtures/offline_database/v999.db | Bin 0 -> 19456 bytes test/storage/offline_database.test.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 test/fixtures/offline_database/v999.db diff --git a/test/fixtures/offline_database/v999.db b/test/fixtures/offline_database/v999.db new file mode 100644 index 0000000000000000000000000000000000000000..97c36cce36192c4e76780d39c03cf8f808d302ee GIT binary patch literal 19456 zcmeHPO>7fK6yDkKPwXU+KXv)5vULcx8z-@o7()<+Ko*qZIN&5zEGVvtH^C+TA$F<| z8VN&H(N+~4s;c5frK%EDt5)p+ap(aRRrK%HLsg`zQW2a$m8z&}d+2);@5UsXkbs5K zWOn7@TrE6cG!V1gw(Yh2;ZESnlZW>*)$Y z{+3@9yX4I2oY7)N8bWJU3eqcyvF`db1LUlt?*V!gwm1=9r z>kX_;=z3~w6dKbB`anB+_9Op1=Kd;9Ku5I!)4@g*m)~H*Xn948q}0wgS~@-vuSSCQ zRodWEZ2~1`n*4Yd)NnF$5wX!HdqIi(;0SO8mWDt%7ROcn;;hr5wR67CRx0>#wzybU zVmhA9rrVpF)$u4SsA>}|P0ibnOx-)>{?+{3wT8j^uQx<0?))D9`*P(M{wtw%;Uhb4 zz2lwu)EfWf-md!UqwrbJXV+t~n?K*Y1R^$_-&|8F z_!p4Y;wh3ikoFu{FyeyJyv6DqNOQuR`0m2ewiT~$&w{iq3rq7CPudok|F14AZENwQ z)q}Jb7MA8Kp0v#{cDELm)>b@ebs#Odu(a0VNpql4kNPiuZg`5b4=m1)m4v`L>LW(8 zx=s8}c+Y^btppg81`NLy7%>CJRtqo=7%+ThV6+%8+DyP$Z@_4!>#5)9>$Z4mU{dfI zRA~|Csp8!Z|89wBP{q5g3P$*@5yxK%oF9!iTk${fmqr}lTHstV;Pm@Pi}35m*Tb*eTs;8&!wnsdACl z679c#rp8V*Mlz$@|0|)#ybl}!j=+)-(Cq&uRpNy?0vv%Afq=ID(+^ifcX%f_0xJ)J zFg#n!`GnJsO!m}>8i6Ocj&_H`?KqYiOU5#e_QQ?aJxv~WqjwwL7|qC++>S&%8JS3> z5{`CcISQV3JKDWXo=IK*-=vE=S01>$M;w7=fPkrn+6eeCg_8tdx;a761*sBrH%17$ z7Q+PHh`j_|hTR19c0WN^UBFjq5<6<}PGUpF-%3hQ^P7nkRo_W0sQb?lGrpO#ftXPH zs|iK*FC*f#{%h+$({beM@ub|x0ak{?dfkU>s9oe@(0@0v-N`5ww^0H_4acEHmg)$PtIoYq2=&)baFbL zoxLfYr%PuAn9r1AG3NQAMmrINlzmD_3GP*TK|WT?IO8#w3}2^H2`I3g!QPJEy&atj z#*!mKk%u(GP{bw*L-=+1ZmkUn0;hgq`+@rTgTQC{fN|h6sj^(!YLyxr$+_x6Omy_} zW%abp2pgSSOnkIPABK@ujzK*SPFfjg3$WT%Vv%|qAA*%uC8Oh|=isV|f4qfUwZ$rJ z+(>eh1=ztx1#IL?43Nq^+9m}tbts;U!yXmMxqB7F)Xd;$Jk6N6WyF$pZ$Mvz83IM= zH*}av;zc0&!4a5+!0|O!$yZNuG(RuT%pPp+1f?pRQ7UFl&T~soPtP;?vNJyyx^kv+ ztE4oNTwS3kUGX9sH6v2X$*eUJt8)u$7KqpRvQr~*iuk{+Yks>$dZfv}T$CXEHwTgF z^oF=c$UT|8c?y1BeE%QV$p{y%WwrkgY|zxe_y3u-%@iA@Ww)8rqwN2a!6yRDfcXzz C!1`+d literal 0 HcmV?d00001 diff --git a/test/storage/offline_database.test.cpp b/test/storage/offline_database.test.cpp index 872310e46..243d0dc43 100644 --- a/test/storage/offline_database.test.cpp +++ b/test/storage/offline_database.test.cpp @@ -698,3 +698,27 @@ TEST(OfflineDatabase, MigrateFromV4Schema) { // Synchronous setting should be FULL (2) after migration to v5. EXPECT_EQ(2, databaseSyncMode("test/fixtures/offline_database/v5.db")); } + +TEST(OfflineDatabase, DowngradeSchema) { + using namespace mbgl; + + // v999.db is a v999 database, it should be deleted + // and recreated with the current schema. + + deleteFile("test/fixtures/offline_database/migrated.db"); + writeFile("test/fixtures/offline_database/migrated.db", util::read_file("test/fixtures/offline_database/v999.db")); + + { + OfflineDatabase db("test/fixtures/offline_database/migrated.db", 0); + } + + EXPECT_EQ(5, databaseUserVersion("test/fixtures/offline_database/migrated.db")); + + EXPECT_EQ((std::vector{ "id", "url_template", "pixel_ratio", "z", "x", "y", + "expires", "modified", "etag", "data", "compressed", + "accessed" }), + databaseTableColumns("test/fixtures/offline_database/migrated.db", "tiles")); + EXPECT_EQ((std::vector{ "id", "url", "kind", "expires", "modified", "etag", "data", + "compressed", "accessed" }), + databaseTableColumns("test/fixtures/offline_database/migrated.db", "resources")); +}