metadata:
    name: cts
    format: "Lava-Test Test Definition 1.0"
    description: "Run tradefed based tests in LAVA."
    maintainer:
        - milosz.wasilewski@linaro.org
        - chase.qi@linaro.org
    os:
        - debian
        - ubuntu
    devices:
        - lxc
    scope:
        - functional

params:
    SKIP_INSTALL: "false"
    # Specify timeout in seconds for wait_boot_completed and wait_homescreen.
    TIMEOUT: "300"
    # Download CTS package or copy it from local disk.
    # CTS_URL: "/root/android-cts/linaro/7.1_r1/android-cts-7.1_r1.zip"
    TEST_URL: "http://testdata.validation.linaro.org/cts/android-cts-7.1_r1.zip"
    TEST_PARAMS: "run cts -m CtsBionicTestCases --abi arm64-v8a --disable-reboot --skip-preconditions --skip-device-info"
    # set to the name of the top directory in TEST_URL archive
    # This should be 'android-cts' for CTS and android-vts for VTS
    TEST_PATH: "android-cts"
    # Specify result format: aggregated or atomic
    RESULTS_FORMAT: "aggregated"
    # Specify url and token for file uploading.
    URL: "https://archive.validation.linaro.org/artifacts/team/qa/"
    TOKEN: ""
    AP_SSID: ""
    AP_KEY: ""
    # Specify the failures number to be printed
    FAILURES_PRINTED: "0"
    TEST_REBOOT_EXPECTED: "false"
    # used to specify the android version
    # as different jdk version might be used for different android version cts/vts test
    # aosp-master version needs to use openjdk-11, other older versions needs to use openjdk-8
    # for aosp master version, the value of ANDROID_VERSION must have aosp-master in its value
    ANDROID_VERSION: ""

run:
    steps:
        - cd ./automated/android/tradefed
        # Run setup.sh in the original shell to reserve env variables.
        - . ./setup.sh
        - echo "after ./setup.sh"
        # delete the test user to clean environment
        - userdel testuser -r -f || true
        # create test use to run the cts/vts tests
        - useradd -m testuser && echo "testuser created successfully"
        - chown testuser:testuser .
        - if [ "${TEST_REBOOT_EXPECTED,,}" = "true" ]; then ./monitor_fastboot.sh & fi
        - sudo -u testuser ./tradefed.sh  -o "${TIMEOUT}" -c "${TEST_URL}" -t "${TEST_PARAMS}" -p "${TEST_PATH}" -r "${RESULTS_FORMAT}" -n "${ANDROID_SERIAL}" -f "${FAILURES_PRINTED}" -a "${AP_SSID}" -k "${AP_KEY}" -j "${JAVA_OPTIONS}"
        # Upload test log and result files to artifactorial.
        - cp -r ./${TEST_PATH}/results ./output/ || true
        - cp -r ./${TEST_PATH}/logs ./output/ || true
        # Include logs dumped from TF shell 'd l' command.
        - if ls /tmp/tradefed*; then cp -r /tmp/tradefed* ./output || true; fi
        - tar caf tradefed-output-$(date +%Y%m%d%H%M%S).tar.xz ./output
        - ATTACHMENT=$(ls tradefed-output-*.tar.xz)
        - ../../utils/upload-to-artifactorial.sh -a "${ATTACHMENT}" -u "${URL}" -t "${TOKEN}"
        # Send test result to LAVA.
        - ../../utils/send-to-lava.sh ./output/result.txt
        - userdel testuser -f -r || true
        # When adb device lost, end test job to mark it as 'incomplete'.
        - if ! adb shell echo ok; then error_fatal "adb device $ANDROID_SERIAL lost!"; fi
        - if [ "${TEST_REBOOT_EXPECTED,,}" = "true" ]; then killall monitor_fastboot.sh; fi
