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

Unified Diff: dashboard/dashboard/pinpoint/models/quest/run_test.py

Issue 2996473002: [pinpoint] Add QuestGenerator object. (Closed)
Patch Set: Created 3 years, 4 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
Index: dashboard/dashboard/pinpoint/models/quest/run_test.py
diff --git a/dashboard/dashboard/pinpoint/models/quest/run_test.py b/dashboard/dashboard/pinpoint/models/quest/run_test.py
index 40eaf3ede2396cd4bf0e2e9a06e7b45f401a482d..f128c3057fe0e06d5a8bc31a9bd1328906006e27 100644
--- a/dashboard/dashboard/pinpoint/models/quest/run_test.py
+++ b/dashboard/dashboard/pinpoint/models/quest/run_test.py
@@ -8,9 +8,6 @@ This is the only Quest/Execution where the Execution has a reference back to
modify the Quest.
"""
-import json
-import os
-
from dashboard.pinpoint.models.quest import execution as execution_module
from dashboard.pinpoint.models.quest import quest
from dashboard.services import swarming_service
@@ -21,19 +18,6 @@ class RunTestError(Exception):
pass
-class UnknownConfigError(RunTestError):
-
- def __init__(self, configuration):
- self.configuration = configuration
- super(UnknownConfigError, self).__init__(
- 'There are no swarming bots corresponding to config "%s".' %
- self.configuration)
-
- def __reduce__(self):
- # http://stackoverflow.com/a/36342588
- return UnknownConfigError, (self.configuration,)
-
-
class SwarmingTaskError(RunTestError):
def __init__(self, task_id, state):
@@ -64,30 +48,31 @@ class SwarmingTestError(RunTestError):
class RunTest(quest.Quest):
- def __init__(self, configuration, test_suite, test, repeat_count):
- self._configuration = configuration
- self._test_suite = test_suite
- self._test = test
- self._repeat_count = repeat_count
+ def __init__(self, dimensions, extra_args):
+ self._dimensions = dimensions
+ self._extra_args = extra_args
# We want subsequent executions use the same bot as the first one.
self._first_execution = None
+ def __eq__(self, other):
+ return (isinstance(other, self.__class__) and
perezju 2017/08/07 12:06:12 nit: ditto
dtu 2017/08/15 17:06:41 Done.
+ self._dimensions == other._dimensions and
+ self._extra_args == other._extra_args and
+ self._first_execution == other._first_execution)
+
+
def __str__(self):
- if self._test:
- running = '/'.join((self._test_suite, self._test))
- else:
- running = self._test_suite
- return 'Run %s on %s' % (running, self._configuration)
+ return 'Test'
perezju 2017/08/07 12:06:12 Is there anything more useful we could return?
dtu 2017/08/15 17:06:41 Not sure if we need more with the current UI. We w
@property
def retry_count(self):
return 4
def Start(self, isolate_hash):
- execution = _RunTestExecution(self._configuration, self._test_suite,
- self._test, self._repeat_count, isolate_hash,
- first_execution=self._first_execution)
+ execution = _RunTestExecution(
+ self._dimensions, self._extra_args, isolate_hash,
+ first_execution=self._first_execution)
if not self._first_execution:
self._first_execution = execution
@@ -97,13 +82,11 @@ class RunTest(quest.Quest):
class _RunTestExecution(execution_module.Execution):
- def __init__(self, configuration, test_suite, test, repeat_count,
- isolate_hash, first_execution=None):
+ def __init__(self, dimensions, extra_args, isolate_hash,
+ first_execution=None):
super(_RunTestExecution, self).__init__()
- self._configuration = configuration
- self._test_suite = test_suite
- self._test = test
- self._repeat_count = repeat_count
+ self._dimensions = dimensions
+ self._extra_args = extra_args
self._isolate_hash = isolate_hash
self._first_execution = first_execution
@@ -150,55 +133,25 @@ class _RunTestExecution(execution_module.Execution):
else:
return
- # TODO: Support non-Telemetry tests.
- extra_args = [self._test_suite]
- if self._test:
- extra_args += ('--story-filter', self._test)
- if self._repeat_count != 1:
- extra_args += ('--pageset-repeat', str(self._repeat_count))
- # TODO: Use the correct browser for Android and 64-bit Windows.
- extra_args += [
- '-v', '--upload-results',
- '--output-format=chartjson', '--browser=release',
- '--isolated-script-test-output=${ISOLATED_OUTDIR}/output.json',
- '--isolated-script-test-chartjson-output='
- '${ISOLATED_OUTDIR}/chartjson-output.json',
- ]
-
dimensions = [{'key': 'pool', 'value': 'Chrome-perf-pinpoint'}]
if self._first_execution:
dimensions.append({'key': 'id', 'value': self._first_execution.bot_id})
else:
- dimensions += _ConfigurationDimensions(self._configuration)
+ dimensions += self._dimensions
body = {
- 'name': 'Pinpoint job on %s' % self._configuration,
+ 'name': 'Pinpoint job',
'user': 'Pinpoint',
'priority': '100',
'expiration_secs': '600',
'properties': {
'inputs_ref': {'isolated': self._isolate_hash},
- 'extra_args': extra_args,
+ 'extra_args': self._extra_args,
'dimensions': dimensions,
'execution_timeout_secs': '3600',
'io_timeout_secs': '3600',
},
- 'tags': [
- 'configuration:' + self._configuration,
- ],
}
response = swarming_service.Tasks().New(body)
self._task_id = response['task_id']
-
-
-def _ConfigurationDimensions(configuration):
- bot_dimensions_path = os.path.join(os.path.dirname(__file__),
- 'bot_dimensions.json')
- with open(bot_dimensions_path) as bot_dimensions_file:
- bot_dimensions = json.load(bot_dimensions_file)
-
- if configuration not in bot_dimensions:
- raise UnknownConfigError(configuration)
-
- return bot_dimensions[configuration]

Powered by Google App Engine
This is Rietveld 408576698