def test_draw_graph(self, mock_to_agraph): """ Test that the graph gets converted to an agraph """ mock_draw = Mock() mock_to_agraph.return_value = mock_draw graph = "some graph object" output = "/tmp/somefile.png" linesman.draw_graph(graph, output) mock_to_agraph.assert_called_with(graph) mock_draw.draw.assert_called_with(output, prog="dot")
def render_graph(self, req): """ Used to display rendered graphs; if the graph that the user is trying to access does not exist--and the ``session_uuid`` exists in our history--it will be rendered. This also creates a thumbnail image, since some of these graphs can grow to be extremely large. ``req``: :class:`webob.Request` containing the environment information from the request itself. Returns a WSGI application. """ path_info = req.path_info_peek() if '.' not in path_info: return StaticURLParser(GRAPH_DIR) fileid, _, ext = path_info.rpartition('.') if path_info.startswith("thumb-"): fileid = fileid[6:] if '--' not in fileid: return StaticURLParser(GRAPH_DIR) session_uuid, _, cutoff_time = fileid.rpartition('--') cutoff_time = int(cutoff_time) # We now have the session_uuid session = self._backend.get(session_uuid) if session: force_thumbnail_creation = False filename = "%s.png" % fileid path = os.path.join(GRAPH_DIR, filename) if not os.path.exists(path): graph, root_nodes, removed_edges = prepare_graph( session._graph, cutoff_time, False) draw_graph(graph, path) force_thumbnail_creation = True thumbnail_filename = "thumb-%s.png" % fileid thumbnail_path = os.path.join(GRAPH_DIR, thumbnail_filename) if not os.path.exists(thumbnail_path) or force_thumbnail_creation: log.debug("Creating thumbnail for %s at %s.", session_uuid, thumbnail_path) im = Image.open(path, 'r') im.thumbnail((600, 600), Image.ANTIALIAS) im.save(thumbnail_path) return StaticURLParser(GRAPH_DIR)