Skip to content

Commit

Permalink
tests: added edge connection link between edges (sqs and lambda)
Browse files Browse the repository at this point in the history
  • Loading branch information
tsypuk committed Jul 29, 2023
1 parent 1774bb2 commit 17083d8
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 1 deletion.
1 change: 0 additions & 1 deletion multicloud_diagrams/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,6 @@ def add_vertex_list(self, vertexes):
node_type=vertex['nodeType'])
return

# TODO add tests for connection
def add_connection(self, src_node_id, dest_node_id, start, end, labels=[]):
# Check that both source and destination exist, before creating edge
found = 0
Expand Down
99 changes: 99 additions & 0 deletions tests/test_connections.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
from multicloud_diagrams import MultiCloudDiagrams

from utils.utils import TestUtilities
import xml.etree.ElementTree as Et


class TestMCDConnections(TestUtilities):

def test_dynamo(self):
# given
mcd = MultiCloudDiagrams()

sqs_arn = 'arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events.fifo'
sqs_metadata = {
"FifoQueue": "TRUE",
}
func_arn = 'arn:aws:lambda:eu-west-1:123456789012:function:consumer_lambda'
func_metadata = {
"CodeSize": 1234,
"Memory": 128,
}

# when
mcd.add_vertex(id=func_arn, node_name='consumer_lambda', arn=func_arn, node_type='lambda_function', metadata=func_metadata)
mcd.add_vertex(id=sqs_arn, node_name='int-eu-live-events.fifo', arn=sqs_arn, node_type='sqs', metadata=sqs_metadata)
mcd.add_link(src_node_id=f'lambda_function:{func_arn}', dst_node_id=f'sqs:{sqs_arn}')

# then
expected_sqs = {
'id': 'vertex:sqs:arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events.fifo',
'parent': '1',
'style': 'sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#FF4F8B;gradientDirection=north;fillColor=#BC1356;strokeColor=#ffffff;'
'dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=left;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.sqs;',
'value': '<b>Name</b>: int-eu-live-events.fifo<BR><b>ARN</b>: '
'arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events.fifo<BR>-----------<BR><b>FifoQueue</b>: '
'TRUE',
'vertex': '1'}

expected_lambda = {
'id': 'vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:consumer_lambda',
'parent': '1',
'style': 'verticalLabelPosition=bottom;html=1;verticalAlign=top;aspect=fixed;align=left;pointerEvents=1;shape=mxgraph.aws3.lambda_function;'
'prIcon=server;fillColor=#F58534;gradientColor=none;html=1;',
'value': '<b>Name</b>: consumer_lambda<BR><b>ARN</b>: '
'arn:aws:lambda:eu-west-1:123456789012:function:consumer_lambda<BR>-----------<BR><b>CodeSize</b>: '
'1234<BR><b>Memory</b>: 128',
'vertex': '1'}
expected_connection = {
'edge': '2',
'id': 'edge:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:consumer_lambda:to:sqs:arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events.fifo',
'parent': '1',
'source': 'vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:consumer_lambda',
'style': 'endFill=0;endArrow=none;endArrow=none;',
'target': 'vertex:sqs:arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events.fifo'}

tree = Et.ElementTree(mcd.mx_file)
self.verify_mxfile_default(tree)

mx_cells = tree.findall("./*/*/*/")
self.assertEqual(5, len(mx_cells))
self.verify_mx_cell(mx_cells[0], expected={'id': '0'})
self.verify_mx_cell(mx_cells[1], expected={'id': '1', 'parent': '0'})

if 'style' in expected_sqs:
del expected_sqs['style']
expected_sqs['style'] = self.supported_vertex['sqs']['style']

if 'style' in expected_lambda:
del expected_lambda['style']
expected_lambda['style'] = self.supported_vertex['lambda_function']['style']

self.verify_mx_cell(mx_cells[2], expected_lambda)
self.verify_mx_cell(mx_cells[3], expected_sqs)
self.verify_mx_cell(mx_cells[4], expected_connection)

# vertex lambda_function
children = mx_cells[2].findall("./*")
mx_geometry = children[0]
self.assertEqual(1, len(children))
self.assertEqual('mxGeometry', mx_geometry.tag)
self.assertEqual('geometry', mx_geometry.attrib['as'])
self.assertEqual(self.supported_vertex['lambda_function']['height'], mx_geometry.attrib['height'])
self.assertEqual(self.supported_vertex['lambda_function']['width'], mx_geometry.attrib['width'])

# vertex sqs
children = mx_cells[3].findall("./*")
mx_geometry = children[0]
self.assertEqual(1, len(children))
self.assertEqual('mxGeometry', mx_geometry.tag)
self.assertEqual('geometry', mx_geometry.attrib['as'])
self.assertEqual(self.supported_vertex['sqs']['height'], mx_geometry.attrib['height'])
self.assertEqual(self.supported_vertex['sqs']['width'], mx_geometry.attrib['width'])

# edge lambda_function-2-sqs
children = mx_cells[4].findall("./*")
mx_geometry = children[0]
self.assertEqual(1, len(children))
self.assertEqual('mxGeometry', mx_geometry.tag)
self.assertEqual('geometry', mx_geometry.attrib['as'])

0 comments on commit 17083d8

Please sign in to comment.