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

Commit 92b91c0a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Don't fall back to copy during rollback tests (5/n)" into sc-dev

parents 1500d9a7 055f6960
Loading
Loading
Loading
Loading
+33 −10
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.content.pm.VersionedPackage;
import android.content.rollback.PackageRollbackInfo;
import android.content.rollback.PackageRollbackInfo.RestoreInfo;
import android.content.rollback.RollbackInfo;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.system.ErrnoException;
import android.system.Os;
@@ -227,6 +228,15 @@ class RollbackStore {
                packageSessionIds, extensionVersions);
    }

    private static boolean isLinkPossible(File oldFile, File newFile) {
        try {
            return Os.stat(oldFile.getAbsolutePath()).st_dev
                    == Os.stat(newFile.getAbsolutePath()).st_dev;
        } catch (ErrnoException ignore) {
            return false;
        }
    }

    /**
     * Creates a backup copy of an apk or apex for a package.
     * For packages containing splits, this method should be called for each
@@ -239,6 +249,8 @@ class RollbackStore {
        targetDir.mkdirs();
        File targetFile = new File(targetDir, sourceFile.getName());

        boolean fallbackToCopy = !isLinkPossible(sourceFile, targetFile);
        if (!fallbackToCopy) {
            try {
                // Create a hard link to avoid copy
                // TODO(b/168562373)
@@ -248,7 +260,18 @@ class RollbackStore {
                // longer the case when compressed apex rolls out. We have to handle this case in
                // order not to fall back to copy.
                Os.link(sourceFile.getAbsolutePath(), targetFile.getAbsolutePath());
        } catch (ErrnoException ignore) {
            } catch (ErrnoException e) {
                boolean isRollbackTest =
                        SystemProperties.getBoolean("persist.rollback.is_test", false);
                if (isRollbackTest) {
                    throw new IOException(e);
                } else {
                    fallbackToCopy = true;
                }
            }
        }

        if (fallbackToCopy) {
            // Fall back to copy if hardlink can't be created
            Files.copy(sourceFile.toPath(), targetFile.toPath());
        }
+2 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@
        <option name="run-command" value="pm uninstall com.android.cts.install.lib.testapp.B" />
        <option name="teardown-command" value="pm uninstall com.android.cts.install.lib.testapp.A" />
        <option name="teardown-command" value="pm uninstall com.android.cts.install.lib.testapp.B" />
        <option name="run-command" value="setprop persist.rollback.is_test 1" />
        <option name="teardown-command" value="setprop persist.rollback.is_test 0" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="class" value="com.android.tests.rollback.host.MultiUserRollbackTest" />
+2 −0
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@
        <option name="run-command" value="am broadcast -a 'com.google.android.gms.phenotype.FLAG_OVERRIDE' --es package &quot;com.google.android.gms.platformconfigurator&quot; --es user '\\*' --esa flags &quot;ModuleConfig__versioned_immediate_commit_packages&quot; --esa types &quot;bytes&quot; --esa values &quot;Cm5vdGFwYWNrYWdlOgA=&quot; com.google.android.gms" />
        <option name="teardown-command" value="am broadcast -a 'com.google.android.gms.phenotype.FLAG_OVERRIDE' --es action delete --es package &quot;com.google.android.gms.platformconfigurator&quot; --es user '\*' --esa flag &quot;ModuleConfig__immediate_commit_packages&quot; com.google.android.gms" />
        <option name="teardown-command" value="am broadcast -a 'com.google.android.gms.phenotype.FLAG_OVERRIDE' --es action delete --es package &quot;com.google.android.gms.platformconfigurator&quot; --es user '\*' --esa flag &quot;ModuleConfig__versioned_immediate_commit_packages&quot; com.google.android.gms" />
        <option name="run-command" value="setprop persist.rollback.is_test 1" />
        <option name="teardown-command" value="setprop persist.rollback.is_test 0" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="class" value="com.android.tests.rollback.host.NetworkStagedRollbackTest" />
+2 −0
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@
        <option name="run-command" value="pm uninstall com.android.cts.install.lib.testapp.B" />
        <option name="teardown-command" value="pm uninstall com.android.cts.install.lib.testapp.A" />
        <option name="teardown-command" value="pm uninstall com.android.cts.install.lib.testapp.B" />
        <option name="run-command" value="setprop persist.rollback.is_test 1" />
        <option name="teardown-command" value="setprop persist.rollback.is_test 0" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="com.android.tests.rollback" />
+2 −0
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@
        <option name="run-command" value="pm uninstall com.android.cts.install.lib.testapp.B" />
        <option name="teardown-command" value="pm uninstall com.android.cts.install.lib.testapp.A" />
        <option name="teardown-command" value="pm uninstall com.android.cts.install.lib.testapp.B" />
        <option name="run-command" value="setprop persist.rollback.is_test 1" />
        <option name="teardown-command" value="setprop persist.rollback.is_test 0" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="class" value="com.android.tests.rollback.host.StagedRollbackTest" />