http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c27cf1d0/core/src/test/java/org/apache/brooklyn/entity/core/EntityConfigTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntityConfigTest.java 
b/core/src/test/java/org/apache/brooklyn/entity/core/EntityConfigTest.java
deleted file mode 100644
index 75fb4d0..0000000
--- a/core/src/test/java/org/apache/brooklyn/entity/core/EntityConfigTest.java
+++ /dev/null
@@ -1,178 +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.entity.core;
-
-import static org.testng.Assert.assertEquals;
-
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.core.config.ConfigKeys;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.entity.core.AbstractEntity;
-import org.apache.brooklyn.entity.core.Entities;
-import org.apache.brooklyn.entity.core.EntityInternal;
-import org.apache.brooklyn.util.core.flags.SetFromFlag;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableMap;
-
-public class EntityConfigTest {
-
-    private ManagementContext managementContext;
-
-    @BeforeMethod(alwaysRun=true)
-    public void setUp() throws Exception {
-        managementContext = LocalManagementContextForTests.newInstance();
-    }
-    
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() {
-        if (managementContext != null) Entities.destroyAll(managementContext);
-    }
-
-    @Test
-    public void testConfigBagContainsMatchesForConfigKeyName() throws 
Exception {
-        EntityInternal entity = 
managementContext.getEntityManager().createEntity(EntitySpec.create(MyEntity.class)
-                .configure("myentity.myconfig", "myval1")
-                .configure("myentity.myconfigwithflagname", "myval2"));
-        
-        assertEquals(entity.getAllConfig(), 
ImmutableMap.of(MyEntity.MY_CONFIG, "myval1", MyEntity.MY_CONFIG_WITH_FLAGNAME, 
"myval2"));
-        assertEquals(entity.getAllConfigBag().getAllConfig(), 
ImmutableMap.of("myentity.myconfig", "myval1", "myentity.myconfigwithflagname", 
"myval2"));
-        assertEquals(entity.getLocalConfigBag().getAllConfig(), 
ImmutableMap.of("myentity.myconfig", "myval1", "myentity.myconfigwithflagname", 
"myval2"));
-    }
-
-    @Test
-    public void testConfigBagContainsMatchesForFlagName() throws Exception {
-        // Prefers flag-name, over config-key's name
-        EntityInternal entity = 
managementContext.getEntityManager().createEntity(EntitySpec.create(MyEntity.class)
-                .configure("myconfigflagname", "myval"));
-        
-        assertEquals(entity.getAllConfig(), 
ImmutableMap.of(MyEntity.MY_CONFIG_WITH_FLAGNAME, "myval"));
-        assertEquals(entity.getAllConfigBag().getAllConfig(), 
ImmutableMap.of("myentity.myconfigwithflagname", "myval"));
-        assertEquals(entity.getLocalConfigBag().getAllConfig(), 
ImmutableMap.of("myentity.myconfigwithflagname", "myval"));
-    }
-
-    // TODO Which way round should it be?!
-    @Test(enabled=false)
-    public void testPrefersFlagNameOverConfigKeyName() throws Exception {
-        EntityInternal entity = 
managementContext.getEntityManager().createEntity(EntitySpec.create(MyEntity.class)
-                .configure("myconfigflagname", "myval")
-                .configure("myentity.myconfigwithflagname", 
"shouldIgnoreAndPreferFlagName"));
-        
-        assertEquals(entity.getAllConfig(), 
ImmutableMap.of(MyEntity.MY_CONFIG_WITH_FLAGNAME, "myval"));
-    }
-
-    @Test
-    public void testConfigBagContainsUnmatched() throws Exception {
-        EntityInternal entity = 
managementContext.getEntityManager().createEntity(EntitySpec.create(MyEntity.class)
-                .configure("notThere", "notThereVal"));
-        
-        assertEquals(entity.getAllConfig(), 
ImmutableMap.of(ConfigKeys.newConfigKey(Object.class, "notThere"), 
"notThereVal"));
-        assertEquals(entity.getAllConfigBag().getAllConfig(), 
ImmutableMap.of("notThere", "notThereVal"));
-        assertEquals(entity.getLocalConfigBag().getAllConfig(), 
ImmutableMap.of("notThere", "notThereVal"));
-    }
-    
-    @Test
-    public void testChildConfigBagInheritsUnmatchedAtParent() throws Exception 
{
-        EntityInternal entity = 
managementContext.getEntityManager().createEntity(EntitySpec.create(MyEntity.class)
-                .configure("mychildentity.myconfig", "myval1")
-                .configure("mychildconfigflagname", "myval2")
-                .configure("notThere", "notThereVal"));
-
-        EntityInternal child = 
managementContext.getEntityManager().createEntity(EntitySpec.create(MyChildEntity.class)
-                .parent(entity));
-
-        assertEquals(child.getAllConfig(), 
ImmutableMap.of(MyChildEntity.MY_CHILD_CONFIG, "myval1", 
-            ConfigKeys.newConfigKey(Object.class, "mychildconfigflagname"), 
"myval2",
-            ConfigKeys.newConfigKey(Object.class, "notThere"), "notThereVal"));
-        assertEquals(child.getAllConfigBag().getAllConfig(), 
ImmutableMap.of("mychildentity.myconfig", "myval1", "mychildconfigflagname", 
"myval2", "notThere", "notThereVal"));
-        assertEquals(child.getLocalConfigBag().getAllConfig(), 
ImmutableMap.of());
-    }
-    
-    @Test
-    public void testChildInheritsFromParent() throws Exception {
-        EntityInternal entity = 
managementContext.getEntityManager().createEntity(EntitySpec.create(MyEntity.class)
-                .configure("myentity.myconfig", "myval1"));
-
-        EntityInternal child = 
managementContext.getEntityManager().createEntity(EntitySpec.create(MyChildEntity.class)
-                .parent(entity));
-
-        assertEquals(child.getAllConfig(), ImmutableMap.of(MyEntity.MY_CONFIG, 
"myval1"));
-        assertEquals(child.getAllConfigBag().getAllConfig(), 
ImmutableMap.of("myentity.myconfig", "myval1"));
-        assertEquals(child.getLocalConfigBag().getAllConfig(), 
ImmutableMap.of());
-    }
-    
-    @Test
-    public void testChildCanOverrideConfigUsingKeyName() throws Exception {
-        EntityInternal entity = 
managementContext.getEntityManager().createEntity(EntitySpec.create(MyEntity.class)
-                .configure("mychildentity.myconfigwithflagname", "myval")
-                .configure("notThere", "notThereVal"));
-
-        EntityInternal child = 
managementContext.getEntityManager().createEntity(EntitySpec.create(MyChildEntity.class)
-                .parent(entity)
-                .configure("mychildentity.myconfigwithflagname", 
"overrideMyval")
-                .configure("notThere", "overrideNotThereVal"));
-
-        assertEquals(child.getAllConfig(), 
ImmutableMap.of(MyChildEntity.MY_CHILD_CONFIG_WITH_FLAGNAME, "overrideMyval",
-            ConfigKeys.newConfigKey(Object.class, "notThere"), 
"overrideNotThereVal"));
-        assertEquals(child.getAllConfigBag().getAllConfig(), 
ImmutableMap.of("mychildentity.myconfigwithflagname", "overrideMyval", 
"notThere", "overrideNotThereVal"));
-        assertEquals(child.getLocalConfigBag().getAllConfig(), 
ImmutableMap.of("mychildentity.myconfigwithflagname", "overrideMyval", 
"notThere", "overrideNotThereVal"));
-    }
-    
-    @Test
-    public void testChildCanOverrideConfigUsingFlagName() throws Exception {
-        EntityInternal entity = 
managementContext.getEntityManager().createEntity(EntitySpec.create(MyEntity.class)
-                .configure(MyChildEntity.MY_CHILD_CONFIG_WITH_FLAGNAME, 
"myval"));
-        assertEquals(entity.getAllConfig(), 
ImmutableMap.of(MyChildEntity.MY_CHILD_CONFIG_WITH_FLAGNAME, "myval"));
-
-        EntityInternal child = 
managementContext.getEntityManager().createEntity(EntitySpec.create(MyChildEntity.class)
-                .parent(entity)
-                .configure("mychildconfigflagname", "overrideMyval"));
-
-        assertEquals(child.getAllConfig(), 
ImmutableMap.of(MyChildEntity.MY_CHILD_CONFIG_WITH_FLAGNAME, "overrideMyval"));
-        assertEquals(child.getAllConfigBag().getAllConfig(), 
ImmutableMap.of("mychildentity.myconfigwithflagname", "overrideMyval"));
-        assertEquals(child.getLocalConfigBag().getAllConfig(), 
ImmutableMap.of("mychildentity.myconfigwithflagname", "overrideMyval"));
-    }
-    
-    public static class MyEntity extends AbstractEntity {
-        public static final ConfigKey<String> MY_CONFIG = 
ConfigKeys.newStringConfigKey("myentity.myconfig");
-
-        @SetFromFlag("myconfigflagname")
-        public static final ConfigKey<String> MY_CONFIG_WITH_FLAGNAME = 
ConfigKeys.newStringConfigKey("myentity.myconfigwithflagname");
-        
-        @Override
-        public void init() {
-            super.init();
-            
-            // Just calling this to prove we can! When config() was changed to 
return BasicConfigurationSupport,
-            // it broke because BasicConfigurationSupport was private.
-            config().getLocalBag();
-        }
-    }
-    
-    public static class MyChildEntity extends AbstractEntity {
-        public static final ConfigKey<String> MY_CHILD_CONFIG = 
ConfigKeys.newStringConfigKey("mychildentity.myconfig");
-
-        @SetFromFlag("mychildconfigflagname")
-        public static final ConfigKey<String> MY_CHILD_CONFIG_WITH_FLAGNAME = 
ConfigKeys.newStringConfigKey("mychildentity.myconfigwithflagname");
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c27cf1d0/core/src/test/java/org/apache/brooklyn/entity/core/EntityFunctionsTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntityFunctionsTest.java 
b/core/src/test/java/org/apache/brooklyn/entity/core/EntityFunctionsTest.java
deleted file mode 100644
index 1ba79df..0000000
--- 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntityFunctionsTest.java
+++ /dev/null
@@ -1,77 +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.entity.core;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNull;
-
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.entity.core.EntityFunctions;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
-
-public class EntityFunctionsTest extends BrooklynAppUnitTestSupport {
-
-    private TestEntity entity;
-    private Location loc;
-    
-    @BeforeMethod(alwaysRun=true)
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        entity = 
app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("mydisplayname"));
-        loc = 
app.getManagementContext().getLocationRegistry().resolve("localhost");
-    }
-
-    @Test
-    public void testAttribute() throws Exception {
-        entity.setAttribute(TestEntity.NAME, "myname");
-        assertEquals(EntityFunctions.attribute(TestEntity.NAME).apply(entity), 
"myname");
-        
assertNull(EntityFunctions.attribute(TestEntity.SEQUENCE).apply(entity));
-    }
-    
-    @Test
-    public void testConfig() throws Exception {
-        entity.setConfig(TestEntity.CONF_NAME, "myname");
-        
assertEquals(EntityFunctions.config(TestEntity.CONF_NAME).apply(entity), 
"myname");
-        
assertNull(EntityFunctions.config(TestEntity.CONF_OBJECT).apply(entity));
-    }
-    
-    @Test
-    public void testDisplayName() throws Exception {
-        assertEquals(EntityFunctions.displayName().apply(entity), 
"mydisplayname");
-    }
-    
-    @Test
-    public void testId() throws Exception {
-        assertEquals(EntityFunctions.id().apply(entity), entity.getId());
-    }
-    
-    @Test
-    public void testLocationMatching() throws Exception {
-        entity.addLocations(ImmutableList.of(loc));
-        
assertEquals(EntityFunctions.locationMatching(Predicates.alwaysTrue()).apply(entity),
 loc);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c27cf1d0/core/src/test/java/org/apache/brooklyn/entity/core/EntityLocationsTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntityLocationsTest.java 
b/core/src/test/java/org/apache/brooklyn/entity/core/EntityLocationsTest.java
deleted file mode 100644
index c932da0..0000000
--- 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntityLocationsTest.java
+++ /dev/null
@@ -1,126 +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.entity.core;
-
-import static org.testng.Assert.assertEquals;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.sensor.SensorEvent;
-import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
-import org.apache.brooklyn.entity.core.AbstractEntity;
-import org.apache.brooklyn.test.Asserts;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-
-public class EntityLocationsTest extends BrooklynAppUnitTestSupport {
-
-    @Test
-    public void testDuplicateLocationOnlyAddedOnce() {
-        Location l = app.newSimulatedLocation();
-        app.addLocations(Arrays.asList(l, l));
-        app.addLocations(Arrays.asList(l, l));
-        Assert.assertEquals(app.getLocations().size(), 1);
-    }
-    
-    @Test
-    public void testNotifiedOfAddAndRemoveLocations() throws Exception {
-        final Location l = app.newSimulatedLocation();
-        final Location l2 = app.newSimulatedLocation();
-        
-        final RecordingSensorEventListener<Object> addedEvents = new 
RecordingSensorEventListener<>();
-        final RecordingSensorEventListener<Object> removedEvents = new 
RecordingSensorEventListener<>();
-        app.subscribe(app, AbstractEntity.LOCATION_ADDED, addedEvents);
-        app.subscribe(app, AbstractEntity.LOCATION_REMOVED, removedEvents);
-
-        // Add first location
-        app.addLocations(ImmutableList.of(l));
-        
-        assertEventValuesEqualsEventually(addedEvents, ImmutableList.of(l));
-        assertEventValuesEquals(removedEvents, ImmutableList.of());
-
-        // Add second location
-        app.addLocations(ImmutableList.of(l2));
-
-        assertEventValuesEqualsEventually(addedEvents, ImmutableList.of(l, 
l2));
-        assertEventValuesEquals(removedEvents, ImmutableList.of());
-
-        // Remove first location
-        app.removeLocations(ImmutableList.of(l));
-        
-        assertEventValuesEqualsEventually(removedEvents, ImmutableList.of(l));
-        assertEventValuesEquals(addedEvents, ImmutableList.of(l, l2));
-
-        // Remove second location
-        app.removeLocations(ImmutableList.of(l2));
-        
-        assertEventValuesEqualsEventually(removedEvents, ImmutableList.of(l, 
l2));
-        assertEventValuesEquals(addedEvents, ImmutableList.of(l, l2));
-    }
-    
-    @Test(groups="Integration") // because takes a second
-    public void testNotNotifiedDuplicateAddedLocations() throws Exception {
-        final Location l = app.newSimulatedLocation();
-        
-        final RecordingSensorEventListener<Object> addedEvents = new 
RecordingSensorEventListener<>();
-        final RecordingSensorEventListener<Object> removedEvents = new 
RecordingSensorEventListener<>();
-        app.subscribe(app, AbstractEntity.LOCATION_ADDED, addedEvents);
-        app.subscribe(app, AbstractEntity.LOCATION_REMOVED, removedEvents);
-
-        // Add first location
-        app.addLocations(ImmutableList.of(l, l));
-        
-        assertEventValuesEqualsEventually(addedEvents, ImmutableList.of(l));
-        assertEventValuesEquals(removedEvents, ImmutableList.of());
-
-        // Add second location
-        app.addLocations(ImmutableList.of(l));
-
-        assertEventValuesEqualsContinually(addedEvents, ImmutableList.of(l));
-        assertEventValuesEquals(removedEvents, ImmutableList.of());
-    }
-    
-    private void assertEventValuesEqualsEventually(final 
RecordingSensorEventListener<Object> listener, final List<?> expectedVals) {
-        Asserts.succeedsEventually(new Runnable() {
-            @Override public void run() {
-                assertEventValuesEquals(listener, expectedVals);
-            }});
-    }
-    
-    private void assertEventValuesEqualsContinually(final 
RecordingSensorEventListener<Object> listener, final List<?> expectedVals) {
-        Asserts.succeedsContinually(new Runnable() {
-            @Override public void run() {
-                assertEventValuesEquals(listener, expectedVals);
-            }});
-    }
-
-    private void assertEventValuesEquals(final 
RecordingSensorEventListener<Object> listener, final List<?> expectedVals) {
-        Iterable<SensorEvent<Object>> events = listener.getEvents();
-        assertEquals(Iterables.size(events), expectedVals.size(), "events=" + 
events);
-        for (int i = 0; i < expectedVals.size(); i++) {
-            Object expectedVal = expectedVals.get(i);
-            assertEquals(Iterables.get(events, i).getValue(), expectedVal, 
"events=" + events);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c27cf1d0/core/src/test/java/org/apache/brooklyn/entity/core/EntityPreManagementTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntityPreManagementTest.java
 
b/core/src/test/java/org/apache/brooklyn/entity/core/EntityPreManagementTest.java
deleted file mode 100644
index 0814d00..0000000
--- 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntityPreManagementTest.java
+++ /dev/null
@@ -1,146 +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.entity.core;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.brooklyn.api.entity.EntityLocal;
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.mgmt.EntityManager;
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.api.sensor.SensorEvent;
-import org.apache.brooklyn.api.sensor.SensorEventListener;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.core.test.entity.TestApplication;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.entity.core.Attributes;
-import org.apache.brooklyn.entity.core.Entities;
-import org.apache.brooklyn.entity.factory.ApplicationBuilder;
-import org.apache.brooklyn.policy.core.AbstractPolicy;
-import org.apache.brooklyn.test.TestUtils;
-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;
-
-
-@SuppressWarnings({"rawtypes","unchecked"})
-public class EntityPreManagementTest {
-
-    @SuppressWarnings("unused")
-    private static final Logger log = 
LoggerFactory.getLogger(EntityPreManagementTest.class);
-
-    private ManagementContext managementContext;
-    private EntityManager entityManager;
-    private TestApplication app;
-    
-    @BeforeMethod(alwaysRun=true)
-    public void setUp() throws Exception {
-        managementContext = new LocalManagementContextForTests();
-        entityManager = managementContext.getEntityManager();
-    }
-    
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-        if (managementContext != null) Entities.destroyAll(managementContext);
-    }
-    
-    @Test
-    public void testSetSensorBeforeManaged() {
-        TestEntity e = 
entityManager.createEntity(EntitySpec.create(TestEntity.class));
-
-        e.setAttribute(Attributes.HOSTNAME, "martian.martian");
-        Assert.assertEquals(e.getAttribute(Attributes.HOSTNAME), 
"martian.martian");
-        
-        Assert.assertFalse(e.getManagementSupport().isManagementContextReal());
-    }
-    
-    @Test
-    public void testAddPolicyToEntityBeforeManaged() {
-        TestEntity e = 
entityManager.createEntity(EntitySpec.create(TestEntity.class));
-        final List events = new ArrayList();
-        
-        e.addPolicy(new AbstractPolicy() {
-            @Override
-            public void setEntity(EntityLocal entity) {
-                super.setEntity(entity);
-                subscribe(entity, Attributes.HOSTNAME, new 
SensorEventListener() {
-                    @Override
-                    public void onEvent(SensorEvent event) {
-                        events.add(event);
-                    }
-                });
-            }
-        });
-        
-        e.setAttribute(Attributes.HOSTNAME, "martian.martian");
-        Assert.assertEquals(e.getAttribute(Attributes.HOSTNAME), 
"martian.martian");
-        
-        if (!events.isEmpty()) Assert.fail("Shouldn't have events yet: 
"+events);
-        Assert.assertFalse(e.getManagementSupport().isManagementContextReal());
-        
-        TestApplication app = 
ApplicationBuilder.newManagedApp(TestApplication.class, managementContext);
-        e.setParent(app);
-        Entities.manage(e);
-        
-        TestUtils.assertEventually(new Runnable() {
-            @Override
-            public void run() {
-                if (events.isEmpty()) Assert.fail("no events received");
-            }});
-        Assert.assertEquals(events.size(), 1, "Expected 1 event; got: 
"+events);
-    }
-
-    @Test
-    public void testAddPolicyToApplicationBeforeManaged() {
-        app = 
entityManager.createEntity(EntitySpec.create(TestApplication.class));
-        final List events = new ArrayList();
-        
-        app.addPolicy(new AbstractPolicy() {
-            @Override
-            public void setEntity(EntityLocal entity) {
-                super.setEntity(entity);
-                subscribe(entity, Attributes.HOSTNAME, new 
SensorEventListener() {
-                    @Override
-                    public void onEvent(SensorEvent event) {
-                        events.add(event);
-                    }
-                });
-            }
-        });
-        
-        app.setAttribute(Attributes.HOSTNAME, "martian.martian");
-        Assert.assertEquals(app.getAttribute(Attributes.HOSTNAME), 
"martian.martian");
-        
-        if (!events.isEmpty()) Assert.fail("Shouldn't have events yet: 
"+events);
-        
-        Entities.startManagement(app, managementContext);
-        
-        TestUtils.assertEventually(new Runnable() {
-            @Override
-            public void run() {
-                if (events.isEmpty()) Assert.fail("no events received");
-            }});
-        Assert.assertEquals(events.size(), 1, "Expected 1 event; got: 
"+events);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c27cf1d0/core/src/test/java/org/apache/brooklyn/entity/core/EntityPredicatesTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntityPredicatesTest.java 
b/core/src/test/java/org/apache/brooklyn/entity/core/EntityPredicatesTest.java
deleted file mode 100644
index 0f445e3..0000000
--- 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntityPredicatesTest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.brooklyn.entity.core;
-
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.entity.core.Entities;
-import org.apache.brooklyn.entity.core.EntityPredicates;
-import org.apache.brooklyn.entity.group.BasicGroup;
-import org.apache.brooklyn.entity.trait.Changeable;
-import org.apache.brooklyn.util.text.StringPredicates;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableList;
-
-public class EntityPredicatesTest extends BrooklynAppUnitTestSupport {
-
-    private TestEntity entity;
-    private BasicGroup group;
-    private Location loc;
-    
-    @BeforeMethod(alwaysRun=true)
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        entity = 
app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("mydisplayname"));
-        group = app.createAndManageChild(EntitySpec.create(BasicGroup.class));
-        loc = 
app.getManagementContext().getLocationRegistry().resolve("localhost");
-    }
-
-    @Test
-    public void testApplicationIdEqualTo() throws Exception {
-        
assertTrue(EntityPredicates.applicationIdEqualTo(app.getId()).apply(entity));
-        
assertFalse(EntityPredicates.applicationIdEqualTo("wrongid").apply(entity));
-    }
-    
-    @Test
-    public void testIdEqualTo() throws Exception {
-        assertTrue(EntityPredicates.idEqualTo(entity.getId()).apply(entity));
-        assertFalse(EntityPredicates.idEqualTo("wrongid").apply(entity));
-    }
-    
-    @Test
-    public void testAttributeEqualTo() throws Exception {
-        entity.setAttribute(TestEntity.NAME, "myname");
-        assertTrue(EntityPredicates.attributeEqualTo(TestEntity.NAME, 
"myname").apply(entity));
-        assertFalse(EntityPredicates.attributeEqualTo(TestEntity.NAME, 
"wrongname").apply(entity));
-    }
-    
-    @Test
-    public void testConfigEqualTo() throws Exception {
-        entity.setConfig(TestEntity.CONF_NAME, "myname");
-        assertTrue(EntityPredicates.configEqualTo(TestEntity.CONF_NAME, 
"myname").apply(entity));
-        assertFalse(EntityPredicates.configEqualTo(TestEntity.CONF_NAME, 
"wrongname").apply(entity));
-    }
-    
-    @Test
-    public void testDisplayNameEqualTo() throws Exception {
-        
assertTrue(EntityPredicates.displayNameEqualTo("mydisplayname").apply(entity));
-        
assertFalse(EntityPredicates.displayNameEqualTo("wrongname").apply(entity));
-    }
-    
-    @Test
-    public void testDisplayNameSatisfies() throws Exception {
-        
assertTrue(EntityPredicates.displayNameSatisfies(StringPredicates.matchesRegex("myd.*me")).apply(entity));
-        
assertFalse(EntityPredicates.applicationIdEqualTo("wrongname").apply(entity));
-    }
-    
-    @Test
-    public void testIsChildOf() throws Exception {
-        assertTrue(EntityPredicates.isChildOf(app).apply(entity));
-        assertFalse(EntityPredicates.isChildOf(entity).apply(entity));
-        assertFalse(EntityPredicates.isChildOf(entity).apply(app));
-    }
-    
-    @Test
-    public void testIsMemberOf() throws Exception {
-        group.addMember(entity);
-        assertTrue(EntityPredicates.isMemberOf(group).apply(entity));
-        assertFalse(EntityPredicates.isMemberOf(group).apply(app));
-        assertFalse(EntityPredicates.isMemberOf(group).apply(group));
-    }
-    
-    @Test
-    public void testManaged() throws Exception {
-        assertTrue(EntityPredicates.isManaged().apply(entity));
-        Entities.unmanage(entity);
-        assertFalse(EntityPredicates.isManaged().apply(entity));
-    }
-    
-    @Test
-    public void testWithLocation() throws Exception {
-        entity.addLocations(ImmutableList.of(loc));
-        assertTrue(EntityPredicates.locationsIncludes(loc).apply(entity));
-        assertFalse(EntityPredicates.locationsIncludes(loc).apply(app));
-    }
-
-    @Test
-    public void testHasInterfaceMatching() throws Exception {
-        assertTrue(EntityPredicates.hasInterfaceMatching(".*").apply(entity));
-        
assertTrue(EntityPredicates.hasInterfaceMatching(".*TestEntity").apply(entity));
-        
assertFalse(EntityPredicates.hasInterfaceMatching(".*TestEntity").apply(group));
-        
assertTrue(EntityPredicates.hasInterfaceMatching(Changeable.class.getName()).apply(group));
-        
assertTrue(EntityPredicates.hasInterfaceMatching(".*C.*able").apply(group));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c27cf1d0/core/src/test/java/org/apache/brooklyn/entity/core/EntityRegistrationTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntityRegistrationTest.java
 
b/core/src/test/java/org/apache/brooklyn/entity/core/EntityRegistrationTest.java
deleted file mode 100644
index 3909d98..0000000
--- 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntityRegistrationTest.java
+++ /dev/null
@@ -1,102 +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.entity.core;
-
-import static org.testng.Assert.assertEquals;
-
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.sensor.SensorEvent;
-import org.apache.brooklyn.api.sensor.SensorEventListener;
-import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.entity.core.AbstractEntity;
-import org.apache.brooklyn.entity.core.Entities;
-import org.apache.brooklyn.test.Asserts;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
-
-public class EntityRegistrationTest extends BrooklynAppUnitTestSupport {
-
-    private static final int TIMEOUT_MS = 10*1000;
-    
-    private TestEntity entity;
-    private TestEntity entity2;
-
-    private List<Entity> added;
-    private List<Entity> removed;
-
-    @BeforeMethod(alwaysRun=true)
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        
-        added = Lists.newCopyOnWriteArrayList();
-        removed = Lists.newCopyOnWriteArrayList();
-        
-        app.subscribe(app, AbstractEntity.CHILD_ADDED, new 
SensorEventListener<Entity>() {
-            @Override public void onEvent(SensorEvent<Entity> event) {
-                added.add(event.getValue());
-            }});
-        app.subscribe(app, AbstractEntity.CHILD_REMOVED, new 
SensorEventListener<Entity>() {
-                @Override public void onEvent(SensorEvent<Entity> event) {
-                    removed.add(event.getValue());
-                }});
-    }
-    
-    @Test
-    public void testAddAndRemoveChildrenEmitsEvent() {
-        entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-        assertCollectionEquals(app.getChildren(), ImmutableList.of(entity));
-        assertEqualsEventually(added, ImmutableList.of(entity));
-        
-        entity2 = 
app.createAndManageChild(EntitySpec.create(TestEntity.class));
-        assertCollectionEquals(app.getChildren(), ImmutableList.of(entity, 
entity2));
-        assertEqualsEventually(added, ImmutableList.of(entity, entity2));
-        
-        entity.removeChild(entity);
-        assertCollectionEquals(app.getChildren(), ImmutableList.of(entity2));
-        assertEqualsEventually(removed, ImmutableList.of(entity));
-        
-        Entities.unmanage(entity2);
-        assertCollectionEquals(app.getChildren(), ImmutableList.of());
-        assertEqualsEventually(removed, ImmutableList.of(entity, entity2));
-    }
-    
-    private <T> void assertEqualsEventually(final T actual, final T expected) {
-        Asserts.succeedsEventually(MutableMap.of("timeout", TIMEOUT_MS), new 
Runnable() {
-                @Override public void run() {
-                    assertEquals(actual, expected, "actual="+actual);
-                }});
-    }
-    
-    // Ignores order of vals in collection, but asserts each same size and 
same elements 
-    private <T> void assertCollectionEquals(Collection<?> actual, 
Collection<?> expected) {
-        assertEquals(ImmutableSet.copyOf(actual), 
ImmutableSet.copyOf(expected), "actual="+actual);
-        assertEquals(actual.size(), expected.size(), "actual="+actual);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c27cf1d0/core/src/test/java/org/apache/brooklyn/entity/core/EntitySetFromFlagTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntitySetFromFlagTest.java 
b/core/src/test/java/org/apache/brooklyn/entity/core/EntitySetFromFlagTest.java
deleted file mode 100644
index 51a163f..0000000
--- 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntitySetFromFlagTest.java
+++ /dev/null
@@ -1,213 +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.entity.core;
-
-import static org.testng.Assert.assertEquals;
-
-import java.util.Map;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.location.PortRange;
-import org.apache.brooklyn.entity.core.AbstractEntity;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.location.core.PortRanges;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.core.flags.SetFromFlag;
-
-public class EntitySetFromFlagTest {
-
-    @Test
-    public void testSetFromFlagUsingFieldName() {
-        MyEntity entity = new MyEntity(MutableMap.of("str1", "myval"));
-        assertEquals(entity.str1, "myval");
-    }
-    
-    @Test
-    public void testSetFromFlagUsingOverridenName() {
-        MyEntity entity = new MyEntity(MutableMap.of("altStr2", "myval"));
-        assertEquals(entity.str2, "myval");
-    }
-    
-    @Test
-    public void testSetFromFlagWhenNoDefaultIsNull() {
-        MyEntity entity = new MyEntity();
-        assertEquals(entity.str1, null);
-    }
-    
-    @Test
-    public void testSetFromFlagUsesDefault() {
-        MyEntity entity = new MyEntity();
-        assertEquals(entity.str3, "default str3");
-    }
-    
-    @Test
-    public void testSetFromFlagOverridingDefault() {
-        MyEntity entity = new MyEntity(MutableMap.of("str3", "overridden 
str3"));
-        assertEquals(entity.str3, "overridden str3");
-    }
-
-    @Test
-    public void testSetFromFlagCastsPrimitives() {
-        MyEntity entity = new MyEntity(MutableMap.of("double1", 1f));
-        assertEquals(entity.double1, 1d);
-    }
-
-    @Test
-    public void testSetFromFlagCastsDefault() {
-        MyEntity entity = new MyEntity();
-        assertEquals(entity.byte1, (byte)1);
-        assertEquals(entity.short1, (short)2);
-        assertEquals(entity.int1, 3);
-        assertEquals(entity.long1, 4l);
-        assertEquals(entity.float1, 5f);
-        assertEquals(entity.double1, 6d);
-         assertEquals(entity.char1, 'a');
-        assertEquals(entity.bool1, true);
-        
-        assertEquals(entity.byte2, Byte.valueOf((byte)1));
-        assertEquals(entity.short2, Short.valueOf((short)2));
-        assertEquals(entity.int2, Integer.valueOf(3));
-        assertEquals(entity.long2, Long.valueOf(4l));
-        assertEquals(entity.float2, Float.valueOf(5f));
-        assertEquals(entity.double2, Double.valueOf(6d));
-        assertEquals(entity.char2, Character.valueOf('a'));
-        assertEquals(entity.bool2, Boolean.TRUE);
-    }
-    
-    @Test
-    public void testSetFromFlagCoercesDefaultToPortRange() {
-        MyEntity entity = new MyEntity();
-        assertEquals(entity.portRange1, PortRanges.fromInteger(1234));
-    }
-    
-    @Test
-    public void testSetFromFlagCoercesStringValueToPortRange() {
-        MyEntity entity = new MyEntity(MutableMap.of("portRange1", "1-3"));
-        assertEquals(entity.portRange1, new PortRanges.LinearPortRange(1, 3));
-    }
-    
-    @Test
-    public void testSetFromFlagCoercesStringValueToInt() {
-        MyEntity entity = new MyEntity(MutableMap.of("int1", "123"));
-        assertEquals(entity.int1, 123);
-    }
-
-    @Test
-    public void testSetIconUrl() {
-        MyEntity entity = new MyEntity(MutableMap.of("iconUrl", 
"/img/myicon.gif"));
-        assertEquals(entity.getIconUrl(), "/img/myicon.gif");
-    }
-
-    @Test(expectedExceptions=IllegalArgumentException.class)
-    public void testFailsFastOnInvalidCoercion() {;
-        new MyEntity(MutableMap.of("int1", "thisisnotanint"));
-    }
-    
-    // Fails because configure being called from inside constructor; so field 
is set after configure called
-    @Test(enabled=false) 
-    public void testSetFromFlagWithFieldThatIsExplicitySet() {
-        MyEntity entity = new MyEntity(MutableMap.of("str4", "myval"));
-        assertEquals(entity.str4, "myval");
-        
-        MyEntity entity2 = new MyEntity();
-        assertEquals(entity2.str4, "explicit str4");
-    }
-    
-    private static class MyEntity extends AbstractEntity {
-
-        @SetFromFlag(defaultVal="1234")
-        PortRange portRange1;
-
-        @SetFromFlag
-        String str1;
-        
-        @SetFromFlag("altStr2")
-        String str2;
-        
-        @SetFromFlag(defaultVal="default str3")
-        String str3;
-
-        @SetFromFlag
-        String str4 = "explicit str4";
-        
-        @SetFromFlag(defaultVal="1")
-        byte byte1;
-
-        @SetFromFlag(defaultVal="2")
-        short short1;
-
-        @SetFromFlag(defaultVal="3")
-        int int1;
-
-        @SetFromFlag(defaultVal="4")
-        long long1;
-
-        @SetFromFlag(defaultVal="5")
-        float float1;
-
-        @SetFromFlag(defaultVal="6")
-        double double1;
-
-        @SetFromFlag(defaultVal="a")
-        char char1;
-
-        @SetFromFlag(defaultVal="true")
-        boolean bool1;
-
-        @SetFromFlag(defaultVal="1")
-        Byte byte2;
-
-        @SetFromFlag(defaultVal="2")
-        Short short2;
-
-        @SetFromFlag(defaultVal="3")
-        Integer int2;
-
-        @SetFromFlag(defaultVal="4")
-        Long long2;
-
-        @SetFromFlag(defaultVal="5")
-        Float float2;
-
-        @SetFromFlag(defaultVal="6")
-        Double double2;
-
-        @SetFromFlag(defaultVal="a")
-        Character char2;
-
-        @SetFromFlag(defaultVal="true")
-        Boolean bool2;
-
-        MyEntity() {
-            super(MutableMap.of(), null);
-        }
-        
-        MyEntity(Map flags) {
-            super(flags, null);
-        }
-        
-        MyEntity(Entity parent) {
-            super(MutableMap.of(), parent);
-        }
-        
-        MyEntity(Map flags, Entity parent) {
-            super(flags, parent);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c27cf1d0/core/src/test/java/org/apache/brooklyn/entity/core/EntitySpecTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntitySpecTest.java 
b/core/src/test/java/org/apache/brooklyn/entity/core/EntitySpecTest.java
deleted file mode 100644
index 7c127ab..0000000
--- a/core/src/test/java/org/apache/brooklyn/entity/core/EntitySpecTest.java
+++ /dev/null
@@ -1,214 +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.entity.core;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.policy.Policy;
-import org.apache.brooklyn.api.policy.PolicySpec;
-import org.apache.brooklyn.api.sensor.Enricher;
-import org.apache.brooklyn.api.sensor.EnricherSpec;
-import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.core.config.BasicConfigKey;
-import org.apache.brooklyn.core.config.ConfigKeys;
-import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.core.test.entity.TestEntityImpl;
-import org.apache.brooklyn.core.test.entity.TestEntityNoEnrichersImpl;
-import org.apache.brooklyn.entity.group.BasicGroup;
-import org.apache.brooklyn.policy.core.AbstractPolicy;
-import org.apache.brooklyn.sensor.enricher.AbstractEnricher;
-import org.apache.brooklyn.test.Asserts;
-import org.apache.brooklyn.util.core.flags.SetFromFlag;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.location.core.SimulatedLocation;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-
-public class EntitySpecTest extends BrooklynAppUnitTestSupport {
-
-    private SimulatedLocation loc;
-    private TestEntity entity;
-    
-    @BeforeMethod(alwaysRun=true)
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        loc = new SimulatedLocation();
-    }
-    
-    @Test
-    public void testSetsConfig() throws Exception {
-        // TODO Test other permutations
-        entity = app.createAndManageChild(EntitySpec.create(TestEntity.class)
-                .configure(TestEntity.CONF_NAME, "myname"));
-        assertEquals(entity.getConfig(TestEntity.CONF_NAME), "myname");
-    }
-
-    @Test
-    public void testAddsChildren() throws Exception {
-        entity = app.createAndManageChild( EntitySpec.create(TestEntity.class)
-            .displayName("child")
-            .child(EntitySpec.create(TestEntity.class)
-                .displayName("grandchild")) );
-        
-        Entity child = Iterables.getOnlyElement(app.getChildren());
-        assertEquals(child, entity);
-        assertEquals(child.getDisplayName(), "child");
-        Entity grandchild = Iterables.getOnlyElement(child.getChildren());
-        assertEquals(grandchild.getDisplayName(), "grandchild");
-    }
-    
-
-    @Test
-    public void testAddsPolicySpec() throws Exception {
-        entity = app.createAndManageChild(EntitySpec.create(TestEntity.class)
-                .policy(PolicySpec.create(MyPolicy.class)
-                        .displayName("mypolicyname")
-                        .configure(MyPolicy.CONF1, "myconf1val")
-                        .configure("myfield", "myfieldval")));
-        
-        Policy policy = Iterables.getOnlyElement(entity.getPolicies());
-        assertTrue(policy instanceof MyPolicy, "policy="+policy);
-        assertEquals(policy.getDisplayName(), "mypolicyname");
-        assertEquals(policy.getConfig(MyPolicy.CONF1), "myconf1val");
-    }
-    
-    @Test
-    public void testAddsPolicy() throws Exception {
-        MyPolicy policy = new MyPolicy();
-        entity = app.createAndManageChild(EntitySpec.create(TestEntity.class)
-                .policy(policy));
-        
-        assertEquals(Iterables.getOnlyElement(entity.getPolicies()), policy);
-    }
-    
-    @Test
-    public void testAddsEnricherSpec() throws Exception {
-        entity = app.createAndManageChild(EntitySpec.create(TestEntity.class, 
TestEntityNoEnrichersImpl.class)
-                .enricher(EnricherSpec.create(MyEnricher.class)
-                        .displayName("myenrichername")
-                        .configure(MyEnricher.CONF1, "myconf1val")
-                        .configure("myfield", "myfieldval")));
-        
-        Enricher enricher = Iterables.getOnlyElement(entity.getEnrichers());
-        assertTrue(enricher instanceof MyEnricher, "enricher="+enricher);
-        assertEquals(enricher.getDisplayName(), "myenrichername");
-        assertEquals(enricher.getConfig(MyEnricher.CONF1), "myconf1val");
-    }
-    
-    @Test
-    public void testAddsEnricher() throws Exception {
-        MyEnricher enricher = new MyEnricher();
-        entity = app.createAndManageChild(EntitySpec.create(TestEntity.class, 
TestEntityNoEnrichersImpl.class)
-                .enricher(enricher));
-        
-        assertEquals(Iterables.getOnlyElement(entity.getEnrichers()), 
enricher);
-    }
-    
-    @Test
-    public void testAddsMembers() throws Exception {
-        entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-        BasicGroup group = 
app.createAndManageChild(EntitySpec.create(BasicGroup.class)
-                .member(entity));
-        
-        Asserts.assertEqualsIgnoringOrder(group.getMembers(), 
ImmutableSet.of(entity));
-        Asserts.assertEqualsIgnoringOrder(entity.getGroups(), 
ImmutableSet.of(group));
-    }
-    
-    @Test
-    public void testAddsGroups() throws Exception {
-        BasicGroup group = 
app.createAndManageChild(EntitySpec.create(BasicGroup.class));
-        entity = app.createAndManageChild(EntitySpec.create(TestEntity.class)
-                .group(group));
-        
-        Asserts.assertEqualsIgnoringOrder(group.getMembers(), 
ImmutableSet.of(entity));
-        Asserts.assertEqualsIgnoringOrder(entity.getGroups(), 
ImmutableSet.of(group));
-    }
-    
-    @Test
-    public void testCallsConfigureAfterConstruction() throws Exception {
-        AbstractEntityLegacyTest.MyEntity entity = 
app.createAndManageChild(EntitySpec.create(AbstractEntityLegacyTest.MyEntity.class));
-        
-        assertEquals(entity.getConfigureCount(), 1);
-        assertEquals(entity.getConfigureDuringConstructionCount(), 0);
-    }
-    
-    @Test
-    public void testDisplayNameUsesDefault() throws Exception {
-        TestEntity entity = app.addChild(EntitySpec.create(TestEntity.class));
-        
-        
assertTrue(entity.getDisplayName().startsWith("TestEntity:"+entity.getId().substring(0,4)),
 "displayName="+entity.getDisplayName());
-    }
-    
-    @Test
-    public void testDisplayNameUsesCustom() throws Exception {
-        TestEntity entity = 
app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("entityname"));
-        
-        assertEquals(entity.getDisplayName(), "entityname");
-    }
-
-    @Test
-    public void testDisplayNameUsesOverriddenDefault() throws Exception {
-        entity = app.createAndManageChild(EntitySpec.create(TestEntity.class)
-                .impl(TestEntityWithDefaultNameImpl.class)
-                .configure(TestEntityWithDefaultNameImpl.DEFAULT_NAME, 
"myOverriddenDefaultName"));
-        assertEquals(entity.getDisplayName(), "myOverriddenDefaultName");
-    }        
-
-    @Test
-    public void testDisplayNameUsesCustomWhenOverriddenDefault() throws 
Exception {
-        entity = app.createAndManageChild(EntitySpec.create(TestEntity.class)
-                .impl(TestEntityWithDefaultNameImpl.class)
-                .configure(TestEntityWithDefaultNameImpl.DEFAULT_NAME, 
"myOverriddenDefaultName")
-                .displayName("myEntityName"));
-        assertEquals(entity.getDisplayName(), "myEntityName");
-    }        
-
-    public static class TestEntityWithDefaultNameImpl extends TestEntityImpl {
-        public static final ConfigKey<String> DEFAULT_NAME = 
ConfigKeys.newStringConfigKey("defaultName");
-        
-        @Override
-        public void init() {
-            super.init();
-            if (getConfig(DEFAULT_NAME) != null) 
setDefaultDisplayName(getConfig(DEFAULT_NAME));
-        }
-    }
-    
-    public static class MyPolicy extends AbstractPolicy {
-        public static final BasicConfigKey<String> CONF1 = new 
BasicConfigKey<String>(String.class, "testpolicy.conf1", "my descr, conf1", 
"defaultval1");
-        public static final BasicConfigKey<Integer> CONF2 = new 
BasicConfigKey<Integer>(Integer.class, "testpolicy.conf2", "my descr, conf2", 
2);
-        
-        @SetFromFlag
-        public String myfield;
-    }
-    
-    public static class MyEnricher extends AbstractEnricher {
-        public static final BasicConfigKey<String> CONF1 = new 
BasicConfigKey<String>(String.class, "testenricher.conf1", "my descr, conf1", 
"defaultval1");
-        public static final BasicConfigKey<Integer> CONF2 = new 
BasicConfigKey<Integer>(Integer.class, "testenricher.conf2", "my descr, conf2", 
2);
-        
-        @SetFromFlag
-        public String myfield;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c27cf1d0/core/src/test/java/org/apache/brooklyn/entity/core/EntitySubscriptionTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntitySubscriptionTest.java
 
b/core/src/test/java/org/apache/brooklyn/entity/core/EntitySubscriptionTest.java
deleted file mode 100644
index f195276..0000000
--- 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntitySubscriptionTest.java
+++ /dev/null
@@ -1,242 +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.entity.core;
-
-import static org.testng.Assert.assertEquals;
-
-import org.apache.brooklyn.api.entity.EntityLocal;
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.mgmt.SubscriptionHandle;
-import org.apache.brooklyn.core.test.entity.TestApplication;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.entity.core.Entities;
-import org.apache.brooklyn.entity.group.BasicGroup;
-import org.apache.brooklyn.sensor.core.BasicSensorEvent;
-import org.apache.brooklyn.test.Asserts;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.location.core.SimulatedLocation;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-
-public class EntitySubscriptionTest {
-
-    // TODO Duplication between this and PolicySubscriptionTest
-    
-    private SimulatedLocation loc;
-    private TestApplication app;
-    private TestEntity entity;
-    private TestEntity observedEntity;
-    private BasicGroup observedGroup;
-    private TestEntity observedChildEntity;
-    private TestEntity observedMemberEntity;
-    private TestEntity otherEntity;
-    private RecordingSensorEventListener<Object> listener;
-    
-    @BeforeMethod(alwaysRun=true)
-    public void setUp() {
-        app = TestApplication.Factory.newManagedInstanceForTests();
-        loc = app.newSimulatedLocation();
-        entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
-        observedEntity = 
app.createAndManageChild(EntitySpec.create(TestEntity.class));
-        observedChildEntity = 
observedEntity.createAndManageChild(EntitySpec.create(TestEntity.class));
-
-        observedGroup = 
app.createAndManageChild(EntitySpec.create(BasicGroup.class));
-        observedMemberEntity = 
app.createAndManageChild(EntitySpec.create(TestEntity.class));
-        observedGroup.addMember(observedMemberEntity);
-        
-        otherEntity = 
app.createAndManageChild(EntitySpec.create(TestEntity.class));
-        
-        listener = new RecordingSensorEventListener<>();
-        
-        app.start(ImmutableList.of(loc));
-    }
-    
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() {
-        if (app != null) Entities.destroyAll(app.getManagementContext());
-    }
-    
-    @Test
-    public void testSubscriptionReceivesEvents() {
-        entity.subscribe(observedEntity, TestEntity.SEQUENCE, listener);
-        entity.subscribe(observedEntity, TestEntity.NAME, listener);
-        entity.subscribe(observedEntity, TestEntity.MY_NOTIF, listener);
-        
-        otherEntity.setAttribute(TestEntity.SEQUENCE, 123);
-        observedEntity.setAttribute(TestEntity.SEQUENCE, 123);
-        observedEntity.setAttribute(TestEntity.NAME, "myname");
-        observedEntity.emit(TestEntity.MY_NOTIF, 456);
-        
-        Asserts.succeedsEventually(new Runnable() {
-            @Override public void run() {
-                assertEquals(listener.getEvents(), ImmutableList.of(
-                        new BasicSensorEvent<Integer>(TestEntity.SEQUENCE, 
observedEntity, 123),
-                        new BasicSensorEvent<String>(TestEntity.NAME, 
observedEntity, "myname"),
-                        new BasicSensorEvent<Integer>(TestEntity.MY_NOTIF, 
observedEntity, 456)));
-            }});
-    }
-    
-    @Test
-    public void testSubscriptionToAllReceivesEvents() {
-        entity.subscribe(null, TestEntity.SEQUENCE, listener);
-        
-        observedEntity.setAttribute(TestEntity.SEQUENCE, 123);
-        otherEntity.setAttribute(TestEntity.SEQUENCE, 456);
-        
-        Asserts.succeedsEventually(new Runnable() {
-            @Override public void run() {
-                assertEquals(listener.getEvents(), ImmutableList.of(
-                        new BasicSensorEvent<Integer>(TestEntity.SEQUENCE, 
observedEntity, 123),
-                        new BasicSensorEvent<Integer>(TestEntity.SEQUENCE, 
otherEntity, 456)));
-            }});
-    }
-    
-    @Test
-    public void testSubscribeToChildrenReceivesEvents() {
-        entity.subscribeToChildren(observedEntity, TestEntity.SEQUENCE, 
listener);
-        
-        observedChildEntity.setAttribute(TestEntity.SEQUENCE, 123);
-        observedEntity.setAttribute(TestEntity.SEQUENCE, 456);
-        
-        Asserts.succeedsEventually(new Runnable() {
-            @Override public void run() {
-                assertEquals(listener.getEvents(), ImmutableList.of(
-                        new BasicSensorEvent<Integer>(TestEntity.SEQUENCE, 
observedChildEntity, 123)));
-            }});
-    }
-    
-    @Test
-    public void 
testSubscribeToChildrenReceivesEventsForDynamicallyAddedChildren() {
-        entity.subscribeToChildren(observedEntity, TestEntity.SEQUENCE, 
listener);
-        
-        final TestEntity observedChildEntity2 = 
observedEntity.createAndManageChild(EntitySpec.create(TestEntity.class));
-        observedChildEntity2.setAttribute(TestEntity.SEQUENCE, 123);
-        
-        Asserts.succeedsEventually(new Runnable() {
-            @Override public void run() {
-                assertEquals(listener.getEvents(), ImmutableList.of(
-                        new BasicSensorEvent<Integer>(TestEntity.SEQUENCE, 
observedChildEntity2, 123)));
-            }});
-    }
-    
-    @Test
-    public void testSubscribeToMembersReceivesEvents() {
-        entity.subscribeToMembers(observedGroup, TestEntity.SEQUENCE, 
listener);
-        
-        observedMemberEntity.setAttribute(TestEntity.SEQUENCE, 123);
-        ((EntityLocal)observedGroup).setAttribute(TestEntity.SEQUENCE, 456);
-        
-        Asserts.succeedsEventually(new Runnable() {
-            @Override public void run() {
-                assertEquals(listener.getEvents(), ImmutableList.of(
-                        new BasicSensorEvent<Integer>(TestEntity.SEQUENCE, 
observedMemberEntity, 123)));
-            }});
-    }
-    
-    @Test
-    public void 
testSubscribeToMembersReceivesEventsForDynamicallyAddedMembers() {
-        entity.subscribeToMembers(observedGroup, TestEntity.SEQUENCE, 
listener);
-        
-        final TestEntity observedMemberEntity2 = 
app.createAndManageChild(EntitySpec.create(TestEntity.class));
-        observedGroup.addMember(observedMemberEntity2);
-        observedMemberEntity2.setAttribute(TestEntity.SEQUENCE, 123);
-        
-        Asserts.succeedsEventually(new Runnable() {
-            @Override public void run() {
-                assertEquals(listener.getEvents(), ImmutableList.of(
-                        new BasicSensorEvent<Integer>(TestEntity.SEQUENCE, 
observedMemberEntity2, 123)));
-            }});
-    }
-    
-    @Test(groups="Integration")
-    public void 
testSubscribeToMembersIgnoresEventsForDynamicallyRemovedMembers() {
-        entity.subscribeToMembers(observedGroup, TestEntity.SEQUENCE, 
listener);
-        
-        observedGroup.removeMember(observedMemberEntity);
-        
-        observedMemberEntity.setAttribute(TestEntity.SEQUENCE, 123);
-        
-        Asserts.succeedsEventually(new Runnable() {
-            @Override public void run() {
-                assertEquals(listener.getEvents(), ImmutableList.of());
-            }});
-    }
-    
-    @Test
-    public void testUnsubscribeRemovesAllSubscriptionsForThatEntity() {
-        entity.subscribe(observedEntity, TestEntity.SEQUENCE, listener);
-        entity.subscribe(observedEntity, TestEntity.NAME, listener);
-        entity.subscribe(observedEntity, TestEntity.MY_NOTIF, listener);
-        entity.subscribe(otherEntity, TestEntity.SEQUENCE, listener);
-        entity.unsubscribe(observedEntity);
-        
-        observedEntity.setAttribute(TestEntity.SEQUENCE, 123);
-        observedEntity.setAttribute(TestEntity.NAME, "myname");
-        observedEntity.emit(TestEntity.MY_NOTIF, 123);
-        otherEntity.setAttribute(TestEntity.SEQUENCE, 456);
-        
-        Asserts.succeedsEventually(new Runnable() {
-            @Override public void run() {
-                assertEquals(listener.getEvents(), ImmutableList.of(
-                        new BasicSensorEvent<Integer>(TestEntity.SEQUENCE, 
otherEntity, 456)));
-            }});
-    }
-    
-    @Test
-    public void testUnsubscribeUsingHandleStopsEvents() {
-        SubscriptionHandle handle1 = entity.subscribe(observedEntity, 
TestEntity.SEQUENCE, listener);
-        SubscriptionHandle handle2 = entity.subscribe(observedEntity, 
TestEntity.NAME, listener);
-        SubscriptionHandle handle3 = entity.subscribe(otherEntity, 
TestEntity.SEQUENCE, listener);
-        
-        entity.unsubscribe(observedEntity, handle2);
-        
-        observedEntity.setAttribute(TestEntity.SEQUENCE, 123);
-        observedEntity.setAttribute(TestEntity.NAME, "myname");
-        otherEntity.setAttribute(TestEntity.SEQUENCE, 456);
-        
-        Asserts.succeedsEventually(new Runnable() {
-            @Override public void run() {
-                assertEquals(listener.getEvents(), ImmutableList.of(
-                        new BasicSensorEvent<Integer>(TestEntity.SEQUENCE, 
observedEntity, 123),
-                        new BasicSensorEvent<Integer>(TestEntity.SEQUENCE, 
otherEntity, 456)));
-            }});
-    }
-    
-    @Test
-    public void testSubscriptionReceivesEventsInOrder() {
-        final int NUM_EVENTS = 100;
-        entity.subscribe(observedEntity, TestEntity.MY_NOTIF, listener);
-
-        for (int i = 0; i < NUM_EVENTS; i++) {
-            observedEntity.emit(TestEntity.MY_NOTIF, i);
-        }
-        
-        Asserts.succeedsEventually(new Runnable() {
-            @Override public void run() {
-                assertEquals(Iterables.size(listener.getEvents()), NUM_EVENTS);
-                for (int i = 0; i < NUM_EVENTS; i++) {
-                    assertEquals(Iterables.get(listener.getEvents(), 
i).getValue(), i);
-                }
-            }});
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c27cf1d0/core/src/test/java/org/apache/brooklyn/entity/core/EntitySuppliersTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntitySuppliersTest.java 
b/core/src/test/java/org/apache/brooklyn/entity/core/EntitySuppliersTest.java
deleted file mode 100644
index f75686c..0000000
--- 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntitySuppliersTest.java
+++ /dev/null
@@ -1,70 +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.entity.core;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.fail;
-
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.location.MachineProvisioningLocation;
-import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.entity.core.EntitySuppliers;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
-
-import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-
-public class EntitySuppliersTest extends BrooklynAppUnitTestSupport {
-
-    private TestEntity entity;
-    private Location loc;
-    private SshMachineLocation machine;
-    
-    @BeforeMethod(alwaysRun=true)
-    @SuppressWarnings("unchecked")
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        entity = 
app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("mydisplayname"));
-        loc = 
app.getManagementContext().getLocationRegistry().resolve("localhost");
-        machine = 
((MachineProvisioningLocation<SshMachineLocation>)loc).obtain(ImmutableMap.of());
-    }
-
-    @Test
-    public void testUniqueSshMachineLocation() throws Exception {
-        entity.addLocations(ImmutableList.of(machine));
-        assertEquals(EntitySuppliers.uniqueSshMachineLocation(entity).get(), 
machine);
-    }
-    
-    @Test
-    public void testUniqueSshMachineLocationWhenNoLocation() throws Exception {
-        Supplier<SshMachineLocation> supplier = 
EntitySuppliers.uniqueSshMachineLocation(entity);
-        try {
-            supplier.get();
-            fail();
-        } catch (IllegalStateException e) {
-            // expected: success
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c27cf1d0/core/src/test/java/org/apache/brooklyn/entity/core/EntityTypeTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/entity/core/EntityTypeTest.java 
b/core/src/test/java/org/apache/brooklyn/entity/core/EntityTypeTest.java
deleted file mode 100644
index 26789b2..0000000
--- a/core/src/test/java/org/apache/brooklyn/entity/core/EntityTypeTest.java
+++ /dev/null
@@ -1,284 +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.entity.core;
-
-import static org.apache.brooklyn.entity.core.AbstractEntity.CHILD_ADDED;
-import static org.apache.brooklyn.entity.core.AbstractEntity.CHILD_REMOVED;
-import static org.apache.brooklyn.entity.core.AbstractEntity.EFFECTOR_ADDED;
-import static org.apache.brooklyn.entity.core.AbstractEntity.EFFECTOR_CHANGED;
-import static org.apache.brooklyn.entity.core.AbstractEntity.EFFECTOR_REMOVED;
-import static org.apache.brooklyn.entity.core.AbstractEntity.GROUP_ADDED;
-import static org.apache.brooklyn.entity.core.AbstractEntity.GROUP_REMOVED;
-import static org.apache.brooklyn.entity.core.AbstractEntity.LOCATION_ADDED;
-import static org.apache.brooklyn.entity.core.AbstractEntity.LOCATION_REMOVED;
-import static org.apache.brooklyn.entity.core.AbstractEntity.POLICY_ADDED;
-import static org.apache.brooklyn.entity.core.AbstractEntity.POLICY_REMOVED;
-import static org.apache.brooklyn.entity.core.AbstractEntity.SENSOR_ADDED;
-import static org.apache.brooklyn.entity.core.AbstractEntity.SENSOR_REMOVED;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import java.util.List;
-import java.util.Set;
-
-import javax.annotation.Nullable;
-
-import org.apache.brooklyn.api.effector.Effector;
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.sensor.AttributeSensor;
-import org.apache.brooklyn.api.sensor.Sensor;
-import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.core.test.entity.TestEntityImpl;
-import org.apache.brooklyn.effector.core.MethodEffector;
-import org.apache.brooklyn.entity.core.AbstractEntity;
-import org.apache.brooklyn.entity.core.Entities;
-import org.apache.brooklyn.entity.core.EntityInternal;
-import org.apache.brooklyn.sensor.core.BasicSensorEvent;
-import org.apache.brooklyn.sensor.core.Sensors;
-import org.apache.brooklyn.test.Asserts;
-import org.apache.brooklyn.util.collections.MutableSet;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-
-public class EntityTypeTest extends BrooklynAppUnitTestSupport {
-    private static final AttributeSensor<String> TEST_SENSOR = 
Sensors.newStringSensor("test.sensor");
-    private EntityInternal entity;
-    private RecordingSensorEventListener<Sensor> listener;
-
-    public final static Set<Sensor<?>> DEFAULT_SENSORS = 
ImmutableSet.<Sensor<?>>of(
-            SENSOR_ADDED, SENSOR_REMOVED,
-            EFFECTOR_ADDED, EFFECTOR_REMOVED, EFFECTOR_CHANGED,
-            POLICY_ADDED, POLICY_REMOVED,
-            CHILD_ADDED, CHILD_REMOVED,
-            LOCATION_ADDED, LOCATION_REMOVED,
-            GROUP_ADDED, GROUP_REMOVED); 
-
-    public static class EmptyEntityForTesting extends AbstractEntity {}
-    
-    @BeforeMethod(alwaysRun=true)
-    @Override
-    public void setUp() throws Exception{
-        super.setUp();
-        entity = (EntityInternal) 
app.createAndManageChild(EntitySpec.create(Entity.class, 
EmptyEntityForTesting.class));
-        listener = new RecordingSensorEventListener<>();
-        app.getSubscriptionContext().subscribe(entity, SENSOR_ADDED, listener);
-        app.getSubscriptionContext().subscribe(entity, SENSOR_REMOVED, 
listener);
-    }
-
-    @Test
-    public void testGetName() throws Exception {
-        TestEntity entity2 = 
app.createAndManageChild(EntitySpec.create(TestEntity.class));
-        assertEquals(entity2.getEntityType().getName(), 
TestEntity.class.getCanonicalName());
-    }
-    
-    @Test
-    public void testGetSimpleName() throws Exception {
-        TestEntity entity2 = 
app.createAndManageChild(EntitySpec.create(TestEntity.class));
-        assertEquals(entity2.getEntityType().getSimpleName(), 
TestEntity.class.getSimpleName());
-    }
-
-    @Test
-    public void testGetEffectors() throws Exception {
-        TestEntity entity2 = 
app.createAndManageChild(EntitySpec.create(TestEntity.class));
-        Set<Effector<?>> effectors = entity2.getEntityType().getEffectors();
-        
-        class MatchesNamePredicate implements Predicate<Effector<?>> {
-            private final String name;
-            public MatchesNamePredicate(String name) {
-                this.name = name;
-            }
-            @Override public boolean apply(@Nullable Effector<?> input) {
-                return name.equals(input.getName());
-            }
-        };
-        
-        assertNotNull(Iterables.find(effectors, new 
MatchesNamePredicate("myEffector")), null);
-        assertNotNull(Iterables.find(effectors, new 
MatchesNamePredicate("identityEffector")), null);
-    }
-
-    @Test
-    public void testGetEffector() throws Exception {
-        TestEntity entity2 = 
app.createAndManageChild(EntitySpec.create(TestEntity.class));
-        Effector<?> effector = 
entity2.getEntityType().getEffectorByName("myEffector").get();
-        Effector<?> effector2 = 
entity2.getEntityType().getEffectorByName("identityEffector").get();
-        assertEquals(effector.getName(), "myEffector");
-        assertTrue(effector.getParameters().isEmpty(), "myEffector should have 
had no params, but had "+effector.getParameters());
-        assertEquals(effector2.getName(), "identityEffector");
-        assertEquals(effector2.getParameters().size(), 1, "identityEffector 
should have had one param, but had "+effector2.getParameters());
-        
assertEquals(Iterables.getOnlyElement(effector2.getParameters()).getName(), 
"arg", "identityEffector should have had 'arg' param, but had 
"+effector2.getParameters());
-    }
-
-    @Test
-    public void testGetEffectorDeprecated() throws Exception {
-        TestEntity entity2 = 
app.createAndManageChild(EntitySpec.create(TestEntity.class));
-        Effector<?> effector = 
entity2.getEntityType().getEffectorByName("myEffector").get();
-        Effector<?> effector2 = 
entity2.getEntityType().getEffectorByName("identityEffector").get();
-        assertEquals(effector.getName(), "myEffector");
-        assertEquals(effector2.getName(), "identityEffector");
-    }
-
-    @Test
-    public void testCustomSimpleName() throws Exception {
-        class CustomTypeNamedEntity extends AbstractEntity {
-            private final String typeName;
-            @SuppressWarnings("deprecation")
-            CustomTypeNamedEntity(Entity parent, String typeName) {
-                super(parent);
-                this.typeName = typeName;
-            }
-            @Override protected String getEntityTypeName() {
-                return typeName;
-            }
-        }
-        
-        CustomTypeNamedEntity entity2 = new CustomTypeNamedEntity(app, 
"a.b.with space");
-        Entities.manage(entity2);
-        assertEquals(entity2.getEntityType().getSimpleName(), "with_space");
-        
-        CustomTypeNamedEntity entity3 = new CustomTypeNamedEntity(app, 
"a.b.with$dollar");
-        Entities.manage(entity3);
-        assertEquals(entity3.getEntityType().getSimpleName(), "with_dollar");
-        
-        CustomTypeNamedEntity entity4 = new CustomTypeNamedEntity(app, 
"a.nothingafterdot.");
-        Entities.manage(entity4);
-        assertEquals(entity4.getEntityType().getSimpleName(), 
"a.nothingafterdot.");
-    }
-    
-    @Test
-    public void testGetSensors() throws Exception{
-        assertEquals(entity.getEntityType().getSensors(), DEFAULT_SENSORS);
-    }
-
-    protected <T> void assertEventuallyListenerEventsEqual(final List<T> 
sensorEvents) {
-        final RecordingSensorEventListener listener = this.listener;
-        Asserts.succeedsEventually(new Runnable() {
-            @Override
-            public void run() {
-                assertEquals(listener.getEvents(), sensorEvents);
-            }
-        });
-    }
-    
-    @Test
-    public void testAddSensors() throws Exception{
-        entity.getMutableEntityType().addSensor(TEST_SENSOR);
-        assertEquals(entity.getEntityType().getSensors(), 
-                
ImmutableSet.builder().addAll(DEFAULT_SENSORS).add(TEST_SENSOR).build());
-        
-        
assertEventuallyListenerEventsEqual(ImmutableList.of(BasicSensorEvent.ofUnchecked(SENSOR_ADDED,
 entity, TEST_SENSOR)));
-    }
-
-    @Test
-    public void testAddSensorValueThroughEntity() throws Exception{
-        entity.setAttribute(TEST_SENSOR, "abc");
-        assertEquals(entity.getEntityType().getSensors(), 
-                
ImmutableSet.builder().addAll(DEFAULT_SENSORS).add(TEST_SENSOR).build());
-        
-        
assertEventuallyListenerEventsEqual(ImmutableList.of(BasicSensorEvent.ofUnchecked(SENSOR_ADDED,
 entity, TEST_SENSOR)));
-    }
-
-    @Test
-    public void testRemoveSensorThroughEntity() throws Exception{
-        entity.setAttribute(TEST_SENSOR, "abc");
-        entity.removeAttribute(TEST_SENSOR);
-        assertFalse(entity.getEntityType().getSensors().contains(TEST_SENSOR), 
"sensors="+entity.getEntityType().getSensors()); 
-        assertEquals(entity.getAttribute(TEST_SENSOR), null);
-        
-        
assertEventuallyListenerEventsEqual(ImmutableList.of(BasicSensorEvent.ofUnchecked(SENSOR_ADDED,
 entity, TEST_SENSOR),
-            BasicSensorEvent.ofUnchecked(SENSOR_REMOVED, entity, 
TEST_SENSOR)));
-    }
-
-    @Test
-    public void testRemoveSensor() throws Exception {
-        entity.getMutableEntityType().removeSensor(SENSOR_ADDED);
-        assertEquals(entity.getEntityType().getSensors(), 
-                
MutableSet.builder().addAll(DEFAULT_SENSORS).remove(SENSOR_ADDED).build().asUnmodifiable());
-        
-        assertEventuallyListenerEventsEqual(ImmutableList.of(
-            BasicSensorEvent.ofUnchecked(SENSOR_REMOVED, entity, 
SENSOR_ADDED)));
-    }
-
-    @Test
-    public void testRemoveSensors() throws Exception {
-        entity.getMutableEntityType().removeSensor(SENSOR_ADDED.getName());
-        entity.getMutableEntityType().removeSensor(POLICY_ADDED.getName());
-        assertEquals(entity.getEntityType().getSensors(), 
-                
MutableSet.builder().addAll(DEFAULT_SENSORS).remove(SENSOR_ADDED).remove(POLICY_ADDED).build().asUnmodifiable());
-
-        final RecordingSensorEventListener<?> listener = this.listener;
-        Asserts.succeedsEventually(new Runnable() {
-            @Override
-            public void run() {
-                assertEquals(Iterables.size(listener.getEvents()), 2);
-            }
-        });
-        assertEventuallyListenerEventsEqual(ImmutableList.of(
-            BasicSensorEvent.ofUnchecked(SENSOR_REMOVED, entity, SENSOR_ADDED),
-            BasicSensorEvent.ofUnchecked(SENSOR_REMOVED, entity, 
POLICY_ADDED)));
-    }
-
-    @Test
-    public void testGetSensor() throws Exception {
-        Sensor<?> sensor = 
entity.getEntityType().getSensor("entity.sensor.added");
-        assertEquals(sensor.getDescription(), "Sensor dynamically added to 
entity");
-        assertEquals(sensor.getName(), "entity.sensor.added");
-        
-        assertNull(entity.getEntityType().getSensor("does.not.exist"));
-    }
-
-    @Test
-    public void testHasSensor() throws Exception {
-        assertTrue(entity.getEntityType().hasSensor("entity.sensor.added"));
-        assertFalse(entity.getEntityType().hasSensor("does.not.exist"));
-    }
-    
-    // Previously EntityDynamicType's constructor when passed `entity` during 
the entity's construction (!)
-    // would pass this to EntityDynamicType.findEffectors, which would do 
log.warn in some cirumstances,
-    // with entity.toString as part of the log message. But if the toString 
called getConfig() this would 
-    // fail because we were still in the middle of constructing the 
entity.entityType!
-    @Test
-    public void testEntityDynamicTypeDoesNotCallToStringDuringConstruction() 
throws Exception {
-        entity = 
app.createAndManageChild(EntitySpec.create(TestEntity.class).impl(EntityWithToStringAccessingConfig.class));
-        entity.toString();
-    }
-    
-    public static class EntityWithToStringAccessingConfig extends 
TestEntityImpl {
-        
-        // to cause warning to be logged: non-static constant
-        public final MethodEffector<Void> NON_STATIC_EFFECTOR = new 
MethodEffector<Void>(EntityWithToStringAccessingConfig.class, 
"nonStaticEffector");
-
-        public void nonStaticEffector() {
-        }
-        
-        @Override
-        public String toString() {
-            return super.toString() + getConfig(CONF_NAME);
-        }
-    }
-}

Reply via email to