# 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',
      },
    },
  },
  # 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_runtime_cache_17_5': {
    'swarming': {
      'named_caches': [
        {
          'name': 'runtime_ios_17_5',
          'path': 'Runtime-ios-17.5',
        },
      ],
    },
  },
  'ios_runtime_cache_18_2': {
    'swarming': {
      'named_caches': [
        {
          'name': 'runtime_ios_18_2',
          'path': 'Runtime-ios-18.2',
        },
      ],
    },
  },
  'isolate_profile_data': {
    'isolate_profile_data': True
  },
  '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',
      }
    }
  },
  'mac_12_arm64': {
    'swarming': {
      'dimensions': {
        'cpu': 'arm64',
        'os': 'Mac-12'
      }
    }
  },
  'mac_26_arm64': {
    'swarming': {
      'dimensions': {
        'cpu': 'arm64',
        'os': 'Mac-26'
      }
    }
  },
  'panther_on_14': {
    'swarming': {
      'dimensions': {
        'device_type': 'panther',
        'device_os': 'AP2A.240705.004',  # Android 14
        'os': 'Android'
      }
    }
  },
  '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-3h': {
    'swarming': {
      'hard_timeout': 10800,
      'io_timeout': 10800,
    },
  },
  'win11': {
    'swarming': {
      'dimensions': {
        'os': 'Windows-11-22000'
      }
    }
  },
  'webrtc-xctest': {
    'args': [
      '--xctest',
    ],
  },
  'xcode_26_main': {
    'args': ['--xcode-build-version', '17f42'],
    'swarming': {
      'named_caches': [{
        'name': 'xcode_ios_17f42',
        'path': 'Xcode.app'
      }]
    }
  },
  'xcodebuild_sim_runner': {
    'args': ['--xcodebuild-sim-runner']
  }
}
