Bug 1352113 - Shippable Builds - Refactor SETA old->new handling a bit, to make it clearer. r=jmaher

Differential Revision: https://phabricator.services.mozilla.com/D22238

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Justin Wood 2019-03-22 03:24:38 +00:00
Родитель d23a3c5b36
Коммит cc220848b6
1 изменённых файлов: 25 добавлений и 25 удалений

Просмотреть файл

@ -97,41 +97,41 @@ class SETA(object):
high_value_android_tasks = list(filter(only_android_raptor, high_value_tasks))
low_value_tasks.extend(high_value_android_tasks)
opt = ['test-windows10-64/opt',
'test-windows7-32/opt',
'test-linux64/opt',
'test-windows10-64-qr/opt',
'test-windows7-32-qr/opt',
'test-linux64-qr/opt']
pgo = ['test-windows10-64-pgo/opt',
'test-windows7-32-pgo/opt',
'test-linux64-pgo/opt',
'test-windows10-64-pgo-qr/opt',
'test-windows7-32-pgo-qr/opt',
'test-linux64-pgo-qr/opt']
# Now add pgo variants to the low-value set
for iter in range(0, len(opt)):
if any(t.startswith(opt[iter]) for t in low_value_tasks):
seta_conversions = {
# old: new
'test-linux64/opt': 'test-linux64-pgo/opt',
'test-linux64-qr/opt': 'test-linux64-pgo-qr/opt',
'test-windows7-32/opt': 'test-windows7-32-pgo/opt',
'test-windows7-32-qr/opt': 'test-windows7-32-pgo-qr/opt',
'test-windows10-64/opt': 'test-windows10-64-pgo/opt',
'test-windows10-64-qr/opt': 'test-windows10-64-pgo-qr/opt',
}
# Now add new variants to the low-value set
for old, new in seta_conversions.iteritems():
if any(t.startswith(old) for t in low_value_tasks):
low_value_tasks.extend(
[t.replace(opt[iter], pgo[iter]) for t in low_value_tasks]
[t.replace(old, new) for t in low_value_tasks]
)
# ... and the high value list
for iter in range(0, len(opt)):
if any(t.startswith(opt[iter]) for t in high_value_tasks):
for old, new in seta_conversions.iteritems():
if any(t.startswith(old) for t in high_value_tasks):
high_value_tasks.extend(
[t.replace(opt[iter], pgo[iter]) for t in high_value_tasks]
[t.replace(old, new) for t in high_value_tasks]
)
def pgo_as_opt_is_high_value(label):
for iter in range(0, len(opt)):
if label.startswith(pgo[iter]):
opt_label = label.replace(pgo[iter], opt[iter])
if opt_label in high_value_tasks:
def new_as_old_is_high_value(label):
# This doesn't care if there are multiple old values for one new
# it will always check every old value.
for old, new in seta_conversions.iteritems():
if label.startswith(new):
old_label = label.replace(new, old)
if old_label in high_value_tasks:
return True
return False
# Now rip out from low value things that were high value in opt
low_value_tasks = [x for x in low_value_tasks if not pgo_as_opt_is_high_value(x)]
low_value_tasks = [x for x in low_value_tasks if not new_as_old_is_high_value(x)]
# ensure no build tasks slipped in, we never want to optimize out those
low_value_tasks = [x for x in low_value_tasks if 'build' not in x]