Merge "Fix RollbackUnitTest when deleting rollback."

This commit is contained in:
Oli Lan
2020-02-10 13:42:45 +00:00
committed by Android (Google) Code Review
3 changed files with 35 additions and 7 deletions

View File

@@ -223,6 +223,13 @@ public class AppDataRollbackHelper {
}
}
/**
* Deletes all device-encrypted apex data snapshots for the given rollback id.
*/
public void destroyApexDeSnapshots(int rollbackId) {
mApexManager.destroyDeSnapshots(rollbackId);
}
/**
* Commits the pending backups and restores for a given {@code userId} and {@code rollback}. If
* the rollback has a pending backup, it is updated with a mapping from {@code userId} to inode

View File

@@ -44,7 +44,6 @@ import android.util.SparseLongArray;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.IndentingPrintWriter;
import com.android.server.pm.ApexManager;
import java.io.File;
import java.io.IOException;
@@ -671,7 +670,7 @@ class Rollback {
}
}
if (containsApex) {
ApexManager.getInstance().destroyDeSnapshots(info.getRollbackId());
dataHelper.destroyApexDeSnapshots(info.getRollbackId());
}
RollbackStore.deleteRollback(this);

View File

@@ -224,21 +224,43 @@ public class RollbackUnitTest {
}
@Test
public void snapshotThenDelete() {
public void snapshotThenDeleteNoApex() {
Rollback rollback = new Rollback(123, new File("/test/testing"), -1, USER, INSTALLER);
PackageRollbackInfo pkgInfo1 = newPkgInfoFor(PKG_1, 12, 10, false);
PackageRollbackInfo pkgInfo2 = newPkgInfoFor(PKG_2, 18, 12, true);
PackageRollbackInfo pkgInfo2 = newPkgInfoFor(PKG_2, 18, 12, false);
rollback.info.getPackages().addAll(Arrays.asList(pkgInfo1, pkgInfo2));
int[] userIds = {12, 18};
int[] userIds = {111, 222};
rollback.snapshotUserData(PKG_2, userIds, mMockDataHelper);
verify(mMockDataHelper).snapshotAppData(eq(123), pkgRollbackInfoFor(PKG_2), eq(userIds));
rollback.delete(mMockDataHelper);
verify(mMockDataHelper).destroyAppDataSnapshot(eq(123), pkgRollbackInfoFor(PKG_2), eq(12));
verify(mMockDataHelper).destroyAppDataSnapshot(eq(123), pkgRollbackInfoFor(PKG_2), eq(18));
verify(mMockDataHelper).destroyAppDataSnapshot(eq(123), pkgRollbackInfoFor(PKG_2), eq(111));
verify(mMockDataHelper).destroyAppDataSnapshot(eq(123), pkgRollbackInfoFor(PKG_2), eq(222));
verify(mMockDataHelper, never()).destroyApexDeSnapshots(anyInt());
assertThat(rollback.isDeleted()).isTrue();
}
@Test
public void snapshotThenDeleteWithApex() {
Rollback rollback = new Rollback(123, new File("/test/testing"), -1, USER, INSTALLER);
PackageRollbackInfo pkgInfo1 = newPkgInfoFor(PKG_1, 12, 10, false);
PackageRollbackInfo pkgInfo2 = newPkgInfoFor(PKG_2, 18, 12, true);
rollback.info.getPackages().addAll(Arrays.asList(pkgInfo1, pkgInfo2));
int[] userIds = {111, 222};
rollback.snapshotUserData(PKG_2, userIds, mMockDataHelper);
verify(mMockDataHelper).snapshotAppData(eq(123), pkgRollbackInfoFor(PKG_2), eq(userIds));
rollback.delete(mMockDataHelper);
verify(mMockDataHelper, never())
.destroyAppDataSnapshot(anyInt(), pkgRollbackInfoFor(PKG_2), anyInt());
verify(mMockDataHelper).destroyApexDeSnapshots(123);
assertThat(rollback.isDeleted()).isTrue();
}