def _GetFirmwareRWBuild(self, mv, board, build_type): """Get the firmware rw build name to test with ChromeOS build. The firmware rw build to be used is determined by `self.firmware_rw_build_spec`. Its value can be `firmware`, `cros` or empty: firmware: use the ToT build in firmware branch. cros: use the ToT build in release (ChromeOS) branch. @param mv: an instance of manifest_versions.ManifestVersions. @param board: the board against which to run self._suite. @param build_type: Build type of the firmware build, e.g., factory, firmware or release. @return: The firmware rw build name to test with ChromeOS build. """ if not self.firmware_rw_build_spec: return None latest_milestone, latest_manifest = mv.GetLatestManifest( board, build_type) latest_build = base_event.BuildName(board, build_type, latest_milestone, latest_manifest) logging.debug('Found latest firmware build of %s for spec %s: %s', board, self.firmware_rw_build_spec, latest_build) return latest_build
def _GetCrOSBuild(self, mv, board): """Get the ChromeOS build name to test with firmware build. The ChromeOS build to be used is determined by `self.cros_build_spec`. Its value can be: tot: use the latest ToT build. tot-x: use the latest build in x milestone before ToT. Rxx: use the latest build on xx milestone. @param board: the board against which to run self._suite. @param mv: an instance of manifest_versions.ManifestVersions. @return: The ChromeOS build name to test with firmware build. """ if not self.cros_build_spec: return None if self.cros_build_spec.startswith('tot'): milestone = TotMilestoneManager().ConvertTotSpec( self.cros_build_spec)[1:] elif self.cros_build_spec.startswith('R'): milestone = self.cros_build_spec[1:] milestone, latest_manifest = mv.GetLatestManifest(board, 'release', milestone=milestone) latest_build = base_event.BuildName(board, 'release', milestone, latest_manifest) logging.debug('Found latest build of %s for spec %s: %s', board, self.cros_build_spec, latest_build) return latest_build
def _AllPerBranchBuildsSince(self, board, revision): """Get all per-branch, per-board builds since git |revision|. @param board: the board whose builds we want. @param revision: the revision to look back until. @return {branch: [build-name1, build-name2]} """ all_branch_manifests = self._mv.ManifestsSinceRev(revision, board) all_branch_builds = {} for (type, milestone), manifests in all_branch_manifests.iteritems(): branch_name = task.PickBranchName(type, milestone) for manifest in manifests: build = base_event.BuildName(board, type, milestone, manifest) all_branch_builds.setdefault(branch_name, []).append(build) return all_branch_builds
def _LatestPerBranchBuildsSince(self, board, days_ago): """Get latest per-branch, per-board builds from last |days_ago| days. @param board: the board whose builds we want. @param days_ago: how many days back to look for manifests. @return {branch: [build-name]} """ since_date = self._deadline - datetime.timedelta(days=days_ago) all_branch_manifests = self._mv.ManifestsSinceDate(since_date, board) latest_branch_builds = {} for (type, milestone), manifests in all_branch_manifests.iteritems(): build = base_event.BuildName(board, type, milestone, manifests[-1]) latest_branch_builds[task.PickBranchName(type, milestone)] = [build] logging.info('%s event found candidate builds: %r', self.keyword, latest_branch_builds) return latest_branch_builds
def testForceOnceForBuild(self): """Test that one event being forced is handled correctly.""" events = self._ExpectSetup() board = 'board' type = 'release' milestone = '00' manifest = '200.0.02' build = base_event.BuildName(board, type, milestone, manifest) events[0].Handle(mox.IgnoreArg(), {milestone: [build]}, board, force=True) self.mox.ReplayAll() self.driver.SetUpEventsAndTasks(self.config, self.mv) self.driver.ForceEventsOnceForBuild([events[0].keyword], build)
def _GetFirmwareBuild(self, spec, mv, board): """Get the firmware build name to test with ChromeOS build. @param spec: build spec for RO or RW firmware, e.g., firmware, cros. For RO firmware, the value can also be in the format of released_ro_X, where X is the index of the list or RO builds defined in global config RELEASED_RO_BUILDS_[board]. For example, for spec `released_ro_2`, and global config CROS/RELEASED_RO_BUILDS_veyron_jerry: build1,build2 the return firmare RO build should be build2. @param mv: an instance of manifest_versions.ManifestVersions. @param board: the board against which to run self._suite. @return: The firmware build name to test with ChromeOS build. """ if spec == 'stable': # TODO(crbug.com/577316): Query stable RO firmware. raise NotImplementedError('`stable` RO firmware build is not ' 'supported yet.') if not spec: return None if spec.startswith('released_ro_'): index = int(spec[12:]) released_ro_builds = CONFIG.get_config_value( 'CROS', 'RELEASED_RO_BUILDS_%s' % board, type=str, default='').split(',') if not released_ro_builds or len(released_ro_builds) < index: return None else: return released_ro_builds[index - 1] # build_type is the build type of the firmware build, e.g., factory, # firmware or release. If spec is set to cros, build type should be # mapped to release. build_type = 'release' if spec == 'cros' else spec latest_milestone, latest_manifest = mv.GetLatestManifest( board, build_type) latest_build = base_event.BuildName(board, build_type, latest_milestone, latest_manifest) logging.debug('Found latest firmware build of %s for spec %s: %s', board, spec, latest_build) return latest_build