diff --git a/cloud/aws/src/main/java/de/taimos/dvalin/cloud/aws/EC2Context.java b/cloud/aws/src/main/java/de/taimos/dvalin/cloud/aws/EC2Context.java index 00578331..24d0cf38 100644 --- a/cloud/aws/src/main/java/de/taimos/dvalin/cloud/aws/EC2Context.java +++ b/cloud/aws/src/main/java/de/taimos/dvalin/cloud/aws/EC2Context.java @@ -48,7 +48,7 @@ public class EC2Context { @AWSClient - private AmazonEC2Client ec2; + private AmazonEC2Client ec2Client; @AWSClient private AmazonAutoScalingClient autoScalingClient; @@ -136,7 +136,7 @@ public List getPrivateAutoScalingMemberIPs(String autoScalingGroupName) List members = this.getAutoScalingMembers(autoScalingGroupName); DescribeInstancesRequest req = new DescribeInstancesRequest(); req.setInstanceIds(members); - DescribeInstancesResult result = this.ec2.describeInstances(req); + DescribeInstancesResult result = this.ec2Client.describeInstances(req); List list = new ArrayList<>(); for (Reservation reservation : result.getReservations()) { for (Instance instance : reservation.getInstances()) { @@ -200,7 +200,7 @@ public Map getAutoScalingGroupTags(String autoScalingGroupName) public Instance getInstance() { DescribeInstancesRequest req = new DescribeInstancesRequest(); req.setInstanceIds(Collections.singleton(this.getInstanceId())); - DescribeInstancesResult result = this.ec2.describeInstances(req); + DescribeInstancesResult result = this.ec2Client.describeInstances(req); if (result.getReservations().size() != 1) { throw new IllegalStateException("Found multiple instances"); } diff --git a/cloud/aws/src/test/java/de/taimos/dvalin/cloud/aws/CloudFormationTest.java b/cloud/aws/src/test/java/de/taimos/dvalin/cloud/aws/CloudFormationTest.java index e9def642..c7d09c2b 100644 --- a/cloud/aws/src/test/java/de/taimos/dvalin/cloud/aws/CloudFormationTest.java +++ b/cloud/aws/src/test/java/de/taimos/dvalin/cloud/aws/CloudFormationTest.java @@ -9,9 +9,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -58,7 +58,7 @@ public void setup() throws NoSuchFieldException, IllegalAccessException { ec2Field.setAccessible(true); ec2Field.set(this.cloudFormation, this.ec2Mock); - Field cfnField = CloudFormation.class.getDeclaredField("cloudFormation"); + Field cfnField = CloudFormation.class.getDeclaredField("cloudFormationClient"); cfnField.setAccessible(true); cfnField.set(this.cloudFormation, this.cfnMock); } diff --git a/cloud/aws/src/test/java/de/taimos/dvalin/cloud/aws/EC2ContextTest.java b/cloud/aws/src/test/java/de/taimos/dvalin/cloud/aws/EC2ContextTest.java index 67ceca70..bee78c7e 100644 --- a/cloud/aws/src/test/java/de/taimos/dvalin/cloud/aws/EC2ContextTest.java +++ b/cloud/aws/src/test/java/de/taimos/dvalin/cloud/aws/EC2ContextTest.java @@ -9,9 +9,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -58,7 +58,7 @@ @RunWith(PowerMockRunner.class) @PrepareForTest(EC2MetadataUtils.class) public class EC2ContextTest { - + private EC2Context context; @Mock private AmazonEC2Client ec2Mock; @@ -70,58 +70,58 @@ public class EC2ContextTest { @Before public void setUp() throws Exception { this.context = new EC2Context(); - - Field ec2Field = EC2Context.class.getDeclaredField("ec2"); + + Field ec2Field = EC2Context.class.getDeclaredField("ec2Client"); ec2Field.setAccessible(true); ec2Field.set(this.context, this.ec2Mock); - - Field asgField = EC2Context.class.getDeclaredField("autoScaling"); + + Field asgField = EC2Context.class.getDeclaredField("autoScalingClient"); asgField.setAccessible(true); asgField.set(this.context, this.asgMock); - + PowerMockito.mockStatic(EC2MetadataUtils.class); PowerMockito.when(EC2MetadataUtils.getInstanceId()).thenReturn(this.instanceId); } - + @Test - public void getHostId() throws Exception { + public void getHostId() { Assert.assertEquals("instanceId", this.context.getInstanceId()); } - + @Test - public void getHostTags() throws Exception { + public void getHostTags() { String tagName = "foo"; String tagValue = "bar"; - + DescribeInstancesResult res = new DescribeInstancesResult(); Instance instance = new Instance().withInstanceId(this.instanceId).withTags(new Tag(tagName, tagValue)); res.withReservations(new Reservation().withInstances(instance)); Mockito.when(this.ec2Mock.describeInstances(Mockito.any(DescribeInstancesRequest.class))).thenReturn(res); - + Map tags = this.context.getInstanceTags(); Assert.assertEquals(1, tags.size()); Assert.assertTrue(tags.containsKey(tagName)); Assert.assertEquals(tagValue, tags.get(tagName)); } - + @Test(expected = IllegalStateException.class) - public void testInvalidResponsesWithMultipleReservations() throws Exception { + public void testInvalidResponsesWithMultipleReservations() { DescribeInstancesResult res = new DescribeInstancesResult(); Instance instance = new Instance().withInstanceId(this.instanceId); res.withReservations(new Reservation().withInstances(instance), new Reservation().withInstances(instance)); Mockito.when(this.ec2Mock.describeInstances(Mockito.any(DescribeInstancesRequest.class))).thenReturn(res); this.context.getInstanceTags(); } - + @Test(expected = IllegalStateException.class) - public void testInvalidResponsesWithMissingReservations() throws Exception { + public void testInvalidResponsesWithMissingReservations() { DescribeInstancesResult res = new DescribeInstancesResult(); Mockito.when(this.ec2Mock.describeInstances(Mockito.any(DescribeInstancesRequest.class))).thenReturn(res); this.context.getInstanceTags(); } - + @Test(expected = IllegalStateException.class) - public void testInvalidResponsesWithMultipleInstances() throws Exception { + public void testInvalidResponsesWithMultipleInstances() { DescribeInstancesResult res = new DescribeInstancesResult(); Instance instance = new Instance().withInstanceId("instanceId"); Instance instance2 = new Instance().withInstanceId("instanceId2"); @@ -129,79 +129,79 @@ public void testInvalidResponsesWithMultipleInstances() throws Exception { Mockito.when(this.ec2Mock.describeInstances(Mockito.any(DescribeInstancesRequest.class))).thenReturn(res); this.context.getInstanceTags(); } - + @Test(expected = IllegalStateException.class) - public void testInvalidResponsesWithMissingInstances() throws Exception { + public void testInvalidResponsesWithMissingInstances() { DescribeInstancesResult res = new DescribeInstancesResult(); res.withReservations(new Reservation().withInstances()); Mockito.when(this.ec2Mock.describeInstances(Mockito.any(DescribeInstancesRequest.class))).thenReturn(res); this.context.getInstanceTags(); } - + @Test - public void getServerGroupName() throws Exception { + public void getServerGroupName() { AutoScalingInstanceDetails inst = new AutoScalingInstanceDetails().withAutoScalingGroupName("awsGroup"); DescribeAutoScalingInstancesResult res = new DescribeAutoScalingInstancesResult(); res.withAutoScalingInstances(inst); Mockito.when(this.asgMock.describeAutoScalingInstances(Mockito.any(DescribeAutoScalingInstancesRequest.class))).thenReturn(res); - + Assert.assertEquals("awsGroup", this.context.getAutoScalingGroup()); } - + @Test(expected = IllegalStateException.class) - public void getServerGroupNameWithInvalidResponseMultipleInstances() throws Exception { + public void getServerGroupNameWithInvalidResponseMultipleInstances() { AutoScalingInstanceDetails inst = new AutoScalingInstanceDetails().withAutoScalingGroupName("awsGroup"); AutoScalingInstanceDetails inst2 = new AutoScalingInstanceDetails().withAutoScalingGroupName("awsGroup"); DescribeAutoScalingInstancesResult res = new DescribeAutoScalingInstancesResult(); res.withAutoScalingInstances(inst, inst2); Mockito.when(this.asgMock.describeAutoScalingInstances(Mockito.any(DescribeAutoScalingInstancesRequest.class))).thenReturn(res); - + this.context.getAutoScalingGroup(); } - + @Test(expected = IllegalStateException.class) public void getServerGroupNameWithInvalidResponseMissingInstance() throws Exception { DescribeAutoScalingInstancesResult res = new DescribeAutoScalingInstancesResult(); res.withAutoScalingInstances(); Mockito.when(this.asgMock.describeAutoScalingInstances(Mockito.any(DescribeAutoScalingInstancesRequest.class))).thenReturn(res); - + this.context.getAutoScalingGroup(); } - + @Test - public void getServerGroupTags() throws Exception { + public void getServerGroupTags() { try { this.context.getAutoScalingGroupTags(null); Assert.fail("Null check failed"); } catch (Exception e) { Assert.assertEquals(IllegalArgumentException.class, e.getClass()); } - + try { this.context.getAutoScalingGroupTags(""); Assert.fail("Empty check failed"); } catch (Exception e) { Assert.assertEquals(IllegalArgumentException.class, e.getClass()); } - + String tagName = "foo"; String tagValue = "bar"; - + AutoScalingGroup grp = new AutoScalingGroup(); grp.setAutoScalingGroupName("awsGroup"); grp.withTags(new TagDescription().withKey(tagName).withValue(tagValue)); DescribeAutoScalingGroupsResult res = new DescribeAutoScalingGroupsResult(); res.setAutoScalingGroups(Collections.singleton(grp)); Mockito.when(this.asgMock.describeAutoScalingGroups(Mockito.any(DescribeAutoScalingGroupsRequest.class))).thenReturn(res); - + Map tags = this.context.getAutoScalingGroupTags("awsGroup"); Assert.assertEquals(1, tags.size()); Assert.assertTrue(tags.containsKey(tagName)); Assert.assertEquals(tagValue, tags.get(tagName)); } - + @Test - public void getServerGroupMembers() throws Exception { + public void getServerGroupMembers() { Collection instances = new ArrayList<>(); com.amazonaws.services.autoscaling.model.Instance healthyInstance = new com.amazonaws.services.autoscaling.model.Instance(); healthyInstance.setInstanceId("healthyOne"); @@ -211,90 +211,90 @@ public void getServerGroupMembers() throws Exception { unhealthyInstance.setInstanceId("unhealthyOne"); unhealthyInstance.setHealthStatus("Unhealthy"); instances.add(unhealthyInstance); - + AutoScalingGroup grp = new AutoScalingGroup(); grp.setAutoScalingGroupName("awsGroup"); grp.setInstances(instances); DescribeAutoScalingGroupsResult res = new DescribeAutoScalingGroupsResult(); res.setAutoScalingGroups(Collections.singleton(grp)); Mockito.when(this.asgMock.describeAutoScalingGroups(Mockito.any(DescribeAutoScalingGroupsRequest.class))).thenReturn(res); - + try { this.context.getAutoScalingMembers(null); Assert.fail("Null check failed"); } catch (Exception e) { Assert.assertEquals(IllegalArgumentException.class, e.getClass()); } - + try { this.context.getAutoScalingMembers(""); Assert.fail("Empty check failed"); } catch (Exception e) { Assert.assertEquals(IllegalArgumentException.class, e.getClass()); } - + List groupMembers = this.context.getAutoScalingMembers("awsGroup"); Assert.assertEquals(1, groupMembers.size()); Assert.assertEquals("healthyOne", groupMembers.get(0)); } - + @Test(expected = IllegalStateException.class) - public void getServerGroupMembersWithInvalidResponseMultipleGroups() throws Exception { + public void getServerGroupMembersWithInvalidResponseMultipleGroups() { AutoScalingGroup grp = new AutoScalingGroup().withAutoScalingGroupName("awsGroup"); AutoScalingGroup grp2 = new AutoScalingGroup().withAutoScalingGroupName("awsGroup2"); DescribeAutoScalingGroupsResult res = new DescribeAutoScalingGroupsResult(); res.withAutoScalingGroups(grp, grp2); Mockito.when(this.asgMock.describeAutoScalingGroups(Mockito.any(DescribeAutoScalingGroupsRequest.class))).thenReturn(res); - + this.context.getAutoScalingMembers("awsGroup"); } - + @Test(expected = IllegalStateException.class) - public void getServerGroupMembersWithInvalidResponseMissingGroups() throws Exception { + public void getServerGroupMembersWithInvalidResponseMissingGroups() { DescribeAutoScalingGroupsResult res = new DescribeAutoScalingGroupsResult(); res.withAutoScalingGroups(); Mockito.when(this.asgMock.describeAutoScalingGroups(Mockito.any(DescribeAutoScalingGroupsRequest.class))).thenReturn(res); - + this.context.getAutoScalingMembers("awsGroup"); } - + @Test - public void getServerGroupMemberAddresses() throws Exception { + public void getServerGroupMemberAddresses() { this.context = Mockito.spy(this.context); - + com.amazonaws.services.ec2.model.Instance instance = new com.amazonaws.services.ec2.model.Instance(); instance.setInstanceId("localId"); instance.setPrivateIpAddress("192.168.1.1"); instance.setState(new InstanceState().withName(InstanceStateName.Running)); - + com.amazonaws.services.ec2.model.Instance brokenInstance = new com.amazonaws.services.ec2.model.Instance(); brokenInstance.setInstanceId("otherId"); brokenInstance.setPrivateIpAddress("192.168.1.2"); brokenInstance.setState(new InstanceState().withName(InstanceStateName.ShuttingDown)); - + DescribeInstancesResult res = new DescribeInstancesResult(); res.withReservations(new Reservation().withInstances(instance, brokenInstance)); Mockito.when(this.ec2Mock.describeInstances(Mockito.any(DescribeInstancesRequest.class))).thenReturn(res); - + Mockito.doReturn(Collections.singletonList("localId")).when(this.context).getAutoScalingMembers(Mockito.anyString()); - + try { this.context.getPrivateAutoScalingMemberIPs(null); Assert.fail("Null check failed"); } catch (Exception e) { Assert.assertEquals(IllegalArgumentException.class, e.getClass()); } - + try { this.context.getPrivateAutoScalingMemberIPs(""); Assert.fail("Empty check failed"); } catch (Exception e) { Assert.assertEquals(IllegalArgumentException.class, e.getClass()); } - + List memberAddresses = this.context.getPrivateAutoScalingMemberIPs("awsGroup"); Assert.assertEquals(1, memberAddresses.size()); Assert.assertEquals("192.168.1.1", memberAddresses.get(0)); } - + }