diff --git a/core/tests/overlaytests/remount/Android.bp b/core/tests/overlaytests/remount/Android.bp index 9baedf81d6e08..5757cfe75514e 100644 --- a/core/tests/overlaytests/remount/Android.bp +++ b/core/tests/overlaytests/remount/Android.bp @@ -21,6 +21,8 @@ java_test_host { ], test_suites: ["general-tests"], java_resources: [ + ":com.android.overlaytest.overlaid", + ":com.android.overlaytest.overlay", ":OverlayRemountedTest_SharedLibrary", ":OverlayRemountedTest_SharedLibraryOverlay", ":OverlayRemountedTest_Target", diff --git a/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/OverlayApexTest.java b/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/OverlayApexTest.java new file mode 100644 index 0000000000000..3fa8bcd6cbf03 --- /dev/null +++ b/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/OverlayApexTest.java @@ -0,0 +1,66 @@ +/* + * 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"); + } +} diff --git a/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/OverlayRemountedTestBase.java b/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/OverlayRemountedTestBase.java index 00a53c45d7976..14b5bf6eacbab 100644 --- a/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/OverlayRemountedTestBase.java +++ b/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/OverlayRemountedTestBase.java @@ -27,21 +27,11 @@ import org.junit.rules.RuleChain; import org.junit.rules.TemporaryFolder; 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_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_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(); protected final SystemPreparer mPreparer = new SystemPreparer(mTemporaryFolder, diff --git a/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/OverlaySharedLibraryTest.java b/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/OverlaySharedLibraryTest.java index 49d1894c9bae0..7f2c060b13fc2 100644 --- a/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/OverlaySharedLibraryTest.java +++ b/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/OverlaySharedLibraryTest.java @@ -23,6 +23,14 @@ import org.junit.runner.RunWith; @RunWith(DeviceJUnit4ClassRunner.class) 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 public void testSharedLibrary() throws Exception { diff --git a/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/PackagedUpgradedTest.java b/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/PackagedUpgradedTest.java index f685ec1580ad5..70e342370545c 100644 --- a/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/PackagedUpgradedTest.java +++ b/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/PackagedUpgradedTest.java @@ -23,6 +23,7 @@ import org.junit.runner.RunWith; @RunWith(DeviceJUnit4ClassRunner.class) public class PackagedUpgradedTest extends OverlayRemountedTestBase { + private static final String TARGET_UPGRADE_APK = "OverlayRemountedTest_TargetUpgrade.apk"; @Test public void testTargetUpgrade() throws Exception { diff --git a/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/SystemPreparer.java b/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/SystemPreparer.java index b45b8eabf7c01..bb72d0ee1d037 100644 --- a/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/SystemPreparer.java +++ b/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/SystemPreparer.java @@ -69,7 +69,7 @@ class SystemPreparer extends ExternalResource { return this; } - /** Sets the enable state of an overlay pacakage. */ + /** Sets the enable state of an overlay package. */ SystemPreparer setOverlayEnabled(String packageName, boolean enabled) throws DeviceNotAvailableException { final ITestDevice device = mDeviceProvider.getDevice(); diff --git a/core/tests/overlaytests/remount/test-apps/Overlay/Android.bp b/core/tests/overlaytests/remount/test-apps/Overlay/Android.bp index 447601972f78d..a1fdbfd3542c9 100644 --- a/core/tests/overlaytests/remount/test-apps/Overlay/Android.bp +++ b/core/tests/overlaytests/remount/test-apps/Overlay/Android.bp @@ -15,4 +15,7 @@ android_test_helper_app { name: "OverlayRemountedTest_Overlay", sdk_version: "current", + apex_available: [ + "com.android.overlaytest.overlay", + ], } diff --git a/core/tests/overlaytests/remount/test-apps/Target/Android.bp b/core/tests/overlaytests/remount/test-apps/Target/Android.bp index a8910eb8dae27..19947b1ea51ad 100644 --- a/core/tests/overlaytests/remount/test-apps/Target/Android.bp +++ b/core/tests/overlaytests/remount/test-apps/Target/Android.bp @@ -15,6 +15,9 @@ android_test_helper_app { name: "OverlayRemountedTest_Target", sdk_version: "test_current", + apex_available: [ + "com.android.overlaytest.overlaid", + ], libs: ["OverlayRemountedTest_SharedLibrary"], } diff --git a/core/tests/overlaytests/remount/test-apps/overlaid_apex/Android.bp b/core/tests/overlaytests/remount/test-apps/overlaid_apex/Android.bp new file mode 100644 index 0000000000000..e6ebd5ea76d8a --- /dev/null +++ b/core/tests/overlaytests/remount/test-apps/overlaid_apex/Android.bp @@ -0,0 +1,42 @@ +// 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. + +genrule { + name: "com.android.overlaytest.overlaid.pem", + out: ["com.android.overlaytest.overlaid.pem"], + cmd: "openssl genrsa -out $(out) 4096", +} + +genrule { + name: "com.android.overlaytest.overlaid.pubkey", + srcs: [":com.android.overlaytest.overlaid.pem"], + out: ["com.android.overlaytest.overlaid.pubkey"], + tools: ["avbtool"], + cmd: "$(location avbtool) extract_public_key --key $(in) --output $(out)", +} + +apex_key { + name: "com.android.overlaytest.overlaid.key", + public_key: ":com.android.overlaytest.overlaid.pubkey", + private_key: ":com.android.overlaytest.overlaid.pem", +} + +apex { + name: "com.android.overlaytest.overlaid", + manifest: "manifest.json", + file_contexts: ":apex.test-file_contexts", + key: "com.android.overlaytest.overlaid.key", + apps: ["OverlayRemountedTest_Target"], + installable: false, +} diff --git a/core/tests/overlaytests/remount/test-apps/overlaid_apex/manifest.json b/core/tests/overlaytests/remount/test-apps/overlaid_apex/manifest.json new file mode 100644 index 0000000000000..9a5102fde11f7 --- /dev/null +++ b/core/tests/overlaytests/remount/test-apps/overlaid_apex/manifest.json @@ -0,0 +1,4 @@ +{ + "name": "com.android.overlaytest.overlaid", + "version": "1" +} diff --git a/core/tests/overlaytests/remount/test-apps/overlay_apex/Android.bp b/core/tests/overlaytests/remount/test-apps/overlay_apex/Android.bp new file mode 100644 index 0000000000000..07f27ee55d390 --- /dev/null +++ b/core/tests/overlaytests/remount/test-apps/overlay_apex/Android.bp @@ -0,0 +1,42 @@ +// 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. + +genrule { + name: "com.android.overlaytest.overlay.pem", + out: ["com.android.overlaytest.overlay.pem"], + cmd: "openssl genrsa -out $(out) 4096", +} + +genrule { + name: "com.android.overlaytest.overlay.pubkey", + srcs: [":com.android.overlaytest.overlay.pem"], + out: ["com.android.overlaytest.overlay.pubkey"], + tools: ["avbtool"], + cmd: "$(location avbtool) extract_public_key --key $(in) --output $(out)", +} + +apex_key { + name: "com.android.overlaytest.overlay.key", + public_key: ":com.android.overlaytest.overlay.pubkey", + private_key: ":com.android.overlaytest.overlay.pem", +} + +apex { + name: "com.android.overlaytest.overlay", + manifest: "manifest.json", + file_contexts: ":apex.test-file_contexts", + key: "com.android.overlaytest.overlay.key", + apps: ["OverlayRemountedTest_Overlay"], + installable: false, +} diff --git a/core/tests/overlaytests/remount/test-apps/overlay_apex/manifest.json b/core/tests/overlaytests/remount/test-apps/overlay_apex/manifest.json new file mode 100644 index 0000000000000..ac5f84659eef3 --- /dev/null +++ b/core/tests/overlaytests/remount/test-apps/overlay_apex/manifest.json @@ -0,0 +1,4 @@ +{ + "name": "com.android.overlaytest.overlay", + "version": "1" +} \ No newline at end of file