Esempio n. 1
0
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)
Esempio n. 2
0
    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)