You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by ha...@apache.org on 2015/08/14 05:42:40 UTC

[11/54] incubator-brooklyn git commit: [BROOKLYN-162] Renaming package brooklyn.location

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsLocationTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsLocationTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsLocationTest.java
deleted file mode 100644
index 5821a07..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsLocationTest.java
+++ /dev/null
@@ -1,510 +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.jclouds;
-
-import java.util.Map;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import javax.annotation.Nullable;
-
-import org.apache.brooklyn.test.entity.LocalManagementContextForTests;
-import org.jclouds.scriptbuilder.domain.OsFamily;
-import org.jclouds.scriptbuilder.domain.StatementList;
-import org.mockito.Mockito;
-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 com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.reflect.TypeToken;
-
-import brooklyn.config.BrooklynProperties;
-import brooklyn.config.ConfigKey;
-import brooklyn.entity.basic.ConfigKeys;
-import brooklyn.entity.basic.Entities;
-import brooklyn.location.LocationSpec;
-import brooklyn.location.MachineLocation;
-import brooklyn.location.MachineLocationCustomizer;
-import brooklyn.location.NoMachinesAvailableException;
-import brooklyn.location.basic.LocationConfigKeys;
-import brooklyn.location.cloud.names.CustomMachineNamer;
-import brooklyn.location.geo.HostGeoInfo;
-import brooklyn.location.jclouds.JcloudsLocation.UserCreation;
-import brooklyn.management.internal.LocalManagementContext;
-import brooklyn.test.Asserts;
-import brooklyn.util.collections.MutableMap;
-import brooklyn.util.config.ConfigBag;
-import brooklyn.util.exceptions.Exceptions;
-
-/**
- * @author Shane Witbeck
- */
-public class JcloudsLocationTest implements JcloudsLocationConfig {
-
-    private static final Logger log = LoggerFactory.getLogger(JcloudsLocationTest.class);
-    
-    public static Predicate<ConfigBag> checkerFor(final String user, final Integer minRam, final Integer minCores) {
-        return new Predicate<ConfigBag>() {
-            @Override
-            public boolean apply(@Nullable ConfigBag input) {
-                Assert.assertEquals(input.get(USER), user);
-                Assert.assertEquals(input.get(MIN_RAM), minRam);
-                Assert.assertEquals(input.get(MIN_CORES), minCores);
-                return true;
-            }
-        };
-    }
-    
-    public static Predicate<ConfigBag> templateCheckerFor(final String ports) {
-        return new Predicate<ConfigBag>() {
-            @Override
-            public boolean apply(@Nullable ConfigBag input) {
-                Assert.assertEquals(input.get(INBOUND_PORTS), ports);
-                return false;
-            }
-        };
-    }
-    
-    private LocalManagementContext managementContext;
-    
-    @BeforeMethod(alwaysRun=true)
-    public void setUp() throws Exception {
-        managementContext = LocalManagementContextForTests.newInstance(BrooklynProperties.Factory.builderEmpty().build());
-    }
-    
-    @AfterMethod(alwaysRun=true)
-    public void tearUp() throws Exception {
-        if (managementContext != null) Entities.destroyAll(managementContext);
-    }
-    
-    @Test
-    public void testCreateWithFlagsDirectly() throws Exception {
-        BailOutJcloudsLocation jcl = BailOutJcloudsLocation.newBailOutJcloudsLocation(managementContext);
-        jcl.tryObtainAndCheck(MutableMap.of(MIN_CORES, 2), checkerFor("fred", 16, 2));
-    }
-
-    @Test
-    public void testCreateWithFlagsDirectlyAndOverride() throws Exception {
-        BailOutJcloudsLocation jcl = BailOutJcloudsLocation.newBailOutJcloudsLocation(managementContext);
-        jcl.tryObtainAndCheck(MutableMap.of(MIN_CORES, 2, MIN_RAM, 8), checkerFor("fred", 8, 2));
-    }
-
-    @Test
-    public void testCreateWithFlagsSubLocation() throws Exception {
-        BailOutJcloudsLocation jcl = BailOutJcloudsLocation.newBailOutJcloudsLocation(managementContext);
-        jcl = (BailOutJcloudsLocation) jcl.newSubLocation(MutableMap.of(USER, "jon", MIN_CORES, 2));
-        jcl.tryObtainAndCheck(MutableMap.of(MIN_CORES, 3), checkerFor("jon", 16, 3));
-    }
-
-    @Test
-    public void testStringListToIntArray() {
-        String listString = "[1, 2, 3, 4]";
-        int[] intArray = new int[] {1, 2, 3, 4};
-        Assert.assertEquals(JcloudsLocation.toIntArray(listString), intArray);
-    }
-    
-    @Test(expectedExceptions = IllegalArgumentException.class)
-    public void testMalformedStringListToIntArray() {
-        String listString = "1, 2, 3, 4";
-        JcloudsLocation.toIntArray(listString);
-    }
-    
-    @Test
-    public void testEmptyStringListToIntArray() {
-        String listString = "[]";
-        int[] intArray = new int[] {};
-        Assert.assertEquals(JcloudsLocation.toIntArray(listString), intArray);
-    }
-    
-    @Test
-    public void testIntArrayToIntArray() {
-        int[] intArray = new int[] {1, 2, 3, 4};
-        Assert.assertEquals(JcloudsLocation.toIntArray(intArray), intArray);
-    }
-    
-    @Test
-    public void testObjectArrayToIntArray() {
-        Object[] longArray = new Object[] {1, 2, 3, 4};
-        int[] intArray = new int[] {1, 2, 3, 4};
-        Assert.assertEquals(JcloudsLocation.toIntArray(longArray), intArray);
-    }
-    
-    @Test(expectedExceptions = ClassCastException.class)
-    public void testInvalidObjectArrayToIntArray() {
-        String[] stringArray = new String[] {"1", "2", "3"};
-        JcloudsLocation.toIntArray(stringArray);
-    }
-
-    @Test
-    public void testVMCreationIsRetriedOnFailure() {
-        final AtomicInteger count = new AtomicInteger();
-        Function<ConfigBag, Void> countingInterceptor = new Function<ConfigBag, Void>() {
-            @Override public Void apply(ConfigBag input) {
-                count.incrementAndGet();
-                return null;
-            }
-        };
-        BailOutJcloudsLocation loc = BailOutJcloudsLocation.newBailOutJcloudsLocation(managementContext, ImmutableMap.<ConfigKey<?>, Object>of(
-                MACHINE_CREATE_ATTEMPTS, 3,
-                BailOutJcloudsLocation.BUILD_TEMPLATE_INTERCEPTOR, countingInterceptor));
-        loc.tryObtain();
-        Assert.assertEquals(count.get(), 3);
-    }
-
-    @Test(groups={"Live", "Live-sanity"})
-    public void testCreateWithInboundPorts() {
-        BailOutJcloudsLocation jcloudsLocation = BailOutJcloudsLocation.newBailOutJcloudsLocationForLiveTest(managementContext);
-        jcloudsLocation = (BailOutJcloudsLocation) jcloudsLocation.newSubLocation(MutableMap.of());
-        jcloudsLocation.tryObtainAndCheck(MutableMap.of(), templateCheckerFor("[22, 80, 9999]"));
-        int[] ports = new int[] {22, 80, 9999};
-        Assert.assertEquals(jcloudsLocation.getTemplate().getOptions().getInboundPorts(), ports);
-    }
-    
-    @Test(groups={"Live", "Live-sanity"})
-    public void testCreateWithInboundPortsOverride() {
-        BailOutJcloudsLocation jcloudsLocation = BailOutJcloudsLocation.newBailOutJcloudsLocationForLiveTest(managementContext);
-        jcloudsLocation = (BailOutJcloudsLocation) jcloudsLocation.newSubLocation(MutableMap.of());
-        jcloudsLocation.tryObtainAndCheck(MutableMap.of(INBOUND_PORTS, "[23, 81, 9998]"), templateCheckerFor("[23, 81, 9998]"));
-        int[] ports = new int[] {23, 81, 9998};
-        Assert.assertEquals(jcloudsLocation.getTemplate().getOptions().getInboundPorts(), ports);
-    }
-
-    @Test
-    public void testCreateWithMaxConcurrentCallsUnboundedByDefault() throws Exception {
-        final int numCalls = 20;
-        ConcurrencyTracker interceptor = new ConcurrencyTracker();
-        ExecutorService executor = Executors.newCachedThreadPool();
-
-        try {
-            final BailOutJcloudsLocation jcloudsLocation = BailOutJcloudsLocation.newBailOutJcloudsLocation(
-                    managementContext, ImmutableMap.<ConfigKey<?>, Object>of(
-                            BailOutJcloudsLocation.BUILD_TEMPLATE_INTERCEPTOR, interceptor));
-            for (int i = 0; i < numCalls; i++) {
-                executor.execute(new Runnable() {
-                    @Override
-                    public void run() {
-                        jcloudsLocation.tryObtain();
-                    }
-                });
-            }
-            interceptor.assertCallCountEventually(numCalls);
-            interceptor.unblock();
-            executor.shutdown();
-            executor.awaitTermination(10, TimeUnit.SECONDS);
-        } finally {
-            executor.shutdownNow();
-        }
-    }
-
-    @Test(groups="Integration") // because takes 1 sec
-    public void testCreateWithMaxConcurrentCallsRespectsConfig() throws Exception {
-        final int numCalls = 4;
-        final int maxConcurrentCreations = 2;
-        ConcurrencyTracker interceptor = new ConcurrencyTracker();
-        ExecutorService executor = Executors.newCachedThreadPool();
-        
-        try {
-            final BailOutJcloudsLocation jcloudsLocation = BailOutJcloudsLocation.newBailOutJcloudsLocation(
-                    managementContext, ImmutableMap.of(
-                            BailOutJcloudsLocation.BUILD_TEMPLATE_INTERCEPTOR, interceptor,
-                            JcloudsLocation.MAX_CONCURRENT_MACHINE_CREATIONS, maxConcurrentCreations));
-
-            for (int i = 0; i < numCalls; i++) {
-                executor.execute(new Runnable() {
-                    @Override
-                    public void run() {
-                        jcloudsLocation.tryObtain();
-                    }
-                });
-            }
-
-            interceptor.assertCallCountEventually(maxConcurrentCreations);
-            interceptor.assertCallCountContinually(maxConcurrentCreations);
-
-            interceptor.unblock();
-            interceptor.assertCallCountEventually(numCalls);
-            executor.shutdown();
-            executor.awaitTermination(10, TimeUnit.SECONDS);
-
-        } finally {
-            executor.shutdownNow();
-        }
-    }
-
-    @Test(groups="Integration") // because takes 1 sec
-    public void testCreateWithMaxConcurrentCallsAppliesToSubLocations() throws Exception {
-        final int numCalls = 4;
-        final int maxConcurrentCreations = 2;
-        ConcurrencyTracker interceptor = new ConcurrencyTracker();
-        ExecutorService executor = Executors.newCachedThreadPool();
-
-        try {
-            final BailOutJcloudsLocation jcloudsLocation = BailOutJcloudsLocation.newBailOutJcloudsLocation(
-                    managementContext, ImmutableMap.of(
-                            BailOutJcloudsLocation.BUILD_TEMPLATE_INTERCEPTOR, interceptor,
-                            JcloudsLocation.MAX_CONCURRENT_MACHINE_CREATIONS, maxConcurrentCreations));
-
-            for (int i = 0; i < numCalls; i++) {
-                final BailOutJcloudsLocation subLocation = (BailOutJcloudsLocation) jcloudsLocation.newSubLocation(MutableMap.of());
-                executor.execute(new Runnable() {
-                    @Override
-                    public void run() {
-                        subLocation.tryObtain();
-                    }
-                });
-            }
-
-            interceptor.assertCallCountEventually(maxConcurrentCreations);
-            interceptor.assertCallCountContinually(maxConcurrentCreations);
-
-            interceptor.unblock();
-            interceptor.assertCallCountEventually(numCalls);
-            executor.shutdown();
-            executor.awaitTermination(10, TimeUnit.SECONDS);
-
-        } finally {
-            executor.shutdownNow();
-        }
-    }
-    
-    @Test
-    public void testCreateWithCustomMachineNamer() {
-        final String machineNamerClass = CustomMachineNamer.class.getName();
-        BailOutJcloudsLocation jcloudsLocation = BailOutJcloudsLocation.newBailOutJcloudsLocation(
-                managementContext, ImmutableMap.<ConfigKey<?>, Object>of(
-                        LocationConfigKeys.CLOUD_MACHINE_NAMER_CLASS, machineNamerClass));
-        jcloudsLocation.tryObtainAndCheck(ImmutableMap.of(CustomMachineNamer.MACHINE_NAME_TEMPLATE, "ignored"), new Predicate<ConfigBag>() {
-            public boolean apply(ConfigBag input) {
-                Assert.assertEquals(input.get(LocationConfigKeys.CLOUD_MACHINE_NAMER_CLASS), machineNamerClass);
-                return true;
-            }
-        });
-    }
-    
-    @Test
-    public void testCreateWithCustomMachineNamerOnObtain() {
-        final String machineNamerClass = CustomMachineNamer.class.getName();
-        BailOutJcloudsLocation jcloudsLocation = BailOutJcloudsLocation.newBailOutJcloudsLocation(managementContext);
-        ImmutableMap<ConfigKey<String>, String> flags = ImmutableMap.of(
-                CustomMachineNamer.MACHINE_NAME_TEMPLATE, "ignored",
-                LocationConfigKeys.CLOUD_MACHINE_NAMER_CLASS, machineNamerClass);
-        jcloudsLocation.tryObtainAndCheck(flags, new Predicate<ConfigBag>() {
-            public boolean apply(ConfigBag input) {
-                Assert.assertEquals(input.get(LocationConfigKeys.CLOUD_MACHINE_NAMER_CLASS), machineNamerClass);
-                return true;
-            }
-        });
-    }
-
-    public static class ConcurrencyTracker implements Function<ConfigBag,Void> {
-        final AtomicInteger concurrentCallsCounter = new AtomicInteger();
-        final CountDownLatch continuationLatch = new CountDownLatch(1);
-        
-        @Override public Void apply(ConfigBag input) {
-            concurrentCallsCounter.incrementAndGet();
-            try {
-                continuationLatch.await();
-            } catch (InterruptedException e) {
-                throw Exceptions.propagate(e);
-            }
-            return null;
-        }
-        
-        public void unblock() {
-            continuationLatch.countDown();
-        }
-
-        public void assertCallCountEventually(final int expected) {
-            Asserts.succeedsEventually(new Runnable() {
-                @Override public void run() {
-                    Assert.assertEquals(concurrentCallsCounter.get(), expected);
-                }
-            });
-        }
-        
-        public void assertCallCountContinually(final int expected) {
-            Asserts.succeedsContinually(new Runnable() {
-                @Override public void run() {
-                    Assert.assertEquals(concurrentCallsCounter.get(), expected);
-                }
-            });
-        }
-    }
-
-    
-    @SuppressWarnings("serial")
-    public static class FakeLocalhostWithParentJcloudsLocation extends JcloudsLocation {
-        public static final ConfigKey<Function<ConfigBag,Void>> BUILD_TEMPLATE_INTERCEPTOR = ConfigKeys.newConfigKey(new TypeToken<Function<ConfigBag,Void>>() {}, "buildtemplateinterceptor");
-        
-        ConfigBag lastConfigBag;
-
-        public FakeLocalhostWithParentJcloudsLocation() {
-            super();
-        }
-
-        public FakeLocalhostWithParentJcloudsLocation(Map<?, ?> conf) {
-            super(conf);
-        }
-
-        @Override
-        public JcloudsSshMachineLocation obtain(Map<?, ?> flags) throws NoMachinesAvailableException {
-            JcloudsSshMachineLocation result = getManagementContext().getLocationManager().createLocation(LocationSpec.create(JcloudsSshMachineLocation.class)
-                .configure("address", "127.0.0.1") 
-                .configure("port", 22) 
-                .configure("user", "bob")
-                .configure("jcloudsParent", this));
-            registerJcloudsMachineLocation("bogus", result);
-            
-            // explicitly invoke this customizer, to comply with tests
-            for (JcloudsLocationCustomizer customizer : getCustomizers(config().getBag())) {
-                customizer.customize(this, null, (JcloudsMachineLocation)result);
-            }
-            for (MachineLocationCustomizer customizer : getMachineCustomizers(config().getBag())) {
-                customizer.customize((JcloudsMachineLocation)result);
-            }
-
-            return result;
-        }
-        
-        @Override
-        protected void releaseNode(String instanceId) {
-            // no-op
-        }
-    }
-
-    @Test
-    public void testInheritsGeo() throws Exception {
-        ConfigBag allConfig = ConfigBag.newInstance()
-            .configure(IMAGE_ID, "bogus")
-            .configure(CLOUD_PROVIDER, "aws-ec2")
-            .configure(CLOUD_REGION_ID, "bogus")
-            .configure(ACCESS_IDENTITY, "bogus")
-            .configure(ACCESS_CREDENTIAL, "bogus")
-            .configure(LocationConfigKeys.LATITUDE, 42d)
-            .configure(LocationConfigKeys.LONGITUDE, -20d)
-            .configure(JcloudsLocation.MACHINE_CREATE_ATTEMPTS, 1);
-        FakeLocalhostWithParentJcloudsLocation ll = managementContext.getLocationManager().createLocation(LocationSpec.create(FakeLocalhostWithParentJcloudsLocation.class).configure(allConfig.getAllConfig()));
-        MachineLocation l = ll.obtain();
-        log.info("loc:" +l);
-        HostGeoInfo geo = HostGeoInfo.fromLocation(l);
-        log.info("geo: "+geo);
-        Assert.assertEquals(geo.latitude, 42d, 0.00001);
-        Assert.assertEquals(geo.longitude, -20d, 0.00001);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testInheritsGeoFromLocationMetadataProperties() throws Exception {
-        // in location-metadata.properties:
-//        brooklyn.location.jclouds.softlayer@wdc01.latitude=38.909202
-//        brooklyn.location.jclouds.softlayer@wdc01.longitude=-77.47314
-        ConfigBag allConfig = ConfigBag.newInstance()
-            .configure(IMAGE_ID, "bogus")
-            .configure(CLOUD_PROVIDER, "softlayer")
-            .configure(CLOUD_REGION_ID, "wdc01")
-            .configure(ACCESS_IDENTITY, "bogus")
-            .configure(ACCESS_CREDENTIAL, "bogus")
-            .configure(JcloudsLocation.MACHINE_CREATE_ATTEMPTS, 1);
-        FakeLocalhostWithParentJcloudsLocation ll = managementContext.getLocationManager().createLocation(LocationSpec.create(FakeLocalhostWithParentJcloudsLocation.class)
-            .configure(new JcloudsPropertiesFromBrooklynProperties().getJcloudsProperties("softlayer", "wdc01", null, managementContext.getBrooklynProperties()))
-            .configure(allConfig.getAllConfig()));
-        MachineLocation l = ll.obtain();
-        log.info("loc:" +l);
-        HostGeoInfo geo = HostGeoInfo.fromLocation(l);
-        log.info("geo: "+geo);
-        Assert.assertEquals(geo.latitude, 38.909202d, 0.00001);
-        Assert.assertEquals(geo.longitude, -77.47314d, 0.00001);
-    }
-
-    @Test
-    public void testInvokesCustomizerCallbacks() throws Exception {
-        JcloudsLocationCustomizer customizer = Mockito.mock(JcloudsLocationCustomizer.class);
-        MachineLocationCustomizer machineCustomizer = Mockito.mock(MachineLocationCustomizer.class);
-//        Mockito.when(customizer.customize(Mockito.any(JcloudsLocation.class), Mockito.any(ComputeService.class), Mockito.any(JcloudsSshMachineLocation.class)));
-        ConfigBag allConfig = ConfigBag.newInstance()
-            .configure(CLOUD_PROVIDER, "aws-ec2")
-            .configure(ACCESS_IDENTITY, "bogus")
-            .configure(ACCESS_CREDENTIAL, "bogus")
-            .configure(JcloudsLocationConfig.JCLOUDS_LOCATION_CUSTOMIZERS, ImmutableList.of(customizer))
-            .configure(JcloudsLocation.MACHINE_LOCATION_CUSTOMIZERS, ImmutableList.of(machineCustomizer))
-            .configure(JcloudsLocation.MACHINE_CREATE_ATTEMPTS, 1);
-        FakeLocalhostWithParentJcloudsLocation ll = managementContext.getLocationManager().createLocation(LocationSpec.create(FakeLocalhostWithParentJcloudsLocation.class).configure(allConfig.getAllConfig()));
-        JcloudsMachineLocation l = (JcloudsMachineLocation)ll.obtain();
-        Mockito.verify(customizer, Mockito.times(1)).customize(ll, null, l);
-        Mockito.verify(customizer, Mockito.never()).preRelease(l);
-        Mockito.verify(customizer, Mockito.never()).postRelease(l);
-        Mockito.verify(machineCustomizer, Mockito.times(1)).customize(l);
-        Mockito.verify(machineCustomizer, Mockito.never()).preRelease(l);
-        
-        ll.release(l);
-        Mockito.verify(customizer, Mockito.times(1)).preRelease(l);
-        Mockito.verify(customizer, Mockito.times(1)).postRelease(l);
-        Mockito.verify(machineCustomizer, Mockito.times(1)).preRelease(l);
-    }
-
-    // now test creating users
-    
-    protected String getCreateUserStatementsFor(Map<ConfigKey<?>,?> config) {
-        BailOutJcloudsLocation jl = BailOutJcloudsLocation.newBailOutJcloudsLocation(
-                managementContext, MutableMap.<ConfigKey<?>, Object>builder()
-                        .put(JcloudsLocationConfig.LOGIN_USER, "root").put(JcloudsLocationConfig.LOGIN_USER_PASSWORD, "m0ck")
-                        .put(JcloudsLocationConfig.USER, "bob").put(JcloudsLocationConfig.LOGIN_USER_PASSWORD, "b0b")
-                        .putAll(config).build());
-
-        UserCreation creation = jl.createUserStatements(null, jl.config().getBag());
-        return new StatementList(creation.statements).render(OsFamily.UNIX);
-    }
-    
-    @Test
-    public void testDisablesRoot() {
-        String statements = getCreateUserStatementsFor(ImmutableMap.<ConfigKey<?>, Object>of());
-        Assert.assertTrue(statements.contains("PermitRootLogin"), "Error:\n"+statements);
-        Assert.assertTrue(statements.matches("(?s).*sudoers.*useradd.*bob.*wheel.*"), "Error:\n"+statements);
-    }
-
-    @Test
-    public void testDisableRootFalse() {
-        String statements = getCreateUserStatementsFor(ImmutableMap.<ConfigKey<?>, Object>of(
-                JcloudsLocationConfig.DISABLE_ROOT_AND_PASSWORD_SSH, false));
-        Assert.assertFalse(statements.contains("PermitRootLogin"), "Error:\n"+statements);
-        Assert.assertTrue(statements.matches("(?s).*sudoers.*useradd.*bob.*wheel.*"), "Error:\n"+statements);
-    }
-    
-    @Test
-    public void testDisableRootAndSudoFalse() {
-        String statements = getCreateUserStatementsFor(ImmutableMap.<ConfigKey<?>, Object>of(
-            JcloudsLocationConfig.DISABLE_ROOT_AND_PASSWORD_SSH, false,
-            JcloudsLocationConfig.GRANT_USER_SUDO, false));
-        Assert.assertFalse(statements.contains("PermitRootLogin"), "Error:\n"+statements);
-        Assert.assertFalse(statements.matches("(?s).*sudoers.*useradd.*bob.*wheel.*"), "Error:\n"+statements);
-    }
-
-    // TODO more tests, where flags come in from resolver, named locations, etc
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsLoginLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsLoginLiveTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsLoginLiveTest.java
deleted file mode 100644
index ef0862f..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsLoginLiveTest.java
+++ /dev/null
@@ -1,408 +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.jclouds;
-
-import static org.testng.Assert.assertEquals;
-
-import java.io.File;
-import java.util.Map;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import brooklyn.location.LocationSpec;
-import brooklyn.location.basic.SshMachineLocation;
-import brooklyn.util.collections.MutableList;
-import brooklyn.util.collections.MutableMap;
-import brooklyn.util.os.Os;
-import brooklyn.util.stream.Streams;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-
-/**
- * Tests different login options for ssh keys, passwords, etc.
- */
-public class JcloudsLoginLiveTest extends AbstractJcloudsLiveTest {
-
-    private static final Logger LOG = LoggerFactory.getLogger(JcloudsLoginLiveTest.class);
-
-    public static final String AWS_EC2_REGION_NAME = AWS_EC2_USEAST_REGION_NAME;
-    public static final String AWS_EC2_LOCATION_SPEC = "jclouds:" + AWS_EC2_PROVIDER + (AWS_EC2_REGION_NAME == null ? "" : ":" + AWS_EC2_REGION_NAME);
-    
-    // Image: {id=us-east-1/ami-7d7bfc14, providerId=ami-7d7bfc14, name=RightImage_CentOS_6.3_x64_v5.8.8.5, location={scope=REGION, id=us-east-1, description=us-east-1, parent=aws-ec2, iso3166Codes=[US-VA]}, os={family=centos, arch=paravirtual, version=6.0, description=rightscale-us-east/RightImage_CentOS_6.3_x64_v5.8.8.5.manifest.xml, is64Bit=true}, description=rightscale-us-east/RightImage_CentOS_6.3_x64_v5.8.8.5.manifest.xml, version=5.8.8.5, status=AVAILABLE[available], loginUser=root, userMetadata={owner=411009282317, rootDeviceType=instance-store, virtualizationType=paravirtual, hypervisor=xen}}
-    public static final String AWS_EC2_CENTOS_IMAGE_ID = "us-east-1/ami-7d7bfc14";
-
-    // Image: {id=us-east-1/ami-d0f89fb9, providerId=ami-d0f89fb9, name=ubuntu/images/ebs/ubuntu-precise-12.04-amd64-server-20130411.1, location={scope=REGION, id=us-east-1, description=us-east-1, parent=aws-ec2, iso3166Codes=[US-VA]}, os={family=ubuntu, arch=paravirtual, version=12.04, description=099720109477/ubuntu/images/ebs/ubuntu-precise-12.04-amd64-server-20130411.1, is64Bit=true}, description=099720109477/ubuntu/images/ebs/ubuntu-precise-12.04-amd64-server-20130411.1, version=20130411.1, status=AVAILABLE[available], loginUser=ubuntu, userMetadata={owner=099720109477, rootDeviceType=ebs, virtualizationType=paravirtual, hypervisor=xen}}
-    public static final String AWS_EC2_UBUNTU_IMAGE_ID = "us-east-1/ami-d0f89fb9";
-    
-    // Image: {id=us-east-1/ami-5e008437, providerId=ami-5e008437, name=RightImage_Ubuntu_10.04_x64_v5.8.8.3, location={scope=REGION, id=us-east-1, description=us-east-1, parent=aws-ec2, iso3166Codes=[US-VA]}, os={family=ubuntu, arch=paravirtual, version=10.04, description=rightscale-us-east/RightImage_Ubuntu_10.04_x64_v5.8.8.3.manifest.xml, is64Bit=true}, description=rightscale-us-east/RightImage_Ubuntu_10.04_x64_v5.8.8.3.manifest.xml, version=5.8.8.3, status=AVAILABLE[available], loginUser=root, userMetadata={owner=411009282317, rootDeviceType=instance-store, virtualizationType=paravirtual, hypervisor=xen}}
-    // Uses "root" as loginUser
-    public static final String AWS_EC2_UBUNTU_10_IMAGE_ID = "us-east-1/ami-5e008437";
-
-    public static final String RACKSPACE_LOCATION_SPEC = "jclouds:" + RACKSPACE_PROVIDER;
-    
-    // Image: {id=LON/c52a0ca6-c1f2-4cd1-b7d6-afbcd1ebda22, providerId=c52a0ca6-c1f2-4cd1-b7d6-afbcd1ebda22, name=CentOS 6.0, location={scope=ZONE, id=LON, description=LON, parent=rackspace-cloudservers-uk, iso3166Codes=[GB-SLG]}, os={family=centos, name=CentOS 6.0, version=6.0, description=CentOS 6.0, is64Bit=true}, description=CentOS 6.0, status=AVAILABLE, loginUser=root, userMetadata={os_distro=centos, com.rackspace__1__visible_core=1, com.rackspace__1__build_rackconnect=1, com.rackspace__1__options=0, image_type=base, cache_in_nova=True, com.rackspace__1__source=kickstart, org.openstack__1__os_distro=org.centos, com.rackspace__1__release_build_date=2013-07-25_18-56-29, auto_disk_config=True, com.rackspace__1__release_version=5, os_type=linux, com.rackspace__1__visible_rackconnect=1, com.rackspace__1__release_id=210, com.rackspace__1__visible_managed=0, com.rackspace__1__build_core=1, org.openstack__1__os_version=6.0, org.openstack__1__architecture=x64, com.rackspace__1__build_ma
 naged=0}}
-    public static final String RACKSPACE_CENTOS_IMAGE_NAME_REGEX = "CentOS 6.0";
-    
-    // Image: {id=LON/29fe3e2b-f119-4715-927b-763e99ebe23e, providerId=29fe3e2b-f119-4715-927b-763e99ebe23e, name=Debian 6.06 (Squeeze), location={scope=ZONE, id=LON, description=LON, parent=rackspace-cloudservers-uk, iso3166Codes=[GB-SLG]}, os={family=debian, name=Debian 6.06 (Squeeze), version=6.0, description=Debian 6.06 (Squeeze), is64Bit=true}, description=Debian 6.06 (Squeeze), status=AVAILABLE, loginUser=root, userMetadata={os_distro=debian, com.rackspace__1__visible_core=1, com.rackspace__1__build_rackconnect=1, com.rackspace__1__options=0, image_type=base, cache_in_nova=True, com.rackspace__1__source=kickstart, org.openstack__1__os_distro=org.debian, com.rackspace__1__release_build_date=2013-08-06_13-05-36, auto_disk_config=True, com.rackspace__1__release_version=4, os_type=linux, com.rackspace__1__visible_rackconnect=1, com.rackspace__1__release_id=300, com.rackspace__1__visible_managed=0, com.rackspace__1__build_core=1, org.openstack__1__os_version=6.06, org.openstack__1_
 _architecture=x64, com.rackspace__1__build_managed=0}}
