#
# Copyright (C) 2016 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.
#

import os

from vts.utils.python.os import path_utils

from vts.testcases.kernel.ltp import ltp_enums

VTS_LTP_OUTPUT = os.path.join('DATA', 'nativetest', 'ltp')
LTP_RUNTEST_DIR = os.path.join(VTS_LTP_OUTPUT, 'runtest')
LTP_DISABLED_BUILD_TESTS_CONFIG_PATH = os.path.join(VTS_LTP_OUTPUT, 'disabled_tests.txt')

# Environment paths for ltp test cases
# string, ltp build root directory on target
LTPDIR = '/data/local/tmp/ltp'
# Directory for environment variable 'TMP' needed by some test cases
TMP = path_utils.JoinTargetPath(LTPDIR, 'tmp')
# Directory for environment variable 'TMPBASE' needed by some test cases
TMPBASE = path_utils.JoinTargetPath(TMP, 'tmpbase')
# Directory for environment variable 'LTPTMP' needed by some test cases
LTPTMP = path_utils.JoinTargetPath(TMP, 'ltptemp')
# Directory for environment variable 'TMPDIR' needed by some test cases
TMPDIR = path_utils.JoinTargetPath(TMP, 'tmpdir')
# Path where ltp test binary exists
LTPBINPATH = path_utils.JoinTargetPath(LTPDIR, 'testcases', 'bin')
# Add LTP's binary path to PATH
PATH = '/system/bin:%s' % LTPBINPATH

# File system type for loop device
LTP_DEV_FS_TYPE = 'ext4'

# Binaries required by LTP test cases that should exist in PATH
INTERNAL_BINS = [
    'mktemp',
    'cp',
    'chmod',
    'chown',
    'ls',
    'mkfifo',
    'ldd',
]

# Internal shell command required by some LTP test cases
INTERNAL_SHELL_COMMANDS = [
    'export',
    'cd',
]

# Requirement to testcase dictionary.
REQUIREMENTS_TO_TESTCASE = {
    ltp_enums.Requirements.LOOP_DEVICE_SUPPORT: [
        'syscalls.mount01',
        'syscalls.fchmod06',
        'syscalls.ftruncate04',
        'syscalls.ftruncate04_64',
        'syscalls.inotify03',
        'syscalls.link08',
        'syscalls.linkat02',
        'syscalls.mkdir03',
        'syscalls.mkdirat02',
        'syscalls.mknod07',
        'syscalls.mknodat02',
        'syscalls.mmap16',
        'syscalls.mount01',
        'syscalls.mount02',
        'syscalls.mount03',
        'syscalls.mount04',
        'syscalls.mount06',
        'syscalls.rename11',
        'syscalls.renameat01',
        'syscalls.rmdir02',
        'syscalls.umount01',
        'syscalls.umount02',
        'syscalls.umount03',
        'syscalls.umount2_01',
        'syscalls.umount2_02',
        'syscalls.umount2_03',
        'syscalls.utime06',
        'syscalls.utimes01',
        'syscalls.mkfs01',
        'fs.quota_remount_test01',
    ],
    ltp_enums.Requirements.BIN_IN_PATH_LDD: ['commands.ldd'],
}

# Requirement for all test cases
REQUIREMENT_FOR_ALL = [ltp_enums.Requirements.LTP_TMP_DIR]

# Requirement to test suite dictionary
REQUIREMENT_TO_TESTSUITE = {}

# List of LTP test suites to run
TEST_SUITES = [
    'admin_tools',
    'can',
    'cap_bounds',
    'commands',
    'connectors',
    'containers',
#     'controllers',
    'cpuhotplug',
    'dio',
    'fcntl-locktests_android',
    'filecaps',
    'fs',
    'fs_bind',
    'fs_ext4',
    'fs_perms_simple',
    'fsx',
    'hugetlb',
    'hyperthreading',
    'input',
    'io',
    'ipc',
    'kernel_misc',
    'math',
    'mm',
    'modules',
    'nptl',
    'numa',
    'pipes',
    'power_management_tests',
    'pty',
    'sched',
    'syscalls',
    'timers',
    # The following are not included in default LTP scenario group
    'securebits',
    'tracing',
]

