# Copyright 2018 The Fuchsia 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 file is a source of truth for what platforms are available for testing
# and what dimensions they possess to match against.
#
# Please do not update this file; contact fuchsia-infra-team@google.com with any
# questions.
#
# Swarming is the task distribution system used by Fuchsia to run automated
# builds. A dimension is a formal Swarming concept effectively given by a
# key-value pair; it describes a bot property that can be targeted. Below are
# the published dimensions for the platforms we have available to test on.
# For more general Swarming documentation see
# https://chromium.googlesource.com/infra/luci/luci-py/+/HEAD/appengine/swarming/doc/

# All Swarming dimension keys that Fuchsia test authors may use to target test
# platforms.
all_dimension_keys = [
  "device_type",
  "cpu",
  "os",
  "pool",
  "testbed",
]

# Scopes of dimensions for every available platform.
test_platforms = [
  {
    device_type = "Atlas"
    cpu = "x64"
  },
  {
    device_type = "AEMU"
    cpu = "x64"
  },
  {
    device_type = "QEMU"
    cpu = "x64"
  },
  {
    device_type = "QEMU"
    cpu = "arm64"
  },
  {
    device_type = "Intel NUC Kit NUC7i5DNHE"
    cpu = "x64"
  },
  {
    device_type = "Intel NUC Kit NUC11TNHv5"
    cpu = "x64"
  },
  {
    device_type = "Astro"
    cpu = "arm64"
  },
  {
    os = "Linux"
    cpu = "x64"
  },
  {
    os = "Linux"
    cpu = "arm64"
  },
  {
    device_type = "Luis"
    cpu = "arm64"
  },

  # TODO(fxbug.dev/110600): While mac-arm64 hosts are not actually targetable
  # at this time, it is easy evaluate code for this environment today as a
  # matter of course (e.g., in bringing up the mac-arm64 host as a development
  # environment or in evaluating an arm64 boot test on a mac host of a different
  # architecture) and so this definition serves to suppress any spurious GN
  # 'unknown mac-arm64 test envimonent' assertions.
  {
    os = "Mac"
    cpu = "arm64"
  },
  {
    os = "Mac"
    cpu = "x64"
  },
  {
    device_type = "Sherlock"
    cpu = "arm64"
  },
  {
    testbed = "pwr_sherlock"
    cpu = "arm64"
    pool = "fuchsia.tests.power-failure"
    device_type = "Sherlock"
  },
  {
    testbed = "bt_astro_astro"
    cpu = "arm64"
    pool = "fuchsia.tests.connectivity"
    device_type = "Astro"
  },
  {
    testbed = "bt_rf_chamber_nuc_phone"
    cpu = "x64"
    pool = "fuchsia.tests.connectivity"
    device_type = "Intel NUC Kit NUC7i5DNHE"
  },
  {
    testbed = "bt_rf_chamber_nuc_nuc"
    cpu = "x64"
    pool = "fuchsia.tests.connectivity"
    device_type = "Intel NUC Kit NUC7i5DNHE"
  },
  {
    testbed = "wifi_rf_chamber_astro"
    cpu = "arm64"
    pool = "fuchsia.tests.connectivity"
    device_type = "Astro"
  },
  {
    testbed = "wifi_rf_chamber_fiber_astro"
    cpu = "arm64"
    pool = "fuchsia.tests.connectivity"
    device_type = "Astro"
  },
  {
    testbed = "wifi_rf_chamber_nuc"
    cpu = "x64"
    pool = "fuchsia.tests.connectivity"
    device_type = "Intel NUC Kit NUC7i5DNHE"
  },
  {
    testbed = "astro_thermal"
    cpu = "arm64"
    pool = "fuchsia.tests.thermal"
    device_type = "Astro"
  },
  {
    testbed = "nelson_thermal"
    cpu = "arm64"
    pool = "fuchsia.tests.thermal"
    device_type = "Nelson"
  },
  {
    testbed = "sherlock_thermal"
    cpu = "arm64"
    pool = "fuchsia.tests.thermal"
    device_type = "Sherlock"
  },
  {
    cpu = "x64"
    pool = "fuchsia.tests.anvl"
    os = "Linux"
  },

  # Experimental/FYI.
  # fxbug.dev/43946
  {
    device_type = "Nelson"
    cpu = "arm64"
  },

  # fxbug.dev/62836
  {
    device_type = "Vim3"
    cpu = "arm64"
  },

  # fxbug.dev/9127
  {
    device_type = "GCE"
  },
]
