@Test public void test_addAllDeploymentNodes_DoesNothing_WhenThereAreNoTopLevelDeploymentNodes() { deploymentView = views.createDeploymentView("deployment", "Description"); deploymentView.addAllDeploymentNodes(); assertEquals(0, deploymentView.getElements().size()); }
@Test public void test_addAllDeploymentNodes_DoesNothing_WhenThereAreTopLevelDeploymentNodesButNoContainerInstances() { deploymentView = views.createDeploymentView("deployment", "Description"); model.addDeploymentNode("Deployment Node", "Description", "Technology"); deploymentView.addAllDeploymentNodes(); assertEquals(0, deploymentView.getElements().size()); }
@Test public void test_addAllDeploymentNodes_AddsDeploymentNodesAndContainerInstances_WhenThereAreTopLevelDeploymentNodesWithContainerInstances() { SoftwareSystem softwareSystem = model.addSoftwareSystem("Software System", ""); Container container = softwareSystem.addContainer("Container", "Description", "Technology"); DeploymentNode deploymentNode = model.addDeploymentNode("Deployment Node", "Description", "Technology"); ContainerInstance containerInstance = deploymentNode.add(container); deploymentView = views.createDeploymentView(softwareSystem, "deployment", "Description"); deploymentView.addAllDeploymentNodes(); assertEquals(2, deploymentView.getElements().size()); assertTrue(deploymentView.getElements().contains(new ElementView(deploymentNode))); assertTrue(deploymentView.getElements().contains(new ElementView(containerInstance))); }
@Test public void test_addAllDeploymentNodes_AddsDeploymentNodesAndContainerInstances_WhenThereAreChildDeploymentNodesWithContainerInstances() { SoftwareSystem softwareSystem = model.addSoftwareSystem("Software System", ""); Container container = softwareSystem.addContainer("Container", "Description", "Technology"); DeploymentNode deploymentNodeParent = model.addDeploymentNode("Deployment Node", "Description", "Technology"); DeploymentNode deploymentNodeChild = deploymentNodeParent.addDeploymentNode("Deployment Node", "Description", "Technology"); ContainerInstance containerInstance = deploymentNodeChild.add(container); deploymentView = views.createDeploymentView(softwareSystem, "deployment", "Description"); deploymentView.addAllDeploymentNodes(); assertEquals(3, deploymentView.getElements().size()); assertTrue(deploymentView.getElements().contains(new ElementView(deploymentNodeParent))); assertTrue(deploymentView.getElements().contains(new ElementView(deploymentNodeChild))); assertTrue(deploymentView.getElements().contains(new ElementView(containerInstance))); }
@Test public void test_addAllDeploymentNodes_AddsDeploymentNodesAndContainerInstancesOnlyForTheSoftwareSystemInScope() { SoftwareSystem softwareSystem1 = model.addSoftwareSystem("Software System 1", ""); Container container1 = softwareSystem1.addContainer("Container 1", "Description", "Technology"); DeploymentNode deploymentNode1 = model.addDeploymentNode("Deployment Node 1", "Description", "Technology"); ContainerInstance containerInstance1 = deploymentNode1.add(container1); SoftwareSystem softwareSystem2 = model.addSoftwareSystem("Software System 2", ""); Container container2 = softwareSystem2.addContainer("Container 2", "Description", "Technology"); DeploymentNode deploymentNode2 = model.addDeploymentNode("Deployment Node 2", "Description", "Technology"); ContainerInstance containerInstance2 = deploymentNode2.add(container2); // two containers from different software systems on the same deployment node deploymentNode1.add(container2); deploymentView = views.createDeploymentView(softwareSystem1, "deployment", "Description"); deploymentView.addAllDeploymentNodes(); assertEquals(2, deploymentView.getElements().size()); assertTrue(deploymentView.getElements().contains(new ElementView(deploymentNode1))); assertTrue(deploymentView.getElements().contains(new ElementView(containerInstance1))); }
public static void main(String[] args) throws Exception { Workspace workspace = new Workspace("HTTP-based health checks example", "An example of how to use the HTTP-based health checks feature"); Model model = workspace.getModel(); ViewSet views = workspace.getViews(); SoftwareSystem structurizr = model.addSoftwareSystem("Structurizr", "A publishing platform for software architecture diagrams and documentation based upon the C4 model."); Container webApplication = structurizr.addContainer("structurizr.com", "Provides all of the server-side functionality of Structurizr, serving static and dynamic content to users.", "Java and Spring MVC"); Container database = structurizr.addContainer("Database", "Stores information about users, workspaces, etc.", "Relational Database Schema"); database.addTags(DATABASE_TAG); webApplication.uses(database, "Reads from and writes to", "JDBC"); DeploymentNode amazonWebServices = model.addDeploymentNode("Amazon Web Services", "", "us-east-1"); DeploymentNode pivotalWebServices = amazonWebServices.addDeploymentNode("Pivotal Web Services", "Platform as a Service provider.", "Cloud Foundry"); ContainerInstance liveWebApplication = pivotalWebServices.addDeploymentNode("www.structurizr.com", "An open source Java EE web server.", "Apache Tomcat") .add(webApplication); ContainerInstance liveDatabaseInstance = amazonWebServices.addDeploymentNode("Amazon RDS", "Database as a Service provider.", "MySQL") .add(database); // add health checks to the container instances, which return a simple HTTP 200 to say everything is okay liveWebApplication.addHealthCheck("Web Application is running", "https://www.structurizr.com/health"); liveDatabaseInstance.addHealthCheck("Database is accessible from Web Application", "https://www.structurizr.com/health/database"); // the pass/fail status from the health checks is used to supplement any deployment views that include the container instances that have health checks defined DeploymentView deploymentView = views.createDeploymentView(structurizr, "Deployment", "A deployment diagram showing the live environment."); deploymentView.setEnvironment("Live"); deploymentView.addAllDeploymentNodes(); views.getConfiguration().getStyles().addElementStyle(Tags.ELEMENT).color("#ffffff"); views.getConfiguration().getStyles().addElementStyle(DATABASE_TAG).shape(Shape.Cylinder); StructurizrClient structurizrClient = new StructurizrClient(API_KEY, API_SECRET); structurizrClient.putWorkspace(WORKSPACE_ID, workspace); }
deploymentView.addAllDeploymentNodes();