def test_node_to_node(self): with Diagram(name=os.path.join(self.name, "node_to_node"), show=False): node1 = Node("node1") node2 = Node("node2") self.assertEqual(node1 - node2, node2) self.assertEqual(node1 >> node2, node2) self.assertEqual(node1 << node2, node2)
def test_node_as_cluster(self): with Diagram(name=os.path.join(self.name, "test_node_as_cluster"), show=False) as d1: node1 = Node("node1") with EC2("node-as-cluster") as c1: node2 = Node("node2") self.assertEqual(c1, getcluster())
def test_nodes_to_node(self): with Diagram(name=self.name, show=False): node1 = Node("node1") nodes = [Node("node2"), Node("node3")] self.assertEqual(nodes - node1, node1) self.assertEqual(nodes >> node1, node1) self.assertEqual(nodes << node1, node1)
def test_node_to_nodes(self): with Diagram(name=os.path.join(self.name, 'node_to_nodes'), show=False): with Cluster(): node1 = Node("node1") nodes = [Node("node2"), Node("node3")] self.assertEqual(node1 - Edge(color='red') - nodes, nodes)
def test_node_to_nodes(self): with Diagram(name=self.name, show=False): node1 = Node("node1") nodes = [Node("node2"), Node("node3")] self.assertEqual(node1 - nodes, nodes) self.assertEqual(node1 >> nodes, nodes) self.assertEqual(node1 << nodes, nodes)
def test_nodes_to_node(self): with Diagram(name=os.path.join(self.name, "nodes_to_node"), show=False): with Cluster(): node1 = Node("node1") nodes = [Node("node2"), Node("node3")] self.assertEqual(nodes - Edge(color="red") - node1, node1)
def test_node_to_node(self): with Diagram(name=self.name, show=False): with Cluster(): node1 = Node("node1") node2 = Node("node2") self.assertEqual(node1 - node2, node2) self.assertEqual(node1 >> node2, node2) self.assertEqual(node1 << node2, node2)
def test_node_to_nodes(self): with Diagram(name=os.path.join(self.name, "node_to_nodes"), show=False): with Cluster(): node1 = Node("node1") nodes = [Node("node2"), Node("node3")] self.assertEqual(node1 - nodes, nodes) self.assertEqual(node1 >> nodes, nodes) self.assertEqual(node1 << nodes, nodes)
def test_nodes_to_node(self): with Diagram(name=os.path.join(self.name, 'nodes_to_node'), show=False): with Cluster(): node1 = Node("node1") nodes = [Node("node2"), Node("node3")] self.assertEqual(nodes - node1, node1) self.assertEqual(nodes >> node1, node1) self.assertEqual(nodes << node1, node1)
def test_nodes_to_node_with_attributes_bothdirectional(self): with Diagram(name=os.path.join( self.name, 'nodes_to_node_with_attributes_bothdirectional'), show=False) as diagram: with Cluster(): node1 = Node("node1") nodes = [Node("node2"), Node("node3")] self.assertEqual( nodes << Edge(color='green', label='4') >> node1, node1)
def test_nodes_to_node_with_attributes_bidirectional(self): with Diagram(name=os.path.join( self.name, "nodes_to_node_with_attributes_bidirectional"), show=False): with Cluster(): node1 = Node("node1") nodes = [Node("node2"), Node("node3")] self.assertEqual( nodes << Edge(color="blue", label="5") >> node1, node1)
def test_nodes_to_node_with_additional_attributes(self): with Diagram(name=os.path.join( self.name, "nodes_to_node_with_additional_attributes"), show=False): with Cluster(): node1 = Node("node1") nodes = [Node("node2"), Node("node3")] self.assertEqual( nodes - Edge(color="red") - Edge(color="green") - node1, node1)
def test_nodes_to_node_with_attributes_onedirectional(self): with Diagram(name=os.path.join( self.name, "nodes_to_node_with_attributes_onedirectional"), show=False): with Cluster(): node1 = Node("node1") nodes = [Node("node2"), Node("node3")] self.assertEqual( nodes >> Edge(color="red", label="6.1") >> node1, node1) self.assertEqual( nodes << Edge(color="green", label="6.2") << node1, node1)
def test_node_to_node_with_attributes(self): with Diagram(name=os.path.join(self.name, "node_to_node_with_attributes"), show=False): with Cluster(): node1 = Node("node1") node2 = Node("node2") self.assertEqual( node1 << Edge(color="red", label="1.1") << node2, node2) self.assertEqual( node1 >> Edge(color="green", label="1.2") >> node2, node2) self.assertEqual( node1 << Edge(color="blue", label="1.3") >> node2, node2)
def test_node_to_node_with_attributes(self): with Diagram(name=os.path.join(self.name, 'node_to_node_with_attributes'), show=False): with Cluster(): node1 = Node("node1") node2 = Node("node2") self.assertEqual( node1 << Edge(color='red', label='1.1') << node2, node2) self.assertEqual( node1 >> Edge(color='green', label='1.2') >> node2, node2) self.assertEqual( node1 << Edge(color='blue', label='1.3') >> node2, node2)
def test_nodes_to_node_with_additional_attributes_directional(self): with Diagram(name=os.path.join( self.name, 'nodes_to_node_with_additional_attributes_directional'), show=False): with Cluster(): node1 = Node("node1") nodes = [Node("node2"), Node("node3")] self.assertEqual( nodes >> Edge(color='red', label='6.1') >> Edge( color='blue', label='6.2') >> node1, node1) self.assertEqual( nodes << Edge(color='green', label='6.3') << Edge( color='pink', label='6.4') << node1, node1)
def test_outformat_list(self): """Check that outformat render all the files from the list.""" self.name = 'diagrams_image' with Diagram(show=False, outformat=["dot", "png"]): Node("node1") # both files must exist self.assertTrue(os.path.exists(f"{self.name}.png")) self.assertTrue(os.path.exists(f"{self.name}.dot")) # clean the dot file as it only generated here os.remove(self.name + ".dot")
def test_nodes_to_node_with_attributes_loop(self): with Diagram(name=os.path.join(self.name, 'nodes_to_node_with_attributes_loop'), show=False): with Cluster(): node = Node("node") self.assertEqual( node >> Edge(color='red', label='3.1') >> node, node) self.assertEqual( node << Edge(color='green', label='3.2') << node, node) self.assertEqual( node >> Edge(color='blue', label='3.3') << node, node) self.assertEqual( node << Edge(color='pink', label='3.4') >> node, node)
def test_nodes_to_node_with_attributes_loop(self): with Diagram(name=os.path.join(self.name, "nodes_to_node_with_attributes_loop"), show=False): with Cluster(): node = Node("node") self.assertEqual( node >> Edge(color="red", label="3.1") >> node, node) self.assertEqual( node << Edge(color="green", label="3.2") << node, node) self.assertEqual( node >> Edge(color="blue", label="3.3") << node, node) self.assertEqual( node << Edge(color="pink", label="3.4") >> node, node)
from diagrams.saas.cdn import Cloudflare from diagrams.generic.compute import Rack from diagrams.onprem.certificates import LetsEncrypt # https://github.com/mingrammer/diagrams/issues/447#issuecomment-770430158 # https://graphviz.gitlab.io/doc/info/shapes.html#html legend_text = """< <U>Legend</U> <BR ALIGN="LEFT" /><BR/> <FONT color="gray">●</FONT> automated <BR ALIGN="LEFT" /> <FONT color="green">●</FONT> proxy <BR ALIGN="LEFT" /> >""" with Diagram("Homelab", show=False, outformat="png"): Node( label=legend_text, width="4", shape="plaintext", ) workstation = Ansible("homelab.git") with Cluster("Service Node"): ingress = Traefik("ingress") middleware = [Firewall("OAuth middlware")] ingress >> Edge(style="dashed") >> middleware ( ingress >> Edge(color="green") >> [ Server("adguard"),
def test_node_to_node(self): with Diagram(name=os.path.join(self.name, "node_to_node"), show=False): node1 = Node("node1") node2 = Node("node2") self.assertEqual(node1 - Edge(color="red") - node2, node2)
def test_node_not_in_diagram(self): # Node must be belong to a diagrams. with self.assertRaises(EnvironmentError): Node("node")
def test_custom_filename(self): self.name = "my_custom_name" with Diagram(name="Example 1", filename=self.name, show=False): Node("node1") self.assertTrue(os.path.exists(f"{self.name}.png"))
def test_default_filename(self): self.name = "example_1" with Diagram(name="Example 1", show=False): Node("node1") self.assertTrue(os.path.exists(f"{self.name}.png"))
def test_empty_name(self): """Check that providing an empty name don't crash, but save in a diagrams_image.xxx file.""" self.name = 'diagrams_image' with Diagram(show=False): Node("node1") self.assertTrue(os.path.exists(f"{self.name}.png"))