You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sv...@apache.org on 2015/10/21 08:19:02 UTC
[4/5] incubator-brooklyn git commit: Adds MachinesTest
Adds MachinesTest
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/6d155662
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/6d155662
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/6d155662
Branch: refs/heads/master
Commit: 6d155662a0d9188ef3c842817fb3ecf6d1e64b4f
Parents: 32fa1ae
Author: Aled Sage <al...@gmail.com>
Authored: Tue Oct 20 17:46:39 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Tue Oct 20 17:54:49 2015 +0100
----------------------------------------------------------------------
.../brooklyn/core/location/MachinesTest.java | 158 +++++++++++++++++++
1 file changed, 158 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/6d155662/core/src/test/java/org/apache/brooklyn/core/location/MachinesTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/location/MachinesTest.java b/core/src/test/java/org/apache/brooklyn/core/location/MachinesTest.java
new file mode 100644
index 0000000..6e3875f
--- /dev/null
+++ b/core/src/test/java/org/apache/brooklyn/core/location/MachinesTest.java
@@ -0,0 +1,158 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.core.location;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.api.location.LocationSpec;
+import org.apache.brooklyn.core.entity.Attributes;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
+import org.apache.brooklyn.core.test.entity.TestEntity;
+import org.apache.brooklyn.location.localhost.LocalhostMachineProvisioningLocation;
+import org.apache.brooklyn.location.localhost.LocalhostMachineProvisioningLocation.LocalhostMachine;
+import org.apache.brooklyn.location.ssh.SshMachineLocation;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableList;
+
+public class MachinesTest extends BrooklynAppUnitTestSupport {
+
+ protected String publicAddr = "1.2.3.4";
+ protected String privateAddr = "10.1.2.3";
+
+ protected SshMachineLocation sshMachine;
+ protected SshMachineLocation sshMachineWithoutPrivate;
+ protected SshMachineLocation localMachine;
+ protected LocalhostMachineProvisioningLocation otherLoc;
+
+ @BeforeMethod(alwaysRun=true)
+ public void setUp() throws Exception {
+ super.setUp();
+ sshMachine = mgmt.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class)
+ .configure("address", publicAddr)
+ .configure(SshMachineLocation.PRIVATE_ADDRESSES, ImmutableList.of(privateAddr)));
+ sshMachineWithoutPrivate = mgmt.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class)
+ .configure("address", publicAddr));
+ otherLoc = app.newLocalhostProvisioningLocation();
+ localMachine = otherLoc.obtain();
+ }
+
+ @Test
+ public void testFindUniqueMachineLocation() throws Exception {
+ assertEquals(Machines.findUniqueMachineLocation(ImmutableList.of(sshMachine, otherLoc)).get(), sshMachine);
+ assertFalse(Machines.findUniqueMachineLocation(ImmutableList.of(otherLoc)).isPresent());
+ }
+
+ @Test
+ @SuppressWarnings("deprecation")
+ public void testFindUniqueSshMachineLocation() throws Exception {
+ assertEquals(Machines.findUniqueSshMachineLocation(ImmutableList.of(sshMachine, otherLoc)).get(), sshMachine);
+ assertFalse(Machines.findUniqueSshMachineLocation(ImmutableList.of(otherLoc)).isPresent());
+ }
+
+ @Test
+ public void testFindUniqueMachineLocationOfType() throws Exception {
+ assertEquals(Machines.findUniqueMachineLocation(ImmutableList.of(sshMachine, otherLoc), SshMachineLocation.class).get(), sshMachine);
+ assertFalse(Machines.findUniqueMachineLocation(ImmutableList.of(sshMachine), LocalhostMachine.class).isPresent());
+ }
+
+ @Test
+ public void testFindSubnetIpFromAttribute() throws Exception {
+ TestEntity entity = app.addChild(EntitySpec.create(TestEntity.class)
+ .location(sshMachine));
+ entity.sensors().set(Attributes.SUBNET_ADDRESS, "myaddr");
+
+ assertEquals(Machines.findSubnetIp(entity).get(), "myaddr");
+ }
+
+ @Test
+ public void testFindSubnetIpFromLocation() throws Exception {
+ TestEntity entity = app.addChild(EntitySpec.create(TestEntity.class)
+ .location(sshMachine));
+
+ assertEquals(Machines.findSubnetIp(entity).get(), privateAddr);
+ }
+
+ @Test
+ public void testFindSubnetHostnameFromAttribute() throws Exception {
+ TestEntity entity = app.addChild(EntitySpec.create(TestEntity.class)
+ .location(sshMachine));
+ entity.sensors().set(Attributes.SUBNET_HOSTNAME, "myval");
+ assertEquals(Machines.findSubnetHostname(entity).get(), "myval");
+ }
+
+ @Test
+ public void testFindSubnetHostnameFromLocation() throws Exception {
+ TestEntity entity = app.addChild(EntitySpec.create(TestEntity.class)
+ .location(sshMachine));
+
+ assertEquals(Machines.findSubnetHostname(entity).get(), publicAddr);
+ }
+
+ @Test
+ public void testFindSubnetOrPrivateIpWithAddressAttributePrefersLocationPrivateIp() throws Exception {
+ TestEntity entity = app.addChild(EntitySpec.create(TestEntity.class)
+ .location(sshMachine));
+ entity.sensors().set(Attributes.ADDRESS, "myval");
+
+ assertEquals(Machines.findSubnetOrPrivateIp(entity).get(), privateAddr);
+ }
+
+ // TODO Why do we only return the "myval" (rather than publicAddr) if Attributes.ADDRESS is set?
+ @Test
+ public void testFindSubnetOrPrivateIpFromAttribute() throws Exception {
+ TestEntity entity = app.addChild(EntitySpec.create(TestEntity.class)
+ .location(sshMachine));
+ entity.sensors().set(Attributes.ADDRESS, "ignored-val");
+ entity.sensors().set(Attributes.SUBNET_ADDRESS, "myval");
+
+ assertEquals(Machines.findSubnetOrPrivateIp(entity).get(), "myval");
+ }
+
+ // TODO Why do we only return the privateAddr (rather than publicAddr) if Attributes.ADDRESS is set?
+ @Test
+ public void testFindSubnetOrPrivateIpFromLocation() throws Exception {
+ TestEntity entity = app.addChild(EntitySpec.create(TestEntity.class)
+ .location(sshMachine));
+ entity.sensors().set(Attributes.ADDRESS, "ignored-val");
+
+ assertEquals(Machines.findSubnetOrPrivateIp(entity).get(), privateAddr);
+ }
+
+ @Test
+ public void testFindSubnetOrPrivateIpFromLocationWithoutPrivate() throws Exception {
+ TestEntity entity = app.addChild(EntitySpec.create(TestEntity.class)
+ .location(sshMachineWithoutPrivate));
+ entity.sensors().set(Attributes.ADDRESS, "ignored-val");
+
+ assertEquals(Machines.findSubnetOrPrivateIp(entity).get(), publicAddr);
+ }
+
+ @Test
+ public void testWarnIfLocalhost() throws Exception {
+ assertFalse(Machines.warnIfLocalhost(ImmutableList.of(sshMachine), "my message"));
+
+ // Visual inspection test - expect a log.warn
+ assertTrue(Machines.warnIfLocalhost(ImmutableList.of(localMachine), "my message"));
+ }
+}