<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2019 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 the ui conductor test">

  <!--These are the dependency apks that needs to be installed in the devices to run uicd successfully-->
  <target_preparer class="com.android.tradefed.targetprep.InstallApkSetup">
    <!--option apk-path can be repeated with apks that are needed for the device specific tests-->
    <option name="apk-path" value="gs://uicd-deps/deps/apks/uicd-xmldumper-server-test-v1.0.2.apk" />
    <option name="apk-path" value="gs://uicd-deps/deps/apks/uicd-xmldumper-server-v1.0.2.apk" />
  </target_preparer>

  <!--Provide the test related information here-->
  <test class="com.android.uicd.tests.UiConductorTest" >

    <!--This is the required uicd-cli jar for the uicd-tests to run-->
    <option name="uicd-cli-jar" value="gs://uicd-deps/cli/uicd-commandline.jar" />

    <!--Mode of the tests. Can be SINGLE, MULTIDEVICE or PLAYALL. But only one at a time.-->
    <option name="play-mode" value="SINGLE" />

    <!--Global variables for a particular tests are identified through the xml keys-->
    <!--Global variables are key value pairs separated by "=" in the xml values as shown below-->
    <!--Multiple global variables can be repeated as shown below-->
    <option name="global-variables" key="dummytest1" value="uicd_key1=value1Fordummytest1" />
    <option name="global-variables" key="dummytest1" value="uicd_key2=value2Fordummytest1" />

    <!--Global variable pairs can be grouped together separated by ","-->
    <option name="global-variables" key="dummytest2" value="uicd_key1=value1Fordummytest2,uicd_key2=value2Fordummytest2" />

    <!--test file's identifier key and path which can be a local path or a GCS path(as below)-->
    <!--Global variables for dummytest1 is resolved as "uicd_key1=value1Fordummytest1,uicd_key2=value2Fordummytest1"-->
    <option name="uicd-test" key="dummytest1" value="gs://uicd-samples/tests/tests_subdir1/dummytest1" />

    <!--Global variables for dummytest2 is resolved as "uicd_key1=value1Fordummytest2,uicd_key2=value2Fordummytest2"-->
    <option name="uicd-test" key="dummytest2" value="gs://uicd-samples/tests/tests_subdir1/tests_subdir2/dummytest2" />

    <!--No global variables for hellothisworks-->
    <option name="uicd-test" key="hellothisworks" value="gs://uicd-samples/tests/hellothisworks" />
  </test>

  <logger class="com.android.tradefed.log.FileLogger" >
    <option name="log-level-display" value="debug" />
  </logger>
</configuration>