diff options
| author | 2021-01-18 16:08:56 +0000 | |
|---|---|---|
| committer | 2021-01-18 16:08:56 +0000 | |
| commit | c8ddbaabebb8159bcccd644f53e89f4f7260030e (patch) | |
| tree | f06b15f04afab669ce6ab3521584dac5767f1e1c | |
| parent | 9713e3e4a931eaa27a35af492ffe393c7e0935f6 (diff) | |
| parent | 37c5622067f086811cd3b4d4f7d202f2c928c38a (diff) | |
Merge "Ensure system behaves properly when app-staging dir is deleted"
2 files changed, 30 insertions, 0 deletions
diff --git a/tests/StagedInstallTest/app/src/com/android/tests/stagedinstallinternal/StagedInstallInternalTest.java b/tests/StagedInstallTest/app/src/com/android/tests/stagedinstallinternal/StagedInstallInternalTest.java index 2a601e5cb86d..ad8aac17d844 100644 --- a/tests/StagedInstallTest/app/src/com/android/tests/stagedinstallinternal/StagedInstallInternalTest.java +++ b/tests/StagedInstallTest/app/src/com/android/tests/stagedinstallinternal/StagedInstallInternalTest.java @@ -140,6 +140,21 @@ public class StagedInstallInternalTest { Install.multi(TestApp.AIncompleteSplit, TestApp.B1, TestApp.Apex1).setStaged()); } + @Test + public void testFailStagedSessionIfStagingDirectoryDeleted_Commit() throws Exception { + int sessionId = Install.multi(TestApp.A1, TestApp.Apex1).setStaged().commit(); + assertSessionReady(sessionId); + storeSessionId(sessionId); + } + + @Test + public void testFailStagedSessionIfStagingDirectoryDeleted_Verify() throws Exception { + int sessionId = retrieveLastSessionId(); + PackageInstaller.SessionInfo info = + InstallUtils.getPackageInstaller().getSessionInfo(sessionId); + assertThat(info.isStagedSessionFailed()).isTrue(); + } + private static void assertSessionReady(int sessionId) { assertSessionState(sessionId, (session) -> assertThat(session.isStagedSessionReady()).isTrue()); diff --git a/tests/StagedInstallTest/src/com/android/tests/stagedinstallinternal/host/StagedInstallInternalTest.java b/tests/StagedInstallTest/src/com/android/tests/stagedinstallinternal/host/StagedInstallInternalTest.java index 9e1ea2e04528..2201efd3a7ac 100644 --- a/tests/StagedInstallTest/src/com/android/tests/stagedinstallinternal/host/StagedInstallInternalTest.java +++ b/tests/StagedInstallTest/src/com/android/tests/stagedinstallinternal/host/StagedInstallInternalTest.java @@ -279,6 +279,21 @@ public class StagedInstallInternalTest extends BaseHostJUnit4Test { assertThat(getStagingDirectories()).isEmpty(); } + @Test + public void testFailStagedSessionIfStagingDirectoryDeleted() throws Exception { + // Create a staged session + runPhase("testFailStagedSessionIfStagingDirectoryDeleted_Commit"); + + // Delete the staging directory + getDevice().enableAdbRoot(); + getDevice().executeShellCommand("rm -r /data/app-staging"); + getDevice().disableAdbRoot(); + + getDevice().reboot(); + + runPhase("testFailStagedSessionIfStagingDirectoryDeleted_Verify"); + } + private List<String> getStagingDirectories() throws DeviceNotAvailableException { String baseDir = "/data/app-staging"; try { |