def _JsonFromExecution(execution): if hasattr(execution, '_isolate_server'): isolate_server = execution._isolate_server else: isolate_server = 'https://isolateserver.appspot.com' isolate_hash = execution._isolate_hash if hasattr(execution, '_results_filename'): results_filename = execution._results_filename else: results_filename = 'chartjson-output.json' return read_value.RetrieveOutputJson( isolate_server, isolate_hash, results_filename)
def __call__(self, task, _, accumulator): # TODO(dberris): Validate! # Outline: # - Retrieve the data given the options. # - Parse the data from the result file. # - Update the status and payload with an action. if task.status in {'completed', 'failed'}: return None dep = accumulator.get(task.dependencies[0], {}) isolate_server = dep.get('isolate_server') isolate_hash = dep.get('isolate_hash') logging.debug('Dependency Data: %s', dep) dependency_status = dep.get('status', 'failed') if dependency_status == 'failed': return self.CompleteWithError( task, 'DependencyFailed', 'Task dependency "%s" ended in failed status.' % (task.dependencies[0], )) if dependency_status in {'pending', 'ongoing'}: return None try: data = read_value_quest.RetrieveOutputJson( isolate_server, isolate_hash, task.payload.get('results_filename')) if task.payload.get('mode') == 'histogram_sets': return self.HandleHistogramSets(task, data) elif task.payload.get('mode') == 'graph_json': return self.HandleGraphJson(task, data) else: return self.CompleteWithError( task, 'UnsupportedMode', ('Pinpoint only currently supports reading ' 'HistogramSets and GraphJSON formatted files.')) except (errors.FatalError, errors.InformationalError, errors.RecoverableError) as e: return self.CompleteWithError(task, type(e).__name__, e.message)