Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1966)

Unified Diff: scripts/slave/recipe_modules/chromium_tests/steps.py

Issue 1828573003: Add support for swarming priority and expiration in the test spec (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: Addressed comments Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | scripts/slave/recipes/chromium_trybot.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: scripts/slave/recipe_modules/chromium_tests/steps.py
diff --git a/scripts/slave/recipe_modules/chromium_tests/steps.py b/scripts/slave/recipe_modules/chromium_tests/steps.py
index 4cd1459b0f705720b1f28d8b76107d2e4b1dca48..9f8b6b677d3c3ffefd2e625f2884b056b7f250d9 100644
--- a/scripts/slave/recipe_modules/chromium_tests/steps.py
+++ b/scripts/slave/recipe_modules/chromium_tests/steps.py
@@ -419,12 +419,16 @@ def generate_gtest(api, chromium_tests_api, mastername, buildername, test_spec,
use_swarming = False
swarming_shards = 1
swarming_dimension_sets = None
+ swarming_priority = None
+ swarming_expiration = None
if enable_swarming:
swarming_spec = test.get('swarming', {})
if swarming_spec.get('can_use_on_swarming_builders'):
use_swarming = True
swarming_shards = swarming_spec.get('shards', 1)
swarming_dimension_sets = swarming_spec.get('dimension_sets')
+ swarming_priority = swarming_spec.get('priority_adjustment')
+ swarming_expiration = swarming_spec.get('expiration')
override_compile_targets = test.get('override_compile_targets', None)
target_name = str(test['test'])
name = str(test.get('name', target_name))
@@ -441,6 +445,8 @@ def generate_gtest(api, chromium_tests_api, mastername, buildername, test_spec,
enable_swarming=True,
swarming_shards=swarming_shards,
swarming_dimensions=new_dimensions,
+ swarming_priority=swarming_priority,
+ swarming_expiration=swarming_expiration,
override_compile_targets=override_compile_targets,
use_xvfb=use_xvfb)
else:
@@ -449,6 +455,8 @@ def generate_gtest(api, chromium_tests_api, mastername, buildername, test_spec,
enable_swarming=use_swarming,
swarming_dimensions=swarming_dimensions,
swarming_shards=swarming_shards,
+ swarming_priority=swarming_priority,
+ swarming_expiration=swarming_expiration,
override_compile_targets=override_compile_targets,
use_xvfb=use_xvfb)
@@ -467,6 +475,8 @@ def generate_instrumentation_test(api, chromium_tests_api, mastername,
use_swarming = True
swarming_shards = swarming_spec.get('shards', 1)
swarming_dimension_sets = swarming_spec.get('dimension_sets')
+ swarming_priority = swarming_spec.get('priority_adjustment')
+ swarming_expiration = swarming_spec.get('expiration')
if use_swarming and swarming_dimension_sets:
for dimensions in swarming_dimension_sets:
# TODO(stip): Swarmify instrumentation tests
@@ -593,8 +603,14 @@ class DynamicPerfTests(Test):
class SwarmingTest(Test):
+ PRIORITY_ADJUSTMENTS = {
+ 'higher': -10,
+ 'normal': 0,
+ 'lower': +10,
+ }
+
def __init__(self, name, dimensions=None, tags=None, target_name=None,
- extra_suffix=None):
+ extra_suffix=None, priority=None, expiration=None):
self._name = name
self._tasks = {}
self._results = {}
@@ -602,6 +618,8 @@ class SwarmingTest(Test):
self._dimensions = dimensions
self._tags = tags
self._extra_suffix = extra_suffix
+ self._priority = priority
+ self._expiration = expiration
if dimensions and not extra_suffix:
self._extra_suffix = self._get_gpu_suffix(dimensions)
@@ -679,6 +697,12 @@ class SwarmingTest(Test):
self._tasks[suffix] = self.create_task(
api, suffix, isolated_hash, test_filter=test_filter)
+ if self._priority in self.PRIORITY_ADJUSTMENTS:
+ self._tasks[suffix].priority += self.PRIORITY_ADJUSTMENTS[self._priority]
+
+ if self._expiration:
+ self._tasks[suffix].expiration = self._expiration
+
# Add custom dimensions.
if self._dimensions: # pragma: no cover
#TODO(stip): concoct a test case that will trigger this codepath
@@ -768,10 +792,11 @@ class SwarmingTest(Test):
class SwarmingGTestTest(SwarmingTest):
def __init__(self, name, args=None, target_name=None, shards=1,
- dimensions=None, tags=None, extra_suffix=None,
- upload_test_results=True, override_compile_targets=None):
+ dimensions=None, tags=None, extra_suffix=None, priority=None,
+ expiration=None, upload_test_results=True,
+ override_compile_targets=None):
super(SwarmingGTestTest, self).__init__(name, dimensions, tags, target_name,
- extra_suffix)
+ extra_suffix, priority, expiration)
self._args = args or []
self._shards = shards
self._upload_test_results = upload_test_results
@@ -1161,10 +1186,11 @@ class LocalIsolatedScriptTest(Test):
class SwarmingIsolatedScriptTest(SwarmingTest):
def __init__(self, name, args=None, target_name=None, shards=1,
- dimensions=None, tags=None, extra_suffix=None,
- upload_test_results=True, override_compile_targets=None):
+ dimensions=None, tags=None, extra_suffix=None, priority=None,
+ expiration=None, upload_test_results=True,
+ override_compile_targets=None):
super(SwarmingIsolatedScriptTest, self).__init__(
- name, dimensions, tags, target_name, extra_suffix)
+ name, dimensions, tags, target_name, extra_suffix, priority, expiration)
self._args = args or []
self._shards = shards
self._upload_test_results = upload_test_results
@@ -1224,12 +1250,16 @@ def generate_isolated_script(api, chromium_tests_api, mastername, buildername,
use_swarming = False
swarming_shards = 1
swarming_dimension_sets = None
+ swarming_priority = None
+ swarming_expiration = None
if enable_swarming:
swarming_spec = spec.get('swarming', {})
if swarming_spec.get('can_use_on_swarming_builders', False):
use_swarming = True
swarming_shards = swarming_spec.get('shards', 1)
swarming_dimension_sets = swarming_spec.get('dimension_sets')
+ swarming_priority = swarming_spec.get('priority_adjustment')
+ swarming_expiration = swarming_spec.get('expiration')
name = str(spec['name'])
# The variable substitution and precommit/non-precommit arguments
# could be supported for the other test types too, but that wasn't
@@ -1252,12 +1282,14 @@ def generate_isolated_script(api, chromium_tests_api, mastername, buildername,
yield SwarmingIsolatedScriptTest(
name=name, args=args, target_name=target_name,
shards=swarming_shards, dimensions=new_dimensions,
- override_compile_targets=override_compile_targets)
+ override_compile_targets=override_compile_targets,
+ priority=swarming_priority, expiration=swarming_expiration)
else:
yield SwarmingIsolatedScriptTest(
name=name, args=args, target_name=target_name,
shards=swarming_shards, dimensions=swarming_dimensions,
- override_compile_targets=override_compile_targets)
+ override_compile_targets=override_compile_targets,
+ priority=swarming_priority, expiration=swarming_expiration)
else:
yield LocalIsolatedScriptTest(
name=name, args=args, target_name=target_name,
@@ -1267,13 +1299,14 @@ def generate_isolated_script(api, chromium_tests_api, mastername, buildername,
class GTestTest(Test):
def __init__(self, name, args=None, target_name=None, enable_swarming=False,
swarming_shards=1, swarming_dimensions=None, swarming_tags=None,
- swarming_extra_suffix=None, **runtest_kwargs):
+ swarming_extra_suffix=None, swarming_priority=None,
+ swarming_expiration=None, **runtest_kwargs):
super(GTestTest, self).__init__()
if enable_swarming:
self._test = SwarmingGTestTest(
name, args, target_name, swarming_shards, swarming_dimensions,
- swarming_tags, swarming_extra_suffix,
- override_compile_targets=runtest_kwargs.get(
+ swarming_tags, swarming_extra_suffix, swarming_priority,
+ swarming_expiration, override_compile_targets=runtest_kwargs.get(
'override_compile_targets'))
else:
self._test = LocalGTestTest(name, args, target_name, **runtest_kwargs)
« no previous file with comments | « no previous file | scripts/slave/recipes/chromium_trybot.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698