# Copyright 2021 The ANGLE Project Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This is a .pyl, or "Python Literal", file. You can treat it just like a
# .json file, with the following exceptions:
# * all keys must be quoted (use single quotes, please);
# * comments are allowed, using '#' syntax; and
# * trailing commas are allowed.
#
# For more info see Chromium's waterfalls.pyl in testing/buildbot.

[
  {
    'name': 'angle',
    'forbid_script_tests': True,
    'mixins': [
      'chromium-tester-service-account',
      'swarming_containment_auto',
    ],
    'machines': {
      'android-arm64-pixel4': {
        'os_type': 'android',
        'mixins': [
          'android_r',
          'flame',
          'gpu-swarming-pool',
        ],
        'test_suites': {
          'gtest_tests': 'android_gtests',
          'isolated_scripts': 'common_isolated_scripts',
        },
      },
      'android-arm64-pixel4-perf': {
        'os_type': 'android',
        'mixins': [
          'android_r',
          'flame',
          'gpu-swarming-pool',
        ],
        'test_suites': {
          'isolated_scripts': 'angle_perf_isolated_scripts',
        },
      },
      'linux-intel': {
        'os_type': 'linux',
        'mixins': [
          'linux_intel_hd_630_stable',
        ],
        'test_suites': {
          'gtest_tests': 'linux_intel_gtests',
          'isolated_scripts': 'common_isolated_scripts',
        },
      },
      'linux-intel-perf': {
        'os_type': 'linux',
        'mixins': [
          'linux_intel_hd_630_stable',
        ],
        'test_suites': {
          'isolated_scripts': 'angle_perf_isolated_scripts',
        },
      },
      'linux-nvidia': {
        'os_type': 'linux',
        'mixins': [
          'linux_nvidia_quadro_p400_stable',
        ],
        'test_suites': {
          'gtest_tests': 'linux_nvidia_gtests',
          'isolated_scripts': 'common_isolated_scripts',
        },
      },
      'linux-nvidia-perf': {
        'os_type': 'linux',
        'mixins': [
          'linux_nvidia_quadro_p400_stable',
        ],
        'test_suites': {
          'isolated_scripts': 'angle_perf_isolated_scripts',
        },
      },
      'mac-amd': {
        'os_type': 'mac',
        'mixins': [
          'mac_retina_amd_gpu_stable',
        ],
        'test_suites': {
          'gtest_tests': 'mac_amd_and_intel_gtests',
        },
      },
      'mac-intel': {
        'os_type': 'mac',
        'mixins': [
          'mac_mini_intel_gpu_stable',
        ],
        'test_suites': {
          'gtest_tests': 'mac_amd_and_intel_gtests',
        },
      },
      'mac-nvidia': {
        'os_type': 'mac',
        'mixins': [
          'mac_retina_nvidia_gpu_stable',
        ],
        'test_suites': {
          # Fewer tests enabled on this config because of limited capacity.
          'gtest_tests': 'mac_nvidia_gtests',
        },
      },
      'win10-x64-intel': {
        'os_type': 'win',
        'mixins': [
          'win10_intel_hd_630_stable',
        ],
        'test_suites': {
          'gtest_tests': 'win10_intel_gtests',
          'isolated_scripts': 'common_isolated_scripts',
        },
      },
      'win10-x64-intel-perf': {
        'os_type': 'win',
        'mixins': [
          'win10_intel_hd_630_stable',
        ],
        'test_suites': {
        },
      },
      'win10-x64-nvidia': {
        'os_type': 'win',
        'mixins': [
          'win10_nvidia_quadro_p400_stable',
        ],
        'test_suites': {
          'gtest_tests': 'win10_nvidia_gtests',
          'isolated_scripts': 'common_isolated_scripts',
        },
      },
      'win10-x64-nvidia-perf': {
        'os_type': 'win',
        'mixins': [
          'win10_nvidia_quadro_p400_stable',
        ],
        'test_suites': {
          'isolated_scripts': 'angle_perf_isolated_scripts',
        },
      },
      'win7-x64-nvidia': {
        'os_type': 'win',
        'mixins': [
          'win7_nvidia_quadro_p400',
        ],
        'test_suites': {
          'gtest_tests': 'win7_nvidia_gtests',
        },
      },
      'win7-x86-amd': {
        'os_type': 'win',
        'mixins': [
          'win7_amd_r7_240',
        ],
        'test_suites': {
          'gtest_tests': 'win7_amd_gtests',
        },
      },
    },
  },
]
