1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68

content / test / gpu / unexpected_passes / gpu_builders.py [blame]

# Copyright 2021 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""GPU-specific implementation of the unexpected passes' builders module."""

from typing import Any, Dict, Optional, Set

from unexpected_passes_common import builders
from unexpected_passes_common import constants
from unexpected_passes_common import data_types

from chrome_telemetry_build import android_browser_types as abt


class GpuBuilders(builders.Builders):
  def __init__(self, suite: str, include_internal_builders: bool):
    super().__init__(suite, include_internal_builders)
    self._isolate_names: Optional[Set[str]] = None
    self._non_chromium_builders: Optional[Set[data_types.BuilderEntry]] = None

  def _BuilderRunsTestOfInterest(self, test_map: Dict[str, Any]) -> bool:
    # Builders running tests in Chrome Labs.
    tests = test_map.get('isolated_scripts', [])
    for t in tests:
      if t.get('test') not in self.GetIsolateNames():
        continue
      if self._suite in t.get('args', []):
        return True

    # Builders running tests in Skylab.
    tests = test_map.get('skylab_tests', [])
    for t in tests:
      if t.get('test') not in self.GetIsolateNames():
        continue
      if self._suite in t.get('args', []):
        return True

    return False

  def GetIsolateNames(self) -> Set[str]:
    if self._isolate_names is None:
      self._isolate_names = {
          'telemetry_gpu_integration_test',
          'telemetry_gpu_integration_test_fuchsia',
      }
      # Android targets are split based on binary type, so add those using the
      # maintained list of suffixes.
      for suffix in abt.TELEMETRY_ANDROID_BROWSER_TARGET_SUFFIXES:
        self._isolate_names.add('telemetry_gpu_integration_test' + suffix)
    return self._isolate_names

  def GetFakeCiBuilders(self) -> builders.FakeBuildersDict:
    return {}

  def GetNonChromiumBuilders(self) -> Set[data_types.BuilderEntry]:
    if self._non_chromium_builders is None:
      str_builders = {
          'Win V8 FYI Release (NVIDIA)',
          'Mac V8 FYI Release (Intel)',
          'Linux V8 FYI Release - pointer compression (NVIDIA)',
          'Linux V8 FYI Release (NVIDIA)',
          'Android V8 FYI Release (Nexus 5X)',
      }
      self._non_chromium_builders = {
          data_types.BuilderEntry(b, constants.BuilderTypes.CI, False)
          for b in str_builders
      }
    return self._non_chromium_builders