# 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.5',
        'pool': 'chrome.tests',
        #'device_status': 'available'
      }
    }
  },
  'ios-device-perf': {
    'swarming': {
      'idempotent': False,
      'dimensions': {
        'os': 'iOS-17.5.1',
        'pool': 'WebRTC',
        #'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',
    ],
  },
}
