<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2024 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="Runs vts_libavf_test.">
    <option name="test-suite-tag" value="vts" />

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

    <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
        <option name="cleanup" value="true" />
        <option name="push" value="vts_libavf_test->/data/nativetest64/vendor/vts_libavf_test" />
        <option name="push" value="rialto.bin->/data/local/tmp/rialto.bin" />
    </target_preparer>

    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.ArchModuleController">
        <option name="arch" value="arm64" />
    </object>

    <test class="com.android.tradefed.testtype.rust.RustBinaryTest" >
        <option name="test-device-path" value="/data/nativetest64/vendor" />
        <option name="module-name" value="vts_libavf_test" />
        <!-- rialto uses a fixed port number for the host, can't run two tests at the same time -->
        <option name="native-test-flag" value="--test-threads=1" />
    </test>
</configuration>
