#!/usr/bin/env python2
# Copyright 2016 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import collections

from generate_controlfiles_common import main


_ALL = 'all'

CONFIG = {}

CONFIG['TEST_NAME'] = 'cheets_CTS_Instant'
CONFIG['DOC_TITLE'] = \
    'Android Compatibility Test Suite for Instant Apps (CTS Instant)'
CONFIG['MOBLAB_SUITE_NAME'] = 'suite:cts_P, suite:cts'
CONFIG['COPYRIGHT_YEAR'] = 2018
CONFIG['AUTHKEY'] = ''

CONFIG['LARGE_MAX_RESULT_SIZE'] = 1000 * 1024
CONFIG['NORMAL_MAX_RESULT_SIZE'] = 500 * 1024

CONFIG['TRADEFED_CTS_COMMAND'] = 'cts-instant'
CONFIG['TRADEFED_RETRY_COMMAND'] = 'retry'
CONFIG['TRADEFED_DISABLE_REBOOT'] = False
CONFIG['TRADEFED_DISABLE_REBOOT_ON_COLLECTION'] = True
CONFIG['TRADEFED_MAY_SKIP_DEVICE_INFO'] = False
CONFIG['TRADEFED_EXECUTABLE_PATH'] = \
    'android-cts_instant/tools/cts-instant-tradefed'
CONFIG['TRADEFED_IGNORE_BUSINESS_LOGIC_FAILURE'] = False

CONFIG['INTERNAL_SUITE_NAMES'] = ['suite:arc-cts']
CONFIG['QUAL_SUITE_NAMES'] = ['suite:arc-cts-qual']

# CTS Instant is relatively small (= shorter turnaround time), and very
# unlikely to fail alone (= regression almost always caught by the
# corresponding CTS module.) For now we don't generate this type of control
# files.
CONFIG['CONTROLFILE_TEST_FUNCTION_NAME'] = 'run_TS'
CONFIG['CONTROLFILE_WRITE_SIMPLE_QUAL_AND_REGRESS'] = True
CONFIG['CONTROLFILE_WRITE_CAMERA'] = False
CONFIG['CONTROLFILE_WRITE_EXTRA'] = False

# The dashboard suppresses upload to APFE for GS directories (based on autotest
# tag) that contain 'tradefed-run-collect-tests'. b/119640440
# Do not change the name/tag without adjusting the dashboard.
_COLLECT = 'tradefed-run-collect-tests-only-internal'
_PUBLIC_COLLECT = 'tradefed-run-collect-tests-only'

# Unlike regular CTS we have to target the native ABI only.
CONFIG['LAB_DEPENDENCY'] = {
    'x86': ['cts_cpu_x86'],
    'arm': ['cts_cpu_arm']
}

CONFIG['CTS_JOB_RETRIES_IN_PUBLIC'] = 1
CONFIG['CTS_QUAL_RETRIES'] = 9
CONFIG['CTS_MAX_RETRIES'] = {}

# TODO(ihf): Update timeouts once P is more stable.
# Timeout in hours.
CONFIG['CTS_TIMEOUT_DEFAULT'] = 1.0
CONFIG['CTS_TIMEOUT'] = {
    _ALL: 5.0,
    _COLLECT: 2.0,
    _PUBLIC_COLLECT: 2.0,
    'CtsFileSystemTestCases': 2.5,
}

# Any test that runs as part as blocking BVT needs to be stable and fast. For
# this reason we enforce a tight timeout on these modules/jobs.
# Timeout in hours. (0.1h = 6 minutes)
CONFIG['BVT_TIMEOUT'] = 0.1

CONFIG['QUAL_TIMEOUT'] = 5

# Split tests so that large and flaky tests are distributed evenly.
CONFIG['QUAL_BOOKMARKS'] = [
        'A',  # A bookend to simplify partition algorithm.
        # CtsAccessibility, CtsAutoFill
        'CtsBackgroundRestrictionsTestCases',
        # CtsMedia, CtsPrint
        'CtsSampleDeviceTestCases',
        # CtsView, CtsWidget
        'zzzzz'  # A bookend to simplify algorithm.
]