-    public static final String RACKSPACE_DEBIAN_IMAGE_NAME_REGEX = "Debian 6";
-    
-    protected JcloudsSshMachineLocation machine;
-    
-    private File privateRsaFile = new File(Os.tidyPath("~/.ssh/id_rsa"));
-    private File privateDsaFile = new File(Os.tidyPath("~/.ssh/id_dsa"));
-    private File privateRsaFileTmp = new File(privateRsaFile.getAbsoluteFile()+".tmp");
-    private File privateDsaFileTmp = new File(privateDsaFile.getAbsoluteFile()+".tmp");
-    private File publicRsaFile = new File(Os.tidyPath("~/.ssh/id_rsa.pub"));
-    private File publicDsaFile = new File(Os.tidyPath("~/.ssh/id_dsa.pub"));
-    private File publicRsaFileTmp = new File(publicRsaFile.getAbsoluteFile()+".tmp");
-    private File publicDsaFileTmp = new File(publicDsaFile.getAbsoluteFile()+".tmp");
-    private boolean privateRsaFileMoved;
-    private boolean privateDsaFileMoved;
-    private boolean publicRsaFileMoved;
-    private boolean publicDsaFileMoved;
-
-    @Test(groups = {"Live"})
-    protected void testAwsEc2SpecifyingJustPrivateSshKeyInDeprecatedForm() throws Exception {
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.USER.getName(), "myname");
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.LEGACY_PRIVATE_KEY_FILE.getName(), "~/.ssh/id_rsa");
-        jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(AWS_EC2_LOCATION_SPEC);
-        
-        machine = createEc2Machine(ImmutableMap.<String,Object>of());
-        assertSshable(machine);
-        
-        assertSshable(ImmutableMap.builder()
-                .put("address", machine.getAddress())
-                .put("user", "myname")
-                .put(SshMachineLocation.PRIVATE_KEY_FILE, Os.tidyPath("~/.ssh/id_rsa"))
-                .build());
-    }
-    
-    @Test(groups = {"Live"})
-    protected void testAwsEc2SpecifyingPrivateAndPublicSshKeyInDeprecatedForm() throws Exception {
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.USER.getName(), "myname");
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.LEGACY_PRIVATE_KEY_FILE.getName(), "~/.ssh/id_rsa");
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.LEGACY_PUBLIC_KEY_FILE.getName(), "~/.ssh/id_rsa.pub");
-        jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(AWS_EC2_LOCATION_SPEC);
-        
-        machine = createEc2Machine(ImmutableMap.<String,Object>of());
-        assertSshable(machine);
-        
-        assertSshable(ImmutableMap.builder()
-                .put("address", machine.getAddress())
-                .put("user", "myname")
-                .put(SshMachineLocation.PRIVATE_KEY_FILE, Os.tidyPath("~/.ssh/id_rsa"))
-                .build());
-    }
-
-    // Uses default key files
-    @Test(groups = {"Live"})
-    protected void testAwsEc2SpecifyingNoKeyFiles() throws Exception {
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.USER.getName(), "myname");
-        jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(AWS_EC2_LOCATION_SPEC);
-        
-        machine = createEc2Machine(ImmutableMap.<String,Object>of());
-        assertSshable(machine);
-        
-        assertSshable(ImmutableMap.builder()
-                .put("address", machine.getAddress())
-                .put("user", "myname")
-                .put(SshMachineLocation.PRIVATE_KEY_FILE, Os.tidyPath("~/.ssh/id_rsa"))
-                .build());
-    }
-    
-    @Test(groups = {"Live"})
-    public void testSpecifyingPasswordAndNoDefaultKeyFilesExist() throws Exception {
-        try {
-            moveSshKeyFiles();
-            
-            brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.USER.getName(), "myname");
-            brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.PASSWORD.getName(), "mypassword");
-            jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(RACKSPACE_LOCATION_SPEC);
-            
-            machine = createRackspaceMachine(ImmutableMap.of("imageNameRegex", RACKSPACE_DEBIAN_IMAGE_NAME_REGEX));
-            assertSshable(machine);
-            
-            assertSshable(ImmutableMap.builder()
-                    .put("address", machine.getAddress())
-                    .put("user", "myname")
-                    .put(SshMachineLocation.PASSWORD, "mypassword")
-                    .build());
-        } finally {
-            restoreSshKeyFiles();
-        }
-    }
-
-    // Generates and uses a random password
-    @Test(groups = {"Live"})
-    protected void testSpecifyingNothingAndNoDefaultKeyFilesExist() throws Exception {
-        try {
-            moveSshKeyFiles();
-            
-            brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.USER.getName(), "myname");
-            jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(RACKSPACE_LOCATION_SPEC);
-            
-            machine = createRackspaceMachine(ImmutableMap.of("imageNameRegex", RACKSPACE_DEBIAN_IMAGE_NAME_REGEX));
-            assertSshable(machine);
-            assertEquals(machine.getUser(), "myname");
-        } finally {
-            restoreSshKeyFiles();
-        }
-    }
-
-    @Test(groups = {"Live"})
-    protected void testSpecifyingPasswordAndSshKeysPrefersKeys() throws Exception {
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.USER.getName(), "myname");
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.PRIVATE_KEY_FILE.getName(), "~/.ssh/id_rsa");
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.PUBLIC_KEY_FILE.getName(), "~/.ssh/id_rsa.pub");
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.PASSWORD.getName(), "mypassword");
-        jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(RACKSPACE_LOCATION_SPEC);
-        
-        machine = createRackspaceMachine(ImmutableMap.of("imageNameRegex", RACKSPACE_DEBIAN_IMAGE_NAME_REGEX));
-        assertSshable(machine);
-        
-        assertSshable(ImmutableMap.builder()
-                .put("address", machine.getAddress())
-                .put("user", "myname")
-                .put(SshMachineLocation.PRIVATE_KEY_FILE, Os.tidyPath("~/.ssh/id_rsa"))
-                .build());
-        
-        assertSshable(ImmutableMap.builder()
-                .put("address", machine.getAddress())
-                .put("user", "myname")
-                .put(SshMachineLocation.PASSWORD, "mypassword")
-                .build());
-    }
-
-    @Test(groups = {"Live"})
-    protected void testSpecifyingPasswordIgnoresDefaultSshKeys() throws Exception {
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.USER.getName(), "myname");
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.PASSWORD.getName(), "mypassword");
-        jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(RACKSPACE_LOCATION_SPEC);
-        
-        machine = createRackspaceMachine(ImmutableMap.of("imageNameRegex", RACKSPACE_DEBIAN_IMAGE_NAME_REGEX));
-        assertSshable(machine);
-        
-        assertSshable(ImmutableMap.builder()
-                .put("address", machine.getAddress())
-                .put("user", "myname")
-                .put(SshMachineLocation.PASSWORD, "mypassword")
-                .build());
-        
-        assertNotSshable(ImmutableMap.builder()
-            .put("address", machine.getAddress())
-            .put("user", "myname")
-            .put(SshMachineLocation.PRIVATE_KEY_FILE, Os.tidyPath("~/.ssh/id_rsa"))
-            .build());
-    }
-
-    @Test(groups = {"Live"})
-    protected void testSpecifyingPasswordWithPublicKeyAllowsKeyAccess() throws Exception {
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.USER.getName(), "myname");
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.PASSWORD.getName(), "mypassword");
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.PUBLIC_KEY_FILE.getName(), "~/.ssh/id_rsa.pub");
-        jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(RACKSPACE_LOCATION_SPEC);
-        
-        machine = createRackspaceMachine(ImmutableMap.of("imageNameRegex", RACKSPACE_DEBIAN_IMAGE_NAME_REGEX));
-        assertSshable(machine);
-        
-        assertSshable(ImmutableMap.builder()
-                .put("address", machine.getAddress())
-                .put("user", "myname")
-                .put(SshMachineLocation.PRIVATE_KEY_FILE, Os.tidyPath("~/.ssh/id_rsa"))
-                .build());
-        
-        assertSshable(ImmutableMap.builder()
-                .put("address", machine.getAddress())
-                .put("user", "myname")
-                .put(SshMachineLocation.PASSWORD, "mypassword")
-                .build());
-    }
-
-    // user "root" matches the loginUser=root
-    @Test(groups = {"Live"})
-    protected void testSpecifyingPasswordWhenNoDefaultKeyFilesExistWithRootUser() throws Exception {
-        try {
-            moveSshKeyFiles();
-            
-            brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.USER.getName(), "root");
-            brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.PASSWORD.getName(), "mypassword");
-            jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(RACKSPACE_LOCATION_SPEC);
-            
-            machine = createRackspaceMachine(ImmutableMap.of("imageNameRegex", RACKSPACE_DEBIAN_IMAGE_NAME_REGEX));
-            assertSshable(machine);
-            
-            assertSshable(ImmutableMap.builder()
-                    .put("address", machine.getAddress())
-                    .put("user", "root")
-                    .put(SshMachineLocation.PASSWORD, "mypassword")
-                    .build());
-        } finally {
-            restoreSshKeyFiles();
-        }
-    }
-
-    @Test(groups = {"Live"})
-    protected void testAwsEc2SpecifyingRootUser() throws Exception {
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.USER.getName(), "root");
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.PRIVATE_KEY_FILE.getName(), "~/.ssh/id_rsa");
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.PUBLIC_KEY_FILE.getName(), "~/.ssh/id_rsa.pub");
-        jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(AWS_EC2_LOCATION_SPEC);
-        
-        machine = createEc2Machine(ImmutableMap.<String,Object>of("imageId", AWS_EC2_UBUNTU_10_IMAGE_ID));
-        assertSshable(machine);
-        
-        assertSshable(ImmutableMap.builder()
-                .put("address", machine.getAddress())
-                .put("user", "root")
-                .put(SshMachineLocation.PRIVATE_KEY_FILE, Os.tidyPath("~/.ssh/id_rsa"))
-                .build());
-    }
-    
-    @Test(groups = {"Live"})
-    protected void testAwsEc2WhenBlankUserSoUsesRootLoginUser() throws Exception {
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.USER.getName(), "");
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.PRIVATE_KEY_FILE.getName(), "~/.ssh/id_rsa");
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.PUBLIC_KEY_FILE.getName(), "~/.ssh/id_rsa.pub");
-        jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(AWS_EC2_LOCATION_SPEC);
-        
-        machine = createEc2Machine(ImmutableMap.<String,Object>of("imageId", AWS_EC2_UBUNTU_10_IMAGE_ID));
-        assertSshable(machine);
-        
-        assertSshable(ImmutableMap.builder()
-                .put("address", machine.getAddress())
-                .put("user", "root")
-                .put(SshMachineLocation.PRIVATE_KEY_FILE, Os.tidyPath("~/.ssh/id_rsa"))
-                .build());
-    }
-    
-    // In JcloudsLocation.NON_ADDABLE_USERS, "ec2-user" was treated special and was not added!
-    // That was very bad for if someone is running brooklyn on a new AWS VM, and just installs brooklyn+runs as the default ec2-user.
-    @Test(groups = {"Live"})
-    protected void testAwsEc2SpecifyingSpecialUser() throws Exception {
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.USER.getName(), "ec2-user");
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.PRIVATE_KEY_FILE.getName(), "~/.ssh/id_rsa");
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.PUBLIC_KEY_FILE.getName(), "~/.ssh/id_rsa.pub");
-        jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(AWS_EC2_LOCATION_SPEC);
-        
-        machine = createEc2Machine(ImmutableMap.<String,Object>of("imageId", AWS_EC2_UBUNTU_10_IMAGE_ID));
-        assertSshable(machine);
-        
-        assertSshable(ImmutableMap.builder()
-                .put("address", machine.getAddress())
-                .put("user", "ec2-user")
-                .put(SshMachineLocation.PRIVATE_KEY_FILE, Os.tidyPath("~/.ssh/id_rsa"))
-                .build());
-    }
-    
-    @Override
-    protected void releaseMachine(JcloudsSshMachineLocation machine) {
-        jcloudsLocation.release(machine);
-    }
-    
-    private JcloudsSshMachineLocation createEc2Machine(Map<String,? extends Object> conf) throws Exception {
-        return obtainMachine(MutableMap.<String,Object>builder()
-                .putAll(conf)
-                .putIfAbsent("imageId", AWS_EC2_CENTOS_IMAGE_ID)
-                .putIfAbsent("hardwareId", AWS_EC2_SMALL_HARDWARE_ID)
-                .putIfAbsent("inboundPorts", ImmutableList.of(22))
-                .build());
-    }
-    
-    private JcloudsSshMachineLocation createRackspaceMachine(Map<String,? extends Object> conf) throws Exception {
-        return obtainMachine(MutableMap.<String,Object>builder()
-                .putAll(conf)
-                .putIfAbsent("inboundPorts", ImmutableList.of(22))
-                .build());
-    }
-    
-    protected void assertSshable(Map<?,?> machineConfig) {
-        SshMachineLocation machineWithThatConfig = managementContext.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class)
-                .configure(machineConfig));
-        try {
-            assertSshable(machineWithThatConfig);
-        } finally {
-            Streams.closeQuietly(machineWithThatConfig);
-        }
-    }
-    
-    protected void assertNotSshable(Map<?,?> machineConfig) {
-        try {
-            assertSshable(machineConfig);
-            Assert.fail("ssh should not have succeeded "+machineConfig);
-        } catch (Exception e) {
-            // expected
-            LOG.debug("Exception as expected when testing sshable "+machineConfig);
-        }
-    }
-    
-    private void moveSshKeyFiles() throws Exception {
-        privateRsaFileMoved = false;
-        privateDsaFileMoved = false;
-        publicRsaFileMoved = false;
-        publicDsaFileMoved = false;
-
-        if (privateRsaFile.exists()) {
-            LOG.info("Moving {} to {}", privateRsaFile, privateRsaFileTmp);
-            Runtime.getRuntime().exec("mv "+privateRsaFile.getAbsolutePath()+" "+privateRsaFileTmp.getAbsolutePath());
-            privateRsaFileMoved = true;
-        }
-        if (privateDsaFile.exists()) {
-            LOG.info("Moving {} to {}", privateDsaFile, privateDsaFileTmp);
-            Runtime.getRuntime().exec("mv "+privateDsaFile.getAbsolutePath()+" "+privateDsaFileTmp.getAbsolutePath());
-            privateDsaFileMoved = true;
-        }
-        if (publicRsaFile.exists()) {
-            LOG.info("Moving {} to {}", publicRsaFile, publicRsaFileTmp);
-            Runtime.getRuntime().exec("mv "+publicRsaFile.getAbsolutePath()+" "+publicRsaFileTmp.getAbsolutePath());
-            publicRsaFileMoved = true;
-        }
-        if (publicDsaFile.exists()) {
-            LOG.info("Moving {} to {}", publicDsaFile, publicDsaFileTmp);
-            Runtime.getRuntime().exec("mv "+publicDsaFile.getAbsolutePath()+" "+publicDsaFileTmp.getAbsolutePath());
-            publicDsaFileMoved = true;
-        }
-    }
-    
-    private void restoreSshKeyFiles() throws Exception {
-        if (privateRsaFileMoved) {
-            LOG.info("Restoring {} form {}", privateRsaFile, privateRsaFileTmp);
-            Runtime.getRuntime().exec("mv "+privateRsaFileTmp.getAbsolutePath()+" "+privateRsaFile.getAbsolutePath());
-            privateRsaFileMoved = false;
-        }
-        if (privateDsaFileMoved) {
-            LOG.info("Restoring {} form {}", privateDsaFile, privateDsaFileTmp);
-            Runtime.getRuntime().exec("mv "+privateDsaFileTmp.getAbsolutePath()+" "+privateDsaFile.getAbsolutePath());
-            privateDsaFileMoved = false;
-        }
-        if (publicRsaFileMoved) {
-            LOG.info("Restoring {} form {}", publicRsaFile, publicRsaFileTmp);
-            Runtime.getRuntime().exec("mv "+publicRsaFileTmp.getAbsolutePath()+" "+publicRsaFile.getAbsolutePath());
-            publicRsaFileMoved = false;
-        }
-        if (publicDsaFileMoved) {
-            LOG.info("Restoring {} form {}", publicDsaFile, publicDsaFileTmp);
-            Runtime.getRuntime().exec("mv "+publicDsaFileTmp.getAbsolutePath()+" "+publicDsaFile.getAbsolutePath());
-            publicDsaFileMoved = false;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsMachineNamerTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsMachineNamerTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsMachineNamerTest.java
deleted file mode 100644
index da21750..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsMachineNamerTest.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.jclouds;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import brooklyn.util.config.ConfigBag;
-import brooklyn.util.text.Strings;
-
-public class JcloudsMachineNamerTest {
-
-    private static final Logger log = LoggerFactory.getLogger(JcloudsMachineNamerTest.class);
-    
-    @Test
-    public void testGenerateGroupIdInVcloud() {
-        ConfigBag cfg = new ConfigBag()
-            .configure(JcloudsLocationConfig.CLOUD_PROVIDER, "vcloud")
-            .configure(JcloudsLocationConfig.CALLER_CONTEXT, "!mycontext!");
-        
-        String result = new JcloudsMachineNamer().generateNewGroupId(cfg);
-        
-        log.info("test mycontext vcloud group id gives: "+result);
-        // brooklyn-user-!mycontext!-1234
-        // br-<code>-<user>-myco-1234
-        Assert.assertTrue(result.length() <= 24-4-1, "result: "+result);
-        
-        String user = Strings.maxlen(System.getProperty("user.name"), 2).toLowerCase();
-        // (length 2 will happen if user is brooklyn, to avoid brooklyn-brooklyn at start!)
-        Assert.assertTrue(result.indexOf(user) >= 0);
-        Assert.assertTrue(result.indexOf("-myc") >= 0);
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsPropertiesFromBrooklynPropertiesTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsPropertiesFromBrooklynPropertiesTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsPropertiesFromBrooklynPropertiesTest.java
deleted file mode 100644
index d3134a4..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsPropertiesFromBrooklynPropertiesTest.java
+++ /dev/null
@@ -1,99 +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.jclouds;
-
-import java.util.Map;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.Maps;
-
-public class JcloudsPropertiesFromBrooklynPropertiesTest {
-    
-    protected static Map<String, Object> sampleProviderOrApiProps() {
-        Map<String, Object> map = Maps.newHashMap();
-        map.put("brooklyn.location.jclouds.FooServers.identity", "bob");
-        map.put("brooklyn.location.jclouds.FooServers.credential", "s3cr3t");
-        map.put("brooklyn.location.jclouds.FooServers.jclouds.ssh.max-retries", "100");
-        return map;
-    }
-
-    protected static Map<String, Object> sampleNamedProps() {
-        Map<String, Object> map = Maps.newHashMap();
-        map.put("brooklyn.location.named.cloudfirst", "jclouds:openstack-nova");
-        map.put("brooklyn.location.named.cloudfirst.identity", "myId");
-        map.put("brooklyn.location.named.cloudfirst.credential", "password");
-        map.put("brooklyn.location.named.cloudfirst.imageId", "RegionOne/1");
-        map.put("brooklyn.location.named.cloudfirst.securityGroups", "universal");
-        return map;
-    }
-
-    protected static Map<String, Object> unsupportedSampleProviderOrApiProps() {
-        Map<String, Object> map = Maps.newHashMap();
-        map.put("brooklyn.location.jclouds.FooServers.image-id", "invalid-image-id");
-        return map;
-    }
-    
-    protected static Map<String, Object> unsupportedNamedProps() {
-        Map<String, Object> map = Maps.newHashMap();
-        map.put("brooklyn.location.named.cloudfirst", "jclouds:openstack-nova");
-        map.put("brooklyn.location.named.cloudfirst.hardware-id", "invalid-hardware-id");
-        return map;
-    }
-    
-    private JcloudsPropertiesFromBrooklynProperties parser;
-
-    @BeforeMethod(alwaysRun=true)
-    public void setUp() throws Exception {
-        parser = new JcloudsPropertiesFromBrooklynProperties();
-    }
-    
-    @Test
-    public void testProviderOrApiProperties() {
-        Map<String, Object> map = parser.getJcloudsProperties("FooServers", null, null, sampleProviderOrApiProps());
-        Assert.assertEquals(map.get("identity"), "bob");
-        Assert.assertEquals(map.get("credential"), "s3cr3t");
-        Assert.assertEquals(map.get("provider"), "FooServers");
-    }
-
-    @Test
-    public void testNamedProperties() {
-        Map<String, Object> map = parser.getJcloudsProperties("openstack-nova", null, "cloudfirst", sampleNamedProps());
-        Assert.assertEquals(map.get("provider"), "openstack-nova");
-        Assert.assertEquals(map.get("identity"), "myId");
-        Assert.assertEquals(map.get("credential"), "password");
-        Assert.assertEquals(map.get("imageId"), "RegionOne/1");
-        Assert.assertEquals(map.get("securityGroups"), "universal");
-    }
-    
-    @Test
-    public void testOrderOfPreference() {
-        Map<String, Object> allProperties = Maps.newHashMap();
-        allProperties.putAll(sampleProviderOrApiProps());
-        allProperties.putAll(sampleNamedProps());
-        Map<String, Object> map = parser.getJcloudsProperties("openstack-nova", null, "cloudfirst", allProperties);
-        Assert.assertEquals(map.get("provider"), "openstack-nova");
-        Assert.assertEquals(map.get("identity"), "myId");
-        Assert.assertEquals(map.get("credential"), "password");
-        Assert.assertEquals(map.get("imageId"), "RegionOne/1");
-        Assert.assertEquals(map.get("securityGroups"), "universal");
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsSshingLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsSshingLiveTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsSshingLiveTest.java
deleted file mode 100644
index bc89fe6..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/JcloudsSshingLiveTest.java
+++ /dev/null
@@ -1,61 +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.jclouds;
-
-import static org.testng.Assert.assertEquals;
-
-import org.testng.annotations.Test;
-
-import brooklyn.util.collections.MutableMap;
-
-import com.google.common.collect.ImmutableList;
-
-/**
- * Tests the initial ssh command execution (e.g. user creation), using jclouds TemplateOptions
- * and using just brooklyn.
- */
-public class JcloudsSshingLiveTest extends AbstractJcloudsLiveTest {
-
-    public static final String SOFTLAYER_REGION_NAME = SOFTLAYER_AMS01_REGION_NAME;
-    public static final String SOTLAYER_LOCATION_SPEC = "jclouds:" + SOFTLAYER_PROVIDER + (SOFTLAYER_REGION_NAME == null ? "" : ":" + SOFTLAYER_REGION_NAME);
-    
-    protected JcloudsSshMachineLocation machine;
-    
-    @Test(groups = {"Live"})
-    public void testCreatesUserUsingJcloudsTemplateOptions() throws Exception {
-        runCreatesUser(true);
-    }
-    
-    @Test(groups = {"Live"})
-    public void testCreatesUserWithoutUsingJcloudsTemplateOptions() throws Exception {
-        runCreatesUser(false);
-    }
-    
-    protected void runCreatesUser(boolean useJcloudsSshInit) throws Exception {
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.USE_JCLOUDS_SSH_INIT.getName(), Boolean.toString(useJcloudsSshInit));
-        brooklynProperties.put(BROOKLYN_PROPERTIES_PREFIX+JcloudsLocationConfig.USER.getName(), "myname");
-        jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(SOTLAYER_LOCATION_SPEC);
-        
-        JcloudsSshMachineLocation machine = obtainMachine(MutableMap.<String,Object>builder()
-                .putIfAbsent("inboundPorts", ImmutableList.of(22))
-                .build());
-        assertSshable(machine);
-        assertEquals(machine.getUser(), "myname");
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/LiveTestEntity.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/LiveTestEntity.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/LiveTestEntity.java
deleted file mode 100644
index c8db561..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/LiveTestEntity.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.jclouds;
-
-import java.util.Collection;
-
-import org.apache.brooklyn.api.entity.proxying.ImplementedBy;
-import org.apache.brooklyn.test.entity.TestEntity;
-import org.apache.brooklyn.test.entity.TestEntityImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import brooklyn.entity.basic.Lifecycle;
-import brooklyn.location.Location;
-import brooklyn.location.MachineProvisioningLocation;
-import brooklyn.location.NoMachinesAvailableException;
-import brooklyn.location.basic.LocationInternal;
-
-import com.google.common.base.Predicates;
-import com.google.common.base.Throwables;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-
-@ImplementedBy(LiveTestEntity.LiveTestEntityImpl.class)
-public interface LiveTestEntity extends TestEntity {
-
-    MachineProvisioningLocation<?> getProvisioningLocation();
-    JcloudsSshMachineLocation getObtainedLocation();
-
-    public static class LiveTestEntityImpl extends TestEntityImpl implements LiveTestEntity {
-
-        private static final Logger LOG = LoggerFactory.getLogger(LiveTestEntityImpl.class);
-        private JcloudsLocation provisioningLocation;
-        private JcloudsSshMachineLocation obtainedLocation;
-
-        @Override
-        public void start(final Collection<? extends Location> locs) {
-            LOG.trace("Starting {}", this);
-            callHistory.add("start");
-            setAttribute(SERVICE_STATE, Lifecycle.STARTING);
-            counter.incrementAndGet();
-            addLocations(locs);
-            provisioningLocation = (JcloudsLocation) Iterables.find(locs, Predicates.instanceOf(JcloudsLocation.class));
-            try {
-                obtainedLocation = (JcloudsSshMachineLocation)provisioningLocation.obtain(((LocationInternal)provisioningLocation).config().getBag().getAllConfig());
-            } catch (NoMachinesAvailableException e) {
-                throw Throwables.propagate(e);
-            }
-            addLocations(ImmutableList.of(obtainedLocation));
-            setAttribute(SERVICE_STATE, Lifecycle.RUNNING);
-        }
-
-        @Override
-        public void stop() {
-            LOG.trace("Stopping {}", this);
-            callHistory.add("stop");
-            setAttribute(SERVICE_STATE, Lifecycle.STOPPING);
-            counter.decrementAndGet();
-            if (provisioningLocation != null && obtainedLocation != null) {
-                provisioningLocation.release(obtainedLocation);
-            }
-            setAttribute(SERVICE_STATE, Lifecycle.STOPPED);
-        }
-
-        public MachineProvisioningLocation<?> getProvisioningLocation() {
-            return provisioningLocation;
-        }
-
-        public JcloudsSshMachineLocation getObtainedLocation() {
-            return obtainedLocation;
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationLiveTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationLiveTest.java
deleted file mode 100644
index 6d73e59..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationLiveTest.java
+++ /dev/null
@@ -1,150 +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.jclouds;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import java.io.File;
-
-import org.apache.brooklyn.api.entity.proxying.EntitySpec;
-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.Entities;
-import brooklyn.entity.rebind.RebindTestUtils;
-import brooklyn.location.OsDetails;
-import brooklyn.management.internal.LocalManagementContext;
-import brooklyn.util.config.ConfigBag;
-
-import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-import com.google.common.io.Files;
-
-public class RebindJcloudsLocationLiveTest extends AbstractJcloudsLiveTest {
-
-    public static final String AWS_EC2_REGION_NAME = AWS_EC2_USEAST_REGION_NAME;
-    public static final String AWS_EC2_LOCATION_SPEC = "jclouds:" + AWS_EC2_PROVIDER + ":" + AWS_EC2_REGION_NAME;
-
-    private ClassLoader classLoader = getClass().getClassLoader();
-    private TestApplication origApp;
-    private LiveTestEntity origEntity;
-    private File mementoDir;
-    
-    @BeforeMethod(alwaysRun=true)
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        origApp = ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class), managementContext);
-        origEntity = origApp.createAndManageChild(EntitySpec.create(LiveTestEntity.class));
-
-        jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(AWS_EC2_LOCATION_SPEC);
-        jcloudsLocation.setConfig(JcloudsLocation.HARDWARE_ID, AWS_EC2_SMALL_HARDWARE_ID);
-    }
-
-    @AfterMethod(alwaysRun = true)
-    @Override
-    public void tearDown() throws Exception {
-        super.tearDown();
-        if (origApp != null) Entities.destroyAll(origApp.getManagementContext());
-        if (mementoDir != null) RebindTestUtils.deleteMementoDir(mementoDir);
-    }
-    
-    @Override
-    protected LocalManagementContext newManagementContext() {
-        mementoDir = Files.createTempDir();
-        return RebindTestUtils.newPersistingManagementContext(mementoDir, classLoader, 1);
-    }
-    
-    @Test(groups="Live")
-    public void testRebindsToJcloudsMachine() throws Exception {
-        origApp.start(ImmutableList.of(jcloudsLocation));
-        JcloudsLocation origJcloudsLocation = jcloudsLocation;
-        System.out.println("orig locations: " + origEntity.getLocations());
-        JcloudsSshMachineLocation origMachine = (JcloudsSshMachineLocation) Iterables.find(origEntity.getLocations(), Predicates.instanceOf(JcloudsSshMachineLocation.class));
-
-        TestApplication newApp = rebind();
-        LiveTestEntity newEntity = (LiveTestEntity) Iterables.find(newApp.getChildren(), Predicates.instanceOf(LiveTestEntity.class));
-        JcloudsSshMachineLocation newMachine = (JcloudsSshMachineLocation) Iterables.find(newEntity.getLocations(), Predicates.instanceOf(JcloudsSshMachineLocation.class));
-
-        assertMachineEquals(newMachine, origMachine);
-        assertTrue(newMachine.isSshable());
-
-        JcloudsLocation newJcloudsLoction = newMachine.getParent();
-        assertJcloudsLocationEquals(newJcloudsLoction, origJcloudsLocation);
-    }
-
-    private void assertMachineEquals(JcloudsSshMachineLocation actual, JcloudsSshMachineLocation expected) {
-        String errmsg = "actual="+actual.toVerboseString()+"; expected="+expected.toVerboseString();
-        assertEquals(actual.getId(), expected.getId(), errmsg);
-        assertEquals(actual.getJcloudsId(), expected.getJcloudsId(), errmsg);
-        assertOsDetailEquals(actual.getOsDetails(), expected.getOsDetails());
-        assertEquals(actual.getSshHostAndPort(), expected.getSshHostAndPort());
-        assertEquals(actual.getPrivateAddress(), expected.getPrivateAddress());
-        assertConfigBagEquals(actual.config().getBag(), expected.config().getBag(), errmsg);
-    }
-
-    private void assertOsDetailEquals(OsDetails actual, OsDetails expected) {
-        String errmsg = "actual="+actual+"; expected="+expected;
-        if (actual == null) assertNull(expected, errmsg);
-        assertEquals(actual.isWindows(), expected.isWindows());
-        assertEquals(actual.isLinux(), expected.isLinux());
-        assertEquals(actual.isMac(), expected.isMac());
-        assertEquals(actual.getName(), expected.getName());
-        assertEquals(actual.getArch(), expected.getArch());
-        assertEquals(actual.getVersion(), expected.getVersion());
-        assertEquals(actual.is64bit(), expected.is64bit());
-    }
-
-    private void assertJcloudsLocationEquals(JcloudsLocation actual, JcloudsLocation expected) {
-        String errmsg = "actual="+actual.toVerboseString()+"; expected="+expected.toVerboseString();
-        assertEquals(actual.getId(), expected.getId(), errmsg);
-        assertEquals(actual.getProvider(), expected.getProvider(), errmsg);
-        assertEquals(actual.getRegion(), expected.getRegion(), errmsg);
-        assertEquals(actual.getIdentity(), expected.getIdentity(), errmsg);
-        assertEquals(actual.getCredential(), expected.getCredential(), errmsg);
-        assertEquals(actual.getHostGeoInfo(), expected.getHostGeoInfo(), errmsg);
-        assertConfigBagEquals(actual.config().getBag(), expected.config().getBag(), errmsg);
-    }
-
-    private void assertConfigBagEquals(ConfigBag actual, ConfigBag expected, String errmsg) {
-        // TODO revisit the strong assertion that configBags are equal
-        
-//        // TODO Can we include all of these things (e.g. when locations are entities, so flagged fields not treated special)?
-//        List<String> configToIgnore = ImmutableList.of("id", "template", "usedPorts", "machineCreationSemaphore", "config");
-//        MutableMap<Object, Object> actualMap = MutableMap.builder().putAll(actual.getAllConfig())
-//                .removeAll(configToIgnore)
-//                .build();
-//        MutableMap<Object, Object> expectedMap = MutableMap.builder().putAll(expected.getAllConfig())
-//                .removeAll(configToIgnore)
-//                .build();
-//        
-//        assertEquals(actualMap, expectedMap, errmsg+"; actualBag="+actualMap+"; expectedBag="+expectedMap);
-    }
-    
-    private TestApplication rebind() throws Exception {
-        RebindTestUtils.waitForPersisted(origApp);
-        return (TestApplication) RebindTestUtils.rebind(mementoDir, getClass().getClassLoader());
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationTest.java
deleted file mode 100644
index 7ce0ad3..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/RebindJcloudsLocationTest.java
+++ /dev/null
@@ -1,66 +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.jclouds;
-
-import static org.testng.Assert.assertNotEquals;
-import static org.testng.Assert.assertNull;
-
-import org.jclouds.domain.LoginCredentials;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import brooklyn.entity.rebind.RebindTestFixtureWithApp;
-import brooklyn.location.basic.SshMachineLocation;
-import brooklyn.util.config.ConfigBag;
-
-import com.google.common.net.HostAndPort;
-
-public class RebindJcloudsLocationTest extends RebindTestFixtureWithApp {
-
-    public static final String LOC_SPEC = "jclouds:aws-ec2:us-east-1";
-
-    private JcloudsLocation origLoc;
-    
-    @BeforeMethod(alwaysRun=true)
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        origLoc = (JcloudsLocation) origManagementContext.getLocationRegistry().resolve(LOC_SPEC);
-    }
-
-    // Previously, the rebound config contained "id" which was then passed to createTemporarySshMachineLocation, causing
-    // that to fail (because the LocationSpec should not have had "id" in its config)
-    @Test
-    public void testReboundConfigDoesNotContainId() throws Exception {
-        rebind();
-        
-        JcloudsLocation newLoc = (JcloudsLocation) newManagementContext.getLocationManager().getLocation(origLoc.getId());
-        
-        ConfigBag newLocConfig = newLoc.config().getBag();
-        ConfigBag config = ConfigBag.newInstanceCopying(newLocConfig);
-        
-        assertNull(newLocConfig.getStringKey(("id")));
-        
-        SshMachineLocation tempMachine = newLoc.createTemporarySshMachineLocation(
-                HostAndPort.fromParts("localhost", 1234), 
-                LoginCredentials.builder().identity("myuser").password("mypass").noPrivateKey().build(), 
-                config);
-        assertNotEquals(tempMachine.getId(), newLoc.getId());
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e2c57058/locations/jclouds/src/test/java/brooklyn/location/jclouds/SimpleJcloudsLocationUserLoginAndConfigLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/location/jclouds/SimpleJcloudsLocationUserLoginAndConfigLiveTest.java b/locations/jclouds/src/test/java/brooklyn/location/jclouds/SimpleJcloudsLocationUserLoginAndConfigLiveTest.java
deleted file mode 100644
index 193f108..0000000
--- a/locations/jclouds/src/test/java/brooklyn/location/jclouds/SimpleJcloudsLocationUserLoginAndConfigLiveTest.java
+++ /dev/null
@@ -1,249 +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.jclouds;
-
-import java.io.ByteArrayOutputStream;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import brooklyn.location.NoMachinesAvailableException;
-import brooklyn.location.basic.SshMachineLocation;
-import brooklyn.util.collections.MutableMap;
-import brooklyn.util.ssh.BashCommands;
-import brooklyn.util.text.Identifiers;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
-
-public class SimpleJcloudsLocationUserLoginAndConfigLiveTest extends AbstractJcloudsLiveTest {
-
-    // FIXME And tidy up this one
-    
-    private static final String LOCATION_SPEC = AWS_EC2_PROVIDER + ":" + AWS_EC2_USEAST_REGION_NAME;
-    
-    private static final Logger log = LoggerFactory.getLogger(SimpleJcloudsLocationUserLoginAndConfigLiveTest.class);
-    
-    @BeforeMethod(alwaysRun=true)
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        jcloudsLocation = resolve(LOCATION_SPEC);
-    }
-    
-    @SuppressWarnings("rawtypes")
-    @Test(groups="Live")
-    public void testJcloudsCreateBogStandard() throws Exception {
-        log.info("TEST testJcloudsCreateBogStandard");
-        JcloudsSshMachineLocation m1 = obtainMachine(ImmutableMap.of());
-
-        Map details = MutableMap.of("id", m1.getJcloudsId(), "hostname", m1.getAddress().getHostAddress(), "user", m1.getUser());
-        log.info("got machine "+m1+" at "+jcloudsLocation+": "+details+"; now trying to rebind");
-        String result;
-        // echo conflates spaces of arguments
-        result = execWithOutput(m1, Arrays.asList("echo trying  m1", "hostname", "date"));
-        Assert.assertTrue(result.contains("trying m1"));
-        
-        log.info("now trying rebind "+m1);
-        JcloudsSshMachineLocation m2 = jcloudsLocation.rebindMachine(details);
-        result = execWithOutput(m2, Arrays.asList("echo trying  m2", "hostname", "date"));
-        Assert.assertTrue(result.contains("trying m2"));
-    }
-
-    @SuppressWarnings("rawtypes")
-    @Test(groups="Live")
-    public void testJcloudsCreateBogStandardWithUserBrooklyn() throws Exception {
-        log.info("TEST testJcloudsCreateBogStandardWithUserBrooklyn");
-        JcloudsSshMachineLocation m1 = obtainMachine(MutableMap.of("user", "brooklyn"));
-
-        Map details = MutableMap.of("id", m1.getJcloudsId(), "hostname", m1.getAddress().getHostAddress(), "user", m1.getUser());
-        log.info("got machine "+m1+" at "+jcloudsLocation+": "+details+"; now trying to rebind");
-        String result;
-        // echo conflates spaces of arguments
-        result = execWithOutput(m1, Arrays.asList("echo trying  m1", "hostname", "date"));
-        Assert.assertTrue(result.contains("trying m1"));
-        
-        log.info("now trying rebind "+m1);
-        JcloudsSshMachineLocation m2 = jcloudsLocation.rebindMachine(details);
-        result = execWithOutput(m2, Arrays.asList("echo trying  m2", "hostname", "date"));
-        Assert.assertTrue(result.contains("trying m2"));
-        
-        Assert.assertEquals(m2.getUser(), "brooklyn");
-    }
-    
-    @SuppressWarnings("rawtypes")
-    @Test(groups="Live")
-    public void testJcloudsCreateUserMetadata() throws Exception {
-        log.info("TEST testJcloudsCreateBogStandard");
-        String key = "brooklyn-test-user-data";
-        String value = "test-"+Identifiers.makeRandomId(4);
-        JcloudsSshMachineLocation m1 = obtainMachine(MutableMap.of("userMetadata", key+"="+value));
-
-        Map details = MutableMap.of("id", m1.getJcloudsId(), "hostname", m1.getAddress().getHostAddress(), "user", m1.getUser(),
-                "userMetadata", key+"="+value);
-        Assert.assertEquals(m1.node.getUserMetadata().get(key), value);
-        
-        log.info("got machine "+m1+" at "+jcloudsLocation+": "+details+"; now trying to rebind");
-        String result;
-        // echo conflates spaces of arguments
-        result = execWithOutput(m1, Arrays.asList("echo trying  m1", "hostname", "date"));
-        Assert.assertTrue(result.contains("trying m1"));
-        
-        log.info("now trying rebind "+m1);
-        JcloudsSshMachineLocation m2 = jcloudsLocation.rebindMachine(details);
-        result = execWithOutput(m2, Arrays.asList("echo trying  m2", "hostname", "date"));
-        Assert.assertTrue(result.contains("trying m2"));
-        Assert.assertEquals(m2.node.getUserMetadata().get(key), value);
-    }
-
-    // a curious image, centos, but user is ec2-user, and handily not correctly auto-detected
-    // test we can specify a loginUser different from user, and that user is created etc...
-    // imageId=us-east-1/ami-f95cf390
-    public static final String EC2_CENTOS_IMAGE = "us-east-1/ami-f95cf390";
-    
-    @Test(groups="Live")
-    public void testJcloudsMissingUser() throws Exception {
-        log.info("TEST testJcloudsMissingUser");
-        try {
-            // wait up to 30s for login (override default of 5m so test runs faster)
-            obtainMachine(MutableMap.of("imageId", EC2_CENTOS_IMAGE, "waitForSshable", 30*1000));
-            log.info("whoops we logged in");
-        } catch (NoMachinesAvailableException e) {
-            log.info("got error as expected, for missing user: "+e); // success
-        }
-    }
-
-    @SuppressWarnings("rawtypes")
-    @Test(groups="Live")
-    public void testJcloudsWithSpecificLoginUserAndSameUser() throws Exception {
-        log.info("TEST testJcloudsWithSpecificLoginUserAndSameUser");
-        JcloudsSshMachineLocation m1 = obtainMachine(MutableMap.of(
-                "imageId", EC2_CENTOS_IMAGE,
-                "loginUser", "ec2-user",
-                "user", "ec2-user",
-                "waitForSshable", 30*1000));
-
-        Map details = MutableMap.of("id", m1.getJcloudsId(), "hostname", m1.getAddress().getHostAddress(), "user", m1.getUser());
-        log.info("got machine "+m1+" at "+jcloudsLocation+": "+details+"; now trying to rebind");
-        String result;
-        // echo conflates spaces of arguments
-        result = execWithOutput(m1, Arrays.asList("echo trying  m1", "hostname", "date"));
-        Assert.assertTrue(result.contains("trying m1"));
-        
-        log.info("now trying rebind "+m1);
-        JcloudsSshMachineLocation m2 = jcloudsLocation.rebindMachine(details);
-        result = execWithOutput(m2, Arrays.asList("echo trying  m2", "hostname", "date"));
-        Assert.assertTrue(result.contains("trying m2"));
-        
-        Assert.assertEquals(m2.getUser(), "ec2-user");
-    }
-
-    @SuppressWarnings("rawtypes")
-    @Test(groups="Live")
-    public void testJcloudsWithSpecificLoginUserAndNewUser() throws Exception {
-        log.info("TEST testJcloudsWithSpecificLoginUserAndNewUser");
-        JcloudsSshMachineLocation m1 = obtainMachine(MutableMap.of(
-                "imageId", EC2_CENTOS_IMAGE,
-                "loginUser", "ec2-user",
-                "user", "newbob",
-                "waitForSshable", 30*1000));
-
-        Map details = MutableMap.of("id", m1.getJcloudsId(), "hostname", m1.getAddress().getHostAddress(), "user", m1.getUser());
-        log.info("got machine "+m1+" at "+jcloudsLocation+": "+details+"; now trying to rebind");
-        String result;
-        // echo conflates spaces of arguments
-        result = execWithOutput(m1, Arrays.asList("echo trying  m1", "hostname", "date"));
-        Assert.assertTrue(result.contains("trying m1"));
-        
-        log.info("now trying rebind "+m1);
-        JcloudsSshMachineLocation m2 = jcloudsLocation.rebindMachine(details);
-        result = execWithOutput(m2, Arrays.asList("echo trying  m2", "hostname", "date"));
-        Assert.assertTrue(result.contains("trying m2"));
-        
-        Assert.assertEquals(m2.getUser(), "newbob");
-    }
-
-    @SuppressWarnings("rawtypes")
-    @Test(groups="Live")
-    public void testJcloudsWithSpecificLoginUserAndDefaultUser() throws Exception {
-        log.info("TEST testJcloudsWithSpecificLoginUserAndDefaultUser");
-        JcloudsSshMachineLocation m1 = obtainMachine(MutableMap.of(
-                "imageId", EC2_CENTOS_IMAGE,
-                "loginUser", "ec2-user",
-                "waitForSshable", 30*1000));
-
-        Map details = MutableMap.of("id", m1.getJcloudsId(), "hostname", m1.getAddress().getHostAddress(), "user", m1.getUser());
-        log.info("got machine "+m1+" at "+jcloudsLocation+": "+details+"; now trying to rebind");
-        String result;
-        // echo conflates spaces of arguments
-        result = execWithOutput(m1, Arrays.asList("echo trying  m1", "hostname", "date"));
-        Assert.assertTrue(result.contains("trying m1"));
-        
-        log.info("now trying rebind "+m1);
-        JcloudsSshMachineLocation m2 = jcloudsLocation.rebindMachine(details);
-        result = execWithOutput(m2, Arrays.asList("echo trying  m2", "hostname", "date"));
-        Assert.assertTrue(result.contains("trying m2"));
-    }
-
-    @Test(groups="Live")
-    public void testJcloudsCreateWithNoSudoGranted() throws Exception {
-        log.info("TEST testJcloudsCreateWithNoSudoGranted");
-        JcloudsSshMachineLocation m = obtainMachine(MutableMap.of(
-                "grantUserSudo", false,
-                "waitForSshable", 30*1000));
-
-        int exitCode = execWithExitCode(m, ImmutableList.of(BashCommands.sudo("echo yes")));
-        Assert.assertFalse(exitCode == 0, "exit code for sudo command should not have been 0");
-    }
-
-    private String execWithOutput(SshMachineLocation m, List<String> commands) {
-        ByteArrayOutputStream stdout = new ByteArrayOutputStream();
-        ByteArrayOutputStream stderr = new ByteArrayOutputStream();
-        exec(m, commands, stdout, stderr);
-        return new String(stdout.toByteArray());
-    }
-
-    private int execWithExitCode(SshMachineLocation m, List<String> commands) {
-        ByteArrayOutputStream stdout = new ByteArrayOutputStream();
-        ByteArrayOutputStream stderr = new ByteArrayOutputStream();
-        return exec(m, commands, stdout, stderr);
-    }
-
-    private int exec(SshMachineLocation m, List<String> commands, ByteArrayOutputStream stdout, ByteArrayOutputStream stderr) {
-        Map<String, Object> flags = Maps.newLinkedHashMap();
-        flags.put("out", stdout);
-        flags.put("err", stderr);
-        int exitCode = m.execCommands(flags, "test", commands);
-        log.info("stdout from "+commands+":\n"+new String(stdout.toByteArray()));
-        log.info("stderr from "+commands+":\n"+new String(stderr.toByteArray()));
-        log.info("exit code: " + exitCode);
-        return exitCode;
-    }
-
-    private JcloudsLocation resolve(String spec) {
-        return (JcloudsLocation) managementContext.getLocationRegistry().resolve("jclouds:"+spec);
-    }
-}