<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2021 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.
-->
<configuration description="Config for libnativeloader e2e test cases">
    <option name="test-suite-tag" value="libnativeloader_e2e_tests" />
    <option name="test-suite-tag" value="apct" />
    <option name="config-descriptor:metadata" key="mainline-param" value="com.google.android.art.apex" />
    <option name="config-descriptor:metadata" key="mainline-param" value="com.android.art.apex" />

    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />

    <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
        <!-- We push all files in LibnativeloaderTest.java, but use this
             preparer to make partitions writable. That since remounting may
             require a device reboot, and then it's important that the
             `setenforce 0` from DisableSELinuxTargetPreparer occurs after that. -->
        <option name="remount-system" value="true" />
        <option name="remount-vendor" value="true" />
    </target_preparer>

    <!-- Vendor native libraries aren't accessible by any apps by sepolicy
         rules. For that they need to be labelled same_process_hal_file in a
         vendor specific file_contexts file (see
         https://source.android.com/docs/core/permissions/namespaces_libraries#adding-additional-native-libraries).
         To avoid setting that up to test loading libvendor_private*.so, disable
         sepolicy checks while running the tests. It's libnativeloader logic we
         want to test here. -->
    <target_preparer class="com.android.tradefed.targetprep.DisableSELinuxTargetPreparer"/>

    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="jar" value="libnativeloader_e2e_tests.jar" />
    </test>

    <!-- When this test is run in a Mainline context (e.g. with `mts-tradefed`), only enable it if
         one of the Mainline modules below is present on the device used for testing. -->
    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
        <!-- ART Mainline Module (internal version). -->
        <option name="mainline-module-package-name" value="com.google.android.art" />
        <!-- ART Mainline Module (external (AOSP) version). -->
        <option name="mainline-module-package-name" value="com.android.art" />
    </object>

    <!-- Only run tests if the device under test is SDK version 31 (Android 12) or above. -->
    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.Sdk31ModuleController" />
</configuration>
