| Index: dashboard/dashboard/pinpoint/handlers/quest_generator.py
|
| diff --git a/dashboard/dashboard/pinpoint/handlers/quest_generator.py b/dashboard/dashboard/pinpoint/handlers/quest_generator.py
|
| index 423b392cc6277087793789ad0c380d54c7afdd56..04676cd79bb6177760c834955d9181f586127bf5 100644
|
| --- a/dashboard/dashboard/pinpoint/handlers/quest_generator.py
|
| +++ b/dashboard/dashboard/pinpoint/handlers/quest_generator.py
|
| @@ -29,38 +29,25 @@ def GenerateQuests(request):
|
| A tuple of (arguments, quests), where arguments is a dict containing the
|
| request arguments that were used, and quests is a list of Quests.
|
| """
|
| + target = request.get('target')
|
| + if target in ('telemetry_perf_tests', 'telemetry_perf_webview_tests'):
|
| + quest_functions = (_FindIsolate, _TelemetryRunTest, _ReadChartJsonValue)
|
| + else:
|
| + quest_functions = (_FindIsolate, _GTestRunTest, _ReadGraphJsonValue)
|
| +
|
| arguments = {}
|
| quests = []
|
| -
|
| - quest_arguments, quest = _FindIsolateQuest(request)
|
| - arguments.update(quest_arguments)
|
| - quests.append(quest)
|
| -
|
| - dimensions = request.get('dimensions')
|
| - if not dimensions:
|
| - return arguments, quests
|
| - dimensions = json.loads(dimensions)
|
| - arguments['dimensions'] = json.dumps(dimensions)
|
| -
|
| - if arguments['target'] in ('telemetry_perf_tests',
|
| - 'telemetry_perf_webview_tests'):
|
| - quest_arguments, quest = _TelemetryRunTestQuest(request, dimensions)
|
| + for quest_function in quest_functions:
|
| + quest_arguments, quest = quest_function(request)
|
| + if not quest:
|
| + return arguments, quests
|
| arguments.update(quest_arguments)
|
| quests.append(quest)
|
|
|
| - metric = request.get('metric')
|
| - if not metric:
|
| - return arguments, quests
|
| - arguments['metric'] = metric
|
| -
|
| - quests.append(quest_module.ReadChartJsonValue(metric, request.get('story')))
|
| - else:
|
| - raise NotImplementedError()
|
| -
|
| return arguments, quests
|
|
|
|
|
| -def _FindIsolateQuest(request):
|
| +def _FindIsolate(request):
|
| arguments = {}
|
|
|
| configuration = request.get('configuration')
|
| @@ -76,10 +63,16 @@ def _FindIsolateQuest(request):
|
| return arguments, quest_module.FindIsolate(configuration, target)
|
|
|
|
|
| -def _TelemetryRunTestQuest(request, dimensions):
|
| +def _TelemetryRunTest(request):
|
| arguments = {}
|
| swarming_extra_args = []
|
|
|
| + dimensions = request.get('dimensions')
|
| + if not dimensions:
|
| + return {}, None
|
| + dimensions = json.loads(dimensions)
|
| + arguments['dimensions'] = json.dumps(dimensions)
|
| +
|
| benchmark = request.get('benchmark')
|
| if not benchmark:
|
| raise TypeError('Missing "benchmark" argument.')
|
| @@ -95,7 +88,7 @@ def _TelemetryRunTestQuest(request, dimensions):
|
| if repeat_count:
|
| arguments['repeat_count'] = repeat_count
|
| else:
|
| - repeat_count = '20'
|
| + repeat_count = str(_DEFAULT_REPEAT_COUNT)
|
| swarming_extra_args += ('--pageset-repeat', repeat_count)
|
|
|
| browser = request.get('browser')
|
| @@ -109,3 +102,62 @@ def _TelemetryRunTestQuest(request, dimensions):
|
| swarming_extra_args += _SWARMING_EXTRA_ARGS
|
|
|
| return arguments, quest_module.RunTest(dimensions, swarming_extra_args)
|
| +
|
| +
|
| +def _GTestRunTest(request):
|
| + arguments = {}
|
| + swarming_extra_args = []
|
| +
|
| + dimensions = request.get('dimensions')
|
| + if not dimensions:
|
| + return {}, None
|
| + dimensions = json.loads(dimensions)
|
| + arguments['dimensions'] = json.dumps(dimensions)
|
| +
|
| + test = request.get('test')
|
| + if test:
|
| + arguments['test'] = test
|
| + swarming_extra_args += ('--gtest_filter', test)
|
| +
|
| + repeat_count = request.get('repeat_count')
|
| + if repeat_count:
|
| + arguments['repeat_count'] = repeat_count
|
| + else:
|
| + repeat_count = str(_DEFAULT_REPEAT_COUNT)
|
| + swarming_extra_args += ('--gtest_repeat', repeat_count)
|
| +
|
| + swarming_extra_args += _SWARMING_EXTRA_ARGS
|
| +
|
| + return arguments, quest_module.RunTest(dimensions, swarming_extra_args)
|
| +
|
| +
|
| +def _ReadChartJsonValue(request):
|
| + arguments = {}
|
| +
|
| + metric = request.get('metric')
|
| + if not metric:
|
| + return {}, None
|
| + arguments['metric'] = metric
|
| +
|
| + story = request.get('story')
|
| + if story:
|
| + arguments['story'] = story
|
| +
|
| + return arguments, quest_module.ReadChartJsonValue(metric, story)
|
| +
|
| +
|
| +def _ReadGraphJsonValue(request):
|
| + arguments = {}
|
| +
|
| + chart = request.get('chart')
|
| + trace = request.get('trace')
|
| + if not (chart or trace):
|
| + return {}, None
|
| + if chart and not trace:
|
| + raise TypeError('"chart" specified but no "trace" given.')
|
| + if trace and not chart:
|
| + raise TypeError('"trace" specified but no "chart" given.')
|
| + arguments['chart'] = chart
|
| + arguments['trace'] = trace
|
| +
|
| + return arguments, quest_module.ReadGraphJsonValue(chart, trace)
|
|
|