Esempio n. 1
0
        def graph():
            def get_cluster_name(phase):
                return 'cluster_%s' % phase.name.replace('-', '_')

            def get_goal_name(phase, goal):
                name = '%s_%s' % (phase.name, goal.name)
                return name.replace('-', '_')

            phase_by_phasename = {}
            for phase, goals in Phase.all():
                phase_by_phasename[phase.name] = phase

            yield '\n'.join([
                'digraph G {',
                '  rankdir=LR;',
                '  graph [compound=true];',
            ])
            for phase, installed_goals in Phase.all():
                yield '\n'.join([
                    '  subgraph %s {' % get_cluster_name(phase),
                    '    node [style=filled];',
                    '    color = blue;',
                    '    label = "%s";' % phase.name,
                ])
                for installed_goal in installed_goals:
                    yield '    %s [label="%s"];' % (get_goal_name(
                        phase, installed_goal), installed_goal.name)
                yield '  }'

            edges = set()
            for phase, installed_goals in Phase.all():
                for installed_goal in installed_goals:
                    for dependency in installed_goal.dependencies:
                        tail_goal = phase_by_phasename.get(
                            dependency.name).goals()[-1]
                        edge = 'ltail=%s lhead=%s' % (get_cluster_name(phase),
                                                      get_cluster_name(
                                                          Phase.of(tail_goal)))
                        if edge not in edges:
                            yield '  %s -> %s [%s];' % (
                                get_goal_name(phase, installed_goal),
                                get_goal_name(Phase.of(tail_goal),
                                              tail_goal), edge)
                        edges.add(edge)
            yield '}'
Esempio n. 2
0
    def graph():
      def get_cluster_name(phase):
        return 'cluster_%s' % phase.name.replace('-', '_')

      def get_goal_name(phase, goal):
        name = '%s_%s' % (phase.name, goal.name)
        return name.replace('-', '_')

      phase_by_phasename = {}
      for phase, goals in Phase.all():
        phase_by_phasename[phase.name] = phase

      yield '\n'.join([
        'digraph G {',
        '  rankdir=LR;',
        '  graph [compound=true];',
        ])
      for phase, installed_goals in Phase.all():
        yield '\n'.join([
          '  subgraph %s {' % get_cluster_name(phase),
          '    node [style=filled];',
          '    color = blue;',
          '    label = "%s";' % phase.name,
        ])
        for installed_goal in installed_goals:
          yield '    %s [label="%s"];' % (get_goal_name(phase, installed_goal),
                                          installed_goal.name)
        yield '  }'

      edges = set()
      for phase, installed_goals in Phase.all():
        for installed_goal in installed_goals:
          for dependency in installed_goal.dependencies:
            tail_goal = phase_by_phasename.get(dependency.name).goals()[-1]
            edge = 'ltail=%s lhead=%s' % (get_cluster_name(phase),
                                          get_cluster_name(Phase.of(tail_goal)))
            if edge not in edges:
              yield '  %s -> %s [%s];' % (get_goal_name(phase, installed_goal),
                                          get_goal_name(Phase.of(tail_goal), tail_goal),
                                          edge)
            edges.add(edge)
      yield '}'
Esempio n. 3
0
  def _record(self, goal, elapsed):
    phase = Phase.of(goal)

    phase_timings = self._timings.get(phase)
    if phase_timings is None:
      phase_timings = OrderedDict(())
      self._timings[phase] = phase_timings

    goal_timings = phase_timings.get(goal)
    if goal_timings is None:
      goal_timings = []
      phase_timings[goal] = goal_timings

    goal_timings.append(elapsed)