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 2016/02/01 18:51:17 UTC

[35/51] [abbrv] [partial] brooklyn-server git commit: move subdir from incubator up a level as it is promoted to its own repo (first non-incubator commit!)

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/BrooklynYamlTypeInstantiatorTest.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/BrooklynYamlTypeInstantiatorTest.java b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/BrooklynYamlTypeInstantiatorTest.java
deleted file mode 100644
index c76731b..0000000
--- a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/BrooklynYamlTypeInstantiatorTest.java
+++ /dev/null
@@ -1,74 +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.camp.brooklyn;
-
-import org.apache.brooklyn.api.mgmt.classloading.BrooklynClassLoadingContext;
-import org.apache.brooklyn.api.policy.Policy;
-import org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlTypeInstantiator;
-import org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlTypeInstantiator.Factory;
-import org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynYamlTypeInstantiator.InstantiatorFromKey;
-import org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.policy.ha.ServiceRestarter;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.javalang.JavaClassNames;
-import org.apache.brooklyn.util.time.Duration;
-
-public class BrooklynYamlTypeInstantiatorTest extends AbstractYamlTest {
-
-    protected BrooklynClassLoadingContext loader() {
-        return JavaBrooklynClassLoadingContext.create(mgmt());
-    }
-    
-    @Test
-    public void testLoadPolicySpecProgrammatically() {
-        Factory loader = new BrooklynYamlTypeInstantiator.Factory(loader(), "test:"+JavaClassNames.niceClassAndMethod());
-        InstantiatorFromKey decoL = loader.from(MutableMap.of("some_type", ServiceRestarter.class.getName())).prefix("some");
-        
-        Assert.assertTrue(decoL.getConfigMap().isEmpty());
-        Assert.assertEquals(decoL.getTypeName().get(), ServiceRestarter.class.getName());
-        Assert.assertEquals(decoL.getType(), ServiceRestarter.class);
-        
-        Object sl1 = decoL.newInstance();
-        Assert.assertTrue(sl1 instanceof ServiceRestarter);
-        
-        Policy sl2 = decoL.newInstance(Policy.class);
-        Assert.assertTrue(sl2 instanceof ServiceRestarter);
-    }
-    
-    @Test
-    public void testLoadPolicySpecWithBrooklynConfig() {
-        Factory loader = new BrooklynYamlTypeInstantiator.Factory(loader(), "test:"+JavaClassNames.niceClassAndMethod());
-        InstantiatorFromKey decoL = loader.from(MutableMap.of("some_type", ServiceRestarter.class.getName(),
-            "brooklyn.config", MutableMap.of("failOnRecurringFailuresInThisDuration", Duration.seconds(42)))).prefix("some");
-        Policy sl2 = decoL.newInstance(Policy.class);
-        Assert.assertEquals(sl2.getConfig(ServiceRestarter.FAIL_ON_RECURRING_FAILURES_IN_THIS_DURATION).toSeconds(), 42);
-    }
-
-    @Test(groups = "WIP")
-    public void testLoadPolicySpecWithFlag() {
-        Factory loader = new BrooklynYamlTypeInstantiator.Factory(loader(), "test:"+JavaClassNames.niceClassAndMethod());
-        InstantiatorFromKey decoL = loader.from(MutableMap.of("some_type", ServiceRestarter.class.getName(),
-            "failOnRecurringFailuresInThisDuration", Duration.seconds(42))).prefix("some");
-        Policy sl2 = decoL.newInstance(Policy.class);
-        Assert.assertEquals(sl2.getConfig(ServiceRestarter.FAIL_ON_RECURRING_FAILURES_IN_THIS_DURATION).toSeconds(), 42);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/ByonLocationsYamlTest.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/ByonLocationsYamlTest.java b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/ByonLocationsYamlTest.java
deleted file mode 100644
index ff89c25..0000000
--- a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/ByonLocationsYamlTest.java
+++ /dev/null
@@ -1,281 +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.camp.brooklyn;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNull;
-
-import java.io.StringReader;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.location.MachineLocation;
-import org.apache.brooklyn.core.config.ConfigKeys;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.location.LocationPredicates;
-import org.apache.brooklyn.core.location.Machines;
-import org.apache.brooklyn.core.location.access.PortForwardManager;
-import org.apache.brooklyn.core.location.cloud.CloudLocationConfig;
-import org.apache.brooklyn.entity.software.base.DoNothingSoftwareProcess;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.Test;
-
-import com.google.api.client.repackaged.com.google.common.base.Joiner;
-import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.net.HostAndPort;
-
-import org.apache.brooklyn.location.byon.FixedListMachineProvisioningLocation;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
-import org.apache.brooklyn.location.winrm.WinRmMachineLocation;
-import org.apache.brooklyn.test.Asserts;
-import org.apache.brooklyn.util.net.UserAndHostAndPort;
-
-public class ByonLocationsYamlTest extends AbstractYamlTest {
-    private static final Logger log = LoggerFactory.getLogger(ByonLocationsYamlTest.class);
-
-    @Test
-    @SuppressWarnings("unchecked")
-    public void testByonSpec() throws Exception {
-        String yaml = Joiner.on("\n").join(
-                "location: byon(user=myuser,mykey=myval,hosts=\"1.1.1.1\")",
-                "services:",
-                "- serviceType: org.apache.brooklyn.entity.stock.BasicApplication");
-        
-        Entity app = createStartWaitAndLogApplication(new StringReader(yaml));
-        FixedListMachineProvisioningLocation<SshMachineLocation> loc = (FixedListMachineProvisioningLocation<SshMachineLocation>) Iterables.get(app.getLocations(), 0);
-        
-        Set<SshMachineLocation> machines = loc.getAvailable();
-        SshMachineLocation machine = Iterables.getOnlyElement(machines);
-        assertMachine(machine, UserAndHostAndPort.fromParts("myuser", "1.1.1.1",  22), ImmutableMap.of("mykey", "myval"));
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    public void testByonMachine() throws Exception {
-        String yaml = Joiner.on("\n").join(
-                "location:",
-                "  byon:",
-                "    hosts:",
-                "    - ssh: 1.1.1.1:8022",
-                "      privateAddresses: [10.0.0.1]",
-                "      password: mypassword",
-                "      user: myuser",
-                "      mykey: myval",
-                "services:",
-                "- serviceType: org.apache.brooklyn.entity.stock.BasicApplication");
-        
-        Entity app = createStartWaitAndLogApplication(new StringReader(yaml));
-        FixedListMachineProvisioningLocation<SshMachineLocation> loc = (FixedListMachineProvisioningLocation<SshMachineLocation>) Iterables.get(app.getLocations(), 0);
-        
-        Set<SshMachineLocation> machines = loc.getAvailable();
-        SshMachineLocation machine = Iterables.getOnlyElement(machines);
-        assertMachine(machine, UserAndHostAndPort.fromParts("myuser", "1.1.1.1",  8022), ImmutableMap.of(
-                SshMachineLocation.PASSWORD.getName(), "mypassword",
-                "mykey", "myval"));
-        assertEquals(machine.getPrivateAddresses(), ImmutableSet.of("10.0.0.1"));
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    public void testByonWindowsMachine() throws Exception {
-        String yaml = Joiner.on("\n").join(
-                "location:",
-                "  byon:",
-                "    hosts:",
-                "    - winrm: 1.1.1.1:8985",
-                "      privateAddresses: [10.0.0.1]",
-                "      password: mypassword",
-                "      user: myuser",
-                "      mykey: myval",
-                "      osFamily: windows",
-                "services:",
-                "- serviceType: org.apache.brooklyn.entity.stock.BasicApplication");
-        
-        Entity app = createStartWaitAndLogApplication(new StringReader(yaml));
-        FixedListMachineProvisioningLocation<WinRmMachineLocation> loc = (FixedListMachineProvisioningLocation<WinRmMachineLocation>) Iterables.get(app.getLocations(), 0);
-        
-        Set<WinRmMachineLocation> machines = loc.getAvailable();
-        WinRmMachineLocation machine = Iterables.getOnlyElement(machines);
-        assertMachine(machine, UserAndHostAndPort.fromParts("myuser", "1.1.1.1",  8985), ImmutableMap.of(
-                SshMachineLocation.PASSWORD.getName(), "mypassword",
-                "mykey", "myval"));
-        assertEquals(machine.getPrivateAddresses(), ImmutableSet.of("10.0.0.1"));
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    public void testByonMultiMachine() throws Exception {
-        String yaml = Joiner.on("\n").join(
-                "location:",
-                "  byon:",
-                "    hosts:",
-                "    - ssh: 1.1.1.1:8022",
-                "      privateAddresses: [10.0.0.1]",
-                "      password: mypassword",
-                "      user: myuser",
-                "      mykey: myval1",
-                "    - ssh: 1.1.1.2:8022",
-                "      privateAddresses: [10.0.0.2]",
-                "      password: mypassword",
-                "      user: myuser",
-                "      mykey: myval2",
-                "    - winrm: 1.1.1.3:8985",
-                "      privateAddresses: [10.0.0.3]",
-                "      password: mypassword",
-                "      user: myuser",
-                "      mykey: myval3",
-                "      osFamily: windows",
-                "services:",
-                "- serviceType: org.apache.brooklyn.entity.stock.BasicApplication");
-        
-        Entity app = createStartWaitAndLogApplication(new StringReader(yaml));
-        FixedListMachineProvisioningLocation<MachineLocation> loc = (FixedListMachineProvisioningLocation<MachineLocation>) Iterables.get(app.getLocations(), 0);
-        
-        Set<MachineLocation> machines = loc.getAvailable();
-        assertEquals(machines.size(), 3, "machines="+machines);
-        SshMachineLocation machine1 = (SshMachineLocation) Iterables.find(machines, LocationPredicates.configEqualTo(ConfigKeys.newStringConfigKey("mykey"), "myval1"));
-        SshMachineLocation machine2 = (SshMachineLocation) Iterables.find(machines, LocationPredicates.configEqualTo(ConfigKeys.newStringConfigKey("mykey"), "myval2"));
-        WinRmMachineLocation machine3 = (WinRmMachineLocation) Iterables.find(machines, Predicates.instanceOf(WinRmMachineLocation.class));
-
-        assertMachine(machine1, UserAndHostAndPort.fromParts("myuser", "1.1.1.1",  8022), ImmutableMap.of(
-                SshMachineLocation.PASSWORD.getName(), "mypassword",
-                "mykey", "myval1"));
-        assertEquals(machine1.getPrivateAddresses(), ImmutableSet.of("10.0.0.1"));
-
-        assertMachine(machine2, UserAndHostAndPort.fromParts("myuser", "1.1.1.2",  8022), ImmutableMap.of(
-                SshMachineLocation.PASSWORD.getName(), "mypassword",
-                "mykey", "myval2"));
-        assertEquals(machine2.getPrivateAddresses(), ImmutableSet.of("10.0.0.2"));
-
-        assertMachine(machine3, UserAndHostAndPort.fromParts("myuser", "1.1.1.3",  8985), ImmutableMap.of(
-                SshMachineLocation.PASSWORD.getName(), "mypassword",
-                "mykey", "myval3"));
-        assertEquals(machine3.getPrivateAddresses(), ImmutableSet.of("10.0.0.3"));
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    public void testByonPortMapping() throws Exception {
-        String yaml = Joiner.on("\n").join(
-                "location:",
-                "  byon:",
-                "    hosts:",
-                "    - ssh: 1.1.1.1:22",
-                "      privateAddresses: [10.0.0.1]",
-                "      tcpPortMappings: {22: \"83.222.229.1:12001\", 8080: \"83.222.229.1:12002\"}",
-                "      password: mypassword",
-                "      user: myuser",
-                "      mykey: myval1",
-                "    - winrm: 1.1.1.2:8985",
-                "      privateAddresses: [10.0.0.2]",
-                "      tcpPortMappings: {8985: \"83.222.229.2:12003\", 8080: \"83.222.229.2:12004\"}",
-                "      password: mypassword",
-                "      user: myuser",
-                "      mykey: myval2",
-                "      osFamily: windows",
-                "services:",
-                "- serviceType: org.apache.brooklyn.entity.stock.BasicApplication");
-
-        Entity app = createStartWaitAndLogApplication(new StringReader(yaml));
-        FixedListMachineProvisioningLocation<MachineLocation> loc = (FixedListMachineProvisioningLocation<MachineLocation>) Iterables.get(app.getLocations(), 0);
-        PortForwardManager pfm = (PortForwardManager) mgmt().getLocationRegistry().resolve("portForwardManager(scope=global)");
-        
-        Set<MachineLocation> machines = loc.getAvailable();
-        assertEquals(machines.size(), 2, "machines="+machines);
-        SshMachineLocation machine1 = (SshMachineLocation) Iterables.find(machines, LocationPredicates.configEqualTo(ConfigKeys.newStringConfigKey("mykey"), "myval1"));
-        WinRmMachineLocation machine2 = (WinRmMachineLocation) Iterables.find(machines, Predicates.instanceOf(WinRmMachineLocation.class));
-
-        assertMachine(machine1, UserAndHostAndPort.fromParts("myuser", "83.222.229.1", 12001), ImmutableMap.of(
-                SshMachineLocation.PASSWORD.getName(), "mypassword",
-                "mykey", "myval1"));
-        assertEquals(machine1.getPrivateAddresses(), ImmutableSet.of("10.0.0.1"));
-        assertEquals(pfm.lookup(machine1, 22), HostAndPort.fromParts("83.222.229.1", 12001));
-        assertEquals(pfm.lookup(machine1, 8080), HostAndPort.fromParts("83.222.229.1", 12002));
-        assertNull(pfm.lookup(machine1, 12345));
-        
-        assertMachine(machine2, UserAndHostAndPort.fromParts("myuser", "83.222.229.2",  12003), ImmutableMap.of(
-                SshMachineLocation.PASSWORD.getName(), "mypassword",
-                "mykey", "myval2"));
-        assertEquals(machine2.getPrivateAddresses(), ImmutableSet.of("10.0.0.2"));
-        assertEquals(pfm.lookup(machine2, 8985), HostAndPort.fromParts("83.222.229.2", 12003));
-        assertEquals(pfm.lookup(machine2, 8080), HostAndPort.fromParts("83.222.229.2", 12004));
-        assertNull(pfm.lookup(machine2, 12345));
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-    public void testPassesInboundPortsToMachineAndRemovesOnceMachineReleased() throws Exception {
-        String yaml = Joiner.on("\n").join(
-                "location:",
-                "  byon:",
-                "    hosts:",
-                "    - ssh: 1.1.1.1:22",
-                "      password: mypassword",
-                "      user: myuser",
-                "services:",
-                "- type: org.apache.brooklyn.entity.software.base.DoNothingSoftwareProcess",
-                "  brooklyn.config:",
-                "    requiredOpenLoginPorts: [22, 1024]");
-
-        Entity app = createStartWaitAndLogApplication(new StringReader(yaml));
-        DoNothingSoftwareProcess entity = (DoNothingSoftwareProcess) Iterables.find(Entities.descendants(app), Predicates.instanceOf(DoNothingSoftwareProcess.class));
-        FixedListMachineProvisioningLocation<MachineLocation> loc = (FixedListMachineProvisioningLocation<MachineLocation>) Iterables.get(app.getLocations(), 0);
-        
-        // Machine should have been given the inbound-ports
-        SshMachineLocation machine = Machines.findUniqueMachineLocation(entity.getLocations(), SshMachineLocation.class).get();
-        Asserts.assertEqualsIgnoringOrder((Iterable<?>)machine.config().get(CloudLocationConfig.INBOUND_PORTS), ImmutableList.of(22, 1024));
-        
-        // Stop the entity; should release the machine
-        entity.stop();
-        MachineLocation availableMachine = Iterables.getOnlyElement(loc.getAvailable());
-        assertEquals(availableMachine, machine);
-        assertNull(machine.config().get(CloudLocationConfig.INBOUND_PORTS));
-    }
-
-    private void assertMachine(SshMachineLocation machine, UserAndHostAndPort conn, Map<String, ?> config) {
-        assertEquals(machine.getAddress().getHostAddress(), conn.getHostAndPort().getHostText());
-        assertEquals(machine.getPort(), conn.getHostAndPort().getPort());
-        assertEquals(machine.getUser(), conn.getUser());
-        for (Map.Entry<String, ?> entry : config.entrySet()) {
-            Object actualVal = machine.getConfig(ConfigKeys.newConfigKey(Object.class, entry.getKey()));
-            assertEquals(actualVal, entry.getValue());
-        }
-    }
-    
-    private void assertMachine(WinRmMachineLocation machine, UserAndHostAndPort conn, Map<String, ?> config) {
-        assertEquals(machine.getAddress().getHostAddress(), conn.getHostAndPort().getHostText());
-        assertEquals(machine.getConfig(WinRmMachineLocation.WINRM_PORT), (Integer) conn.getHostAndPort().getPort());
-        assertEquals(machine.getUser(), conn.getUser());
-        for (Map.Entry<String, ?> entry : config.entrySet()) {
-            Object actualVal = machine.getConfig(ConfigKeys.newConfigKey(Object.class, entry.getKey()));
-            assertEquals(actualVal, entry.getValue());
-        }
-    }
-    
-    @Override
-    protected Logger getLogger() {
-        return log;
-    }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DependentConfigPollingYamlTest.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DependentConfigPollingYamlTest.java b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DependentConfigPollingYamlTest.java
deleted file mode 100644
index 10df5f0..0000000
--- a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DependentConfigPollingYamlTest.java
+++ /dev/null
@@ -1,117 +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.camp.brooklyn;
-
-import static org.testng.Assert.assertTrue;
-
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.test.Asserts;
-import org.apache.brooklyn.util.core.task.Tasks;
-import org.apache.brooklyn.util.time.Duration;
-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.Joiner;
-import com.google.common.collect.Iterables;
-
-@Test
-public class DependentConfigPollingYamlTest extends AbstractYamlTest {
-    private static final Logger log = LoggerFactory.getLogger(DependentConfigPollingYamlTest.class);
-    
-    private ExecutorService executor;
-
-    @BeforeMethod(alwaysRun = true)
-    @Override
-    public void setUp() {
-        super.setUp();
-        executor = Executors.newCachedThreadPool();
-    }
-            
-    @AfterMethod(alwaysRun = true)
-    @Override
-    public void tearDown() {
-        if (executor != null) executor.shutdownNow();
-        super.tearDown();
-    }
-            
-    // Test for BROOKLYN-214. Previously, the brief Tasks.resolving would cause a thread to be
-    // leaked. This was because it would call into BrooklynDslDeferredSupplier.get, which would
-    // wait on a synchronized block and thus not be interruptible - the thread would be consumed
-    // forever, until the attributeWhenReady returned true!
-    //
-    // Integration test, because takes several seconds.
-    @Test(groups="Integration")
-    public void testResolveAttributeWhenReadyWithTimeoutDoesNotLeaveThreadRunning() throws Exception {
-        String yaml = Joiner.on("\n").join(
-                "services:",
-                "- type: org.apache.brooklyn.core.test.entity.TestEntity",
-                "  id: myentity",
-                "  brooklyn.config:",
-                "    test.confName: $brooklyn:entity(\"myentity\").attributeWhenReady(\"mysensor\")");
-        
-        final Entity app = createAndStartApplication(yaml);
-        final TestEntity entity = (TestEntity) Iterables.getOnlyElement(app.getChildren());
-
-        // Cause a thread to block, getting the config - previousy (before fixing 214) this would be in
-        // the synchronized block if BrooklynDslDeferredSupplier.get().
-        // The sleep is to ensure we really did get into the locking code.
-        executor.submit(new Callable<Object>() {
-            public Object call() {
-                return entity.config().get(TestEntity.CONF_NAME);
-            }});
-        Thread.sleep(100);
-        
-        // Try to resolve the value many times, each in its own task, but with a short timeout for each.
-        final int numIterations = 20;
-        final int preNumThreads = Thread.activeCount();
-        
-        for (int i = 0; i < numIterations; i++) {
-            // Same as RestValueResolver.getImmediateValue
-            Tasks.resolving(entity.config().getRaw(TestEntity.CONF_NAME).get())
-                    .as(Object.class)
-                    .defaultValue("UNRESOLVED")
-                    .timeout(Duration.millis(100))
-                    .context(entity)
-                    .swallowExceptions()
-                    .get();
-        }
-
-        // Confirm we haven't left threads behind.
-        Asserts.succeedsEventually(new Runnable() {
-            public void run() {
-                int postNumThreads = Thread.activeCount();
-                String msg = "pre="+preNumThreads+"; post="+postNumThreads+"; iterations="+numIterations;
-                log.info(msg);
-                assertTrue(postNumThreads < preNumThreads + (numIterations / 2), msg);
-            }});
-    }
-
-    @Override
-    protected Logger getLogger() {
-        return log;
-    }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DslAndRebindYamlTest.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DslAndRebindYamlTest.java b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DslAndRebindYamlTest.java
deleted file mode 100644
index 354e0a0..0000000
--- a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/DslAndRebindYamlTest.java
+++ /dev/null
@@ -1,515 +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.camp.brooklyn;
-
-import java.io.File;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.brooklyn.api.entity.Application;
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.api.mgmt.ha.MementoCopyMode;
-import org.apache.brooklyn.api.mgmt.rebind.mementos.BrooklynMementoRawData;
-import org.apache.brooklyn.api.sensor.AttributeSensor;
-import org.apache.brooklyn.api.sensor.Sensor;
-import org.apache.brooklyn.camp.brooklyn.spi.dsl.BrooklynDslDeferredSupplier;
-import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.core.config.ConfigKeys;
-import org.apache.brooklyn.core.entity.Attributes;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.EntityAsserts;
-import org.apache.brooklyn.core.entity.EntityInternal;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.core.mgmt.persist.BrooklynPersistenceUtils;
-import org.apache.brooklyn.core.mgmt.rebind.RebindTestUtils;
-import org.apache.brooklyn.core.sensor.Sensors;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.entity.group.DynamicCluster;
-import org.apache.brooklyn.util.collections.MutableSet;
-import org.apache.brooklyn.util.core.task.Tasks;
-import org.apache.brooklyn.util.guava.Maybe;
-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.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.io.Files;
-
-@Test
-public class DslAndRebindYamlTest extends AbstractYamlTest {
-
-    private static final Logger log = LoggerFactory.getLogger(DslAndRebindYamlTest.class);
-
-    protected ClassLoader classLoader = getClass().getClassLoader();
-    protected File mementoDir;
-    protected Set<ManagementContext> mgmtContexts = MutableSet.of();
-    protected ExecutorService executor;
-
-    @Override
-    protected LocalManagementContext newTestManagementContext() {
-        if (mementoDir != null) throw new IllegalStateException("already created mgmt context");
-        mementoDir = Files.createTempDir();
-        mementoDir.deleteOnExit();
-        LocalManagementContext mgmt = RebindTestUtils.newPersistingManagementContext(mementoDir, classLoader, 1);
-        mgmtContexts.add(mgmt);
-        return mgmt;
-    }
-
-    @BeforeMethod(alwaysRun = true)
-    @Override
-    public void setUp() {
-    	super.setUp();
-        executor = Executors.newSingleThreadExecutor();
-    }
-    
-    @AfterMethod(alwaysRun = true)
-    @Override
-    public void tearDown() {
-    	if (executor != null) executor.shutdownNow();
-        for (ManagementContext mgmt : mgmtContexts) Entities.destroyAll(mgmt);
-        super.tearDown();
-        mementoDir = null;
-        mgmtContexts.clear();
-    }
-
-    @Override
-    protected Logger getLogger() {
-        return log;
-    }
-
-    public Application rebind(Application app) throws Exception {
-        RebindTestUtils.waitForPersisted(app);
-        Application result = RebindTestUtils.rebind(mementoDir, getClass().getClassLoader());
-        mgmtContexts.add(result.getManagementContext());
-        return result;
-    }
-
-
-    protected Entity setupAndCheckTestEntityInBasicYamlWith(String... extras) throws Exception {
-        Entity app = createAndStartApplication(loadYaml("test-entity-basic-template.yaml", extras));
-        waitForApplicationTasks(app);
-
-        Assert.assertEquals(app.getDisplayName(), "test-entity-basic-template");
-
-        log.info("App started:");
-        Entities.dumpInfo(app);
-
-        Assert.assertTrue(app.getChildren().iterator().hasNext(), "Expected app to have child entity");
-        Entity entity = app.getChildren().iterator().next();
-        Assert.assertTrue(entity instanceof TestEntity, "Expected TestEntity, found " + entity.getClass());
-
-        return entity;
-    }
-
-    public static <T> T getConfigInTask(final Entity entity, final ConfigKey<T> key) {
-        return Entities.submit(entity, Tasks.<T>builder().body(new Callable<T>() {
-            @Override
-            public T call() throws Exception {
-                return entity.getConfig(key);
-            }
-        }).build()).getUnchecked();
-    }
-
-    protected <T> Future<T> getConfigInTaskAsync(final Entity entity, final ConfigKey<T> key) {
-	    // Wait for the attribute to be ready in a new Task
-	    Callable<T> configGetter = new Callable<T>() {
-	        @Override
-	        public T call() throws Exception {
-	            T s = getConfigInTask(entity, key);
-	            getLogger().info("getConfig {}={}", key, s);
-	            return s;
-	        }
-	    };
-	    return executor.submit(configGetter);
-    }
-
-    @Test
-    public void testDslAttributeWhenReady() throws Exception {
-        Entity testEntity = entityWithAttributeWhenReady();
-        ((EntityInternal) testEntity).sensors().set(Sensors.newStringSensor("foo"), "bar");
-        Assert.assertEquals(getConfigInTask(testEntity, TestEntity.CONF_NAME), "bar");
-    }
-
-    @Test
-    public void testDslAttributeWhenReadyRebindWhenResolved() throws Exception {
-        Entity testEntity = entityWithAttributeWhenReady();
-        ((EntityInternal) testEntity).sensors().set(Sensors.newStringSensor("foo"), "bar");
-        
-        Application app2 = rebind(testEntity.getApplication());
-        Entity e2 = Iterables.getOnlyElement(app2.getChildren());
-
-        Assert.assertEquals(getConfigInTask(e2, TestEntity.CONF_NAME), "bar");
-    }
-
-    @Test
-    public void testDslAttributeWhenReadyWhenNotYetResolved() throws Exception {
-        Entity testEntity = entityWithAttributeWhenReady();
-        
-        Application app2 = rebind(testEntity.getApplication());
-        Entity e2 = Iterables.getOnlyElement(app2.getChildren());
-
-        // Wait for the attribute to be ready in a new Task
-        Future<String> stringFuture = getConfigInTaskAsync(e2, TestEntity.CONF_NAME);
-
-        // Check that the Task is still waiting for attribute to be ready
-        Assert.assertFalse(stringFuture.isDone());
-
-        // Set the sensor; expect that to complete
-        e2.sensors().set(Sensors.newStringSensor("foo"), "bar");
-        String s = stringFuture.get(10, TimeUnit.SECONDS); // Timeout just for sanity
-        Assert.assertEquals(s, "bar");
-    }
-
-    @Test
-    public void testDslAttributeWhenReadyPersistedAsDeferredSupplier() throws Exception {
-    	doDslAttributeWhenReadyPersistedAsDeferredSupplier(false);
-    }
-    
-    @Test
-    public void testDslAttributeWhenReadyPersistedWithoutLeakingResolvedValue() throws Exception {
-    	doDslAttributeWhenReadyPersistedAsDeferredSupplier(true);
-    }
-    
-    protected void doDslAttributeWhenReadyPersistedAsDeferredSupplier(boolean resolvedBeforeRebind) throws Exception {
-        Entity testEntity = entityWithAttributeWhenReady();
-        
-        if (resolvedBeforeRebind) {
-        	testEntity.sensors().set(Sensors.newStringSensor("foo"), "bar");
-        	Assert.assertEquals(getConfigInTask(testEntity, TestEntity.CONF_NAME), "bar");
-        }
-        
-        // Persist and rebind
-        Application app2 = rebind(testEntity.getApplication());
-        Entity e2 = Iterables.getOnlyElement(app2.getChildren());
-
-        Maybe<Object> maybe = ((EntityInternal) e2).config().getLocalRaw(TestEntity.CONF_NAME);
-        Assert.assertTrue(maybe.isPresentAndNonNull());
-        Assert.assertTrue(BrooklynDslDeferredSupplier.class.isInstance(maybe.get()));
-        BrooklynDslDeferredSupplier<?> deferredSupplier = (BrooklynDslDeferredSupplier<?>) maybe.get();
-        Assert.assertEquals(deferredSupplier.toString(), "$brooklyn:entity(\"x\").attributeWhenReady(\"foo\")");
-
-        // Assert the persisted state itself is as expected, and not too big
-        BrooklynMementoRawData raw = BrooklynPersistenceUtils.newStateMemento(app2.getManagementContext(), MementoCopyMode.LOCAL);
-        String persistedStateForE2 = raw.getEntities().get(e2.getId());
-        Matcher matcher = Pattern.compile(".*\\<test.confName\\>(.*)\\<\\/test.confName\\>.*", Pattern.DOTALL)
-                .matcher(persistedStateForE2);
-        Assert.assertTrue(matcher.find());
-        String testConfNamePersistedState = matcher.group(1);
-
-        Assert.assertNotNull(testConfNamePersistedState);
-        // should be about 200 chars long, something like:
-        //
-        //      <test.confName>
-        //        <org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent_-AttributeWhenReady>
-        //          <component>
-        //            <componentId>x</componentId>
-        //            <scope>GLOBAL</scope>
-        //          </component>
-        //          <sensorName>foo</sensorName>
-        //        </org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent_-AttributeWhenReady>
-        //      </test.confName>
-
-        Assert.assertTrue(testConfNamePersistedState.length() < 400, "persisted state too long: " + testConfNamePersistedState);
-        
-        Assert.assertFalse(testConfNamePersistedState.contains("bar"), "value 'bar' leaked in persisted state");
-    }
-
-    @Test
-    public void testDslAttributeWhenReadyInEntitySpecWhenNotYetResolved() throws Exception {
-    	doDslAttributeWhenReadyInEntitySpec(false);
-    }
-    
-    @Test
-    public void testDslAttributeWhenReadyInEntitySpecWhenAlreadyResolved() throws Exception {
-    	doDslAttributeWhenReadyInEntitySpec(true);
-    }
-    
-    protected void doDslAttributeWhenReadyInEntitySpec(boolean resolvedBeforeRebind) throws Exception {
-        String yaml = "location: localhost\n" +
-                "name: Test Cluster\n" +
-                "services:\n" +
-                "- type: org.apache.brooklyn.entity.group.DynamicCluster\n" +
-                "  id: test-cluster\n" +
-                "  initialSize: 0\n" +
-                "  memberSpec:\n" +
-                "    $brooklyn:entitySpec:\n" +
-                "      type: org.apache.brooklyn.core.test.entity.TestEntity\n" +
-                "      brooklyn.config:\n" +
-                "        test.confName: $brooklyn:component(\"test-cluster\").attributeWhenReady(\"sensor\")";
-
-        final Entity testEntity = createAndStartApplication(yaml);
-        DynamicCluster cluster = (DynamicCluster) Iterables.getOnlyElement(testEntity.getApplication().getChildren());
-        cluster.resize(1);
-        Assert.assertEquals(cluster.getMembers().size(), 1);
-
-        if (resolvedBeforeRebind) {
-            cluster.sensors().set(Sensors.newStringSensor("sensor"), "bar");
-        }
-
-        // Persist and rebind
-        Application app2 = rebind(cluster.getApplication());
-        DynamicCluster cluster2 = (DynamicCluster) Iterables.getOnlyElement(app2.getApplication().getChildren());
-
-        // Assert the persisted state itself is as expected, and not too big
-        BrooklynMementoRawData raw = BrooklynPersistenceUtils.newStateMemento(app2.getManagementContext(), MementoCopyMode.LOCAL);
-        String persistedStateForE2 = raw.getEntities().get(cluster2.getId());
-        String expectedTag = "org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.DslComponent_-AttributeWhenReady";
-        Matcher matcher = Pattern.compile(".*\\<"+expectedTag+"\\>(.*)\\<\\/"+expectedTag+"\\>.*", Pattern.DOTALL)
-                .matcher(persistedStateForE2);
-        Assert.assertTrue(matcher.find(), persistedStateForE2);
-        String testConfNamePersistedState = matcher.group(1);
-        Assert.assertNotNull(testConfNamePersistedState);
-
-        // Can re-size to create a new member entity
-        cluster2.resize(2);
-        Assert.assertEquals(cluster2.getMembers().size(), 2);
-        
-        // Both the existing and the new member should have the DeferredSupplier config
-        for (Entity member : Iterables.filter(cluster2.getChildren(), TestEntity.class)) {
-	        Maybe<Object> maybe = ((EntityInternal)member).config().getLocalRaw(TestEntity.CONF_NAME);
-	        Assert.assertTrue(maybe.isPresentAndNonNull());
-	        BrooklynDslDeferredSupplier<?> deferredSupplier = (BrooklynDslDeferredSupplier<?>) maybe.get();
-	        Assert.assertEquals(deferredSupplier.toString(), "$brooklyn:entity(\"test-cluster\").attributeWhenReady(\"sensor\")");
-        }
-        
-        if (resolvedBeforeRebind) {
-            // All members should resolve their config
-            for (Entity member : Iterables.filter(cluster2.getChildren(), TestEntity.class)) {
-		        String val = getConfigInTask(member, TestEntity.CONF_NAME);
-		        Assert.assertEquals(val, "bar");
-            }
-        } else {
-        	List<Future<String>> futures = Lists.newArrayList();
-        	
-            // All members should have unresolved values
-            for (Entity member : Iterables.filter(cluster2.getChildren(), TestEntity.class)) {
-		        // Wait for the attribute to be ready in a new Task
-		        Future<String> stringFuture = getConfigInTaskAsync(member, TestEntity.CONF_NAME);
-		        futures.add(stringFuture);
-		        
-		        // Check that the Task is still waiting for attribute to be ready
-		        Thread.sleep(100);
-		        Assert.assertFalse(stringFuture.isDone());
-            }
-            
-            // After setting the sensor, all those values should now resolve
-	        cluster2.sensors().set(Sensors.newStringSensor("sensor"), "bar");
-	        
-	        for (Future<String> future : futures) {
-		        String s = future.get(10, TimeUnit.SECONDS); // Timeout just for sanity
-		        Assert.assertEquals(s, "bar");
-            }
-        }
-    }
-
-    private Entity entityWithAttributeWhenReady() throws Exception {
-        return setupAndCheckTestEntityInBasicYamlWith(
-                "  id: x",
-                "  brooklyn.config:",
-                "    test.confName: $brooklyn:component(\"x\").attributeWhenReady(\"foo\")");
-    }
-
-    private void doTestOnEntityWithSensor(Entity testEntity, Sensor<?> expectedSensor) throws Exception {
-        doTestOnEntityWithSensor(testEntity, expectedSensor, true);
-    }
-
-    private void doTestOnEntityWithSensor(Entity testEntity, Sensor<?> expectedSensor, boolean inTask) throws Exception {
-        @SuppressWarnings("rawtypes")
-        ConfigKey<Sensor> configKey = ConfigKeys.newConfigKey(Sensor.class, "test.sensor");
-        Sensor<?> s;
-        s = inTask ? getConfigInTask(testEntity, configKey) : testEntity.getConfig(configKey);
-        Assert.assertEquals(s, expectedSensor);
-        Application app2 = rebind(testEntity.getApplication());
-        Entity te2 = Iterables.getOnlyElement(app2.getChildren());
-        s = inTask ? getConfigInTask(te2, configKey) : te2.getConfig(configKey);
-        Assert.assertEquals(s, expectedSensor);
-    }
-
-    @Test
-    public void testDslSensorFromClass() throws Exception {
-        doTestOnEntityWithSensor(entityWithSensorFromClass(), Attributes.SERVICE_UP);
-        // without context it can still find it
-        doTestOnEntityWithSensor(entityWithSensorFromClass(), Attributes.SERVICE_UP, false);
-    }
-
-    @Test
-    public void testDslSensorLocal() throws Exception {
-        doTestOnEntityWithSensor(entityWithSensorLocal(), TestEntity.SEQUENCE);
-        // here without context it makes one up, so type info (and description etc) not present;
-        // but context is needed to submit the DslDeferredSupplier object, so this would fail
-//        doTestOnEntityWithSensor(entityWithSensorAdHoc(), Sensors.newSensor(Object.class, TestEntity.SEQUENCE.getName()), false);
-    }
-
-    @Test
-    public void testDslSensorAdHoc() throws Exception {
-        doTestOnEntityWithSensor(entityWithSensorAdHoc(), Sensors.newSensor(Object.class, "sensor.foo"));
-        // here context has no impact, but it is needed to submit the DslDeferredSupplier object so this would fail
-//        doTestOnEntityWithSensor(entityWithSensorAdHoc(), Sensors.newSensor(Object.class, "sensor.foo"), false);
-    }
-
-    private Entity entityWithSensorFromClass() throws Exception {
-        return setupAndCheckTestEntityInBasicYamlWith(
-                "  id: x",
-                "  brooklyn.config:",
-                "    test.sensor: $brooklyn:sensor(\"" + Attributes.class.getName() + "\", \"" + Attributes.SERVICE_UP.getName() + "\")");
-    }
-
-    private Entity entityWithSensorLocal() throws Exception {
-        return setupAndCheckTestEntityInBasicYamlWith(
-                "  id: x",
-                "  brooklyn.config:",
-                "    test.sensor: $brooklyn:sensor(\"" + TestEntity.SEQUENCE.getName() + "\")");
-    }
-
-    private Entity entityWithSensorAdHoc() throws Exception {
-        return setupAndCheckTestEntityInBasicYamlWith(
-                "  id: x",
-                "  brooklyn.config:",
-                "    test.sensor: $brooklyn:sensor(\"sensor.foo\")");
-    }
-
-
-    @Test
-    public void testDslConfigFromRoot() throws Exception {
-        Entity testEntity = entityWithConfigFromRoot();
-        Assert.assertEquals(getConfigInTask(testEntity, TestEntity.CONF_NAME), "bar");
-    }
-
-    @Test
-    public void testDslConfigFromRootRebind() throws Exception {
-        Entity testEntity = entityWithConfigFromRoot();
-        Application app2 = rebind(testEntity.getApplication());
-        Entity e2 = Iterables.getOnlyElement(app2.getChildren());
-
-        Assert.assertEquals(getConfigInTask(e2, TestEntity.CONF_NAME), "bar");
-    }
-
-    private Entity entityWithConfigFromRoot() throws Exception {
-        return setupAndCheckTestEntityInBasicYamlWith(
-                "  id: x",
-                "  brooklyn.config:",
-                "    test.confName: $brooklyn:component(\"x\").config(\"foo\")",
-                "brooklyn.config:",
-                "  foo: bar");
-    }
-
-
-    @Test
-    public void testDslFormatString() throws Exception {
-        Entity testEntity = entityWithFormatString();
-        Assert.assertEquals(getConfigInTask(testEntity, TestEntity.CONF_NAME), "hello world");
-    }
-
-    @Test
-    public void testDslFormatStringRebind() throws Exception {
-        Entity testEntity = entityWithFormatString();
-        Application app2 = rebind(testEntity.getApplication());
-        Entity e2 = Iterables.getOnlyElement(app2.getChildren());
-
-        Assert.assertEquals(getConfigInTask(e2, TestEntity.CONF_NAME), "hello world");
-    }
-
-    private Entity entityWithFormatString() throws Exception {
-        return setupAndCheckTestEntityInBasicYamlWith(
-                "  id: x",
-                "  brooklyn.config:",
-                "    test.confName: $brooklyn:formatString(\"hello %s\", \"world\")");
-    }
-
-
-    /*
-        - type: org.apache.brooklyn.enricher.stock.Transformer
-          brooklyn.config:
-            enricher.sourceSensor: $brooklyn:sensor("mongodb.server.replicaSet.primary.endpoint")
-            enricher.targetSensor: $brooklyn:sensor("justtheport")
-            enricher.transformation: $brooklyn:function.regexReplacement("^.*:", "")
-        - type: org.apache.brooklyn.enricher.stock.Transformer
-          brooklyn.config:
-            enricher.sourceSensor: $brooklyn:sensor("mongodb.server.replicaSet.primary.endpoint")
-            enricher.targetSensor: $brooklyn:sensor("directport")
-            enricher.targetValue: $brooklyn:regexReplacement($brooklyn:attributeWhenReady("mongodb.server.replicaSet.primary.endpoint"), "^.*:", "foo")
-     */
-
-    @Test
-    public void testRegexReplacementWithStrings() throws Exception {
-        Entity testEntity = setupAndCheckTestEntityInBasicYamlWith(
-                "  brooklyn.config:",
-                "    test.regex.config: $brooklyn:regexReplacement(\"somefooname\", \"foo\", \"bar\")"
-        );
-        Assert.assertEquals("somebarname", testEntity.getConfig(ConfigKeys.newStringConfigKey("test.regex.config")));
-    }
-
-    @Test
-    public void testRegexReplacementWithAttributeWhenReady() throws Exception {
-        Entity testEntity = setupAndCheckTestEntityInBasicYamlWith(
-                "  brooklyn.config:",
-                "    test.regex.config: $brooklyn:regexReplacement($brooklyn:attributeWhenReady(\"test.regex.source\"), $brooklyn:attributeWhenReady(\"test.regex.pattern\"), $brooklyn:attributeWhenReady(\"test.regex.replacement\"))"
-        );
-        testEntity.sensors().set(Sensors.newStringSensor("test.regex.source"), "somefooname");
-        testEntity.sensors().set(Sensors.newStringSensor("test.regex.pattern"), "foo");
-        testEntity.sensors().set(Sensors.newStringSensor("test.regex.replacement"), "bar");
-
-        Assert.assertEquals("somebarname", testEntity.getConfig(ConfigKeys.newStringConfigKey("test.regex.config")));
-    }
-
-    @Test
-    public void testRegexReplacementFunctionWithStrings() throws Exception {
-        Entity testEntity = setupAndCheckTestEntityInBasicYamlWith(
-                "  brooklyn.enrichers:",
-                "  - type: org.apache.brooklyn.enricher.stock.Transformer",
-                "    brooklyn.config:",
-                "      enricher.sourceSensor: $brooklyn:sensor(\"test.name\")",
-                "      enricher.targetSensor: $brooklyn:sensor(\"test.name.transformed\")",
-                "      enricher.transformation: $brooklyn:function.regexReplacement(\"foo\", \"bar\")"
-        );
-        testEntity.sensors().set(TestEntity.NAME, "somefooname");
-        AttributeSensor<String> transformedSensor = Sensors.newStringSensor("test.name.transformed");
-        EntityAsserts.assertAttributeEqualsEventually(testEntity, transformedSensor, "somebarname");
-    }
-
-    @Test
-    public void testRegexReplacementFunctionWithAttributeWhenReady() throws Exception {
-        Entity testEntity = setupAndCheckTestEntityInBasicYamlWith(
-                "  brooklyn.enrichers:",
-                "  - type: org.apache.brooklyn.enricher.stock.Transformer",
-                "    brooklyn.config:",
-                "      enricher.sourceSensor: $brooklyn:sensor(\"test.name\")",
-                "      enricher.targetSensor: $brooklyn:sensor(\"test.name.transformed\")",
-                "      enricher.transformation: $brooklyn:function.regexReplacement($brooklyn:attributeWhenReady(\"test.pattern\"), $brooklyn:attributeWhenReady(\"test.replacement\"))"
-        );
-        testEntity.sensors().set(Sensors.newStringSensor("test.pattern"), "foo");
-        testEntity.sensors().set(Sensors.newStringSensor("test.replacement"), "bar");
-        testEntity.sensors().set(TestEntity.NAME, "somefooname");
-        AttributeSensor<String> transformedSensor = Sensors.newStringSensor("test.name.transformed");
-        EntityAsserts.assertAttributeEqualsEventually(testEntity, transformedSensor, "somebarname");
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptySoftwareProcessYamlTest.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptySoftwareProcessYamlTest.java b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptySoftwareProcessYamlTest.java
deleted file mode 100644
index 0554917..0000000
--- a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptySoftwareProcessYamlTest.java
+++ /dev/null
@@ -1,124 +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.camp.brooklyn;
-
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.core.entity.Attributes;
-import org.apache.brooklyn.core.entity.BrooklynConfigKeys;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.EntityAsserts;
-import org.apache.brooklyn.entity.software.base.EmptySoftwareProcess;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
-import org.apache.brooklyn.test.EntityTestUtils;
-import org.apache.brooklyn.util.collections.Jsonya;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.Iterables;
-
-@Test
-public class EmptySoftwareProcessYamlTest extends AbstractYamlTest {
-    private static final Logger log = LoggerFactory.getLogger(EnrichersYamlTest.class);
-
-    @Test(groups="Integration")
-    public void testProvisioningProperties() throws Exception {
-        Entity app = createAndStartApplication(
-            "location: localhost",
-            "services:",
-            "- type: "+EmptySoftwareProcess.class.getName(),
-            "  provisioning.properties:",
-            "    minRam: 16384");
-        waitForApplicationTasks(app);
-
-        log.info("App started:");
-        Entities.dumpInfo(app);
-        
-        EmptySoftwareProcess entity = (EmptySoftwareProcess) app.getChildren().iterator().next();
-        Map<String, Object> pp = entity.getConfig(EmptySoftwareProcess.PROVISIONING_PROPERTIES);
-        Assert.assertEquals(pp.get("minRam"), 16384);
-    }
-
-    @Test(groups="Integration")
-    public void testProvisioningPropertiesViaJsonya() throws Exception {
-        Entity app = createAndStartApplication(
-            Jsonya.newInstance()
-                .put("location", "localhost")
-                .at("services").list()
-                .put("type", EmptySoftwareProcess.class.getName())
-                .at("provisioning.properties").put("minRam", 16384)
-                .root().toString());
-        waitForApplicationTasks(app);
-
-        log.info("App started:");
-        Entities.dumpInfo(app);
-        
-        EmptySoftwareProcess entity = (EmptySoftwareProcess) app.getChildren().iterator().next();
-        Map<String, Object> pp = entity.getConfig(EmptySoftwareProcess.PROVISIONING_PROPERTIES);
-        Assert.assertEquals(pp.get("minRam"), 16384);
-    }
-
-    // for https://github.com/brooklyncentral/brooklyn/issues/1377
-    @Test(groups="Integration")
-    public void testWithAppAndEntityLocations() throws Exception {
-        Entity app = createAndStartApplication(
-                "services:",
-                "- type: "+EmptySoftwareProcess.class.getName(),
-                "  location: localhost:(name=localhost on entity)",
-                "location: byon:(hosts=\"127.0.0.1\", name=loopback on app)");
-        waitForApplicationTasks(app);
-        Entities.dumpInfo(app);
-        
-        Assert.assertEquals(app.getLocations().size(), 1);
-        Assert.assertEquals(app.getChildren().size(), 1);
-        Entity entity = app.getChildren().iterator().next();
-        
-        Location appLocation = app.getLocations().iterator().next();
-        Assert.assertEquals(appLocation.getDisplayName(), "loopback on app");
-        
-        Assert.assertEquals(entity.getLocations().size(), 2);
-        Iterator<Location> entityLocationIterator = entity.getLocations().iterator();
-        Assert.assertEquals(entityLocationIterator.next().getDisplayName(), "localhost on entity");
-        Location actualMachine = entityLocationIterator.next();
-        Assert.assertTrue(actualMachine instanceof SshMachineLocation, "wrong location: "+actualMachine);
-        // TODO this, below, probably should be 'localhost on entity', see #1377
-        Assert.assertEquals(actualMachine.getParent().getDisplayName(), "localhost on entity");
-    }
-    
-    @Test(groups="Integration")
-    public void testNoSshing() throws Exception {
-        Entity app = createAndStartApplication(
-                "location: byon:(hosts=\"1.2.3.4\")",
-                "services:",
-                "- type: "+EmptySoftwareProcess.class.getName(),
-                "  brooklyn.config:",
-                "    sshMonitoring.enabled: false",
-                "    "+BrooklynConfigKeys.SKIP_ON_BOX_BASE_DIR_RESOLUTION.getName()+": true");
-        waitForApplicationTasks(app);
-
-        EmptySoftwareProcess entity = Iterables.getOnlyElement(Entities.descendants(app, EmptySoftwareProcess.class));
-        EntityAsserts.assertAttributeEqualsEventually(entity, Attributes.SERVICE_UP, true);
-        EntityAsserts.assertAttributeEqualsContinually(entity, Attributes.SERVICE_UP, true);
-    }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptyWindowsProcessYamlTest.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptyWindowsProcessYamlTest.java b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptyWindowsProcessYamlTest.java
deleted file mode 100644
index 77043c7..0000000
--- a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptyWindowsProcessYamlTest.java
+++ /dev/null
@@ -1,51 +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.camp.brooklyn;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.core.entity.Attributes;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.EntityAsserts;
-import org.apache.brooklyn.entity.software.base.EmptyWindowsProcess;
-import org.apache.brooklyn.location.winrm.WinRmMachineLocation;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Predicates;
-import com.google.common.collect.Iterables;
-
-@Test
-public class EmptyWindowsProcessYamlTest extends AbstractYamlTest {
-
-    @Test(groups="Integration")
-    public void testNoWinrm() throws Exception {
-        Entity app = createAndStartApplication(
-                "location: byon:(hosts=\"1.2.3.4\",osFamily=windows)",
-                "services:",
-                "- type: "+EmptyWindowsProcess.class.getName(),
-                "  brooklyn.config:",
-                "    winrmMonitoring.enabled: false");
-        waitForApplicationTasks(app);
-
-        EmptyWindowsProcess entity = Iterables.getOnlyElement(Entities.descendants(app, EmptyWindowsProcess.class));
-        EntityAsserts.assertAttributeEqualsEventually(entity, Attributes.SERVICE_UP, true);
-        EntityAsserts.assertAttributeEqualsContinually(entity, Attributes.SERVICE_UP, true);
-        
-        Iterables.find(entity.getLocations(), Predicates.instanceOf(WinRmMachineLocation.class));
-    }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d03f254b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EnrichersYamlTest.java
----------------------------------------------------------------------
diff --git a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EnrichersYamlTest.java b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EnrichersYamlTest.java
deleted file mode 100644
index cf9f204..0000000
--- a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EnrichersYamlTest.java
+++ /dev/null
@@ -1,256 +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.camp.brooklyn;
-
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.Callable;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.sensor.Enricher;
-import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.EntityAdjuncts;
-import org.apache.brooklyn.core.entity.EntityInternal;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.core.test.policy.TestEnricher;
-import org.apache.brooklyn.enricher.stock.Propagator;
-import org.apache.brooklyn.test.Asserts;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Predicates;
-import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-
-@Test
-public class EnrichersYamlTest extends AbstractYamlTest {
-    private static final Logger log = LoggerFactory.getLogger(EnrichersYamlTest.class);
-
-    @Test
-    public void testWithAppEnricher() throws Exception {
-        Entity app = createAndStartApplication(loadYaml("test-app-with-enricher.yaml"));
-        waitForApplicationTasks(app);
-        Assert.assertEquals(app.getDisplayName(), "test-app-with-enricher");
-        
-        log.info("App started:");
-        Entities.dumpInfo(app);
-        
-        Assert.assertEquals(EntityAdjuncts.getNonSystemEnrichers(app).size(), 1);
-        final Enricher enricher = EntityAdjuncts.getNonSystemEnrichers(app).iterator().next();
-        Assert.assertTrue(enricher instanceof TestEnricher, "enricher="+enricher);
-        Assert.assertEquals(enricher.getConfig(TestEnricher.CONF_NAME), "Name from YAML");
-        Assert.assertEquals(enricher.getConfig(TestEnricher.CONF_FROM_FUNCTION), "$brooklyn: is a fun place");
-        
-        Entity target = ((EntityInternal)app).getExecutionContext().submit(MutableMap.of(), new Callable<Entity>() {
-            public Entity call() {
-                return enricher.getConfig(TestEnricher.TARGET_ENTITY);
-            }}).get();
-        Assert.assertNotNull(target);
-        Assert.assertEquals(target.getDisplayName(), "testentity");
-        Assert.assertEquals(target, app.getChildren().iterator().next());
-        Entity targetFromFlag = ((EntityInternal)app).getExecutionContext().submit(MutableMap.of(), new Callable<Entity>() {
-            public Entity call() {
-                return enricher.getConfig(TestEnricher.TARGET_ENTITY_FROM_FLAG);
-            }}).get();
-        Assert.assertEquals(targetFromFlag, target);
-        Map<?, ?> leftoverProperties = ((TestEnricher) enricher).getLeftoverProperties();
-        Assert.assertEquals(leftoverProperties.get("enricherLiteralValue1"), "Hello");
-        Assert.assertEquals(leftoverProperties.get("enricherLiteralValue2"), "World");
-        Assert.assertEquals(leftoverProperties.size(), 2);
-    }
-    
-    @Test
-    public void testWithEntityEnricher() throws Exception {
-        final Entity app = createAndStartApplication(loadYaml("test-entity-with-enricher.yaml"));
-        waitForApplicationTasks(app);
-        Assert.assertEquals(app.getDisplayName(), "test-entity-with-enricher");
-
-        log.info("App started:");
-        Entities.dumpInfo(app);
-
-        Assert.assertEquals(EntityAdjuncts.getNonSystemEnrichers(app).size(), 0);
-        Assert.assertEquals(app.getChildren().size(), 1);
-        final Entity child = app.getChildren().iterator().next();
-        Asserts.eventually(new Supplier<Integer>() {
-            @Override
-            public Integer get() {
-                return EntityAdjuncts.getNonSystemEnrichers(child).size();
-            }
-        }, Predicates.<Integer> equalTo(1));        
-        final Enricher enricher = EntityAdjuncts.getNonSystemEnrichers(child).iterator().next();
-        Assert.assertNotNull(enricher);
-        Assert.assertTrue(enricher instanceof TestEnricher, "enricher=" + enricher + "; type=" + enricher.getClass());
-        Assert.assertEquals(enricher.getConfig(TestEnricher.CONF_NAME), "Name from YAML");
-        Assert.assertEquals(enricher.getConfig(TestEnricher.CONF_FROM_FUNCTION), "$brooklyn: is a fun place");
-        
-        Assert.assertEquals(((TestEnricher) enricher).getLeftoverProperties(),
-                ImmutableMap.of("enricherLiteralValue1", "Hello", "enricherLiteralValue2", "World"));
-    }
-    
-    @Test
-    public void testPropagatingEnricher() throws Exception {
-        Entity app = createAndStartApplication(loadYaml("test-propagating-enricher.yaml"));
-        waitForApplicationTasks(app);
-        Assert.assertEquals(app.getDisplayName(), "test-propagating-enricher");
-
-        log.info("App started:");
-        Entities.dumpInfo(app);
-        TestEntity entity = (TestEntity)app.getChildren().iterator().next();
-        entity.sensors().set(TestEntity.NAME, "New Name");
-        Asserts.eventually(Entities.attributeSupplier(app, TestEntity.NAME), Predicates.<String>equalTo("New Name"));
-    }
-    
-    @Test
-    public void testPropogateChildSensor() throws Exception {
-        Entity app = createAndStartApplication(loadYaml("test-entity-basic-template.yaml",
-                    "  brooklyn.config:",
-                    "    test.confName: parent entity",
-                    "  id: parentId",
-                    "  brooklyn.enrichers:",
-                    "  - enricherType: org.apache.brooklyn.enricher.stock.Propagator",
-                    "    brooklyn.config:",
-                    "      enricher.producer: $brooklyn:component(\"childId\")",
-                    "      enricher.propagating.propagatingAll: true",
-                    "  brooklyn.children:",
-                    "  - serviceType: org.apache.brooklyn.core.test.entity.TestEntity",
-                    "    id: childId",
-                    "    brooklyn.config:",
-                    "      test.confName: Child Name"));
-        waitForApplicationTasks(app);
-        
-        log.info("App started:");
-        Entities.dumpInfo(app);
-        Assert.assertEquals(app.getChildren().size(), 1);
-        final Entity parentEntity = app.getChildren().iterator().next();
-        Assert.assertTrue(parentEntity instanceof TestEntity, "Expected parent entity to be TestEntity, found:" + parentEntity);
-        Assert.assertEquals(parentEntity.getChildren().size(), 1);
-        Entity childEntity = parentEntity.getChildren().iterator().next();
-        Assert.assertTrue(childEntity instanceof TestEntity, "Expected child entity to be TestEntity, found:" + childEntity);
-        Asserts.eventually(new Supplier<Integer>() {
-            @Override
-            public Integer get() {
-                return EntityAdjuncts.getNonSystemEnrichers(parentEntity).size();
-            }
-        }, Predicates.<Integer>equalTo(1));
-        Enricher enricher = EntityAdjuncts.getNonSystemEnrichers(parentEntity).iterator().next();
-        Asserts.assertTrue(enricher instanceof Propagator, "Expected enricher to be Propagator, found:" + enricher);
-        final Propagator propagator = (Propagator)enricher;
-        Entity producer = ((EntityInternal)parentEntity).getExecutionContext().submit(MutableMap.of(), new Callable<Entity>() {
-            public Entity call() {
-                return propagator.getConfig(Propagator.PRODUCER);
-            }}).get();
-        Assert.assertEquals(producer, childEntity);
-        Asserts.assertTrue(Boolean.valueOf(propagator.getConfig(Propagator.PROPAGATING_ALL)), "Expected Propagator.PROPAGATING_ALL to be true");
-        ((TestEntity)childEntity).sensors().set(TestEntity.NAME, "New Name");
-        Asserts.eventually(Entities.attributeSupplier(parentEntity, TestEntity.NAME), Predicates.<String>equalTo("New Name"));
-    }
-    
-    @Test
-    public void testMultipleEnricherReferences() throws Exception {
-        final Entity app = createAndStartApplication(loadYaml("test-referencing-enrichers.yaml"));
-        waitForApplicationTasks(app);
-        
-        Entity entity1 = null, entity2 = null, child1 = null, child2 = null, grandchild1 = null, grandchild2 = null;
-        
-        Assert.assertEquals(app.getChildren().size(), 2);
-        for (Entity child : app.getChildren()) {
-            if (child.getDisplayName().equals("entity 1"))
-                entity1 = child;
-            if (child.getDisplayName().equals("entity 2"))
-                entity2 = child;
-        }
-        Assert.assertNotNull(entity1);
-        Assert.assertNotNull(entity2);
-        
-        Assert.assertEquals(entity1.getChildren().size(), 2);
-        for (Entity child : entity1.getChildren()) {
-            if (child.getDisplayName().equals("child 1"))
-                child1 = child;
-            if (child.getDisplayName().equals("child 2"))
-                child2 = child;
-        }
-        Assert.assertNotNull(child1);
-        Assert.assertNotNull(child2);
-        
-        Assert.assertEquals(child1.getChildren().size(), 2);
-        for (Entity child : child1.getChildren()) {
-            if (child.getDisplayName().equals("grandchild 1"))
-               grandchild1 = child;
-            if (child.getDisplayName().equals("grandchild 2"))
-                grandchild2 = child;
-        }
-        Assert.assertNotNull(grandchild1);
-        Assert.assertNotNull(grandchild2);
-        
-        ImmutableSet<Enricher> enrichers = new ImmutableSet.Builder<Enricher>()
-                .add(getEnricher(app))
-                .add(getEnricher(entity1))
-                .add(getEnricher(entity2))
-                .add(getEnricher(child1))
-                .add(getEnricher(child2))
-                .add(getEnricher(grandchild1))
-                .add(getEnricher(grandchild2))
-                .build();
-        
-        Map<ConfigKey<Entity>, Entity> keyToEntity = new ImmutableMap.Builder<ConfigKey<Entity>, Entity>()
-                .put(TestReferencingEnricher.TEST_APPLICATION, app)
-                .put(TestReferencingEnricher.TEST_ENTITY_1, entity1)
-                .put(TestReferencingEnricher.TEST_ENTITY_2, entity2)
-                .put(TestReferencingEnricher.TEST_CHILD_1, child1)
-                .put(TestReferencingEnricher.TEST_CHILD_2, child2)
-                .put(TestReferencingEnricher.TEST_GRANDCHILD_1, grandchild1)
-                .put(TestReferencingEnricher.TEST_GRANDCHILD_2, grandchild2)
-                .build();
-        
-        for (Enricher enricher : enrichers)
-            checkReferences(enricher, keyToEntity);
-    }
-    
-    private void checkReferences(final Enricher enricher, Map<ConfigKey<Entity>, Entity> keyToEntity) throws Exception {
-        for (final ConfigKey<Entity> key : keyToEntity.keySet()) {
-            final Entity entity = keyToEntity.get(key); // Grab an entity whose execution context we can use
-            Entity fromConfig = ((EntityInternal)entity).getExecutionContext().submit(MutableMap.of(), new Callable<Entity>() {
-                @Override
-                public Entity call() throws Exception {
-                    return (Entity) enricher.getConfig(key);
-                }
-            }).get();
-            Assert.assertEquals(fromConfig, keyToEntity.get(key));
-        }
-    }
-    
-    private Enricher getEnricher(Entity entity) {
-        List<Enricher> enrichers = EntityAdjuncts.getNonSystemEnrichers(entity);
-        Assert.assertEquals(enrichers.size(), 1, "Wrong number of enrichers: "+enrichers);
-        Enricher enricher = enrichers.iterator().next();
-        Assert.assertTrue(enricher instanceof TestReferencingEnricher, "Wrong enricher: "+enricher);
-        return enricher;
-    }
-    
-    @Override
-    protected Logger getLogger() {
-        return log;
-    }
-    
-}