<?xml version="1.0" encoding="utf-8"?>
<configuration>
	<!--
	 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.
	 -->
	<!--
     This file has been automatically generated. Edit with caution.
     -->
	<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
		<option name="cleanup-apks" value="true"/>
		<option name="test-file-name" value="com.drawelements.deqp.apk"/>
	</target_preparer>
	<target_preparer class="com.android.compatibility.common.tradefed.targetprep.IncrementalDeqpPreparer">
		<option name="disable" value="true"/>
	</target_preparer>
	<option name="test-suite-tag" value="cts"/>
	<option key="component" name="config-descriptor:metadata" value="deqp"/>
	<option key="parameter" name="config-descriptor:metadata" value="not_instant_app"/>
	<option key="parameter" name="config-descriptor:metadata" value="multi_abi"/>
	<option key="parameter" name="config-descriptor:metadata" value="secondary_user"/>
	<option key="parameter" name="config-descriptor:metadata" value="no_foldable_states"/>
	<object class="com.android.tradefed.testtype.suite.module.TestFailureModuleController" type="module_controller">
		<option name="screenshot-on-failure" value="false"/>
	</object>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-VK"/>
		<option name="deqp-caselist-file" value="vk-default.txt"/>
		<option name="incremental-deqp-include-file" value="vk-incremental-deqp.txt"/>
	</test>
	<test class="com.drawelements.deqp.runner.DeqpTestRunner">
		<option name="deqp-package" value="dEQP-VK"/>
		<option name="deqp-caselist-file" value="vk-fraction-mandatory-tests.txt"/>
		<option name="incremental-deqp-include-file" value="vk-incremental-deqp.txt"/>
	</test>
</configuration>
