You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2015/08/19 13:10:07 UTC

[49/72] [abbrv] incubator-brooklyn git commit: BROOKLYN-162 - jclouds last few package prefixes needed, and tidy in core and elsewhere related (or observed in the process)

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a1ad34d7/core/src/test/java/org/apache/brooklyn/location/basic/MultiLocationRebindTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/location/basic/MultiLocationRebindTest.java b/core/src/test/java/org/apache/brooklyn/location/basic/MultiLocationRebindTest.java
deleted file mode 100644
index 4728ab9..0000000
--- a/core/src/test/java/org/apache/brooklyn/location/basic/MultiLocationRebindTest.java
+++ /dev/null
@@ -1,119 +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 org.apache.brooklyn.location.basic;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.location.LocationSpec;
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.core.mgmt.rebind.RebindTestUtils;
-import org.apache.brooklyn.core.test.entity.TestApplication;
-import org.apache.brooklyn.entity.core.Entities;
-import org.apache.brooklyn.entity.factory.ApplicationBuilder;
-import org.apache.brooklyn.location.cloud.AvailabilityZoneExtension;
-import org.apache.brooklyn.test.Asserts;
-import org.apache.brooklyn.util.collections.MutableSet;
-import org.apache.brooklyn.util.net.Networking;
-import org.apache.brooklyn.util.os.Os;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-
-public class MultiLocationRebindTest {
-
-    private ClassLoader classLoader = getClass().getClassLoader();
-    private ManagementContext origManagementContext;
-    private ManagementContext newManagementContext;
-    private File mementoDir;
-    
-    private TestApplication origApp;
-    private TestApplication newApp;
-    private SshMachineLocation mac1a;
-    private SshMachineLocation mac2a;
-    private FixedListMachineProvisioningLocation<SshMachineLocation> loc1;
-    private FixedListMachineProvisioningLocation<SshMachineLocation> loc2;
-    private MultiLocation<SshMachineLocation> multiLoc;
-    
-    @BeforeMethod(alwaysRun=true)
-    public void setUp() throws Exception {
-        mementoDir = Os.newTempDir(getClass());
-        origManagementContext = RebindTestUtils.newPersistingManagementContext(mementoDir, classLoader, 1);
-        origApp = ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class), origManagementContext);
-    }
-
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-        if (origManagementContext != null) Entities.destroyAll(origManagementContext);
-        if (newApp != null) Entities.destroyAll(newApp.getManagementContext());
-        if (newManagementContext != null) Entities.destroyAll(newManagementContext);
-        if (mementoDir != null) RebindTestUtils.deleteMementoDir(mementoDir);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testRebindsMultiLocation() throws Exception {
-        mac1a = origManagementContext.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class)
-                .displayName("mac1a")
-                .configure("address", Networking.getInetAddressWithFixedName("1.1.1.1")));
-        mac2a = origManagementContext.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class)
-                .displayName("mac2a")
-                .configure("address", Networking.getInetAddressWithFixedName("1.1.1.3")));
-        loc1 = origManagementContext.getLocationManager().createLocation(LocationSpec.create(FixedListMachineProvisioningLocation.class)
-                .displayName("loc1")
-                .configure("machines", MutableSet.of(mac1a)));
-        loc2 = origManagementContext.getLocationManager().createLocation(LocationSpec.create(FixedListMachineProvisioningLocation.class)
-                .displayName("loc2")
-                .configure("machines", MutableSet.of(mac2a)));
-        multiLoc = origManagementContext.getLocationManager().createLocation(LocationSpec.create(MultiLocation.class)
-                        .displayName("multiLoc")
-                        .configure("subLocations", ImmutableList.of(loc1, loc2)));
-        
-        newApp = rebind();
-        newManagementContext = newApp.getManagementContext();
-        
-        MultiLocation newMultiLoc = (MultiLocation) Iterables.find(newManagementContext.getLocationManager().getLocations(), Predicates.instanceOf(MultiLocation.class));
-        AvailabilityZoneExtension azExtension = newMultiLoc.getExtension(AvailabilityZoneExtension.class);
-        List<Location> newSublLocs = azExtension.getAllSubLocations();
-        Iterable<String> newSubLocNames = Iterables.transform(newSublLocs, new Function<Location, String>() {
-            @Override public String apply(Location input) {
-                return (input == null) ? null : input.getDisplayName();
-            }});
-        Asserts.assertEqualsIgnoringOrder(newSubLocNames, ImmutableList.of("loc1", "loc2"));
-    }
-    
-    private TestApplication rebind() throws Exception {
-        return rebind(true);
-    }
-    
-    private TestApplication rebind(boolean checkSerializable) throws Exception {
-        RebindTestUtils.waitForPersisted(origApp);
-        if (checkSerializable) {
-            RebindTestUtils.checkCurrentMementoSerializable(origApp);
-        }
-        return (TestApplication) RebindTestUtils.rebind(mementoDir, getClass().getClassLoader());
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a1ad34d7/core/src/test/java/org/apache/brooklyn/location/basic/MultiLocationResolverTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/location/basic/MultiLocationResolverTest.java b/core/src/test/java/org/apache/brooklyn/location/basic/MultiLocationResolverTest.java
deleted file mode 100644
index ed20753..0000000
--- a/core/src/test/java/org/apache/brooklyn/location/basic/MultiLocationResolverTest.java
+++ /dev/null
@@ -1,198 +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 org.apache.brooklyn.location.basic;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
-
-import java.net.InetAddress;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-
-import javax.annotation.Nullable;
-
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.location.MachineLocation;
-import org.apache.brooklyn.api.location.MachineProvisioningLocation;
-import org.apache.brooklyn.api.location.NoMachinesAvailableException;
-import org.apache.brooklyn.core.internal.BrooklynProperties;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.entity.core.Entities;
-import org.apache.brooklyn.location.cloud.AvailabilityZoneExtension;
-import org.apache.brooklyn.util.collections.MutableList;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.exceptions.Exceptions;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Objects;
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
-
-public class MultiLocationResolverTest {
-
-    private BrooklynProperties brooklynProperties;
-    private LocalManagementContext managementContext;
-
-    @BeforeMethod(alwaysRun=true)
-    public void setUp() throws Exception {
-        managementContext = LocalManagementContextForTests.newInstance();
-        brooklynProperties = managementContext.getBrooklynProperties();
-    }
-    
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-        if (managementContext != null) Entities.destroyAll(managementContext);
-    }
-    
-    @Test
-    public void testThrowsOnInvalid() throws Exception {
-        assertThrowsNoSuchElement("wrongprefix:(hosts=\"1.1.1.1\")");
-        assertThrowsIllegalArgument("single");
-    }
-    
-    @Test
-    public void testThrowsOnInvalidTarget() throws Exception {
-        assertThrowsIllegalArgument("multi:()");
-        assertThrowsIllegalArgument("multi:(wrongprefix:(hosts=\"1.1.1.1\"))");
-        assertThrowsIllegalArgument("multi:(foo:bar)");
-    }
-
-    @Test
-    public void testCleansUpOnInvalidTarget() {
-        assertThrowsNoSuchElement("multi:(targets=\"localhost:(name=testCleansUpOnInvalidTarget),thisNamedLocationDoesNotExist\")");
-        Optional<Location> subtarget = Iterables.tryFind(managementContext.getLocationManager().getLocations(), LocationPredicates.displayNameEqualTo("testCleansUpOnInvalidTarget"));
-        assertFalse(subtarget.isPresent(), "subtarget="+subtarget);
-    }
-
-
-    @Test
-    public void testResolvesSubLocs() {
-        assertMultiLocation(resolve("multi:(targets=localhost)"), 1, ImmutableList.of(Predicates.instanceOf(LocalhostMachineProvisioningLocation.class)));
-        assertMultiLocation(resolve("multi:(targets=\"localhost,localhost\")"), 2, Collections.nCopies(2, Predicates.instanceOf(LocalhostMachineProvisioningLocation.class)));
-        assertMultiLocation(resolve("multi:(targets=\"localhost,localhost,localhost\")"), 3, Collections.nCopies(3, Predicates.instanceOf(LocalhostMachineProvisioningLocation.class)));
-        assertMultiLocation(resolve("multi:(targets=\"localhost:(name=mysubname)\")"), 1, ImmutableList.of(displayNameEqualTo("mysubname")));
-        assertMultiLocation(resolve("multi:(targets=byon:(hosts=\"1.1.1.1\"))"), 1, ImmutableList.of(Predicates.and(
-                Predicates.instanceOf(FixedListMachineProvisioningLocation.class),
-                new Predicate<MachineProvisioningLocation>() {
-                    @Override public boolean apply(MachineProvisioningLocation input) {
-                        SshMachineLocation machine;
-                        try {
-                            machine = (SshMachineLocation) input.obtain(ImmutableMap.of());
-                        } catch (NoMachinesAvailableException e) {
-                            throw Exceptions.propagate(e);
-                        }
-                        try {
-                            String addr = ((SshMachineLocation)machine).getAddress().getHostAddress();
-                            return addr != null && addr.equals("1.1.1.1");
-                        } finally {
-                            input.release(machine);
-                        }
-                    }
-                })));
-        assertMultiLocation(resolve("multi:(targets=\"byon:(hosts=1.1.1.1),byon:(hosts=1.1.1.2)\")"), 2, Collections.nCopies(2, Predicates.instanceOf(FixedListMachineProvisioningLocation.class)));
-    }
-
-    @Test
-    public void testResolvesName() {
-        MultiLocation<SshMachineLocation> multiLoc = resolve("multi:(name=myname,targets=localhost)");
-        assertEquals(multiLoc.getDisplayName(), "myname");
-    }
-    
-    @Test
-    public void testNamedByonLocation() throws Exception {
-        brooklynProperties.put("brooklyn.location.named.mynamed", "multi:(targets=byon:(hosts=\"1.1.1.1\"))");
-        
-        MultiLocation<SshMachineLocation> loc = resolve("named:mynamed");
-        assertEquals(loc.obtain(ImmutableMap.of()).getAddress(), InetAddress.getByName("1.1.1.1"));
-    }
-
-    @Test
-    public void testResolvesFromMap() throws NoMachinesAvailableException {
-        Location l = managementContext.getLocationRegistry().resolve("multi", MutableMap.of("targets", 
-            MutableList.of("localhost", MutableMap.of("byon", MutableMap.of("hosts", "127.0.0.127")))));
-        MultiLocation<?> ml = (MultiLocation<?>)l;
-        Iterator<MachineProvisioningLocation<?>> ci = ml.getSubLocations().iterator();
-        
-        l = ci.next();
-        Assert.assertTrue(l instanceof LocalhostMachineProvisioningLocation, "Expected localhost, got "+l);
-        
-        l = ci.next();
-        Assert.assertTrue(l instanceof FixedListMachineProvisioningLocation, "Expected fixed, got "+l);
-        MachineLocation sl = ((FixedListMachineProvisioningLocation<?>)l).obtain();
-        Assert.assertEquals(sl.getAddress().getHostAddress(), "127.0.0.127");
-        
-        Assert.assertFalse(ci.hasNext());
-    }
-
-
-    private void assertThrowsNoSuchElement(String val) {
-        try {
-            resolve(val);
-            fail();
-        } catch (NoSuchElementException e) {
-            // success
-        }
-    }
-    
-    private void assertThrowsIllegalArgument(String val) {
-        try {
-            resolve(val);
-            fail();
-        } catch (IllegalArgumentException e) {
-            // success
-        }
-    }
-    
-    @SuppressWarnings("unchecked")
-    private MultiLocation<SshMachineLocation> resolve(String val) {
-        return (MultiLocation<SshMachineLocation>) managementContext.getLocationRegistry().resolve(val);
-    }
-    
-    @SuppressWarnings("rawtypes")
-    private void assertMultiLocation(MultiLocation<?> multiLoc, int expectedSize, List<? extends Predicate> expectedSubLocationPredicates) {
-        AvailabilityZoneExtension zones = multiLoc.getExtension(AvailabilityZoneExtension.class);
-        List<Location> subLocs = zones.getAllSubLocations();
-        assertEquals(subLocs.size(), expectedSize, "zones="+subLocs);
-        for (int i = 0; i < subLocs.size(); i++) {
-            MachineProvisioningLocation subLoc = (MachineProvisioningLocation) subLocs.get(i);
-            assertTrue(expectedSubLocationPredicates.get(i).apply(subLoc), "index="+i+"; subLocs="+subLocs);
-        }
-    }
-    
-    public static <T> Predicate<Location> displayNameEqualTo(final T val) {
-        return new Predicate<Location>() {
-            @Override
-            public boolean apply(@Nullable Location input) {
-                return Objects.equal(input.getDisplayName(), val);
-            }
-        };
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a1ad34d7/core/src/test/java/org/apache/brooklyn/location/basic/MultiLocationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/location/basic/MultiLocationTest.java b/core/src/test/java/org/apache/brooklyn/location/basic/MultiLocationTest.java
deleted file mode 100644
index e5b3fda..0000000
--- a/core/src/test/java/org/apache/brooklyn/location/basic/MultiLocationTest.java
+++ /dev/null
@@ -1,118 +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 org.apache.brooklyn.location.basic;
-
-import static org.testng.Assert.assertTrue;
-
-import org.apache.brooklyn.test.Asserts;
-import org.apache.brooklyn.util.collections.MutableSet;
-import org.apache.brooklyn.util.net.Networking;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.api.location.LocationSpec;
-import org.apache.brooklyn.api.location.NoMachinesAvailableException;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.entity.core.Entities;
-import org.apache.brooklyn.location.cloud.AvailabilityZoneExtension;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-
-public class MultiLocationTest {
-
-    private static final Logger log = LoggerFactory.getLogger(MultiLocationTest.class);
-    
-    private LocalManagementContext managementContext;
-    private SshMachineLocation mac1a;
-    private SshMachineLocation mac1b;
-    private SshMachineLocation mac2a;
-    private SshMachineLocation mac2b;
-    private FixedListMachineProvisioningLocation<SshMachineLocation> loc1;
-    private FixedListMachineProvisioningLocation<SshMachineLocation> loc2;
-    private MultiLocation<SshMachineLocation> multiLoc;
-    
-    @SuppressWarnings("unchecked")
-    @BeforeMethod(alwaysRun=true)
-    public void setUp() throws Exception {
-        managementContext = LocalManagementContextForTests.newInstance();
-        mac1a = managementContext.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class)
-                .displayName("mac1a")
-                .configure("address", Networking.getInetAddressWithFixedName("1.1.1.1")));
-        mac1b = managementContext.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class)
-                .displayName("mac1b")
-                .configure("address", Networking.getInetAddressWithFixedName("1.1.1.2")));
-        mac2a = managementContext.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class)
-                .displayName("mac2a")
-                .configure("address", Networking.getInetAddressWithFixedName("1.1.1.3")));
-        mac2b = managementContext.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class)
-                .displayName("mac2b")
-                .configure("address", Networking.getInetAddressWithFixedName("1.1.1.4")));
-        loc1 = managementContext.getLocationManager().createLocation(LocationSpec.create(FixedListMachineProvisioningLocation.class)
-                .displayName("loc1")
-                .configure("machines", MutableSet.of(mac1a, mac1b)));
-        loc2 = managementContext.getLocationManager().createLocation(LocationSpec.create(FixedListMachineProvisioningLocation.class)
-                .displayName("loc2")
-                .configure("machines", MutableSet.of(mac2a, mac2b)));
-        multiLoc = managementContext.getLocationManager().createLocation(LocationSpec.create(MultiLocation.class)
-                        .displayName("multiLoc")
-                        .configure("subLocations", ImmutableList.of(loc1, loc2)));
-    }
-    
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-        if (managementContext != null) Entities.destroyAll(managementContext);
-    }
-    
-    @Test
-    public void testHasAvailabilityZonesAsSubLocations() throws Exception {
-        multiLoc.hasExtension(AvailabilityZoneExtension.class);
-        AvailabilityZoneExtension extension = multiLoc.getExtension(AvailabilityZoneExtension.class);
-        Asserts.assertEqualsIgnoringOrder(extension.getAllSubLocations(), ImmutableList.of(loc1, loc2));
-        Asserts.assertEqualsIgnoringOrder(extension.getSubLocations(2), ImmutableList.of(loc1, loc2));
-        assertTrue(ImmutableList.of(loc1, loc2).containsAll(extension.getSubLocations(1)));
-    }
-    
-    @Test
-    public void testObtainAndReleaseDelegateToSubLocation() throws Exception {
-        SshMachineLocation obtained = multiLoc.obtain(ImmutableMap.of());
-        assertTrue(ImmutableList.of(mac1a, mac1b, mac2a, mac2b).contains(obtained));
-        multiLoc.release(obtained);
-    }
-    
-    @Test
-    public void testObtainsMovesThroughSubLocations() throws Exception {
-        Assert.assertEquals(multiLoc.obtain().getAddress().getHostAddress(), "1.1.1.1");
-        Assert.assertEquals(multiLoc.obtain().getAddress().getHostAddress(), "1.1.1.2");
-        Assert.assertEquals(multiLoc.obtain().getAddress().getHostAddress(), "1.1.1.3");
-        Assert.assertEquals(multiLoc.obtain().getAddress().getHostAddress(), "1.1.1.4");
-        try {
-            multiLoc.obtain();
-            Assert.fail();
-        } catch (NoMachinesAvailableException e) {
-            log.info("Error when no machines available across locations is: "+e);
-            Assert.assertTrue(e.toString().contains("loc1"), "Message should have referred to sub-location message: "+e);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a1ad34d7/core/src/test/java/org/apache/brooklyn/location/basic/PaasLocationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/location/basic/PaasLocationTest.java b/core/src/test/java/org/apache/brooklyn/location/basic/PaasLocationTest.java
deleted file mode 100644
index 1322cc3..0000000
--- a/core/src/test/java/org/apache/brooklyn/location/basic/PaasLocationTest.java
+++ /dev/null
@@ -1,35 +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 org.apache.brooklyn.location.basic;
-
-import org.apache.brooklyn.core.test.location.TestPaasLocation;
-import org.apache.brooklyn.location.paas.PaasLocation;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class PaasLocationTest {
-
-    private PaasLocation location;
-    
-    @Test
-    public void testProviderName(){
-        location = new TestPaasLocation();
-        Assert.assertEquals(location.getPaasProviderName(), "TestPaas");
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a1ad34d7/core/src/test/java/org/apache/brooklyn/location/basic/PortRangesTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/location/basic/PortRangesTest.java b/core/src/test/java/org/apache/brooklyn/location/basic/PortRangesTest.java
deleted file mode 100644
index f0c1f09..0000000
--- a/core/src/test/java/org/apache/brooklyn/location/basic/PortRangesTest.java
+++ /dev/null
@@ -1,129 +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 org.apache.brooklyn.location.basic;
-
-import static org.testng.Assert.assertEquals;
-
-import java.util.Iterator;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.api.location.PortRange;
-import org.apache.brooklyn.util.core.flags.TypeCoercions;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-
-public class PortRangesTest {
-
-    @Test
-    public void testSingleRange() {
-        PortRange r = PortRanges.fromInteger(1234);
-        assertContents(r, 1234);
-    }
-
-    @Test
-    public void testFromCollection() {
-        PortRange r = PortRanges.fromCollection(ImmutableList.of(1234, 2345));
-        assertContents(r, 1234, 2345);
-    }
-
-    @Test
-    public void testFromString() {
-        PortRange r = PortRanges.fromString("80,8080,8000,8080-8099");
-        assertContents(r, 80, 8080, 8000, 
-                8080, 8081, 8082, 8083, 8084, 8085, 8086, 8087, 8088, 8089,
-                8090, 8091, 8092, 8093, 8094, 8095, 8096, 8097, 8098, 8099);
-    }
-
-    @Test
-    public void testFromStringWithSpaces() {
-        PortRange r = PortRanges.fromString(" 80 , 8080  , 8000 , 8080  - 8099 ");
-        assertContents(r, 80, 8080, 8000, 
-                8080, 8081, 8082, 8083, 8084, 8085, 8086, 8087, 8088, 8089,
-                8090, 8091, 8092, 8093, 8094, 8095, 8096, 8097, 8098, 8099);
-    }
-
-    @Test
-    public void testFromStringWithSpacesToString() {
-        PortRange r = PortRanges.fromString(" 80 , 8080  , 8000 , 8080  - 8099 ");
-        Assert.assertEquals(r.toString(), "80,8080,8000,8080-8099");
-    }
-    
-    @Test
-    public void testFromStringThrowsIllegalArgumentException() {
-        assertFromStringThrowsIllegalArgumentException("80-100000");
-        assertFromStringThrowsIllegalArgumentException("0-80");
-    }
-
-    @Test
-    public void testCoercion() {
-        PortRanges.init();
-        PortRange r = TypeCoercions.coerce("80", PortRange.class);
-        assertContents(r, 80);
-    }
-
-    @Test
-    public void testCoercionInt() {
-        PortRanges.init();
-        PortRange r = TypeCoercions.coerce(80, PortRange.class);
-        assertContents(r, 80);
-    }
-    
-    @Test
-    public void testLinearRangeOfSizeOne() throws Exception {
-        PortRanges.LinearPortRange range = new PortRanges.LinearPortRange(80, 80);
-        assertEquals(Lists.newArrayList(range), ImmutableList.of(80));
-    }
-
-    @Test
-    public void testLinearRangeCountingUpwards() throws Exception {
-        PortRanges.LinearPortRange range = new PortRanges.LinearPortRange(80, 81);
-        assertEquals(Lists.newArrayList(range), ImmutableList.of(80, 81));
-    }
-    
-    @Test
-    public void testLinearRangeCountingDownwards() throws Exception {
-        PortRanges.LinearPortRange range = new PortRanges.LinearPortRange(80, 79);
-        assertEquals(Lists.newArrayList(range), ImmutableList.of(80, 79));
-    }
-    
-    protected void assertFromStringThrowsIllegalArgumentException(String range) {
-        try {
-            PortRanges.fromString(range);
-            Assert.fail();
-        } catch (IllegalArgumentException e) {
-            // success
-        }
-    }
-
-    private static <T> void assertContents(Iterable<T> actual, T ...expected) {
-        Iterator<T> i = actual.iterator();
-        int c = 0;
-        while (i.hasNext()) {
-            if (expected.length<=c) {
-                Assert.fail("Iterable contained more than the "+c+" expected elements");
-            }
-            Assert.assertEquals(i.next(), expected[c++]);
-        }
-        if (expected.length>c) {
-            Assert.fail("Iterable contained only "+c+" elements, "+expected.length+" expected");
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a1ad34d7/core/src/test/java/org/apache/brooklyn/location/basic/RecordingMachineLocationCustomizer.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/location/basic/RecordingMachineLocationCustomizer.java b/core/src/test/java/org/apache/brooklyn/location/basic/RecordingMachineLocationCustomizer.java
deleted file mode 100644
index 53e261f..0000000
--- a/core/src/test/java/org/apache/brooklyn/location/basic/RecordingMachineLocationCustomizer.java
+++ /dev/null
@@ -1,71 +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 org.apache.brooklyn.location.basic;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.List;
-
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-
-import org.apache.brooklyn.api.location.MachineLocation;
-import org.apache.brooklyn.api.location.MachineLocationCustomizer;
-
-public class RecordingMachineLocationCustomizer implements MachineLocationCustomizer {
-    public static class Call {
-        public final String methodName;
-        public final List<?> args;
-        
-        Call(String methodName, List<?> args) {
-            this.methodName = checkNotNull(methodName);
-            this.args = checkNotNull(args);
-        }
-        
-        @Override
-        public String toString() {
-            return methodName+args;
-        }
-        
-        @Override
-        public int hashCode() {
-            return Objects.hashCode(methodName, args);
-        }
-        
-        @Override
-        public boolean equals(Object other) {
-            return (other instanceof RecordingMachineLocationCustomizer.Call) && 
-                    methodName.equals(((RecordingMachineLocationCustomizer.Call)other).methodName) && 
-                    args.equals(((RecordingMachineLocationCustomizer.Call)other).args);
-        }
-    }
-    
-    public final List<RecordingMachineLocationCustomizer.Call> calls = Lists.newCopyOnWriteArrayList();
-    
-    @Override
-    public void customize(MachineLocation machine) {
-        calls.add(new Call("customize", ImmutableList.of(machine)));
-    }
-
-    @Override
-    public void preRelease(MachineLocation machine) {
-        calls.add(new Call("preRelease", ImmutableList.of(machine)));
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a1ad34d7/core/src/test/java/org/apache/brooklyn/location/basic/SimulatedLocation.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/location/basic/SimulatedLocation.java b/core/src/test/java/org/apache/brooklyn/location/basic/SimulatedLocation.java
deleted file mode 100644
index 1e2cd33..0000000
--- a/core/src/test/java/org/apache/brooklyn/location/basic/SimulatedLocation.java
+++ /dev/null
@@ -1,136 +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 org.apache.brooklyn.location.basic;
-
-import java.net.InetAddress;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.brooklyn.api.location.HardwareDetails;
-import org.apache.brooklyn.api.location.LocationSpec;
-import org.apache.brooklyn.api.location.MachineDetails;
-import org.apache.brooklyn.api.location.MachineLocation;
-import org.apache.brooklyn.api.location.MachineProvisioningLocation;
-import org.apache.brooklyn.api.location.OsDetails;
-import org.apache.brooklyn.api.location.PortRange;
-import org.apache.brooklyn.api.location.PortSupplier;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.net.Networking;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
-
-
-/** Location for use in dev/test, defining custom start/stop support, and/or tweaking the ports which are permitted to be available
- * (using setPermittedPorts(Iterable))
- */
-public class SimulatedLocation extends AbstractLocation implements MachineProvisioningLocation<MachineLocation>, MachineLocation, PortSupplier {
-
-    private static final long serialVersionUID = 1L;
-    
-    private static final InetAddress address;
-    static {
-        address = Networking.getLocalHost();
-    }
-
-    Iterable<Integer> permittedPorts = PortRanges.fromString("1+");
-    Set<Integer> usedPorts = Sets.newLinkedHashSet();
-
-    public SimulatedLocation() {
-        this(MutableMap.<String,Object>of());
-    }
-    public SimulatedLocation(Map<String,? extends Object> flags) {
-        super(flags);
-    }
-    
-    @Override
-    public SimulatedLocation newSubLocation(Map<?,?> newFlags) {
-        // TODO shouldn't have to copy config bag as it should be inherited (but currently it is not used inherited everywhere; just most places)
-        return getManagementContext().getLocationManager().createLocation(LocationSpec.create(getClass())
-                .parent(this)
-                .configure(config().getLocalBag().getAllConfig())  // FIXME Should this just be inherited?
-                .configure(newFlags));
-    }
-
-    public MachineLocation obtain(Map<?,?> flags) {
-        return this;
-    }
-
-    public void release(MachineLocation machine) {
-    }
-
-    public Map<String,Object> getProvisioningFlags(Collection<String> tags) {
-        return MutableMap.<String,Object>of();
-    }
-    
-    public InetAddress getAddress() {
-        return address;
-    }
-
-    @Override
-    public String getHostname() {
-        String hostname = address.getHostName();
-        return (hostname == null || hostname.equals(address.getHostAddress())) ? null : hostname;
-    }
-    
-    @Override
-    public Set<String> getPublicAddresses() {
-        return ImmutableSet.of(address.getHostAddress());
-    }
-    
-    @Override
-    public Set<String> getPrivateAddresses() {
-        return ImmutableSet.of();
-    }
-
-    public synchronized boolean obtainSpecificPort(int portNumber) {
-        if (!Iterables.contains(permittedPorts, portNumber)) return false;
-        if (usedPorts.contains(portNumber)) return false;
-        usedPorts.add(portNumber);
-        return true;
-    }
-
-    public synchronized int obtainPort(PortRange range) {
-        for (int p: range)
-            if (obtainSpecificPort(p)) return p;
-        return -1;
-    }
-
-    public synchronized void releasePort(int portNumber) {
-        usedPorts.remove(portNumber);
-    }
-    
-    public synchronized void setPermittedPorts(Iterable<Integer> ports) {
-        permittedPorts  = ports;
-    }
-
-    @Override
-    public OsDetails getOsDetails() {
-        return getMachineDetails().getOsDetails();
-    }
-
-    @Override
-    public MachineDetails getMachineDetails() {
-        HardwareDetails hardwareDetails = new BasicHardwareDetails(null, null);
-        OsDetails osDetails = BasicOsDetails.Factory.ANONYMOUS_LINUX;
-        return new BasicMachineDetails(hardwareDetails, osDetails);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a1ad34d7/core/src/test/java/org/apache/brooklyn/location/basic/SingleMachineLocationResolverTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/location/basic/SingleMachineLocationResolverTest.java b/core/src/test/java/org/apache/brooklyn/location/basic/SingleMachineLocationResolverTest.java
deleted file mode 100644
index 6775352..0000000
--- a/core/src/test/java/org/apache/brooklyn/location/basic/SingleMachineLocationResolverTest.java
+++ /dev/null
@@ -1,130 +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 org.apache.brooklyn.location.basic;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.fail;
-
-import java.net.InetAddress;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import org.apache.brooklyn.core.internal.BrooklynProperties;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.entity.core.Entities;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableMap;
-
-public class SingleMachineLocationResolverTest {
-
-    private BrooklynProperties brooklynProperties;
-    private LocalManagementContext managementContext;
-
-    @BeforeMethod(alwaysRun=true)
-    public void setUp() throws Exception {
-        managementContext = LocalManagementContextForTests.newInstance();
-        brooklynProperties = managementContext.getBrooklynProperties();
-    }
-    
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-        if (managementContext != null) Entities.destroyAll(managementContext);
-    }
-    
-    @Test
-    public void testThrowsOnInvalid() throws Exception {
-        assertThrowsNoSuchElement("wrongprefix:(hosts=\"1.1.1.1\")");
-        assertThrowsIllegalArgument("single");
-    }
-    
-    @Test
-    public void testThrowsOnInvalidTarget() throws Exception {
-        assertThrowsIllegalArgument("single()");
-        assertThrowsIllegalArgument("single(wrongprefix:(hosts=\"1.1.1.1\"))");
-        assertThrowsIllegalArgument("single(foo:bar)");
-    }
-
-    @Test
-    public void resolveHosts() {
-        resolve("single(target=localhost)");
-        resolve("single(target=byon(hosts=\"1.1.1.1\"))");
-
-        brooklynProperties.put("brooklyn.location.named.mynamed", "single(target=byon:(hosts=\"1.1.1.1\"))");
-        managementContext.clearLocationRegistry();
-        resolve("single(target=named:mynamed)");
-    }
-    
-    @Test
-    public void resolveWithOldColonFormat() {
-        resolve("single:(target=localhost)");
-    }
-    
-    @Test
-    public void testNamedByonLocation() throws Exception {
-        brooklynProperties.put("brooklyn.location.named.mynamed", "single(target=byon:(hosts=\"1.1.1.1\"))");
-        
-        SingleMachineProvisioningLocation<SshMachineLocation> loc = resolve("named:mynamed");
-        assertEquals(loc.obtain(ImmutableMap.of()).getAddress(), InetAddress.getByName("1.1.1.1"));
-    }
-
-    @Test
-    public void testPropertyScopePrescedence() throws Exception {
-        brooklynProperties.put("brooklyn.location.named.mynamed", "single(target=byon:(hosts=\"1.1.1.1\"))");
-        
-        // prefer those in "named" over everything else
-        brooklynProperties.put("brooklyn.location.named.mynamed.privateKeyFile", "privateKeyFile-inNamed");
-        brooklynProperties.put("brooklyn.localhost.privateKeyFile", "privateKeyFile-inGeneric");
-
-        // prefer location-generic if nothing else
-        brooklynProperties.put("brooklyn.location.privateKeyData", "privateKeyData-inGeneric");
-
-        Map<String, Object> conf = resolve("named:mynamed").obtain(ImmutableMap.of()).config().getBag().getAllConfig();
-        
-        assertEquals(conf.get("privateKeyFile"), "privateKeyFile-inNamed");
-        assertEquals(conf.get("privateKeyData"), "privateKeyData-inGeneric");
-    }
-
-    private void assertThrowsNoSuchElement(String val) {
-        try {
-            resolve(val);
-            fail();
-        } catch (NoSuchElementException e) {
-            // success
-        }
-    }
-    
-    private void assertThrowsIllegalArgument(String val) {
-        try {
-            resolve(val);
-            fail();
-        } catch (IllegalArgumentException e) {
-            // success
-        }
-    }
-    
-    @SuppressWarnings("unchecked")
-    private SingleMachineProvisioningLocation<SshMachineLocation> resolve(String val) {
-        return (SingleMachineProvisioningLocation<SshMachineLocation>) managementContext.getLocationRegistry().resolve(val);
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a1ad34d7/core/src/test/java/org/apache/brooklyn/location/basic/SingleMachineProvisioningLocationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/location/basic/SingleMachineProvisioningLocationTest.java b/core/src/test/java/org/apache/brooklyn/location/basic/SingleMachineProvisioningLocationTest.java
deleted file mode 100644
index 77a0d3f..0000000
--- a/core/src/test/java/org/apache/brooklyn/location/basic/SingleMachineProvisioningLocationTest.java
+++ /dev/null
@@ -1,63 +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 org.apache.brooklyn.location.basic;
-
-import static org.testng.Assert.assertNotNull;
-
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-public class SingleMachineProvisioningLocationTest {
-    
-    private static final Logger log = LoggerFactory.getLogger(SingleMachineProvisioningLocation.class);
-    
-    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) managementContext.terminate();
-    }
-    
-    @SuppressWarnings("unchecked") 
-    @Test
-    public void testLocalhostSingle() throws Exception {
-        SingleMachineProvisioningLocation<SshMachineLocation> l = (SingleMachineProvisioningLocation<SshMachineLocation>) 
-            managementContext.getLocationRegistry().resolve("single:(target='localhost')");
-        l.setManagementContext(managementContext);
-        
-        SshMachineLocation m1 = l.obtain();
-        
-        assertNotNull(m1);
-
-        log.info("GOT "+m1);
-        
-        l.release(m1);
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a1ad34d7/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationIntegrationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationIntegrationTest.java b/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationIntegrationTest.java
deleted file mode 100644
index af0ca0d..0000000
--- a/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationIntegrationTest.java
+++ /dev/null
@@ -1,139 +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 org.apache.brooklyn.location.basic;
-
-import java.io.ByteArrayOutputStream;
-import java.security.KeyPair;
-import java.util.Arrays;
-import java.util.Map;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.core.test.entity.TestApplication;
-import org.apache.brooklyn.entity.core.Entities;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.core.crypto.SecureKeys;
-import org.apache.brooklyn.util.core.internal.ssh.SshTool;
-import org.apache.brooklyn.util.core.internal.ssh.sshj.SshjTool;
-import org.apache.brooklyn.util.core.internal.ssh.sshj.SshjTool.SshjToolBuilder;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Preconditions;
-
-import static org.testng.Assert.assertEquals;
-
-public class SshMachineLocationIntegrationTest {
-
-    protected TestApplication app;
-    protected ManagementContext mgmt;
-
-    @BeforeMethod(alwaysRun=true)
-    public void setup() throws Exception {
-        mgmt = LocalManagementContextForTests.builder(true)
-            .useDefaultProperties()
-            .build();
-        app = TestApplication.Factory.newManagedInstanceForTests(mgmt);
-    }
-
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-        if (mgmt != null) Entities.destroyAll(mgmt);
-        mgmt = null;
-    }
-
-    // Note: requires `named:localhost-passphrase` set up with a key whose passphrase is "localhost"
-    // * create the key with:
-    //      ssh-keygen -t rsa -N "brooklyn" -f ~/.ssh/id_rsa_passphrase
-    //      ssh-copy-id localhost
-    // * create brooklyn.properties, containing:
-    //      brooklyn.location.named.localhost-passphrase=localhost
-    //      brooklyn.location.named.localhost-passphrase.privateKeyFile=~/.ssh/id_rsa_passphrase
-    //      brooklyn.location.named.localhost-passphrase.privateKeyPassphrase=brooklyn
-    @Test(groups = "Integration")
-    public void testExtractingConnectablePassphraselessKey() throws Exception {
-        LocalhostMachineProvisioningLocation lhp = (LocalhostMachineProvisioningLocation) mgmt.getLocationRegistry().resolve("named:localhost-passphrase", true, null).orNull();
-        Preconditions.checkNotNull(lhp, "This test requires a localhost named location called 'localhost-passphrase' (which should have a passphrase set)");
-        SshMachineLocation sm = lhp.obtain();
-        
-        SshjToolBuilder builder = SshjTool.builder().host(sm.getAddress().getHostName()).user(sm.getUser());
-        
-        KeyPair data = sm.findKeyPair();
-        if (data!=null) builder.privateKeyData(SecureKeys.toPem(data));
-        String password = sm.findPassword();
-        if (password!=null) builder.password(password);
-        SshjTool tool = builder.build();
-        tool.connect();
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
-        int result = tool.execCommands(MutableMap.<String,Object>of("out", out), Arrays.asList("date"));
-        Assert.assertTrue(out.toString().contains(" 20"), "out="+out);
-        assertEquals(result, 0);
-    }
-
-    @Test(groups = "Integration")
-    public void testExecScriptScriptDirFlagIsRespected() throws Exception {
-        // For explanation of (some of) the magic behind this command, see http://stackoverflow.com/a/229606/68898
-        final String command = "if [[ \"$0\" == \"/var/tmp/\"* ]]; then true; else false; fi";
-
-        LocalhostMachineProvisioningLocation lhp = (LocalhostMachineProvisioningLocation) mgmt.getLocationRegistry().resolve("localhost", true, null).orNull();
-        SshMachineLocation sm = lhp.obtain();
-
-        Map<String, Object> props = ImmutableMap.<String, Object>builder()
-                .put(SshTool.PROP_SCRIPT_DIR.getName(), "/var/tmp")
-                .build();
-        int rc = sm.execScript(props, "Test script directory execution", ImmutableList.of(command));
-        assertEquals(rc, 0);
-    }
-
-    @Test(groups = "Integration")
-    public void testLocationScriptDirConfigIsRespected() throws Exception {
-        // For explanation of (some of) the magic behind this command, see http://stackoverflow.com/a/229606/68898
-        final String command = "if [[ \"$0\" == \"/var/tmp/\"* ]]; then true; else false; fi";
-
-        Map<String, Object> locationConfig = ImmutableMap.<String, Object>builder()
-                .put(SshMachineLocation.SCRIPT_DIR.getName(), "/var/tmp")
-                .build();
-
-        LocalhostMachineProvisioningLocation lhp = (LocalhostMachineProvisioningLocation) mgmt.getLocationRegistry().resolve("localhost", locationConfig);
-        SshMachineLocation sm = lhp.obtain();
-
-        int rc = sm.execScript("Test script directory execution", ImmutableList.of(command));
-        assertEquals(rc, 0);
-    }
-    
-    @Test(groups = "Integration")
-    public void testMissingLocationScriptDirIsAlsoOkay() throws Exception {
-        final String command = "echo hello";
-
-        Map<String, Object> locationConfig = ImmutableMap.<String, Object>builder()
-//                .put(SshMachineLocation.SCRIPT_DIR.getName(), "/var/tmp")
-                .build();
-
-        LocalhostMachineProvisioningLocation lhp = (LocalhostMachineProvisioningLocation) mgmt.getLocationRegistry().resolve("localhost", locationConfig);
-        SshMachineLocation sm = lhp.obtain();
-
-        int rc = sm.execScript("Test script directory execution", ImmutableList.of(command));
-        assertEquals(rc, 0);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a1ad34d7/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationPerformanceTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationPerformanceTest.java b/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationPerformanceTest.java
deleted file mode 100644
index cd254c9..0000000
--- a/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationPerformanceTest.java
+++ /dev/null
@@ -1,171 +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 org.apache.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.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.core.internal.ssh.SshTool;
-import org.apache.brooklyn.util.net.Networking;
-import org.apache.brooklyn.util.stream.Streams;
-import org.apache.brooklyn.util.text.Identifiers;
-import org.apache.brooklyn.util.time.Time;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-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/a1ad34d7/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationReuseIntegrationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationReuseIntegrationTest.java b/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationReuseIntegrationTest.java
deleted file mode 100644
index 2b1d8e1..0000000
--- a/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationReuseIntegrationTest.java
+++ /dev/null
@@ -1,171 +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 org.apache.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 org.apache.brooklyn.api.location.LocationSpec;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.entity.core.Entities;
-import org.apache.brooklyn.test.Asserts;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.core.internal.ssh.SshTool;
-import org.apache.brooklyn.util.core.internal.ssh.sshj.SshjTool;
-import org.apache.brooklyn.util.net.Networking;
-import org.apache.brooklyn.util.stream.Streams;
-import org.apache.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/a1ad34d7/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationTest.java b/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationTest.java
deleted file mode 100644
index bbc0a7f..0000000
--- a/core/src/test/java/org/apache/brooklyn/location/basic/SshMachineLocationTest.java
+++ /dev/null
@@ -1,339 +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 org.apache.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.effector.Effector;
-import org.apache.brooklyn.api.entity.EntityInitializer;
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.internal.EntityLocal;
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.location.LocationSpec;
-import org.apache.brooklyn.api.location.MachineDetails;
-import org.apache.brooklyn.api.location.MachineLocation;
-import org.apache.brooklyn.api.location.PortRange;
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.core.test.entity.TestApplication;
-import org.apache.brooklyn.effector.core.EffectorBody;
-import org.apache.brooklyn.effector.core.EffectorTaskTest;
-import org.apache.brooklyn.effector.core.Effectors;
-import org.apache.brooklyn.entity.core.BrooklynConfigKeys;
-import org.apache.brooklyn.entity.core.Entities;
-import org.apache.brooklyn.entity.core.EntityInternal;
-import org.apache.brooklyn.entity.factory.ApplicationBuilder;
-import org.apache.brooklyn.test.Asserts;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.core.config.ConfigBag;
-import org.apache.brooklyn.util.core.file.ArchiveUtils;
-import org.apache.brooklyn.util.core.internal.ssh.RecordingSshTool;
-import org.apache.brooklyn.util.core.internal.ssh.SshException;
-import org.apache.brooklyn.util.core.internal.ssh.SshTool;
-import org.apache.brooklyn.util.core.task.BasicExecutionContext;
-import org.apache.brooklyn.util.core.task.BasicExecutionManager;
-import org.apache.brooklyn.util.guava.Maybe;
-import org.apache.brooklyn.util.net.Networking;
-import org.apache.brooklyn.util.net.Urls;
-import org.apache.brooklyn.util.os.Os;
-import org.apache.brooklyn.util.stream.Streams;
-import org.apache.brooklyn.util.time.Duration;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-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 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 PortRanges.LinearPortRange(port, port)), port);
-        assertEquals(host.obtainPort(new PortRanges.LinearPortRange(port, port)), -1);
-        host.releasePort(port);
-        assertEquals(host.obtainPort(new PortRanges.LinearPortRange(port, port)), port);
-    }
-    
-    @Test
-    public void obtainPortInWideRange() {
-        int lowerPort = 2345;
-        int upperPort = 2350;
-        PortRange range = new PortRanges.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);
-    }
-}