# List of LTP test suites that will not run in multi-thread mode
TEST_SUITES_REQUIRE_SINGLE_THREAD_MODE = [
    'dio',
    'io',
    'mm',
]

# Staging tests are for debugging and verifying fixed tests
# Test specified here can be in format: testsuite.testname,
# or testsuite.testname_**bit, or just testname. Using just testname
# is not recommended
STAGING_TESTS = [
    # Flaky on pixel
    # b/32417988
    'syscalls.waitpid02_64bit',

    # Tests currently only failing on pixels,
    # these will be inspected soon
    'syscalls.open14',
    'syscalls.openat03',
    # Fail on local device but pass on lab devices
    'fs.proc01',
    # Failing for missing libcap
    'containers.userns01_64bit',
    'securebits.check_keepcaps03_64bit',
    'securebits.check_keepcaps02_64bit',
    'containers.userns05_64bit',
    'containers.userns07_64bit',
    'containers.userns06_64bit',
    'containers.userns03_64bit',
    'securebits.check_keepcaps01_64bit',
    'containers.userns02_64bit',
]

# Tests disabled
# Based on external/ltp commit 5f01077afe994f4107b147222f3956716d4a8fde
DISABLED_TESTS = [
    # b/32386191 getrusage04 result is flaky
    'syscalls.getrusage04',
    # b/31154962
    'cpuhotplug.cpuhotplug02',
    # b/32385889
    'syscalls.creat08',
    # The following test cases are uncategorized
    'syscalls.fcntl34',
    'syscalls.fcntl34_64',
    'syscalls.inotify06',
    'syscalls.abort01',
    'syscalls.chmod05',
    'syscalls.chmod07',
    'syscalls.chown01_16',
    'syscalls.chown02_16',
    'syscalls.chown03_16',
    'syscalls.chown05_16',
    'syscalls.fchmod01',
    'syscalls.fchmod02',
    'syscalls.fchmod05',
    'syscalls.fchmod06',
    'syscalls.fchown01_16',
    'syscalls.fchown02_16',
    'syscalls.fchown03_16',
    'syscalls.fchown04_16',
    'syscalls.fchown05_16',
    'syscalls.fsync01',
    'syscalls.ftruncate04',
    'syscalls.ftruncate04_64',
    'syscalls.getcwd02',
    'syscalls.getcwd03',
    'syscalls.getegid01_16',
    'syscalls.getegid02_16',
    'syscalls.geteuid01_16',
    'syscalls.geteuid02_16',
    'syscalls.getgid01_16',
    'syscalls.getgid03_16',
    'syscalls.getgroups01_16',
    'syscalls.gethostbyname_r01',
    'syscalls.getuid01_16',
    'syscalls.getuid03_16',
    'syscalls.ioctl03',
    'syscalls.inotify03',
    'syscalls.kill11',
    'syscalls.lchown01_16',
    'syscalls.lchown02_16',
    'syscalls.lchown03_16',
    'syscalls.link08',
    'syscalls.linkat02',
    'syscalls.mkdir03',
    'syscalls.rmdir02',
    'syscalls.mkdirat02',
    'syscalls.mknod07',
    'syscalls.mknodat02',
    'syscalls.mmap16',
    'syscalls.mount01',
    'syscalls.mount02',
    'syscalls.mount03',
    'syscalls.mount04',
    'syscalls.mount06',
    'syscalls.move_pages03',
    'syscalls.move_pages11',
    'syscalls.mprotect01',
    'syscalls.nftw01',
    'syscalls.nftw6401',
    'syscalls.nice04',
    'syscalls.open01',
    'syscalls.open08',
    'syscalls.open10',
    'syscalls.open11',
    'syscalls.madvise01',
    'syscalls.madvise02',
    'syscalls.madvise06',
    'syscalls.pathconf01',
    'syscalls.preadv02',
    'syscalls.process_vm_readv01',
    'syscalls.process_vm_writev01',
    'syscalls.pwritev01_64',
    'syscalls.pwritev02',
    'syscalls.quotactl01',
    'syscalls.readlink04',
    'syscalls.rename11',
    'syscalls.renameat01',
    'syscalls.request_key01',
    'syscalls.request_key02',
    'syscalls.rt_sigprocmask01',
    'syscalls.sbrk03',
    'syscalls.setfsgid01_16',
    'syscalls.setfsgid02_16',
    'syscalls.setfsgid03_16',
    'syscalls.setfsuid01_16',
    'syscalls.setfsuid02_16',
    'syscalls.setfsuid03_16',
    'syscalls.setfsuid04_16',
    'syscalls.setgid01_16',
    'syscalls.setgid02_16',
    'syscalls.setgid03_16',
    'syscalls.setgroups01_16',
    'syscalls.setgroups02_16',
    'syscalls.setgroups03_16',
    'syscalls.setgroups04_16',
    'syscalls.setregid01_16',
    'syscalls.setregid02_16',
    'syscalls.setregid03_16',
    'syscalls.setregid04_16',
    'syscalls.setresgid01_16',
    'syscalls.setresgid02_16',
    'syscalls.setresgid03_16',
    'syscalls.setresgid04_16',
    'syscalls.setresuid01_16',
    'syscalls.setresuid02_16',
    'syscalls.setresuid03_16',
    'syscalls.setresuid04_16',
    'syscalls.setresuid05_16',
    'syscalls.setreuid01_16',
    'syscalls.setreuid02_16',
    'syscalls.setreuid03_16',
    'syscalls.setreuid04_16',
    'syscalls.setreuid05_16',
    'syscalls.setreuid06_16',
    'syscalls.setreuid07_16',
    'syscalls.setuid01_16',
    'syscalls.setuid02_16',
    'syscalls.setuid03_16',
    'syscalls.setuid04_16',
    'syscalls.splice02',
    'syscalls.sysconf01',
    'syscalls.syslog01',
    'syscalls.syslog02',
    'syscalls.syslog03',
    'syscalls.syslog04',
    'syscalls.syslog05',
    'syscalls.syslog06',
    'syscalls.syslog07',
    'syscalls.syslog08',
    'syscalls.syslog09',
    'syscalls.syslog10',
    'syscalls.umask02',
    'syscalls.umask03',
    'syscalls.umount01',
    'syscalls.umount02',
    'syscalls.umount03',
    'syscalls.umount2_01',
    'syscalls.umount2_02',
    'syscalls.umount2_03',
    'syscalls.utime06',
    'syscalls.utimes01',
    'syscalls.utimensat01',
    'syscalls.waitpid05',
    'fs.gf01',
    'fs.gf02',
    'fs.gf03',
    'fs.gf04',
    'fs.gf05',
    'fs.gf06',
    'fs.gf07',
    'fs.gf08',
    'fs.gf09',
    'fs.gf10',
    'fs.gf11',
    'fs.gf14',
    'fs.gf15',
    'fs.gf16',
    'fs.gf17',
    'fs.gf18',
    'fs.gf19',
    'fs.gf20',
    'fs.gf21',
    'fs.gf22',
    'fs.gf23',
    'fs.gf24',
    'fs.gf25',
    'fs.gf26',
    'fs.gf27',
    'fs.gf28',
    'fs.gf29',
    'fs.gf30',
    'fs.rwtest01',
    'fs.rwtest02',
    'fs.rwtest03',
    'fs.rwtest04',
    'fs.rwtest05',
    'fs.iogen01',
    'fs.fs_inod01',
    'fs.ftest06',
    'fs.isofs',
    'fsx.fsx-linux',
    'io.aio01',
    'io.aio02',
    'mm.mtest06',
    'mm.shm_test01',
    'mm.mallocstress01',
    'mm.mmapstress04',
    'mm.mmapstress07',
    'mm.vma03',
    'mm.min_free_kbytes',
    'pipes.pipeio_1',
    'pipes.pipeio_3',
    'pipes.pipeio_4',
    'pipes.pipeio_5',
    'pipes.pipeio_6',
    'pipes.pipeio_8',
    'sched.trace_sched01',
    'math.float_bessel',
    'math.float_exp_log',
    'math.float_iperb',
    'math.float_power',
    'math.float_trigo',
    'pty.pty01',
    'containers.mqns_01_clone',
    'containers.mqns_02_clone',
    'containers.mqns_03_clone',
    'containers.mqns_04_clone',
    'containers.netns_netlink',
    'containers.netns_breakns_ns_exec_ipv4_netlink',
    'containers.netns_breakns_ns_exec_ipv6_netlink',
    'containers.netns_breakns_ns_exec_ipv4_ioctl',
    'containers.netns_breakns_ns_exec_ipv6_ioctl',
    'containers.netns_breakns_ip_ipv4_netlink',
    'containers.netns_breakns_ip_ipv6_netlink',
    'containers.netns_breakns_ip_ipv4_ioctl',
    'containers.netns_breakns_ip_ipv6_ioctl',
    'containers.netns_comm_ns_exec_ipv4_netlink',
    'containers.netns_comm_ns_exec_ipv6_netlink',
    'containers.netns_comm_ns_exec_ipv4_ioctl',
    'containers.netns_comm_ns_exec_ipv6_ioctl',
    'containers.netns_comm_ip_ipv4_netlink',
    'containers.netns_comm_ip_ipv6_netlink',
    'containers.netns_comm_ip_ipv4_ioctl',
    'containers.netns_comm_ip_ipv6_ioctl',
    'containers.netns_sysfs',
    'containers.shmnstest_none',
    'containers.shmnstest_clone',
    'containers.shmnstest_unshare',
    'containers.shmem_2nstest_none',
    'containers.shmem_2nstest_clone',
    'containers.shmem_2nstest_unshare',
    'containers.mesgq_nstest_none',
    'containers.mesgq_nstest_clone',
    'containers.mesgq_nstest_unshare',
    'containers.sem_nstest_none',
    'containers.sem_nstest_clone',
    'containers.sem_nstest_unshare',
    'containers.semtest_2ns_none',
    'containers.semtest_2ns_clone',
    'containers.semtest_2ns_unshare',
    'fs_bind.BindMounts',
    'filecaps.Filecaps',
    'cap_bounds.Cap_bounds',
    'fcntl-locktests_android.FCNTL_LOCKTESTS',
    'admin_tools.su01',
    'admin_tools.cron02',
    'admin_tools.cron_deny01',
    'admin_tools.cron_allow01',
    'admin_tools.cron_dirs_checks01',
    'numa.move_pages03',
    'numa.move_pages11',
    'hugetlb.hugemmap05_1',
    'hugetlb.hugemmap05_2',
    'hugetlb.hugemmap05_3',
    'commands.ar',
    'commands.ld',
    'commands.nm',
    'commands.objdump',
    'commands.file',
    'commands.tar',
    'commands.cron',
    'commands.logrotate',
    'commands.mail',
    'commands.cpio',
    'commands.unzip01',
    'commands.cp_tests01',
    'commands.ln_tests01',
    'commands.mkdir_tests01',
    'commands.mv_tests01',
    'commands.size01',
    'commands.sssd01',
    'commands.sssd02',
    'commands.sssd03',
    'commands.du01',
    'commands.mkfs01',
    'commands.lsmod01',
    'commands.wc01',
    'hyperthreading.smt_smp_enabled',
    'hyperthreading.smt_smp_affinity',
    'kernel_misc.zram03',
    'fs_ext4.ext4-uninit-groups',
    'fs_ext4.ext4-persist-prealloc',
    'cpuhotplug.cpuhotplug03',
    'cpuhotplug.cpuhotplug06',
    'input.input06',
    'dio.dio10',
    'fsx.fsx-linux',
    'dio.dio04',
    'numa.Numa-testcases',
    'syscalls.connect01',
    'syscalls.prot_hsymlinks',
    'fs.ftest01',
    'fs.ftest03',
    'fs.ftest04',
    'fs.ftest05',
    'fs.ftest07',
    'fs.ftest08',
    'fs.inode02',
    'ipc.signal_test_01',
    'mm.data_space',
    'mm.mmapstress01',
    'mm.mmapstress03',
    'mm.mmapstress09',
    'mm.mmapstress10',
    'syscalls.clock_nanosleep01',
    'syscalls.clone04',
    'syscalls.fcntl14',
    'syscalls.fcntl14',
    'syscalls.fcntl14_64',
    'syscalls.fcntl17',
    'syscalls.fcntl17_64',
    'syscalls.getdomainname01',
    'syscalls.kill12',
    'syscalls.setdomainname01',
    'syscalls.setdomainname02',
    'syscalls.setdomainname03',
    'syscalls.sighold02',
    'syscalls.sigpending02',
    'syscalls.sigrelse01',
    'syscalls.vfork02',
    # The following tests are not stable on 64bit version
    'input.input01_64bit',
    'input.input02_64bit',
    'input.input03_64bit',
    'input.input04_64bit',
    'input.input05_64bit',
    'input.input06_64bit',
    # The following tests are failing on 64bit version
    'mm.overcommit_memory01_64bit',
    'mm.overcommit_memory02_64bit',
    'mm.overcommit_memory03_64bit',
    'mm.overcommit_memory04_64bit',
    'mm.overcommit_memory05_64bit',
    'mm.overcommit_memory06_64bit',
    # 'which' in Android does not accept the tested options b/31152668
    'commands.which01',
    # tests that are currently killing some lab devices 64bit on (pixel and bullhead)
    # b/31181781
    'mm.oom01_64bit',
    'mm.oom02_64bit',
    'mm.oom03_64bit',
    'mm.oom04_64bit',
    'mm.oom05_64bit',
    'mm.swapping01_64bit',
    'mm.thp01_64bit',
    'mm.thp02_64bit',
    'mm.thp03_64bit',
    'mm.vma01_64bit',
    # kmsg01 would pass but it occasionally causes socket timeout and misalignment
    # of request and response
    # b/32343072
    'kernel_misc.kmsg01',
    # alarm02 tests for a boundary condition which is impractical to implement
    # correctly on 32-bit Linux.  bionic deliberately breaks with POSIX by reporting
    # that it failed to set up the alarm.  (Other libc implementations fail to
    # set up the alarm too, but then return 0 anyway.)
    'syscalls.alarm02',
    # readdir02 calls opendir() -> closedir() -> readdir() and checks if readdir()
    # returns EBADF.  POSIX doesn't require this, and bionic is likely to instead
    # deadlock trying to acquire a destroyed mutex.
    'syscalls.readdir02',
    # Android sets RLIMIT_NICE to 40, so setpriority02 succeeds unexpectedly
    'syscalls.setpriority02',
    # fork13 takes ~45 minutes to run
    'syscalls.fork13',
    # open13 tests that fchmod() fails on fds opened with O_PATH.  bionic
    # deliberately masks the EBADF returned by the kernel.
    #
    # https://android-review.googlesource.com/#/c/127908/
    'syscalls.open13',
    # Bug#30675453
    'syscalls.perf_event_open02',
    # Bug#30688551
    'syscalls.lstat03_64',
    'syscalls.lstat03',
    # Bug#30688061
    'input.input03',
    # Bug#30688056
    'cpuhotplug.cpuhotplug04',
    # Bug#30699880
    'mm.mtest01w',
    'mm.mtest01',
    # Bug#30688574
    'syscalls.accept4_01',
    # Bug#30689411
    'mm.mmapstress03',
    # Bug #32100169
    'dma_thread_diotest.dma_thread_diotest1',
    'dma_thread_diotest.dma_thread_diotest2',
    'dma_thread_diotest.dma_thread_diotest3',
    'dma_thread_diotest.dma_thread_diotest4',
    'dma_thread_diotest.dma_thread_diotest5',
    'dma_thread_diotest.dma_thread_diotest6',
    'dma_thread_diotest.dma_thread_diotest7',
    # b/33008689 (closed) requires mkfs.ext4 and loop device support.
    'fs.quota_remount_test01',
]
