Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e846376e authored by Richard Uhler's avatar Richard Uhler
Browse files

Add test for rollback of same version apk.

The test is marked @Ignore because of a bug in RollbackManager that
fails to expire a rollback when there is a new update of an apk to its
same version code:

STACKTRACE:
java.lang.AssertionError: expected null, but was:<android.content.rollback.RollbackInfo@28c0495>
  at org.junit.Assert.fail(Assert.java:88)
  at org.junit.Assert.failNotNull(Assert.java:755)
  at org.junit.Assert.assertNull(Assert.java:737)
  at org.junit.Assert.assertNull(Assert.java:747)
  at com.android.tests.rollback.RollbackTestUtils.getUniqueRollbackInfoForPackage(RollbackTestUtils.java:321)
  at com.android.tests.rollback.RollbackTest.testSameVersionUpdate(RollbackTest.java:795)

Bug: 120200473
Test: atest RollbackTest
Change-Id: Ib03692c170ee689fcf667689dad25647e55f984f
parent 6243f0aa
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import android.util.Log;

import androidx.test.InstrumentationRegistry;

import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -774,6 +775,40 @@ public class RollbackTest {
        }
    }

    @Test
    @Ignore("b/120200473")
    /**
     * Test rollback when app is updated to its same version.
     */
    public void testSameVersionUpdate() throws Exception {
        try {
            RollbackTestUtils.adoptShellPermissionIdentity(
                    Manifest.permission.INSTALL_PACKAGES,
                    Manifest.permission.DELETE_PACKAGES,
                    Manifest.permission.TEST_MANAGE_ROLLBACKS);
            RollbackManager rm = RollbackTestUtils.getRollbackManager();

            RollbackTestUtils.uninstall(TEST_APP_A);
            RollbackTestUtils.install("RollbackTestAppAv1.apk", false);
            RollbackTestUtils.install("RollbackTestAppAv2.apk", true);
            RollbackTestUtils.install("RollbackTestAppACrashingV2.apk", true);
            assertEquals(2, RollbackTestUtils.getInstalledVersion(TEST_APP_A));

            RollbackInfo rollback = getUniqueRollbackInfoForPackage(
                    rm.getAvailableRollbacks(), TEST_APP_A);
            assertRollbackInfoEquals(TEST_APP_A, 2, 2, rollback);

            RollbackTestUtils.rollback(rollback.getRollbackId());
            assertEquals(2, RollbackTestUtils.getInstalledVersion(TEST_APP_A));

            rollback = getUniqueRollbackInfoForPackage(
                    rm.getRecentlyCommittedRollbacks(), TEST_APP_A);
            assertRollbackInfoEquals(TEST_APP_A, 2, 2, rollback);
        } finally {
            RollbackTestUtils.dropShellPermissionIdentity();
        }
    }

    /**
     * Test bad update automatic rollback.
     */