http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/location/basic/SshMachineLocationPerformanceTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/location/basic/SshMachineLocationPerformanceTest.java b/core/src/test/java/brooklyn/location/basic/SshMachineLocationPerformanceTest.java deleted file mode 100644 index 5f265ee..0000000 --- a/core/src/test/java/brooklyn/location/basic/SshMachineLocationPerformanceTest.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * 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 brooklyn.location.basic; - -import java.io.ByteArrayOutputStream; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; - -import org.apache.brooklyn.test.PerformanceTestUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.util.collections.MutableMap; -import brooklyn.util.internal.ssh.SshTool; -import brooklyn.util.net.Networking; -import brooklyn.util.stream.Streams; -import brooklyn.util.text.Identifiers; -import brooklyn.util.time.Time; - -import com.google.common.base.Stopwatch; -import com.google.common.base.Throwables; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Lists; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; -import com.google.common.util.concurrent.ListeningExecutorService; -import com.google.common.util.concurrent.MoreExecutors; - -/** - * Test the performance of different variants of invoking the sshj tool. - * - * Intended for human-invocation and inspection, to see which parts are most expensive. - */ -public class SshMachineLocationPerformanceTest { - - private static final Logger LOG = LoggerFactory.getLogger(SshMachineLocationPerformanceTest.class); - - private SshMachineLocation machine; - private ListeningExecutorService executor; - - @BeforeMethod(alwaysRun=true) - public void setUp() throws Exception { - machine = new SshMachineLocation(MutableMap.of("address", "localhost")); - executor = MoreExecutors.listeningDecorator(Executors.newCachedThreadPool()); - } - - @AfterMethod(alwaysRun=true) - public void afterMethod() throws Exception { - if (executor != null) executor.shutdownNow(); - Streams.closeQuietly(machine); - } - - @Test(groups = {"Integration"}) - public void testConsecutiveSmallCommands() throws Exception { - runExecManyCommands(ImmutableList.of("true"), "small-cmd", 10); - } - - // Mimics SshSensorAdapter's polling - @Test(groups = {"Integration"}) - public void testConsecutiveSmallCommandsWithCustomStdoutAndErr() throws Exception { - final ByteArrayOutputStream stdout = new ByteArrayOutputStream(); - final ByteArrayOutputStream stderr = new ByteArrayOutputStream(); - - Runnable task = new Runnable() { - @Override public void run() { - machine.execScript(ImmutableMap.of("out", stdout, "err", stderr), "test", ImmutableList.of("true")); - }}; - runMany(task, "small-cmd-custom-stdout", 1, 10); - } - - @Test(groups = {"Integration"}) - public void testConcurrentSmallCommands() throws Exception { - runExecManyCommands(ImmutableList.of("true"), "small-cmd", 10, 10); - } - - @Test(groups = {"Integration"}) - public void testConsecutiveBigStdoutCommands() throws Exception { - runExecManyCommands(ImmutableList.of("head -c 100000 /dev/urandom"), "big-stdout", 10); - } - - @Test(groups = {"Integration"}) - public void testConsecutiveBigStdinCommands() throws Exception { - String bigstr = Identifiers.makeRandomId(100000); - runExecManyCommands(ImmutableList.of("echo "+bigstr+" | wc -c"), "big-stdin", 10); - } - - @Test(groups = {"Integration"}) - public void testConsecutiveSmallCommandsWithDifferentProperties() throws Exception { - final Map<String, ?> emptyProperties = Collections.emptyMap(); - final Map<String, ?> customProperties = MutableMap.of( - "address", Networking.getLocalHost(), - SshTool.PROP_SESSION_TIMEOUT.getName(), 20000, - SshTool.PROP_CONNECT_TIMEOUT.getName(), 50000, - SshTool.PROP_SCRIPT_HEADER.getName(), "#!/bin/bash"); - - Runnable task = new Runnable() { - @Override public void run() { - if (Math.random() < 0.5) { - machine.execScript(emptyProperties, "test", ImmutableList.of("true")); - } else { - machine.execScript(customProperties, "test", ImmutableList.of("true")); - } - }}; - runMany(task, "small-cmd-custom-ssh-properties", 1, 10); - } - - private void runExecManyCommands(final List<String> cmds, String context, int iterations) throws Exception { - runExecManyCommands(cmds, context, 1, iterations); - } - - private void runExecManyCommands(final List<String> cmds, String context, int concurrentRuns, int iterations) throws Exception { - Runnable task = new Runnable() { - @Override public void run() { - execScript(cmds); - }}; - runMany(task, context, concurrentRuns, iterations); - } - - private void runMany(final Runnable task, final String context, int concurrentRuns, int iterations) throws Exception { - long preCpuTime = PerformanceTestUtils.getProcessCpuTime(); - Stopwatch stopwatch = Stopwatch.createStarted(); - - for (int i = 0; i < iterations; i++) { - List<ListenableFuture<?>> futures = Lists.newArrayList(); - for (int j = 0; j < concurrentRuns; j++) { - futures.add(executor.submit(new Runnable() { - public void run() { - try { - task.run(); - } catch (Exception e) { - LOG.error("Error for "+context+", executing "+task, e); - throw Throwables.propagate(e); - } - }})); - } - Futures.allAsList(futures).get(); - - long postCpuTime = PerformanceTestUtils.getProcessCpuTime(); - long elapsedTime = stopwatch.elapsed(TimeUnit.MILLISECONDS); - double fractionCpu = (elapsedTime > 0) ? ((double)postCpuTime-preCpuTime) / TimeUnit.MILLISECONDS.toNanos(elapsedTime) : -1; - LOG.info("Executing {}; completed {}; took {}; fraction cpu {}", - new Object[] {context, (i+1), Time.makeTimeStringRounded(elapsedTime), fractionCpu}); - } - } - - private int execScript(List<String> cmds) { - return machine.execScript("mysummary", cmds); - } -}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/location/basic/SshMachineLocationReuseIntegrationTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/location/basic/SshMachineLocationReuseIntegrationTest.java b/core/src/test/java/brooklyn/location/basic/SshMachineLocationReuseIntegrationTest.java deleted file mode 100644 index cf9c058..0000000 --- a/core/src/test/java/brooklyn/location/basic/SshMachineLocationReuseIntegrationTest.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * 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 brooklyn.location.basic; - -import static org.testng.Assert.assertEquals; - -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.List; -import java.util.Map; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicInteger; - -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.basic.Entities; -import brooklyn.location.LocationSpec; -import brooklyn.management.internal.LocalManagementContext; -import brooklyn.test.Asserts; -import brooklyn.util.collections.MutableMap; -import brooklyn.util.internal.ssh.SshTool; -import brooklyn.util.internal.ssh.sshj.SshjTool; -import brooklyn.util.net.Networking; -import brooklyn.util.stream.Streams; -import brooklyn.util.time.Duration; - -import com.google.common.collect.ImmutableList; - -/** - * Tests the re-use of SshTools in SshMachineLocation - */ -public class SshMachineLocationReuseIntegrationTest { - - public static class RecordingSshjTool extends SshjTool { - public static final AtomicBoolean forbidden = new AtomicBoolean(false); - public static final AtomicInteger connectionCount = new AtomicInteger(0); - public static final AtomicInteger disconnectionCount = new AtomicInteger(); - - public RecordingSshjTool(Map<String, ?> map) { - super(map); - } - - @Override - public void connect() { - if (forbidden.get()) throw new IllegalStateException("forbidden at this time"); - connectionCount.incrementAndGet(); - super.connect(); - } - - @Override - public void disconnect() { - disconnectionCount.incrementAndGet(); - super.disconnect(); - } - - public static void reset() { - forbidden.set(false); - connectionCount.set(0); - disconnectionCount.set(0); - } - - @Override - public int execCommands(Map<String, ?> props, List<String> commands, Map<String, ?> env) { - if (forbidden.get()) throw new IllegalStateException("forbidden at this time"); - return super.execCommands(props, commands, env); - } - - @Override - public int execScript(Map<String, ?> props, List<String> commands, Map<String, ?> env) { - if (forbidden.get()) throw new IllegalStateException("forbidden at this time"); - return super.execScript(props, commands, env); - } - - @Override - public int execShellDirect(Map<String, ?> props, List<String> commands, Map<String, ?> env) { - if (forbidden.get()) throw new IllegalStateException("forbidden at this time"); - return super.execShellDirect(props, commands, env); - } - } - - private SshMachineLocation host; - private LocalManagementContext managementContext; - - @BeforeMethod(alwaysRun=true) - public void setUp() throws Exception { - managementContext = new LocalManagementContext(); - host = managementContext.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class) - .configure("address", Networking.getLocalHost()) - .configure(SshTool.PROP_TOOL_CLASS, RecordingSshjTool.class.getName())); - } - - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (host != null) Streams.closeQuietly(host); - if (managementContext != null) Entities.destroyAll(managementContext); - RecordingSshjTool.reset(); - } - - @Test(groups = "Integration") - public void testBasicReuse() throws Exception { - host.execScript("mysummary", ImmutableList.of("exit")); - host.execScript("mysummary", ImmutableList.of("exit")); - assertEquals(RecordingSshjTool.connectionCount.get(), 1, "Expected one SSH connection to have been recorded"); - } - - @Test(groups = "Integration") - public void testReuseWithInterestingProps() throws Exception { - host.execScript(customSshConfigKeys(), "mysummary", ImmutableList.of("exit")); - host.execScript(customSshConfigKeys(), "mysummary", ImmutableList.of("exit")); - assertEquals(RecordingSshjTool.connectionCount.get(), 1, "Expected one SSH connection to have been recorded"); - } - - @Test(groups = "Integration") - public void testNewConnectionForDifferentProps() throws Exception { - host.execScript("mysummary", ImmutableList.of("exit")); - host.execScript(customSshConfigKeys(), "mysummary", ImmutableList.of("exit")); - assertEquals(RecordingSshjTool.connectionCount.get(), 2, "Expected two SSH connections to have been recorded"); - } - - @Test(groups = "Integration") - public void testSshToolReusedWhenConfigDiffers() throws Exception { - Map<String, Object> props = customSshConfigKeys(); - host.execScript(props, "mysummary", ImmutableList.of("exit")); - - // Use another output stream for second request - props.put(SshTool.PROP_SCRIPT_HEADER.getName(), "#!/bin/bash -e\n"); - host.execScript(props, "mysummary", ImmutableList.of("exit")); - assertEquals(RecordingSshjTool.connectionCount.get(), 1, "Expected one SSH connection to have been recorded even though out script header differed."); - } - - @Test(groups = "Integration") - public void testSshCacheExpiresEvenIfNotUsed() throws Exception { - SshMachineLocation host2 = managementContext.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class) - .configure("address", InetAddress.getLocalHost()) - .configure(SshMachineLocation.SSH_CACHE_EXPIRY_DURATION, Duration.ONE_SECOND) - .configure(SshTool.PROP_TOOL_CLASS, RecordingSshjTool.class.getName())); - - Map<String, Object> props = customSshConfigKeys(); - host2.execScript(props, "mysummary", ImmutableList.of("exit")); - - Asserts.succeedsEventually(new Runnable() { - @Override public void run() { - assertEquals(RecordingSshjTool.disconnectionCount.get(), 1); - }}); - } - - public Map<String, Object> customSshConfigKeys() throws UnknownHostException { - return MutableMap.<String, Object>of( - "address", Networking.getLocalHost(), - SshTool.PROP_SESSION_TIMEOUT.getName(), 20000, - SshTool.PROP_CONNECT_TIMEOUT.getName(), 50000, - SshTool.PROP_SCRIPT_HEADER.getName(), "#!/bin/bash"); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/location/basic/SshMachineLocationTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/location/basic/SshMachineLocationTest.java b/core/src/test/java/brooklyn/location/basic/SshMachineLocationTest.java deleted file mode 100644 index 03df8fc..0000000 --- a/core/src/test/java/brooklyn/location/basic/SshMachineLocationTest.java +++ /dev/null @@ -1,340 +0,0 @@ -/* - * 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 brooklyn.location.basic; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertNull; -import static org.testng.Assert.assertSame; -import static org.testng.Assert.assertTrue; - -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.OutputStream; -import java.net.InetAddress; -import java.util.List; -import java.util.Map; -import java.util.concurrent.Callable; - -import org.apache.brooklyn.api.entity.Effector; -import org.apache.brooklyn.api.entity.basic.EntityLocal; -import org.apache.brooklyn.api.entity.proxying.EntityInitializer; -import org.apache.brooklyn.api.entity.proxying.EntitySpec; -import org.apache.brooklyn.api.management.ManagementContext; -import org.apache.brooklyn.test.entity.LocalManagementContextForTests; -import org.apache.brooklyn.test.entity.TestApplication; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.basic.ApplicationBuilder; -import brooklyn.entity.basic.BrooklynConfigKeys; -import brooklyn.entity.basic.Entities; -import brooklyn.entity.basic.EntityInternal; -import brooklyn.entity.effector.EffectorBody; -import brooklyn.entity.effector.EffectorTaskTest; -import brooklyn.entity.effector.Effectors; -import brooklyn.location.LocationSpec; -import brooklyn.location.MachineDetails; -import brooklyn.location.MachineLocation; -import brooklyn.location.PortRange; -import brooklyn.location.basic.PortRanges.LinearPortRange; -import brooklyn.test.Asserts; -import brooklyn.util.collections.MutableMap; -import brooklyn.util.config.ConfigBag; -import brooklyn.util.file.ArchiveUtils; -import brooklyn.util.guava.Maybe; -import brooklyn.util.internal.ssh.RecordingSshTool; -import brooklyn.util.internal.ssh.SshException; -import brooklyn.util.internal.ssh.SshTool; -import brooklyn.util.net.Networking; -import brooklyn.util.net.Urls; -import brooklyn.util.os.Os; -import brooklyn.util.stream.Streams; -import brooklyn.util.task.BasicExecutionContext; -import brooklyn.util.task.BasicExecutionManager; -import brooklyn.util.time.Duration; - -import com.google.common.base.Charsets; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.io.Files; - -/** - * Test the {@link SshMachineLocation} implementation of the {@link brooklyn.location.Location} interface. - */ -public class SshMachineLocationTest { - - private SshMachineLocation host; - private ManagementContext mgmt; - - @BeforeMethod(alwaysRun=true) - public void setUp() throws Exception { - mgmt = LocalManagementContextForTests.newInstance(); - host = new SshMachineLocation(MutableMap.of("address", Networking.getLocalHost())); - } - - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (host != null) Streams.closeQuietly(host); - if (mgmt != null) Entities.destroyAll(mgmt); - } - - @Test(groups = "Integration") - public void testGetMachineDetails() throws Exception { - BasicExecutionManager execManager = new BasicExecutionManager("mycontextid"); - BasicExecutionContext execContext = new BasicExecutionContext(execManager); - try { - MachineDetails details = execContext.submit(new Callable<MachineDetails>() { - public MachineDetails call() { - return host.getMachineDetails(); - }}).get(); - assertNotNull(details); - } finally { - execManager.shutdownNow(); - } - } - - @Test - public void testSupplyingMachineDetails() throws Exception { - MachineDetails machineDetails = new BasicMachineDetails(new BasicHardwareDetails(1, 1024), new BasicOsDetails("myname", "myarch", "myversion")); - SshMachineLocation host2 = mgmt.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class) - .configure(SshMachineLocation.MACHINE_DETAILS, machineDetails)); - - assertSame(host2.getMachineDetails(), machineDetails); - } - - @Test - public void testConfigurePrivateAddresses() throws Exception { - SshMachineLocation host2 = mgmt.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class) - .configure("address", Networking.getLocalHost()) - .configure(SshMachineLocation.PRIVATE_ADDRESSES, ImmutableList.of("1.2.3.4")) - .configure(BrooklynConfigKeys.SKIP_ON_BOX_BASE_DIR_RESOLUTION, true)); - - assertEquals(host2.getPrivateAddresses(), ImmutableSet.of("1.2.3.4")); - } - - // Wow, this is hard to test (until I accepted creating the entity + effector)! Code smell? - // Need to call getMachineDetails in a DynamicSequentialTask so that the "innessential" takes effect, - // to not fail its caller. But to get one of those outside of an effector is non-obvious. - @Test(groups = "Integration") - public void testGetMachineIsInessentialOnFailure() throws Exception { - SshMachineLocation host2 = mgmt.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class) - .configure("address", Networking.getLocalHost()) - .configure(SshTool.PROP_TOOL_CLASS, FailingSshTool.class.getName())); - - final Effector<MachineDetails> GET_MACHINE_DETAILS = Effectors.effector(MachineDetails.class, "getMachineDetails") - .impl(new EffectorBody<MachineDetails>() { - public MachineDetails call(ConfigBag parameters) { - Maybe<MachineLocation> machine = Machines.findUniqueMachineLocation(entity().getLocations()); - try { - machine.get().getMachineDetails(); - throw new IllegalStateException("Expected failure in ssh"); - } catch (RuntimeException e) { - return null; - } - }}) - .build(); - - EntitySpec<TestApplication> appSpec = EntitySpec.create(TestApplication.class) - .configure(BrooklynConfigKeys.SKIP_ON_BOX_BASE_DIR_RESOLUTION, true) - .addInitializer(new EntityInitializer() { - public void apply(EntityLocal entity) { - ((EntityInternal)entity).getMutableEntityType().addEffector(EffectorTaskTest.DOUBLE_1); - }}); - - TestApplication app = ApplicationBuilder.newManagedApp(appSpec, mgmt); - - app.start(ImmutableList.of(host2)); - - MachineDetails details = app.invoke(GET_MACHINE_DETAILS, ImmutableMap.<String, Object>of()).get(); - assertNull(details); - } - public static class FailingSshTool extends RecordingSshTool { - public FailingSshTool(Map<?, ?> props) { - super(props); - } - @Override public int execScript(Map<String, ?> props, List<String> commands, Map<String, ?> env) { - throw new RuntimeException("Simulating failure of ssh: cmds="+commands); - } - @Override public int execCommands(Map<String, ?> props, List<String> commands, Map<String, ?> env) { - throw new RuntimeException("Simulating failure of ssh: cmds="+commands); - } - } - - // Note: requires `ssh localhost` to be setup such that no password is required - @Test(groups = "Integration") - public void testSshExecScript() throws Exception { - OutputStream outStream = new ByteArrayOutputStream(); - String expectedName = Os.user(); - host.execScript(MutableMap.of("out", outStream), "mysummary", ImmutableList.of("whoami; exit")); - String outString = outStream.toString(); - - assertTrue(outString.contains(expectedName), outString); - } - - // Note: requires `ssh localhost` to be setup such that no password is required - @Test(groups = "Integration") - public void testSshExecCommands() throws Exception { - OutputStream outStream = new ByteArrayOutputStream(); - String expectedName = Os.user(); - host.execCommands(MutableMap.of("out", outStream), "mysummary", ImmutableList.of("whoami; exit")); - String outString = outStream.toString(); - - assertTrue(outString.contains(expectedName), outString); - } - - // For issue #230 - @Test(groups = "Integration") - public void testOverridingPropertyOnExec() throws Exception { - SshMachineLocation host = new SshMachineLocation(MutableMap.of("address", Networking.getLocalHost(), "sshPrivateKeyData", "wrongdata")); - - OutputStream outStream = new ByteArrayOutputStream(); - String expectedName = Os.user(); - host.execCommands(MutableMap.of("sshPrivateKeyData", null, "out", outStream), "my summary", ImmutableList.of("whoami")); - String outString = outStream.toString(); - - assertTrue(outString.contains(expectedName), "outString="+outString); - } - - @Test(groups = "Integration", expectedExceptions={IllegalStateException.class, SshException.class}) - public void testSshRunWithInvalidUserFails() throws Exception { - SshMachineLocation badHost = new SshMachineLocation(MutableMap.of("user", "doesnotexist", "address", Networking.getLocalHost())); - badHost.execScript("mysummary", ImmutableList.of("whoami; exit")); - } - - // Note: requires `ssh localhost` to be setup such that no password is required - @Test(groups = "Integration") - public void testCopyFileTo() throws Exception { - File dest = Os.newTempFile(getClass(), ".dest.tmp"); - File src = Os.newTempFile(getClass(), ".src.tmp"); - try { - Files.write("abc", src, Charsets.UTF_8); - host.copyTo(src, dest); - assertEquals("abc", Files.readFirstLine(dest, Charsets.UTF_8)); - } finally { - src.delete(); - dest.delete(); - } - } - - // Note: requires `ssh localhost` to be setup such that no password is required - @Test(groups = "Integration") - public void testCopyStreamTo() throws Exception { - String contents = "abc"; - File dest = new File(Os.tmp(), "sssMachineLocationTest_dest.tmp"); - try { - host.copyTo(Streams.newInputStreamWithContents(contents), dest.getAbsolutePath()); - assertEquals("abc", Files.readFirstLine(dest, Charsets.UTF_8)); - } finally { - dest.delete(); - } - } - - @Test(groups = "Integration") - public void testInstallUrlTo() throws Exception { - File dest = new File(Os.tmp(), "sssMachineLocationTest_dir/"); - dest.mkdir(); - try { - int result = host.installTo("https://raw.github.com/brooklyncentral/brooklyn/master/README.md", Urls.mergePaths(dest.getAbsolutePath(), "README.md")); - assertEquals(result, 0); - String contents = ArchiveUtils.readFullyString(new File(dest, "README.md")); - assertTrue(contents.contains("http://brooklyncentral.github.com"), "contents missing expected phrase; contains:\n"+contents); - } finally { - dest.delete(); - } - } - - @Test(groups = "Integration") - public void testInstallClasspathCopyTo() throws Exception { - File dest = new File(Os.tmp(), "sssMachineLocationTest_dir/"); - dest.mkdir(); - try { - int result = host.installTo("classpath://brooklyn/config/sample.properties", Urls.mergePaths(dest.getAbsolutePath(), "sample.properties")); - assertEquals(result, 0); - String contents = ArchiveUtils.readFullyString(new File(dest, "sample.properties")); - assertTrue(contents.contains("Property 1"), "contents missing expected phrase; contains:\n"+contents); - } finally { - dest.delete(); - } - } - - // Note: requires `ssh localhost` to be setup such that no password is required - @Test(groups = "Integration") - public void testIsSshableWhenTrue() throws Exception { - assertTrue(host.isSshable()); - } - - // Note: on some (home/airport) networks, `ssh 123.123.123.123` hangs seemingly forever. - // Make sure we fail, waiting for longer than the 70 second TCP timeout. - // - // Times out in 2m7s on Ubuntu Vivid (syn retries set to 6) - @Test(groups = "Integration") - public void testIsSshableWhenFalse() throws Exception { - byte[] unreachableIp = new byte[] {123,123,123,123}; - final SshMachineLocation unreachableHost = new SshMachineLocation(MutableMap.of("address", InetAddress.getByAddress("unreachablename", unreachableIp))); - Asserts.assertReturnsEventually(new Runnable() { - public void run() { - assertFalse(unreachableHost.isSshable()); - }}, - Duration.minutes(3)); - } - - @Test - public void obtainSpecificPortGivesOutPortOnlyOnce() { - int port = 2345; - assertTrue(host.obtainSpecificPort(port)); - assertFalse(host.obtainSpecificPort(port)); - host.releasePort(port); - assertTrue(host.obtainSpecificPort(port)); - } - - @Test - public void obtainPortInRangeGivesBackRequiredPortOnlyIfAvailable() { - int port = 2345; - assertEquals(host.obtainPort(new LinearPortRange(port, port)), port); - assertEquals(host.obtainPort(new LinearPortRange(port, port)), -1); - host.releasePort(port); - assertEquals(host.obtainPort(new LinearPortRange(port, port)), port); - } - - @Test - public void obtainPortInWideRange() { - int lowerPort = 2345; - int upperPort = 2350; - PortRange range = new LinearPortRange(lowerPort, upperPort); - for (int i = lowerPort; i <= upperPort; i++) { - assertEquals(host.obtainPort(range), i); - } - assertEquals(host.obtainPort(range), -1); - - host.releasePort(lowerPort); - assertEquals(host.obtainPort(range), lowerPort); - assertEquals(host.obtainPort(range), -1); - } - - @Test - public void testObtainPortDoesNotUsePreReservedPorts() { - host = new SshMachineLocation(MutableMap.of("address", Networking.getLocalHost(), "usedPorts", ImmutableSet.of(8000))); - assertEquals(host.obtainPort(PortRanges.fromString("8000")), -1); - assertEquals(host.obtainPort(PortRanges.fromString("8000+")), 8001); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/location/basic/TestPortSupplierLocation.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/location/basic/TestPortSupplierLocation.java b/core/src/test/java/brooklyn/location/basic/TestPortSupplierLocation.java deleted file mode 100644 index 193a31b..0000000 --- a/core/src/test/java/brooklyn/location/basic/TestPortSupplierLocation.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * 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 brooklyn.location.basic; - -import static org.testng.Assert.assertEquals; - -import org.apache.brooklyn.api.entity.proxying.EntitySpec; -import org.apache.brooklyn.test.entity.TestEntity; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.BrooklynAppUnitTestSupport; -import brooklyn.event.basic.PortAttributeSensorAndConfigKey; -import brooklyn.event.feed.ConfigToAttributes; - -import com.google.common.collect.ImmutableList; - -public class TestPortSupplierLocation extends BrooklynAppUnitTestSupport { - - SimulatedLocation loc; - PortAttributeSensorAndConfigKey ps; - TestEntity entity; - - @BeforeMethod(alwaysRun=true) - @Override - public void setUp() throws Exception { - super.setUp(); - loc = app.newSimulatedLocation(); - entity = app.createAndManageChild(EntitySpec.create(TestEntity.class)); - app.start(ImmutableList.of(loc)); - - ps = new PortAttributeSensorAndConfigKey("some.port", "for testing", "1234+"); - } - - @Test - public void testObtainsPort() throws Exception { - ConfigToAttributes.apply(entity, ps); - - int p = entity.getAttribute(ps); - assertEquals(p, 1234); - - //sensor access should keep the same value - p = entity.getAttribute(ps); - assertEquals(p, 1234); - } - - @Test - public void testRepeatedConvertAccessIncrements() throws Exception { - int p = ps.getAsSensorValue(entity); - assertEquals(p, 1234); - - //but direct access should see it as being reserved (not required behaviour, but it is the current behaviour) - int p2 = ps.getAsSensorValue(entity); - assertEquals(p2, 1235); - } - - @Test - public void testNullBeforeSetting() throws Exception { - // currently getting the attribute before explicitly setting return null; i.e. no "auto-set" -- - // but this behaviour may be changed - Integer p = entity.getAttribute(ps); - assertEquals(p, null); - } - - @Test - public void testSimulatedRestrictedPermitted() throws Exception { - loc.setPermittedPorts(PortRanges.fromString("1240+")); - - ConfigToAttributes.apply(entity, ps); - int p = entity.getAttribute(ps); - assertEquals((int)p, 1240); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/location/cloud/CloudMachineNamerTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/location/cloud/CloudMachineNamerTest.java b/core/src/test/java/brooklyn/location/cloud/CloudMachineNamerTest.java deleted file mode 100644 index a39c9dc..0000000 --- a/core/src/test/java/brooklyn/location/cloud/CloudMachineNamerTest.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * 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 brooklyn.location.cloud; - -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertTrue; - -import org.apache.brooklyn.api.entity.proxying.EntitySpec; -import org.apache.brooklyn.test.entity.LocalManagementContextForTests; -import org.apache.brooklyn.test.entity.TestApplication; -import org.apache.brooklyn.test.entity.TestEntity; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.Assert; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.basic.ApplicationBuilder; -import brooklyn.entity.basic.Entities; -import brooklyn.location.cloud.names.AbstractCloudMachineNamer; -import brooklyn.location.cloud.names.BasicCloudMachineNamer; -import brooklyn.location.cloud.names.CloudMachineNamer; -import brooklyn.util.config.ConfigBag; -import brooklyn.util.text.Strings; -public class CloudMachineNamerTest { - - private static final Logger log = LoggerFactory.getLogger(CloudMachineNamerTest.class); - - private TestApplication app; - - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (app != null) Entities.destroyAll(app.getManagementContext()); - } - - @Test - public void testGenerateGroupIdWithEntity() { - app = ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class).displayName("TistApp"), LocalManagementContextForTests.newInstance()); - TestEntity child = app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("TestEnt")); - - ConfigBag cfg = new ConfigBag() - .configure(CloudLocationConfig.CALLER_CONTEXT, child); - - String result = new BasicCloudMachineNamer().generateNewGroupId(cfg); - - log.info("test entity child group id gives: "+result); - // e.g. brooklyn-alex-tistapp-uube-testent-xisg-rwad - Assert.assertTrue(result.length() <= 60); - - String user = Strings.maxlen(System.getProperty("user.name"), 4).toLowerCase(); - Assert.assertTrue(result.indexOf(user) >= 0); - Assert.assertTrue(result.indexOf("-tistapp-") >= 0); - Assert.assertTrue(result.indexOf("-testent-") >= 0); - Assert.assertTrue(result.indexOf("-"+Strings.maxlen(app.getId(), 4).toLowerCase()) >= 0); - Assert.assertTrue(result.indexOf("-"+Strings.maxlen(child.getId(), 4).toLowerCase()) >= 0); - } - - @Test - public void testGenerateNewMachineName() { - app = ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class).displayName("TistApp"), LocalManagementContextForTests.newInstance()); - TestEntity child = app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("TestEnt")); - - ConfigBag cfg = new ConfigBag() - .configure(CloudLocationConfig.CALLER_CONTEXT, child); - BasicCloudMachineNamer namer = new BasicCloudMachineNamer(); - - String result = namer.generateNewMachineUniqueName(cfg); - Assert.assertTrue(result.length() <= namer.getMaxNameLength(cfg)); - String user = Strings.maxlen(System.getProperty("user.name"), 4).toLowerCase(); - Assert.assertTrue(result.indexOf(user) >= 0); - Assert.assertTrue(result.indexOf("-tistapp-") >= 0); - Assert.assertTrue(result.indexOf("-testent-") >= 0); - Assert.assertTrue(result.indexOf("-"+Strings.maxlen(app.getId(), 4).toLowerCase()) >= 0); - Assert.assertTrue(result.indexOf("-"+Strings.maxlen(child.getId(), 4).toLowerCase()) >= 0); - } - - @Test - public void testGenerateNewMachineUniqueNameFromGroupId() { - app = ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class).displayName("TistApp"), LocalManagementContextForTests.newInstance()); - TestEntity child = app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("TestEnt")); - - ConfigBag cfg = new ConfigBag() - .configure(CloudLocationConfig.CALLER_CONTEXT, child); - CloudMachineNamer namer = new BasicCloudMachineNamer(); - - String groupId = namer.generateNewGroupId(cfg); - String result = namer.generateNewMachineUniqueNameFromGroupId(cfg, groupId); - Assert.assertTrue(result.startsWith(groupId)); - Assert.assertTrue(result.length() == groupId.length() + 5); - } - - @Test - public void testLengthMaxPermittedForMachineName() { - app = ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class).displayName("TistApp"), LocalManagementContextForTests.newInstance()); - TestEntity child = app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("TestEnt")); - - ConfigBag cfg = new ConfigBag() - .configure(CloudLocationConfig.CALLER_CONTEXT, child); - BasicCloudMachineNamer namer = new BasicCloudMachineNamer(); - namer.setDefaultMachineNameMaxLength(10); - String result = namer.generateNewMachineUniqueName(cfg); - Assert.assertEquals(result.length(), 10); - } - - @Test - public void testLengthReservedForNameInGroup() { - app = ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class).displayName("TistApp"), LocalManagementContextForTests.newInstance()); - TestEntity child = app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("TestEnt")); - - ConfigBag cfg = new ConfigBag() - .configure(CloudLocationConfig.CALLER_CONTEXT, child); - BasicCloudMachineNamer namer = new BasicCloudMachineNamer(); - namer.setDefaultMachineNameMaxLength(20); - namer.setDefaultMachineNameSeparatorAndSaltLength(":I", 5); - String groupId = namer.generateNewGroupId(cfg); - Assert.assertEquals(13, groupId.length(), "groupId="+groupId); - String machineId = namer.generateNewMachineUniqueNameFromGroupId(cfg, groupId); - Assert.assertEquals(20, machineId.length(), "machineId="+machineId); - // separator is not sanitized -- caller should know what they are doing there! - Assert.assertTrue(machineId.startsWith(groupId+"-i"), "machineId="+machineId); - } - - @Test - public void testSanitizesNewMachineName() { - app = ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class).displayName("T_%$()\r\n\t[]*.!App"), LocalManagementContextForTests.newInstance()); - TestEntity child = app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("ent")); - - ConfigBag cfg = new ConfigBag() - .configure(CloudLocationConfig.CALLER_CONTEXT, child); - CloudMachineNamer namer = new BasicCloudMachineNamer(); - - String result = namer.generateNewMachineUniqueName(cfg); - assertTrue(result.indexOf("t-ap") >= 0, "result="+result); - for (int c : "_%$()\r\n\t[]*.!".getBytes()) { - assertFalse(result.contains(new String(new char [] {(char)c})), "result="+result); - } - } - - @Test - public void testSanitize() { - Assert.assertEquals(AbstractCloudMachineNamer.sanitize( - "me & you like alphanumeric but not _ or !!! or dots...dots...dots %$()\r\n\t[]*etc"), - "me-you-like-alphanumeric-but-not-or-or-dots-dots-dots-etc"); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/location/cloud/CustomMachineNamerTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/location/cloud/CustomMachineNamerTest.java b/core/src/test/java/brooklyn/location/cloud/CustomMachineNamerTest.java deleted file mode 100644 index e901e33..0000000 --- a/core/src/test/java/brooklyn/location/cloud/CustomMachineNamerTest.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * 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 brooklyn.location.cloud; - -import org.apache.brooklyn.api.entity.proxying.EntitySpec; -import org.apache.brooklyn.test.entity.LocalManagementContextForTests; -import org.apache.brooklyn.test.entity.TestApplication; -import org.apache.brooklyn.test.entity.TestEntity; -import org.testng.Assert; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import brooklyn.entity.basic.ApplicationBuilder; -import brooklyn.entity.basic.Entities; -import brooklyn.location.cloud.names.CustomMachineNamer; -import brooklyn.util.config.ConfigBag; - -import com.google.common.collect.ImmutableMap; - -public class CustomMachineNamerTest { - - private TestApplication app; - private TestEntity child; - private ConfigBag config; - - @BeforeMethod(alwaysRun=true) - public void setUp() { - app = ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class).displayName("TestApp"), LocalManagementContextForTests.newInstance()); - child = app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("TestEnt")); - config = new ConfigBag() - .configure(CloudLocationConfig.CALLER_CONTEXT, child); - } - - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (app != null) Entities.destroyAll(app.getManagementContext()); - } - - @Test - public void testMachineNameNoConfig() { - config.configure(CloudLocationConfig.CALLER_CONTEXT, child); - Assert.assertEquals(new CustomMachineNamer().generateNewMachineUniqueName(config), "TestEnt"); - } - - @Test - public void testMachineNameWithConfig() { - child.setSequenceValue(999); - config.configure(CustomMachineNamer.MACHINE_NAME_TEMPLATE, "number${entity.sequenceValue}"); - Assert.assertEquals(new CustomMachineNamer().generateNewMachineUniqueName(config), "number999"); - } - - @Test - public void testMachineNameWithExtraSubstitutions() { - config.configure(CustomMachineNamer.MACHINE_NAME_TEMPLATE, "foo-${fooName}-bar-${barName}-baz-${bazName.substitution}") - .configure(CustomMachineNamer.EXTRA_SUBSTITUTIONS, ImmutableMap.of("fooName", "foo", "barName", "bar", "bazName", this)); - Assert.assertEquals(new CustomMachineNamer().generateNewMachineUniqueName(config), "foo-foo-bar-bar-baz-baz"); - } - - public String getSubstitution() { - return "baz"; - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/location/geo/HostGeoInfoTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/location/geo/HostGeoInfoTest.java b/core/src/test/java/brooklyn/location/geo/HostGeoInfoTest.java deleted file mode 100644 index 1f82275..0000000 --- a/core/src/test/java/brooklyn/location/geo/HostGeoInfoTest.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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 brooklyn.location.geo; - -import static org.testng.AssertJUnit.assertEquals; -import static org.testng.AssertJUnit.assertNotNull; - -import org.testng.annotations.Test; - -import brooklyn.location.Location; -import brooklyn.location.basic.SimulatedLocation; -import brooklyn.util.collections.MutableMap; - -public class HostGeoInfoTest { - private static final String IP = "192.168.0.1"; - - private static final Location CUSTOM_LOCATION = new SimulatedLocation(MutableMap.of("name", "custom", "latitude", 50d, "longitude", 0d)); - private static final Location CUSTOM_LOCATION_CHILD = new SimulatedLocation(MutableMap.of("name", "custom-child", "address", IP, "parentLocation", CUSTOM_LOCATION)); - - @Test - public void testCustomLocationCoordinates() { - HostGeoInfo hgi = HostGeoInfo.fromLocation(CUSTOM_LOCATION); - assertNotNull(hgi); - assertEquals(50.0d, hgi.latitude); - assertEquals(0.0d, hgi.longitude); - } - - @Test - public void testCustomLocationChildCoordinates() { - HostGeoInfo hgi = HostGeoInfo.fromLocation(CUSTOM_LOCATION_CHILD); - assertNotNull(hgi); - assertEquals(50.0d, hgi.latitude); - assertEquals(0.0d, hgi.longitude); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/location/geo/HostGeoLookupIntegrationTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/location/geo/HostGeoLookupIntegrationTest.java b/core/src/test/java/brooklyn/location/geo/HostGeoLookupIntegrationTest.java deleted file mode 100644 index c362ab4..0000000 --- a/core/src/test/java/brooklyn/location/geo/HostGeoLookupIntegrationTest.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * 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 brooklyn.location.geo; - -import java.net.InetAddress; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.Assert; -import org.testng.annotations.Test; - -import brooklyn.location.basic.LocalhostMachineProvisioningLocation; -import brooklyn.location.basic.SshMachineLocation; -import brooklyn.util.time.Duration; - -import com.google.common.base.Objects; - -public class HostGeoLookupIntegrationTest { - - public static final Logger log = LoggerFactory.getLogger(HostGeoLookupIntegrationTest.class); - - // Needs fast network connectivity to figure out the external IP. If response not returned in 2s fails. - @Test(groups = "Integration") - public void testLocalhostGetsLocation() throws Exception { - LocalhostMachineProvisioningLocation ll = new LocalhostMachineProvisioningLocation(); - SshMachineLocation l = ll.obtain(); - HostGeoInfo geo = HostGeoInfo.fromLocation(l); - Assert.assertNotNull(geo, "host lookup unavailable - is the maxmind database installed? or else network unavailable or too slow?"); - log.info("localhost is in "+geo); - Assert.assertNotNull(geo, "couldn't load data; must have a valid HostGeoLookup impl (e.g. MaxMind installed, or online and with Utrace credit)"); - Assert.assertTrue(-90 <= geo.latitude && geo.latitude <= 90); - ll.close(); - } - - @Deprecated // see GeoBytesHostGeoLookup - their API changed - @Test(groups = "Integration", enabled=false) - public void testGeobytesLookup() throws Exception { - HostGeoInfo geo = new GeoBytesHostGeoLookup().getHostGeoInfo(InetAddress.getByName("geobytes.com")); - Assert.assertNotNull(geo, "host lookup unavailable"); - Assert.assertEquals(geo.displayName, "Baltimore (US)"); - Assert.assertEquals(geo.latitude, 39.2894, 0.1); - Assert.assertEquals(geo.longitude, -76.6384, 0.1); - } - - @Test(groups = "Integration") - public void testUtraceLookup() throws Exception { - // The test times out in a VM - VirtualBox + Ubuntu Vivid, possibly due to proxy usage? - // Increase the timeout so we can actually test it's working correctly, regardless of test environment. - HostGeoInfo geo = new UtraceHostGeoLookup().getHostGeoInfo(InetAddress.getByName("utrace.de"), Duration.THIRTY_SECONDS); - Assert.assertNotNull(geo, "host lookup unavailable - maybe network not available "); - Assert.assertTrue(geo.displayName.contains("(DE)")); - Assert.assertEquals(geo.latitude, 51, 2); - Assert.assertEquals(geo.longitude, 9, 5); - } - - @Test(groups = "Integration") // only works if maxmind database is installed to ~/.brooklyn/ - public void testMaxmindLookup() throws Exception { - HostGeoInfo geo = new MaxMind2HostGeoLookup().getHostGeoInfo(InetAddress.getByName("maxmind.com")); - Assert.assertNotNull(geo, "host lookup unavailable - is the maxmind database installed?"); - log.info("maxmind.com at "+geo); - - // used to be Washington; now Dallas - in case this changes again, we will accept either! - // also have seen variation in lat/lon reported, so happy to within one degree now - Assert.assertTrue(Objects.equal(geo.displayName, "Washington, DC (US)") || Objects.equal(geo.displayName, "Dallas, TX (US)"), "name="+geo.displayName); - Assert.assertTrue(Math.abs(geo.latitude - 38.90) <= 1 || Math.abs(geo.latitude - 32.78) <= 1, "lat="+geo.latitude); - Assert.assertTrue(Math.abs(geo.longitude - -77.02) <= 1 || Math.abs(geo.longitude - -96.82) <= 1, "lon="+geo.longitude); - } -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/location/geo/LocalhostExternalIpLoaderIntegrationTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/location/geo/LocalhostExternalIpLoaderIntegrationTest.java b/core/src/test/java/brooklyn/location/geo/LocalhostExternalIpLoaderIntegrationTest.java deleted file mode 100644 index 6ec9b00..0000000 --- a/core/src/test/java/brooklyn/location/geo/LocalhostExternalIpLoaderIntegrationTest.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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 brooklyn.location.geo; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; - -import java.util.Set; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.annotations.Test; - -import com.google.common.collect.Sets; - -public class LocalhostExternalIpLoaderIntegrationTest { - - private static final Logger LOG = LoggerFactory.getLogger(LocalhostExternalIpLoaderIntegrationTest.class); - - @Test(groups = "Integration") - public void testHostsAgreeOnExternalIp() { - Set<String> ips = Sets.newHashSet(); - for (String url : LocalhostExternalIpLoader.getIpAddressWebsites()) { - String ip = LocalhostExternalIpLoader.getIpAddressFrom(url); - LOG.debug("IP from {}: {}", url, ip); - ips.add(ip); - } - assertEquals(ips.size(), 1, "Expected all IP suppliers to agree on the external IP address of Brooklyn. " + - "Check logs for source responses. ips=" + ips); - } - - @Test(groups = "Integration") - public void testLoadExternalIp() { - assertNotNull(LocalhostExternalIpLoader.getLocalhostIpWaiting()); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/management/entitlement/AcmeEntitlementManagerTestFixture.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/management/entitlement/AcmeEntitlementManagerTestFixture.java b/core/src/test/java/brooklyn/management/entitlement/AcmeEntitlementManagerTestFixture.java index 361c636..018641e 100644 --- a/core/src/test/java/brooklyn/management/entitlement/AcmeEntitlementManagerTestFixture.java +++ b/core/src/test/java/brooklyn/management/entitlement/AcmeEntitlementManagerTestFixture.java @@ -36,10 +36,7 @@ import brooklyn.config.BrooklynProperties; import brooklyn.entity.basic.ApplicationBuilder; import brooklyn.entity.basic.BasicApplication; import brooklyn.entity.basic.Entities; -import brooklyn.location.Location; -import brooklyn.management.entitlement.Entitlements; -import brooklyn.management.entitlement.NotEntitledException; -import brooklyn.management.entitlement.WebEntitlementContext; +import org.apache.brooklyn.location.Location; import brooklyn.management.entitlement.Entitlements.EntityAndItem; import brooklyn.management.entitlement.Entitlements.StringAndArgument; import brooklyn.util.config.ConfigBag; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/management/entitlement/EntityEntitlementTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/management/entitlement/EntityEntitlementTest.java b/core/src/test/java/brooklyn/management/entitlement/EntityEntitlementTest.java index 6aa9167..c4c8956 100644 --- a/core/src/test/java/brooklyn/management/entitlement/EntityEntitlementTest.java +++ b/core/src/test/java/brooklyn/management/entitlement/EntityEntitlementTest.java @@ -34,7 +34,7 @@ import brooklyn.config.BrooklynProperties; import brooklyn.entity.basic.ApplicationBuilder; import brooklyn.entity.basic.BasicApplication; import brooklyn.entity.basic.Entities; -import brooklyn.location.Location; +import org.apache.brooklyn.location.Location; import brooklyn.management.entitlement.Entitlements.EntityAndItem; import brooklyn.management.entitlement.Entitlements.StringAndArgument; import brooklyn.management.internal.LocalManagementContext; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/management/ha/HighAvailabilityManagerInMemoryTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/management/ha/HighAvailabilityManagerInMemoryTest.java b/core/src/test/java/brooklyn/management/ha/HighAvailabilityManagerInMemoryTest.java index b4d4def..1062229 100644 --- a/core/src/test/java/brooklyn/management/ha/HighAvailabilityManagerInMemoryTest.java +++ b/core/src/test/java/brooklyn/management/ha/HighAvailabilityManagerInMemoryTest.java @@ -34,10 +34,10 @@ import org.testng.annotations.Test; import brooklyn.entity.basic.EntityInternal; import brooklyn.entity.rebind.persister.InMemoryObjectStore; import brooklyn.entity.rebind.persister.PersistenceObjectStore; -import brooklyn.location.Location; -import brooklyn.location.NoMachinesAvailableException; -import brooklyn.location.basic.LocalhostMachineProvisioningLocation; -import brooklyn.location.basic.SshMachineLocation; +import org.apache.brooklyn.location.Location; +import org.apache.brooklyn.location.NoMachinesAvailableException; +import org.apache.brooklyn.location.basic.LocalhostMachineProvisioningLocation; +import org.apache.brooklyn.location.basic.SshMachineLocation; import brooklyn.management.internal.LocalManagementContext; import brooklyn.util.collections.MutableList; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/management/ha/HighAvailabilityManagerSplitBrainTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/management/ha/HighAvailabilityManagerSplitBrainTest.java b/core/src/test/java/brooklyn/management/ha/HighAvailabilityManagerSplitBrainTest.java index d085acf..ea99621 100644 --- a/core/src/test/java/brooklyn/management/ha/HighAvailabilityManagerSplitBrainTest.java +++ b/core/src/test/java/brooklyn/management/ha/HighAvailabilityManagerSplitBrainTest.java @@ -50,7 +50,7 @@ import brooklyn.entity.rebind.persister.ListeningObjectStore; import brooklyn.entity.rebind.persister.PersistMode; import brooklyn.entity.rebind.persister.PersistenceObjectStore; import brooklyn.internal.BrooklynFeatureEnablement; -import brooklyn.location.Location; +import org.apache.brooklyn.location.Location; import brooklyn.management.ha.TestEntityFailingRebind.RebindException; import brooklyn.management.internal.ManagementContextInternal; import brooklyn.test.Asserts; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/management/ha/HotStandbyTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/management/ha/HotStandbyTest.java b/core/src/test/java/brooklyn/management/ha/HotStandbyTest.java index 192a649..ae9e3b4 100644 --- a/core/src/test/java/brooklyn/management/ha/HotStandbyTest.java +++ b/core/src/test/java/brooklyn/management/ha/HotStandbyTest.java @@ -58,9 +58,9 @@ import brooklyn.entity.rebind.persister.InMemoryObjectStore; import brooklyn.entity.rebind.persister.ListeningObjectStore; import brooklyn.entity.rebind.persister.PersistMode; import brooklyn.entity.rebind.persister.PersistenceObjectStore; -import brooklyn.location.Location; -import brooklyn.location.LocationSpec; -import brooklyn.location.basic.LocalhostMachineProvisioningLocation.LocalhostMachine; +import org.apache.brooklyn.location.Location; +import org.apache.brooklyn.location.LocationSpec; +import org.apache.brooklyn.location.basic.LocalhostMachineProvisioningLocation.LocalhostMachine; import brooklyn.management.internal.AbstractManagementContext; import brooklyn.management.internal.ManagementContextInternal; import brooklyn.util.collections.MutableList; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/management/ha/WarmStandbyTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/management/ha/WarmStandbyTest.java b/core/src/test/java/brooklyn/management/ha/WarmStandbyTest.java index e4ab1ca..4afc78c 100644 --- a/core/src/test/java/brooklyn/management/ha/WarmStandbyTest.java +++ b/core/src/test/java/brooklyn/management/ha/WarmStandbyTest.java @@ -42,7 +42,7 @@ import brooklyn.entity.rebind.persister.InMemoryObjectStore; import brooklyn.entity.rebind.persister.ListeningObjectStore; import brooklyn.entity.rebind.persister.PersistMode; import brooklyn.entity.rebind.persister.PersistenceObjectStore; -import brooklyn.location.Location; +import org.apache.brooklyn.location.Location; import brooklyn.management.internal.ManagementContextInternal; import brooklyn.util.collections.MutableList; import brooklyn.util.collections.MutableMap; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/management/internal/AccessManagerTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/management/internal/AccessManagerTest.java b/core/src/test/java/brooklyn/management/internal/AccessManagerTest.java index 4faf676..59d92c7 100644 --- a/core/src/test/java/brooklyn/management/internal/AccessManagerTest.java +++ b/core/src/test/java/brooklyn/management/internal/AccessManagerTest.java @@ -33,9 +33,9 @@ import org.testng.annotations.Test; import brooklyn.entity.basic.ApplicationBuilder; import brooklyn.entity.basic.Entities; -import brooklyn.location.Location; -import brooklyn.location.LocationSpec; -import brooklyn.location.basic.SimulatedLocation; +import org.apache.brooklyn.location.Location; +import org.apache.brooklyn.location.LocationSpec; +import org.apache.brooklyn.location.basic.SimulatedLocation; import brooklyn.util.exceptions.Exceptions; import com.google.common.collect.ImmutableSet; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/management/internal/LocalManagementContextTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/management/internal/LocalManagementContextTest.java b/core/src/test/java/brooklyn/management/internal/LocalManagementContextTest.java index 2d1f296..a648c74 100644 --- a/core/src/test/java/brooklyn/management/internal/LocalManagementContextTest.java +++ b/core/src/test/java/brooklyn/management/internal/LocalManagementContextTest.java @@ -33,7 +33,7 @@ import org.testng.annotations.Test; import brooklyn.config.BrooklynProperties; import brooklyn.config.BrooklynProperties.Factory.Builder; -import brooklyn.location.Location; +import org.apache.brooklyn.location.Location; import brooklyn.util.os.Os; import com.google.common.base.Charsets; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/policy/basic/PolicySubscriptionTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/policy/basic/PolicySubscriptionTest.java b/core/src/test/java/brooklyn/policy/basic/PolicySubscriptionTest.java index 3981af7..e3b2dc8 100644 --- a/core/src/test/java/brooklyn/policy/basic/PolicySubscriptionTest.java +++ b/core/src/test/java/brooklyn/policy/basic/PolicySubscriptionTest.java @@ -31,7 +31,7 @@ import org.apache.brooklyn.entity.basic.RecordingSensorEventListener; import org.apache.brooklyn.test.entity.TestEntity; import brooklyn.event.basic.BasicSensorEvent; -import brooklyn.location.basic.SimulatedLocation; +import org.apache.brooklyn.location.basic.SimulatedLocation; import brooklyn.test.Asserts; import com.google.common.collect.ImmutableList; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/qa/longevity/EntityCleanupLongevityTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/qa/longevity/EntityCleanupLongevityTest.java b/core/src/test/java/brooklyn/qa/longevity/EntityCleanupLongevityTest.java index 4e2cb24..6b8f87c 100644 --- a/core/src/test/java/brooklyn/qa/longevity/EntityCleanupLongevityTest.java +++ b/core/src/test/java/brooklyn/qa/longevity/EntityCleanupLongevityTest.java @@ -20,8 +20,8 @@ package brooklyn.qa.longevity; import org.testng.annotations.Test; -import brooklyn.location.LocationSpec; -import brooklyn.location.basic.SimulatedLocation; +import org.apache.brooklyn.location.LocationSpec; +import org.apache.brooklyn.location.basic.SimulatedLocation; import brooklyn.util.javalang.JavaClassNames; /** http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/qa/longevity/EntityCleanupLongevityTestFixture.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/qa/longevity/EntityCleanupLongevityTestFixture.java b/core/src/test/java/brooklyn/qa/longevity/EntityCleanupLongevityTestFixture.java index a6843e4..225dc08 100644 --- a/core/src/test/java/brooklyn/qa/longevity/EntityCleanupLongevityTestFixture.java +++ b/core/src/test/java/brooklyn/qa/longevity/EntityCleanupLongevityTestFixture.java @@ -39,8 +39,8 @@ import brooklyn.entity.basic.Entities; import brooklyn.internal.storage.BrooklynStorage; import brooklyn.internal.storage.DataGrid; import brooklyn.internal.storage.impl.BrooklynStorageImpl; -import brooklyn.location.LocationSpec; -import brooklyn.location.basic.SimulatedLocation; +import org.apache.brooklyn.location.LocationSpec; +import org.apache.brooklyn.location.basic.SimulatedLocation; import brooklyn.management.internal.AbstractManagementContext; import brooklyn.management.internal.LocalManagementContext; import brooklyn.management.internal.ManagementContextInternal; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/qa/longevity/EntityCleanupTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/qa/longevity/EntityCleanupTest.java b/core/src/test/java/brooklyn/qa/longevity/EntityCleanupTest.java index 1e3898c..2313e08 100644 --- a/core/src/test/java/brooklyn/qa/longevity/EntityCleanupTest.java +++ b/core/src/test/java/brooklyn/qa/longevity/EntityCleanupTest.java @@ -20,8 +20,8 @@ package brooklyn.qa.longevity; import org.testng.annotations.Test; -import brooklyn.location.LocationSpec; -import brooklyn.location.basic.SimulatedLocation; +import org.apache.brooklyn.location.LocationSpec; +import org.apache.brooklyn.location.basic.SimulatedLocation; import brooklyn.util.javalang.JavaClassNames; public class EntityCleanupTest extends EntityCleanupLongevityTestFixture { http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/qa/performance/AbstractPerformanceTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/qa/performance/AbstractPerformanceTest.java b/core/src/test/java/brooklyn/qa/performance/AbstractPerformanceTest.java index 87784f0..ec6553d 100644 --- a/core/src/test/java/brooklyn/qa/performance/AbstractPerformanceTest.java +++ b/core/src/test/java/brooklyn/qa/performance/AbstractPerformanceTest.java @@ -31,7 +31,7 @@ import org.testng.annotations.BeforeMethod; import brooklyn.entity.basic.ApplicationBuilder; import brooklyn.entity.basic.Entities; -import brooklyn.location.basic.SimulatedLocation; +import org.apache.brooklyn.location.basic.SimulatedLocation; import brooklyn.util.internal.DoubleSystemProperty; import com.google.common.base.Stopwatch; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/qa/performance/EntityPersistencePerformanceTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/qa/performance/EntityPersistencePerformanceTest.java b/core/src/test/java/brooklyn/qa/performance/EntityPersistencePerformanceTest.java index 84ce2f1..1f8b669 100644 --- a/core/src/test/java/brooklyn/qa/performance/EntityPersistencePerformanceTest.java +++ b/core/src/test/java/brooklyn/qa/performance/EntityPersistencePerformanceTest.java @@ -30,8 +30,8 @@ import org.apache.brooklyn.test.entity.TestEntity; import org.testng.annotations.Test; import brooklyn.entity.rebind.RebindTestFixtureWithApp; -import brooklyn.location.LocationSpec; -import brooklyn.location.basic.SimulatedLocation; +import org.apache.brooklyn.location.LocationSpec; +import org.apache.brooklyn.location.basic.SimulatedLocation; import brooklyn.test.policy.TestPolicy; import brooklyn.util.repeat.Repeater; import brooklyn.util.time.Duration; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/test/HttpService.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/test/HttpService.java b/core/src/test/java/brooklyn/test/HttpService.java index 6b9aa94..8a73541 100644 --- a/core/src/test/java/brooklyn/test/HttpService.java +++ b/core/src/test/java/brooklyn/test/HttpService.java @@ -39,8 +39,8 @@ import org.eclipse.jetty.webapp.WebAppContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import brooklyn.location.PortRange; -import brooklyn.location.basic.LocalhostMachineProvisioningLocation; +import org.apache.brooklyn.location.PortRange; +import org.apache.brooklyn.location.basic.LocalhostMachineProvisioningLocation; import brooklyn.util.ResourceUtils; import brooklyn.util.crypto.SecureKeys; import brooklyn.util.javalang.Threads; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/test/location/TestPaasLocation.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/test/location/TestPaasLocation.java b/core/src/test/java/brooklyn/test/location/TestPaasLocation.java index be2ba56..0021d89 100644 --- a/core/src/test/java/brooklyn/test/location/TestPaasLocation.java +++ b/core/src/test/java/brooklyn/test/location/TestPaasLocation.java @@ -18,11 +18,11 @@ */ package brooklyn.test.location; -import brooklyn.location.basic.AbstractLocation; -import brooklyn.location.paas.PaasLocation; +import org.apache.brooklyn.location.basic.AbstractLocation; +import org.apache.brooklyn.location.paas.PaasLocation; /** - * Mock {@link brooklyn.location.paas.PaasLocation} for test purposes + * Mock {@link PaasLocation} for test purposes */ public class TestPaasLocation extends AbstractLocation implements PaasLocation { @Override http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/util/file/ArchiveUtilsTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/file/ArchiveUtilsTest.java b/core/src/test/java/brooklyn/util/file/ArchiveUtilsTest.java index dba8410..6715444 100644 --- a/core/src/test/java/brooklyn/util/file/ArchiveUtilsTest.java +++ b/core/src/test/java/brooklyn/util/file/ArchiveUtilsTest.java @@ -32,7 +32,7 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import brooklyn.entity.BrooklynAppUnitTestSupport; -import brooklyn.location.basic.SshMachineLocation; +import org.apache.brooklyn.location.basic.SshMachineLocation; import brooklyn.util.ResourceUtils; import brooklyn.util.os.Os; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/util/http/HttpToolIntegrationTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/http/HttpToolIntegrationTest.java b/core/src/test/java/brooklyn/util/http/HttpToolIntegrationTest.java index f6fc1cd..dc9fc31 100644 --- a/core/src/test/java/brooklyn/util/http/HttpToolIntegrationTest.java +++ b/core/src/test/java/brooklyn/util/http/HttpToolIntegrationTest.java @@ -27,7 +27,7 @@ import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import brooklyn.location.basic.PortRanges; +import org.apache.brooklyn.location.basic.PortRanges; import brooklyn.test.HttpService; import com.google.common.collect.ImmutableMap; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/util/ssh/BashCommandsIntegrationTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/ssh/BashCommandsIntegrationTest.java b/core/src/test/java/brooklyn/util/ssh/BashCommandsIntegrationTest.java index 1f8ba28..accac56 100644 --- a/core/src/test/java/brooklyn/util/ssh/BashCommandsIntegrationTest.java +++ b/core/src/test/java/brooklyn/util/ssh/BashCommandsIntegrationTest.java @@ -44,8 +44,8 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import brooklyn.entity.basic.Entities; -import brooklyn.location.basic.LocalhostMachineProvisioningLocation; -import brooklyn.location.basic.SshMachineLocation; +import org.apache.brooklyn.location.basic.LocalhostMachineProvisioningLocation; +import org.apache.brooklyn.location.basic.SshMachineLocation; import brooklyn.util.javalang.JavaClassNames; import brooklyn.util.net.Networking; import brooklyn.util.os.Os; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/brooklyn/util/task/ssh/SshTasksTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/util/task/ssh/SshTasksTest.java b/core/src/test/java/brooklyn/util/task/ssh/SshTasksTest.java index 1f31447..6fd7560 100644 --- a/core/src/test/java/brooklyn/util/task/ssh/SshTasksTest.java +++ b/core/src/test/java/brooklyn/util/task/ssh/SshTasksTest.java @@ -32,9 +32,9 @@ import org.testng.annotations.Test; import brooklyn.entity.basic.BrooklynConfigKeys; import brooklyn.entity.basic.Entities; -import brooklyn.location.LocationSpec; -import brooklyn.location.basic.LocalhostMachineProvisioningLocation; -import brooklyn.location.basic.SshMachineLocation; +import org.apache.brooklyn.location.LocationSpec; +import org.apache.brooklyn.location.basic.LocalhostMachineProvisioningLocation; +import org.apache.brooklyn.location.basic.SshMachineLocation; import brooklyn.management.internal.LocalManagementContext; import brooklyn.util.net.Urls; import brooklyn.util.os.Os; http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/core/src/test/java/org/apache/brooklyn/location/access/PortForwardManagerLocationResolverTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/location/access/PortForwardManagerLocationResolverTest.java b/core/src/test/java/org/apache/brooklyn/location/access/PortForwardManagerLocationResolverTest.java new file mode 100644 index 0000000..da69b24 --- /dev/null +++ b/core/src/test/java/org/apache/brooklyn/location/access/PortForwardManagerLocationResolverTest.java @@ -0,0 +1,83 @@ +/* + * 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.location.access; + +import org.apache.brooklyn.location.Location; +import org.apache.brooklyn.test.entity.LocalManagementContextForTests; +import org.testng.Assert; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import brooklyn.entity.basic.Entities; +import brooklyn.management.internal.LocalManagementContext; + +public class PortForwardManagerLocationResolverTest { + + private LocalManagementContext managementContext; + + @BeforeMethod(alwaysRun=true) + public void setUp() throws Exception { + managementContext = LocalManagementContextForTests.newInstance(); + } + + @AfterMethod(alwaysRun=true) + public void tearDown() throws Exception { + if (managementContext != null) Entities.destroyAll(managementContext); + } + + @Test + public void testReturnsSameInstanceBasedOnScope() { + Location global1 = resolve("portForwardManager()"); // defaults to global + Location global2 = resolve("portForwardManager()"); + Location global3 = resolve("portForwardManager(scope=global)"); + assertSame(global1, global2); + assertSame(global1, global3); + + Location a1 = resolve("portForwardManager(scope=a)"); + Location a2 = resolve("portForwardManager(scope=a)"); + assertSame(a1, a2); + assertNotSame(global1, a1); + + Location b1 = resolve("portForwardManager(scope=b)"); + assertNotSame(global1, b1); + assertNotSame(a1, b1); + } + + private Location resolve(String val) { + Location l = managementContext.getLocationRegistry().resolve(val); + Assert.assertNotNull(l); + return l; + } + + private void assertSame(Location loc1, Location loc2) { + Assert.assertNotNull(loc1); + Assert.assertTrue(loc1 instanceof PortForwardManager, "loc1="+loc1); + Assert.assertSame(loc1, loc2); + } + + private void assertNotSame(Location loc1, Location loc2) { + Assert.assertNotNull(loc1); + Assert.assertNotNull(loc2); + Assert.assertTrue(loc1 instanceof PortForwardManager, "loc1="+loc1); + Assert.assertTrue(loc2 instanceof PortForwardManager, "loc2="+loc2); + Assert.assertNotSame(loc1, loc2); + Assert.assertNotEquals(((PortForwardManager)loc1).getId(), ((PortForwardManager)loc2).getId()); + } +}
