From ddc338c39bdd988b5955f4d69d2d2942e0cdfbf7 Mon Sep 17 00:00:00 2001 From: fbaron Date: Thu, 21 Nov 2024 14:20:48 -0800 Subject: [PATCH] Fixing grid migration test and adding extra tests to cover one grid updates Bug: 364711064 Flag: com.android.launcher3.one_grid_specs Test: GridMigrationTest Change-Id: Ib162b2f802da610a4d2802af4c890425cd657add --- .../GridMigrationTest/result5x5to3x3.db | Bin 77824 -> 77824 bytes .../GridMigrationTest/result5x5to4x7.db | Bin 77824 -> 77824 bytes .../GridMigrationTest/result5x5to5x8.db | Bin 77824 -> 40960 bytes ...5x5to5x8.db => result5x5to5x8WithShift.db} | Bin 77824 -> 77824 bytes .../GridMigrationTest/test_launcher_2.db | Bin 0 -> 40960 bytes .../launcher3/model/GridMigrationTest.kt | 138 +++++++++++------- 6 files changed, 85 insertions(+), 53 deletions(-) rename tests/assets/databases/GridMigrationTest/{flagged_result5x5to5x8.db => result5x5to5x8WithShift.db} (93%) create mode 100644 tests/assets/databases/GridMigrationTest/test_launcher_2.db diff --git a/tests/assets/databases/GridMigrationTest/result5x5to3x3.db b/tests/assets/databases/GridMigrationTest/result5x5to3x3.db index 686056dc21fc4b73e6e21be3ec664c85d1f9ff2a..605025153060737bdec717de106663d643cac0ef 100644 GIT binary patch delta 427 zcmZp8z|!!5WkM2P(PCZ(1_nmn{|vnUxj${*DA3Ql`9JR?MJYa@upkeR5a0$9d|W_+ zn-fTIv2XsZ&uPHN%4Ea9%FLp`?7?)1$!24r7L!~fv#=;o1tTK|2O|(LH2Sl000HA1 z7A7VZi^&V8NKD@#<em$SgFyR-RFc(Hth`!~W?@`1Hn5!O7mqr+Jx}{xkORe_9m& zzcE2zvU18bn8?b5|F;(LPi9NKw)yTt_-iks~` z14lZ;`H6*xxz_V?iZLiQ)iZKVzP{kfDisM#erq)+r496InJ37Id;OZ!O}R-XOvV W@fCX!Fbsurc_(L0&RwR!C;$MgVThan delta 443 zcmZp8z|!!5WkM2P)&*V$1_nmn{|vnUxj${*DA3Ql`9JR?MJWNGupl3h5CAFQ;{g)f z+(3ehbMtR~P6IAxW)B8dW)=lzkBx;^%*>6U!jrv|PxCS}{b%gs|FkIle`A8sWaX4= zVo;Hl2mfy^5)@;QZK`HuWaON_K!ouuBlGq=QAQ=M&HwXR6?j;fGZbTXfq=x2T&s;BSWJx{= zJIlb4#&C9G;X$tTeB5FTicR&5jFWFJxH8?0kBzUj*p7zF?orG@(d diff --git a/tests/assets/databases/GridMigrationTest/result5x5to4x7.db b/tests/assets/databases/GridMigrationTest/result5x5to4x7.db index cd105c5847d8159d4508c48693491ef66d3a8779..e6cd6f092f913dbec038dff07435af8dd041a5b5 100644 GIT binary patch delta 571 zcmYL`Pe>F|9LIm}&kS#RGjGS$om@iM?T~?ic?c=+P#p~l3OYsfXY-JxvnUuF>WF1AFl;PmE?^gF!6@B8__-@kMh`kIUZUf`#(no3 z<1JxkUM8p3-XlG8#^6_O(@h|ozWa&rmpzsPyS?j(8S>}vHyQZ1EjS$p7+!J*c0D*D z92i_Yj#%Re>ZHVrS%hx(Gfd||BXrJptF&0hb~3M#Ztwr{4>Po(*Z=?k delta 586 zcmY*WJ7^S96us{=!<%{Yd2YxU(T%%BL=nsu1`=$HLelu@Od*1ptc6B&@&RQ7$xd2P z<72fEOsuqV8HS*hB7%i5qM)E4nRIDPVIoUli}B6wDte1o+;i?Z=iaxlP8Zhcy-UuO zk2U}xI|V!CTTv+P+EHq66osqW!cmWt5x5mK`bCM2f<|b8jE4RYv8v~~x?xXn6{(VA z<8M7oQ*_7OdNP()FXj}qr~m`WBNOo-=-Hceb!wLf`JjRjLsFDK$av;NRCw^+kj?8n z*8q3OnY5R!cUCX2^FyQ&`fJ2`evo;vHyc9i{!EOpOlrfCJ6q6mh_NgHRL^Qm6?%l_ zaAh)oP4CVYGn7jU?a#mr#h4DrpW|I}t#W){pVnq|G=kz^7CoAgqBC=^dx$cXq84LJ zqNLVmngm9GU4|G&mi)o}Rcf_F+D`ul$-D-YOpm-!IVH9SUOlWk+=F5;uOb=p+wvzR z+1g}tCD4_PA*a8pUVFREm03M%)_H-Jft5r5JTvRU?u^SDPe1=pOt_#4kR_IrX!TXW}^!)XbiwB#Q!AD?zTIJ|fgq1rLj>_mBS6QSF^I?^y`IP`a@ XwK^?2AEw0AhhdVPA#Z9^>cF|*R>YyI diff --git a/tests/assets/databases/GridMigrationTest/result5x5to5x8.db b/tests/assets/databases/GridMigrationTest/result5x5to5x8.db index 4b46969950a43d80d7718abca055b97473db06b3..311a1124972a3a9e6b20e31ca411e25f9b21ce58 100644 GIT binary patch delta 24455 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∋lR6qSH!06A`AY(Y%qXW!tsOjrU_ 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 literal 77824 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 diff --git a/tests/assets/databases/GridMigrationTest/flagged_result5x5to5x8.db b/tests/assets/databases/GridMigrationTest/result5x5to5x8WithShift.db similarity index 93% rename from tests/assets/databases/GridMigrationTest/flagged_result5x5to5x8.db rename to tests/assets/databases/GridMigrationTest/result5x5to5x8WithShift.db index 8bea3ce70857de284cccf8b56073c0d31d09f49b..d75077407ddc31f1f157ca0fefcf4ab28b825c6b 100644 GIT binary patch delta 524 zcmYLFO=uHA6n<}ZW_Odx>~0N>KOvHUZ6k;v{#-<`3euY%1TP+}nq2hYDyct(GzoYU z?J{649$E!2B5gAmj~)f9K`Bx%F+nOG?8$=&3gc`v`oVn6do$nnJzlL(YkfMO9pM0w zHfIPY+Oyy1u=naCVOl6O2(6}rNGL6QvcqMjYyBt7lsu-iECv(Y8N9@`qYC-Qek)J& ziq?Mlty67^w(ONA)sNF2_cj1F{0Z;4m`y$9{V05!dKQulF;cx~2UQ{u@=cz|W= zR%+DPAiA+NLj5Fj4e$Z65jEUS+v2GWF)8bG5E zD~;5W_p9^rU1d8m`L%K>9`kk-)}>e7#%xOH!KN-^Mow0b$nm*#;%KGsVbBhc1}=eB zfK|5~g)jJ0;ANoDn2WR57uE=&gB5Kq-n20xUoU+8yR*&3TXt)?JBE(xm2ye-v-fHA t-(4TZKi{6;K)mBAdK3fZmccErglFB delta 528 zcmZp8z|!!5WrDOI3j+g#Fc8B4^F$qEeijD3qD8zwAx7T+47~q0CkjmD-Ta@IpGk_H z6)4J#Aeez%4iLdTSwldbO&Bb*Sy5p%|0V?%h3zZ?jEn-CSpzn*FfvcxpXj*xM+hG` z-%|!wRu&y*52gmjO$<*b7G9kEAo~;}%jDHLXMtp8?r|XLn0FUQ%IDt@W%m+0wnRrBjiWwO>I2bt@85tV=Svi1!aSjtRi#b%4h`^^W;nUY? zaEmcWgRElYn0%}B9N6uz%EZ~EICHtcW^i%< zm7Oe8J7Ka~{dFdm|C|5YGYTwf5a0nhoQdHK14kOenTdr5Ca0~q2Mwh+3oF@pdDipu zi7_ZP)dQ{JoP2%3Ww0YaQjA=iHr!R+yf0CXYxD2>k3^xY|JIC?SClzzuV7^C;akiy jL4b{sBb|XGePdxP2hVywVYp$_i!>Nvrj@dRQh*Qu|BH{M diff --git a/tests/assets/databases/GridMigrationTest/test_launcher_2.db b/tests/assets/databases/GridMigrationTest/test_launcher_2.db new file mode 100644 index 0000000000000000000000000000000000000000..b538e2659adc451712466d8083fe40b5b2c2670a GIT binary patch literal 40960 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

4U&L< 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 CbE$g( literal 0 HcmV?d00001 diff --git a/tests/src/com/android/launcher3/model/GridMigrationTest.kt b/tests/src/com/android/launcher3/model/GridMigrationTest.kt index 379e98d328..b8ffe74380 100644 --- a/tests/src/com/android/launcher3/model/GridMigrationTest.kt +++ b/tests/src/com/android/launcher3/model/GridMigrationTest.kt @@ -17,6 +17,7 @@ package com.android.launcher3.model import android.platform.test.flag.junit.SetFlagsRule +import android.util.Log import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import androidx.test.platform.app.InstrumentationRegistry @@ -34,7 +35,14 @@ import org.junit.runner.RunWith private val phoneContext = InstrumentationRegistry.getInstrumentation().targetContext -data class EntryData(val x: Int, val y: Int, val spanX: Int, val spanY: Int, val rank: Int) +data class EntryData( + val x: Int, + val y: Int, + val screenId: Int, + val spanX: Int, + val spanY: Int, + val rank: Int, +) /** * Holds the data needed to run a test in GridMigrationTest, usually we would have a src @@ -72,24 +80,16 @@ class GridMigrationData(dbFileName: String?, val gridState: DeviceGridState) { @RunWith(AndroidJUnit4::class) class GridMigrationTest { private val DB_FILE = "test_launcher.db" + // This DB is used for testing the heuristic where we add an extra row at the bottom. + private val DB_FILE_NO_SHIFT = "test_launcher_2.db" @JvmField @Rule val setFlagsRule = SetFlagsRule(SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT) - // Copying the src db for all tests. - @JvmField - @Rule - val fileCopier = - TestToPhoneFileCopier( - src = "databases/GridMigrationTest/$DB_FILE", - dest = "databases/$DB_FILE", - removeOnFinish = true, - ) - @Before fun setup() { - setFlagsRule.setFlags(false, Flags.FLAG_ENABLE_GRID_MIGRATION_FIX) + setFlagsRule.setFlags(true, Flags.FLAG_ONE_GRID_SPECS) } private fun migrate(src: GridMigrationData, dst: GridMigrationData) { @@ -101,7 +101,7 @@ class GridMigrationTest { dst.gridState, dst.dbHelper, src.dbHelper.readableDatabase, - false, + true, ) } else { GridSizeMigrationDBController.migrateGridIfNeeded( @@ -110,7 +110,7 @@ class GridMigrationTest { dst.gridState, dst.dbHelper, src.dbHelper.readableDatabase, - false, + true, ) } } @@ -131,12 +131,18 @@ class GridMigrationTest { } } - private fun compare(dst: GridMigrationData, target: GridMigrationData) { - val sort = compareBy({ it.cellX }, { it.cellY }) - val mapF = { it: DbEntry -> EntryData(it.cellX, it.cellY, it.spanX, it.spanY, it.rank) } + private fun compare(dst: GridMigrationData, target: GridMigrationData, src: GridMigrationData) { + val sort = compareBy({ it.screenId }, { it.cellX }, { it.cellY }) + val mapF = { it: DbEntry -> + EntryData(it.cellX, it.cellY, it.screenId, it.spanX, it.spanY, it.rank) + } val entriesDst = dst.readEntries().sortedWith(sort).map(mapF) val entriesTarget = target.readEntries().sortedWith(sort).map(mapF) - + val entriesSrc = src.readEntries().sortedWith(sort).map(mapF) + Log.i( + TAG, + "entriesSrc: $entriesSrc\n entriesDst: $entriesDst\n entriesTarget: $entriesTarget", + ) assert(entriesDst == entriesTarget) { "The elements on the dst database is not the same as in the target" } @@ -155,9 +161,19 @@ class GridMigrationTest { "Source db and destination db do not contain the same number of elements" } validateDb(dst) - compare(dst, target) + compare(dst, target, src) } + // Copying the src db for all tests. + @JvmField + @Rule + val fileCopier = + TestToPhoneFileCopier( + src = "databases/GridMigrationTest/$DB_FILE", + dest = "databases/$DB_FILE", + removeOnFinish = true, + ) + @JvmField @Rule val result5x5to3x3 = @@ -173,8 +189,8 @@ class GridMigrationTest { src = GridMigrationData(DB_FILE, DeviceGridState(5, 5, 5, TYPE_PHONE, DB_FILE)), dst = GridMigrationData( - null, // in memory db, to download a new db change null for the filename of the - // db name to store it. Do not use existing names. + null, // in memory db, to download a new db change null for + // the filename of the db name to store it. Do not use existing names. DeviceGridState(3, 3, 3, TYPE_PHONE, ""), ), target = @@ -196,14 +212,50 @@ class GridMigrationTest { src = GridMigrationData(DB_FILE, DeviceGridState(5, 5, 5, TYPE_PHONE, DB_FILE)), dst = GridMigrationData( - null, // in memory db, to download a new db change null for the filename of the - // db name to store it. Do not use existing names. + null, // in memory db, to download a new db change null for + // the filename of the db name to store it. Do not use existing names. DeviceGridState(4, 7, 4, TYPE_PHONE, ""), ), target = GridMigrationData("result5x5to4x7.db", DeviceGridState(4, 7, 4, TYPE_PHONE, "")), ) + @JvmField + @Rule + val result5x5to5x8WithShift = + TestToPhoneFileCopier( + src = "databases/GridMigrationTest/result5x5to5x8WithShift.db", + dest = "databases/result5x5to5x8WithShift.db", + removeOnFinish = true, + ) + + @Test + fun `5x5 to 5x8 with cells shifting down`() = + runTest( + src = GridMigrationData(DB_FILE, DeviceGridState(5, 5, 5, TYPE_PHONE, DB_FILE)), + dst = + GridMigrationData( + null, // in memory db, to download a new db change null + // for + // the filename of the db name to store it. Do not use existing names. + DeviceGridState(5, 8, 5, TYPE_PHONE, ""), + ), + target = + GridMigrationData( + "result5x5to5x8WithShift.db", + DeviceGridState(5, 8, 5, TYPE_PHONE, ""), + ), + ) + + @JvmField + @Rule + val fileCopierNoShift = + TestToPhoneFileCopier( + src = "databases/GridMigrationTest/$DB_FILE_NO_SHIFT", + dest = "databases/$DB_FILE_NO_SHIFT", + removeOnFinish = true, + ) + @JvmField @Rule val result5x5to5x8 = @@ -214,44 +266,24 @@ class GridMigrationTest { ) @Test - fun `5x5 to 5x8`() = + fun `5x5 to 5x8 without cell shift`() = runTest( - src = GridMigrationData(DB_FILE, DeviceGridState(5, 5, 5, TYPE_PHONE, DB_FILE)), + src = + GridMigrationData( + DB_FILE_NO_SHIFT, + DeviceGridState(5, 5, 5, TYPE_PHONE, DB_FILE_NO_SHIFT), + ), dst = GridMigrationData( - null, // in memory db, to download a new db change null for the filename of the - // db name to store it. Do not use existing names. + null, // in memory db, to download a new db change null for + // the filename of the db name to store it. Do not use existing names. DeviceGridState(5, 8, 5, TYPE_PHONE, ""), ), target = GridMigrationData("result5x5to5x8.db", DeviceGridState(5, 8, 5, TYPE_PHONE, "")), ) - @JvmField - @Rule - val flaggedResult5x5to5x8 = - TestToPhoneFileCopier( - src = "databases/GridMigrationTest/flagged_result5x5to5x8.db", - dest = "databases/flagged_result5x5to5x8.db", - removeOnFinish = true, - ) - - @Test - fun `flagged 5x5 to 5x8`() { - setFlagsRule.setFlags(true, Flags.FLAG_ENABLE_GRID_MIGRATION_FIX) - runTest( - src = GridMigrationData(DB_FILE, DeviceGridState(5, 5, 5, TYPE_PHONE, DB_FILE)), - dst = - GridMigrationData( - null, // in memory db, to download a new db change null for the filename of the - // db name to store it. Do not use existing names. - DeviceGridState(5, 8, 5, TYPE_PHONE, ""), - ), - target = - GridMigrationData( - "flagged_result5x5to5x8.db", - DeviceGridState(5, 8, 5, TYPE_PHONE, ""), - ), - ) + companion object { + private const val TAG = "GridMigrationTest" } }