CONFIG['SMOKE'] = [
    # TODO(b/113641546): add to CQ/PFQ when it's ready.
    # 'CtsAccountManagerTestCases',
]

CONFIG['BVT_ARC'] = [
    # TODO(b/113641546): add to CQ/PFQ when it's ready.
    # 'CtsPermission2TestCases',
]

CONFIG['BVT_PERBUILD'] = [
    'CtsAccountManagerTestCases',
    'CtsPermission2TestCases',
    'CtsUiAutomationTestCases',
    'CtsUsbTests',
]

CONFIG['NEEDS_POWER_CYCLE'] = [
]

CONFIG['HARDWARE_DEPENDENT_MODULES'] = [
]

# The suite is divided based on the run-time hint in the *.config file.
CONFIG['VMTEST_INFO_SUITES'] = collections.OrderedDict()

# Modules that are known to download and/or push media file assets.
CONFIG['MEDIA_MODULES'] = []
CONFIG['NEEDS_PUSH_MEDIA'] = []

CONFIG['ENABLE_DEFAULT_APPS'] = []

# Run `eject` for (and only for) each device with RM=1 in lsblk output.
_EJECT_REMOVABLE_DISK_COMMAND = (
    "\'lsblk -do NAME,RM | sed -n s/1$//p | xargs -n1 eject\'")

# Preconditions applicable to public and internal tests.
CONFIG['PRECONDITION'] = {}
CONFIG['LOGIN_PRECONDITION'] = {
    'CtsAppSecurityHostTestCases': [_EJECT_REMOVABLE_DISK_COMMAND],
    'CtsJobSchedulerTestCases': [_EJECT_REMOVABLE_DISK_COMMAND],
    'CtsOsTestCases': [_EJECT_REMOVABLE_DISK_COMMAND],
    'CtsProviderTestCases': [_EJECT_REMOVABLE_DISK_COMMAND],
    _ALL: [_EJECT_REMOVABLE_DISK_COMMAND],
}

# Preconditions applicable to public tests.
CONFIG['PUBLIC_PRECONDITION'] = {}

CONFIG['PUBLIC_DEPENDENCIES'] = {
    'CtsCameraTestCases': ['lighting'],
    'CtsMediaTestCases': ['noloopback'],
}

# This information is changed based on regular analysis of the failure rate on
# partner moblabs.
CONFIG['PUBLIC_MODULE_RETRY_COUNT'] = {
    'CtsNetTestCases': 10,
    'CtsSecurityHostTestCases': 10,
    'CtsUsageStatsTestCases': 10,
    'CtsFileSystemTestCases': 10,
    'CtsBluetoothTestCases': 10,
    _PUBLIC_COLLECT: 0,
}

CONFIG['PUBLIC_OVERRIDE_TEST_PRIORITY'] = {
    _PUBLIC_COLLECT: 70,
}

# This information is changed based on regular analysis of the job run time on
# partner moblabs.

CONFIG['OVERRIDE_TEST_LENGTH'] = {
    'CtsDeqpTestCases': 4,  # LONG
    'CtsMediaTestCases': 4,
    'CtsMediaStressTestCases': 4,
    'CtsSecurityTestCases': 4,
    'CtsCameraTestCases': 4,
    _ALL: 4,
    # Even though collect tests doesn't run very long, it must be the very first
    # job executed inside of the suite. Hence it is the only 'LENGTHY' test.
    _COLLECT: 5,  # LENGTHY
}

CONFIG['DISABLE_LOGCAT_ON_FAILURE'] = set()
CONFIG['EXTRA_MODULES'] = {}
CONFIG['PUBLIC_EXTRA_MODULES'] = {}
CONFIG['EXTRA_SUBMODULE_OVERRIDE'] = {}

CONFIG['EXTRA_COMMANDLINE'] = {}

CONFIG['EXTRA_ATTRIBUTES'] = {
    'tradefed-run-collect-tests-only-internal': ['suite:arc-cts'],
}

CONFIG['EXTRA_ARTIFACTS'] = {}

CONFIG['PREREQUISITES'] = {}

if __name__ == '__main__':
    main(CONFIG)
