# Copyright (c) 2022 The WebRTC 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 in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

{
  'android-devices': {
    'swarming': {
      'dimensions': {
        'android_devices': '1',
      },
    },
  },
  'cores-12': {
    'swarming': {
      'dimensions': {
        'cores': '12',
      }
    }
  },
  'crosshatch': {
    'swarming': {
      'dimensions': {
        'device_type': 'crosshatch',
        'os': 'Android',
      },
    },
  },
  # Hack to use the test-launcher-summary-output flag + emulator folders for gtest-output
  # but it's currently the only way to get the file out of the emulator.
  'fuchsia-gtest-output': {
    'args': [
      '--test-launcher-summary-output=${ISOLATED_OUTDIR}/gtest_output.json',
      '--test-arg=--gtest_output=json:/custom_artifacts/gtest_output.json',
      '--test-arg=--undefok=test_launcher_summary_output'
    ],
  },
  'ios-device-16.7': {
    'swarming': {
      'dimensions': {
        'os': 'iOS-16.7.1',
        'pool': 'chrome.tests',
        'device_status': 'available'
      }
    }
  },
  'ios-device-perf': {
    'swarming': {
      'idempotent': False,
      'dimensions': {
        'os': 'iOS-15.7.8',
        'pool': 'WebRTC',
        'id': 'mac-254-e504',
        'device_status': 'available'
      },
    },
  },
  'ios_runtime_cache_15_5': {
    'swarming': {
      'named_caches': [{
        'name': 'runtime_ios_15_5',
        'path': 'Runtime-ios-15.5'
      }]
    }
  },
  'limited-capacity': {
    # Sometimes there are multiple tests that can be run only on one machine.
    # We need to increase timeouts so the tests dont expire before the machine is freed.
    # Using 3h expiration timeout to align with `timeout-3h` mixin used for per tests.
    'swarming': {
      'expiration': 10800,
    },
  },
  'mac-m1-cpu': {
    'swarming': {
      'dimensions': {
        'cpu': 'arm64-64-Apple_M1',
      }
    }
  },
  'mac11': {
    'swarming': {
      'dimensions': {
        'os': 'Mac-11'
      }
    }
  },
  'linux-bionic': {
    'swarming': {
      'dimensions': {
        'os': 'Ubuntu-18.04',
      }
    }
  },
  'perf-output': {
    'args': [
      '--isolated-script-test-perf-output=${ISOLATED_OUTDIR}/perftest-output.pb',
    ],
  },
  'perf-pool': {
    'swarming': {
      # Perf tests are marked as not idempotent, which means they're re-run even
      # if they did not change this build. This will give the dashboard some
      # more variance data to work with.
      'idempotent': False,
      'dimensions': {
        'pool': 'WebRTC-perf',
        'gce': '0',
      },
    },
  },
  'perf-pool-vm': {
    'swarming': {
      'idempotent': False,
      'dimensions': {
        'pool': 'WebRTC-perf',
        'gce': '1',
      },
    },
  },
  'perf-webrtc-perf-tests': {
    'merge': {
      'script': '//tools_webrtc/perf/process_perf_results.py',
      'args': ['--test-suite', 'webrtc_perf_tests'],
    },
    'args': ['--nologs']
  },
  'perf-video-codec-perf-tests': {
    'merge': {
      'script': '//tools_webrtc/perf/process_perf_results.py',
      'args': ['--test-suite', 'video_codec_perf_tests'],
    },
  },
  'quick-perf-tests': {
    'args': [
      '--webrtc_quick_perf_test',
      '--nologs',
    ],
  },
  'redfin': {
    'swarming': {
      'dimensions': {
        'device_type': 'redfin',
        'os': 'Android'
      }
    }
  },
  'resultdb-gtest-json-format': {
    'args': [
      '--gtest_output=json:${ISOLATED_OUTDIR}/gtest_output.json',
    ],
    'resultdb': {
      'result_format': 'gtest_json',
      'result_file': '${ISOLATED_OUTDIR}/gtest_output.json',
    },
  },
  'resultdb-json-format': {
    'resultdb': {
      'result_format': 'json'
    }
  },
  'shards-2': {
    'swarming': {
      'shards': 2,
    },
  },
  'shards-4': {
    'swarming': {
      'shards': 4,
    },
  },
  'shards-6': {
    'swarming': {
      'shards': 6,
    },
  },
  'shards-8': {
    'swarming': {
      'shards': 8,
    },
  },
  'timeout-2h': {
    'swarming': {
      'hard_timeout': 7200,
      'io_timeout': 7200,
    },
  },
  'timeout-3h': {
    'swarming': {
      'hard_timeout': 10800,
      'io_timeout': 10800,
    },
  },
  'webrtc-xctest': {
    'args': [
      '--xctest',
    ],
  },
  'xcode_14_main': {
    'args': ['--xcode-build-version', '14c18'],
    'swarming': {
      'dimensions': {
        'caches': 'xcode_ios_14c18',
      },
      'named_caches': [{
        'name': 'xcode_ios_14c18',
        'path': 'Xcode.app'
      }]
    }
  },
}
