Add tests for rollback data policy specified in the manifest (4/n)

Test that the user data is wiped out correctly when
rollbackDataPolicy="wipe" is specified in the manifest.

Bug: 148098864
Test: atest RollbackTest StagedRollbackTest
Change-Id: I1de723951009ec8e1417a23845d34fcd8786f687
This commit is contained in:
JW Wang
2020-04-28 16:26:05 +08:00
parent aad90de1e0
commit 56e942aa7c
2 changed files with 19 additions and 6 deletions

View File

@@ -1176,28 +1176,34 @@ public class RollbackTest {
Manifest.permission.DELETE_PACKAGES,
Manifest.permission.TEST_MANAGE_ROLLBACKS);
Uninstall.packages(TestApp.A, TestApp.B);
Install.multi(TestApp.A1, TestApp.B1).commit();
Uninstall.packages(TestApp.A, TestApp.B, TestApp.C);
Install.multi(TestApp.A1, TestApp.B1, TestApp.C1).commit();
// Write user data version = 1
InstallUtils.processUserData(TestApp.A);
InstallUtils.processUserData(TestApp.B);
InstallUtils.processUserData(TestApp.C);
Install a2 = Install.single(TestApp.A2)
.setEnableRollback(PackageManager.RollbackDataPolicy.WIPE);
Install b2 = Install.single(TestApp.B2)
.setEnableRollback(PackageManager.RollbackDataPolicy.RESTORE);
Install.multi(a2, b2).setEnableRollback().commit();
// The rollback data policy of C2 is specified in the manifest
Install c2 = Install.single(TestApp.C2).setEnableRollback();
Install.multi(a2, b2, c2).setEnableRollback().commit();
// Write user data version = 2
InstallUtils.processUserData(TestApp.A);
InstallUtils.processUserData(TestApp.B);
InstallUtils.processUserData(TestApp.C);
RollbackInfo info = RollbackUtils.getAvailableRollback(TestApp.A);
RollbackUtils.rollback(info.getRollbackId());
// Read user data version from userdata.txt
// A's user data version is -1 for user data is wiped.
// B's user data version is 1 as rollback committed.
// C's user data version is -1 for user data is wiped.
assertThat(InstallUtils.getUserDataVersion(TestApp.A)).isEqualTo(-1);
assertThat(InstallUtils.getUserDataVersion(TestApp.B)).isEqualTo(1);
assertThat(InstallUtils.getUserDataVersion(TestApp.C)).isEqualTo(-1);
} finally {
InstallUtils.dropShellPermissionIdentity();
}

View File

@@ -316,17 +316,20 @@ public class StagedRollbackTest {
@Test
public void testRollbackDataPolicy_Phase1() throws Exception {
Uninstall.packages(TestApp.A, TestApp.B);
Install.multi(TestApp.A1, TestApp.B1).commit();
Uninstall.packages(TestApp.A, TestApp.B, TestApp.C);
Install.multi(TestApp.A1, TestApp.B1, TestApp.C1).commit();
// Write user data version = 1
InstallUtils.processUserData(TestApp.A);
InstallUtils.processUserData(TestApp.B);
InstallUtils.processUserData(TestApp.C);
Install a2 = Install.single(TestApp.A2).setStaged()
.setEnableRollback(PackageManager.RollbackDataPolicy.WIPE);
Install b2 = Install.single(TestApp.B2).setStaged()
.setEnableRollback(PackageManager.RollbackDataPolicy.RESTORE);
Install.multi(a2, b2).setEnableRollback().setStaged().commit();
// The rollback data policy of C2 is specified in the manifest
Install c2 = Install.single(TestApp.C2).setStaged().setEnableRollback();
Install.multi(a2, b2, c2).setEnableRollback().setStaged().commit();
}
@Test
@@ -336,6 +339,7 @@ public class StagedRollbackTest {
// Write user data version = 2
InstallUtils.processUserData(TestApp.A);
InstallUtils.processUserData(TestApp.B);
InstallUtils.processUserData(TestApp.C);
RollbackInfo info = RollbackUtils.getAvailableRollback(TestApp.A);
RollbackUtils.rollback(info.getRollbackId());
@@ -345,11 +349,14 @@ public class StagedRollbackTest {
public void testRollbackDataPolicy_Phase3() throws Exception {
assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1);
assertThat(InstallUtils.getInstalledVersion(TestApp.B)).isEqualTo(1);
assertThat(InstallUtils.getInstalledVersion(TestApp.C)).isEqualTo(1);
// Read user data version from userdata.txt
// A's user data version is -1 for user data is wiped.
// B's user data version is 1 as rollback committed.
// C's user data version is -1 for user data is wiped.
assertThat(InstallUtils.getUserDataVersion(TestApp.A)).isEqualTo(-1);
assertThat(InstallUtils.getUserDataVersion(TestApp.B)).isEqualTo(1);
assertThat(InstallUtils.getUserDataVersion(TestApp.C)).isEqualTo(-1);
}
@Test