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

Commit 90a08384 authored by Gavin Corkery's avatar Gavin Corkery Committed by Ryan Mitchell
Browse files

Add tests for RRO of APK-in-APEX.

Add tests to ensure that 1) an APK-in-APEX can overlay a /system APK
2) an APK-in-APEX can be overlaid be a /system APK. This is done
by installing the overlay APK or the target APK inside a test APEX.

Bug: 147731966
Test: atest OverlayRemountedTest
Change-Id: Id2c331f124994f55cd936b98ec2f27c9d3265424
parent 5900a1d3
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -21,6 +21,8 @@ java_test_host {
    ],
    ],
    test_suites: ["general-tests"],
    test_suites: ["general-tests"],
    java_resources: [
    java_resources: [
        ":com.android.overlaytest.overlaid",
        ":com.android.overlaytest.overlay",
        ":OverlayRemountedTest_SharedLibrary",
        ":OverlayRemountedTest_SharedLibrary",
        ":OverlayRemountedTest_SharedLibraryOverlay",
        ":OverlayRemountedTest_SharedLibraryOverlay",
        ":OverlayRemountedTest_Target",
        ":OverlayRemountedTest_Target",
+66 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.overlaytest.remounted;

import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;

import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(DeviceJUnit4ClassRunner.class)
public class OverlayApexTest extends OverlayRemountedTestBase {
    private static final String OVERLAID_APEX = "com.android.overlaytest.overlaid.apex";
    private static final String OVERLAY_APEX = "com.android.overlaytest.overlay.apex";

    @Test
    public void testApkInApexCanBeOverlaid() throws Exception {
        final String targetResource = resourceName(TARGET_PACKAGE, "bool", "target_overlaid");

        // The target APK will be installed inside the overlaid APEX.
        mPreparer.pushResourceFile(OVERLAID_APEX,
                "/system/apex/com.android.overlaytest.overlaid.apex")
                .installResourceApk(OVERLAY_APK, OVERLAY_PACKAGE)
                .reboot()
                .setOverlayEnabled(OVERLAY_PACKAGE, false);

        // The resource is not currently overlaid.
        assertResource(targetResource, "false");

        // Overlay the resource.
        mPreparer.setOverlayEnabled(OVERLAY_PACKAGE, true);
        assertResource(targetResource, "true");
    }

    @Test
    public void testApkInApexCanOverlay() throws Exception {
        final String targetResource = resourceName(TARGET_PACKAGE, "bool", "target_overlaid");

        // The overlay APK will be installed inside the overlay APEX.
        mPreparer.pushResourceFile(OVERLAY_APEX,
                "/system/apex/com.android.overlaytest.overlay.apex")
                .installResourceApk(TARGET_APK, TARGET_PACKAGE)
                .reboot()
                .setOverlayEnabled(OVERLAY_PACKAGE, false);

        // The resource is not currently overlaid.
        assertResource(targetResource, "false");

        // Overlay the resource.
        mPreparer.setOverlayEnabled(OVERLAY_PACKAGE, true);
        assertResource(targetResource, "true");
    }
}
+1 −11
Original line number Original line Diff line number Diff line
@@ -27,21 +27,11 @@ import org.junit.rules.RuleChain;
import org.junit.rules.TemporaryFolder;
import org.junit.rules.TemporaryFolder;


public class OverlayRemountedTestBase extends BaseHostJUnit4Test {
public class OverlayRemountedTestBase extends BaseHostJUnit4Test {
    static final long ASSERT_RESOURCE_TIMEOUT_MS = 30000;
    private static final long ASSERT_RESOURCE_TIMEOUT_MS = 30000;

    static final String TARGET_APK = "OverlayRemountedTest_Target.apk";
    static final String TARGET_APK = "OverlayRemountedTest_Target.apk";
    static final String TARGET_PACKAGE = "com.android.overlaytest.remounted.target";
    static final String TARGET_PACKAGE = "com.android.overlaytest.remounted.target";
    static final String TARGET_UPGRADE_APK = "OverlayRemountedTest_TargetUpgrade.apk";
    static final String OVERLAY_APK = "OverlayRemountedTest_Overlay.apk";
    static final String OVERLAY_APK = "OverlayRemountedTest_Overlay.apk";
    static final String OVERLAY_PACKAGE = "com.android.overlaytest.remounted.target.overlay";
    static final String OVERLAY_PACKAGE = "com.android.overlaytest.remounted.target.overlay";
    static final String SHARED_LIBRARY_APK =
            "OverlayRemountedTest_SharedLibrary.apk";
    static final String SHARED_LIBRARY_PACKAGE =
            "com.android.overlaytest.remounted.shared_library";
    static final String SHARED_LIBRARY_OVERLAY_APK =
            "OverlayRemountedTest_SharedLibraryOverlay.apk";
    static final String SHARED_LIBRARY_OVERLAY_PACKAGE =
            "com.android.overlaytest.remounted.shared_library.overlay";


    private final TemporaryFolder mTemporaryFolder = new TemporaryFolder();
    private final TemporaryFolder mTemporaryFolder = new TemporaryFolder();
    protected final SystemPreparer mPreparer = new SystemPreparer(mTemporaryFolder,
    protected final SystemPreparer mPreparer = new SystemPreparer(mTemporaryFolder,
+8 −0
Original line number Original line Diff line number Diff line
@@ -23,6 +23,14 @@ import org.junit.runner.RunWith;


@RunWith(DeviceJUnit4ClassRunner.class)
@RunWith(DeviceJUnit4ClassRunner.class)
public class OverlaySharedLibraryTest extends OverlayRemountedTestBase {
public class OverlaySharedLibraryTest extends OverlayRemountedTestBase {
    private static final String SHARED_LIBRARY_APK =
            "OverlayRemountedTest_SharedLibrary.apk";
    private static final String SHARED_LIBRARY_PACKAGE =
            "com.android.overlaytest.remounted.shared_library";
    private static final String SHARED_LIBRARY_OVERLAY_APK =
            "OverlayRemountedTest_SharedLibraryOverlay.apk";
    private static final String SHARED_LIBRARY_OVERLAY_PACKAGE =
            "com.android.overlaytest.remounted.shared_library.overlay";


    @Test
    @Test
    public void testSharedLibrary() throws Exception {
    public void testSharedLibrary() throws Exception {
+1 −0
Original line number Original line Diff line number Diff line
@@ -23,6 +23,7 @@ import org.junit.runner.RunWith;


@RunWith(DeviceJUnit4ClassRunner.class)
@RunWith(DeviceJUnit4ClassRunner.class)
public class PackagedUpgradedTest extends OverlayRemountedTestBase {
public class PackagedUpgradedTest extends OverlayRemountedTestBase {
    private static final String TARGET_UPGRADE_APK = "OverlayRemountedTest_TargetUpgrade.apk";


    @Test
    @Test
    public void testTargetUpgrade() throws Exception {
    public void testTargetUpgrade() throws Exception {
Loading