Skip to content

Commit

Permalink
Merge pull request #1946 from batrick/paddles-rerun
Browse files Browse the repository at this point in the history
teuthology/suite: use paddles solely for rerun info
  • Loading branch information
zmc authored May 23, 2024
2 parents b9e3da8 + 2e27ec3 commit 0ef5840
Showing 1 changed file with 53 additions and 44 deletions.
97 changes: 53 additions & 44 deletions teuthology/suite/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import logging
import os
import random
import sys
import time
from distutils.util import strtobool

Expand Down Expand Up @@ -126,16 +127,7 @@ def main(args):
log.info('Will upload archives to ' + conf.archive_upload)

if conf.rerun:
rerun_filters = get_rerun_filters(conf.rerun, conf.rerun_statuses)
if len(rerun_filters['descriptions']) == 0:
log.warning(
"No jobs matched the status filters: %s",
conf.rerun_statuses,
)
return
conf.filter_in.extend(rerun_filters['descriptions'])
conf.suite = normalize_suite_name(rerun_filters['suite'])
conf.subset, conf.no_nested_subset, conf.seed = get_rerun_conf(conf)
get_rerun_conf_overrides(conf)
if conf.seed < 0:
conf.seed = random.randint(0, 9999)
log.info('Using random seed=%s', conf.seed)
Expand All @@ -148,11 +140,59 @@ def main(args):
conf.archive_upload_url)


def get_rerun_filters(name, statuses):
def get_rerun_conf_overrides(conf):
reporter = ResultsReporter()
run = reporter.get_run(name)
run = reporter.get_run(conf.rerun)

conf.suite = normalize_suite_name(run['suite'])

try:
job0 = run['jobs'][0]
except IndexError:
job0 = None

seed = None if job0 is None else job0.get('seed')
if conf.seed >= 0 and conf.seed != seed:
log.error('--seed %s does not match with rerun seed: %s',
conf.seed, seed)
sys.exit(1)
else:
log.info('Using rerun seed=%s', seed)
conf.seed = seed

subset = None if job0 is None else tuple(map(int, job0.get('subset').split('/')))
if conf.subset is not None and conf.subset != subset:
log.error('--subset %s does not match with '
'rerun subset: %s',
conf.subset, subset)
sys.exit(1)
else:
log.info('Using rerun subset=%s', subset)
conf.subset = subset

no_nested_subset = False if job0 is None else job0.get('no_nested_subset', False)
if conf.no_nested_subset is not None and conf.no_nested_subset != no_nested_subset:
log.error('--no-nested-subset specified but does not match with '
'rerun --no-nested-subset: %s',
no_nested_subset)
sys.exit(1)
else:
log.info('Using rerun no_nested_subset=%s', no_nested_subset)
conf.no_nested_subset = no_nested_subset

rerun_filters = get_rerun_filters(run, conf.rerun_statuses)
if len(rerun_filters['descriptions']) == 0:
log.warning(
"No jobs matched the status filters: %s",
conf.rerun_statuses,
)
return

conf.filter_in.extend(rerun_filters['descriptions'])


def get_rerun_filters(run, statuses):
filters = dict()
filters['suite'] = run['suite']
jobs = []
for job in run['jobs']:
if job['status'] in statuses:
Expand All @@ -161,37 +201,6 @@ def get_rerun_filters(name, statuses):
return filters


def get_rerun_conf(conf):
reporter = ResultsReporter()
try:
subset, no_nested_subset, seed = reporter.get_rerun_conf(conf.rerun)
except IOError:
log.error('Error accessing results.log, file might be missing.')
log.warning('Using default/specified values for --seed, --subset and --no-nested-subset')
return conf.subset, conf.no_nested_subset, conf.seed
if seed is None:
log.warning('Missing seed in results.log, using default/specified values for --seed')
return conf.subset, conf.no_nested_subset, conf.seed
if conf.seed < 0:
log.info('Using stored seed=%s', seed)
elif conf.seed != seed:
log.error('--seed {conf_seed} does not match with ' +
'stored seed: {stored_seed}',
conf_seed=conf.seed,
stored_seed=seed)
if conf.subset is None:
log.info('Using stored subset=%s', subset)
elif conf.subset != subset:
log.error('--subset {conf_subset} does not match with ' +
'stored subset: {stored_subset}',
conf_subset=conf.subset,
stored_subset=subset)
if conf.no_nested_subset is True:
log.info('Nested subsets disabled')
no_nested_subset = conf.no_nested_subset
return subset, no_nested_subset, seed


class WaitException(Exception):
pass

Expand Down

0 comments on commit 0ef5840

Please sign in to comment.