Delete deprecated ApplicationBuilder

Required updating lots of tests, often to extend
BrooklynAppLiveTestSupport or BrooklynAppUnitTestSupport.


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/52f9ebdd
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/52f9ebdd
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/52f9ebdd

Branch: refs/heads/master
Commit: 52f9ebdd391f0fa876e47f87b397159d1a48b0f8
Parents: 3730890
Author: Aled Sage <[email protected]>
Authored: Mon May 15 20:46:01 2017 +0100
Committer: Aled Sage <[email protected]>
Committed: Mon Jun 19 16:07:36 2017 +0100

----------------------------------------------------------------------
 .../camp/brooklyn/catalog/CatalogScanTest.java  |   9 +-
 .../catalog/internal/CatalogClasspathDo.java    |   7 +-
 .../core/entity/factory/ApplicationBuilder.java | 250 -------------------
 .../core/catalog/internal/MyCatalogItems.java   |   7 -
 .../brooklyn/core/entity/EntityNameTest.java    |  10 +-
 .../downloads/BasicDownloadsRegistryTest.java   |  39 +--
 .../DownloadProducerFromLocalRepoTest.java      |  26 +-
 .../DownloadProducerFromPropertiesTest.java     |  33 +--
 .../ApplicationBuilderOverridingTest.java       | 249 ------------------
 .../core/entity/proxying/EntityManagerTest.java |   3 +-
 .../core/entity/proxying/EntityProxyTest.java   |  20 --
 .../location/cloud/CloudMachineNamerTest.java   |  31 ++-
 .../location/cloud/CustomMachineNamerTest.java  |  20 +-
 .../AcmeEntitlementManagerTestFixture.java      |   6 +-
 .../core/mgmt/entitlement/EntitlementsTest.java |  31 +--
 .../mgmt/entitlement/EntityEntitlementTest.java |   5 +-
 .../HighAvailabilityManagerSplitBrainTest.java  |  11 +-
 .../core/mgmt/internal/AccessManagerTest.java   |  62 ++---
 .../BrooklynMementoPersisterTestFixture.java    |   3 +-
 .../core/server/entity/BrooklynMetricsTest.java |  28 +--
 .../core/test/entity/TestApplication.java       |   3 +-
 .../EntityCleanupLongevityTestFixture.java      |   5 +-
 .../brooklyn/entity/stock/DataEntityTest.java   |  21 +-
 ...stMachineProvisioningLocationRebindTest.java |  32 +--
 .../location/multi/MultiLocationRebindTest.java |  50 +---
 .../brooklyn/launcher/common/BasicLauncher.java |  36 +--
 .../BrooklynEntityMirrorIntegrationTest.java    |   3 +-
 .../brooklynnode/BrooklynNodeRestTest.java      |   3 +-
 .../brooklyn/launcher/BrooklynLauncherTest.java |  13 -
 .../ha/ConnectionFailureDetectorTest.java       |  24 +-
 ...ServiceFailureDetectorStabilizationTest.java |  23 +-
 .../policy/ha/ServiceFailureDetectorTest.java   |  23 +-
 .../brooklyn/policy/ha/ServiceReplacerTest.java |  29 +--
 .../BalanceableWorkerPoolTest.java              |  27 +-
 .../ItemsInContainersGroupTest.java             |  17 +-
 .../rest/util/BrooklynRestResourceUtils.java    |  23 +-
 .../rest/resources/ApplicationResourceTest.java |  25 --
 .../rest/testing/mocks/RestMockAppBuilder.java  |  41 ---
 .../main/java/org/apache/brooklyn/cli/Main.java |  66 +++--
 .../java/org/apache/brooklyn/cli/CliTest.java   |  53 ++--
 .../entity/AbstractGoogleComputeLiveTest.java   |  45 ++--
 .../entity/AbstractSoftlayerLiveTest.java       |  42 +---
 .../brooklyn/entity/chef/ChefConfigsTest.java   |  16 +-
 .../chef/ChefServerTasksIntegrationTest.java    |  25 +-
 .../software/base/AbstractDockerLiveTest.java   |  46 ++--
 ...twareProcessOpenIptablesStreamsLiveTest.java |  13 +-
 ...SoftwareProcessSshDriverIntegrationTest.java |  31 +--
 ...laWindowsProcessWinrmExitStatusLiveTest.java |   3 +-
 ...nillaWindowsProcessWinrmStreamsLiveTest.java |   3 +-
 .../SoftwareProcessDriverCopyResourcesTest.java |  37 ++-
 50 files changed, 299 insertions(+), 1329 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogScanTest.java
----------------------------------------------------------------------
diff --git 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogScanTest.java
 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogScanTest.java
index f7dd66b..ff7a027 100644
--- 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogScanTest.java
+++ 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogScanTest.java
@@ -55,7 +55,7 @@ public class CatalogScanTest {
 
     private static final Logger log = 
LoggerFactory.getLogger(CatalogScanTest.class);
 
-    private BrooklynCatalog defaultCatalog, annotsCatalog, fullCatalog;
+    private BrooklynCatalog defaultCatalog, annotsCatalog;
     
     private List<LocalManagementContext> mgmts = 
Lists.newCopyOnWriteArrayList();
     private List<BrooklynCampPlatformLauncherNoServer> launchers = 
Lists.newCopyOnWriteArrayList();
@@ -156,13 +156,6 @@ public class CatalogScanTest {
     }
     
     @Test
-    public void testAnnotationLoadsSomeAppBuilders() {
-        loadAnnotationsOnlyCatalog();
-        Iterable<CatalogItem<Object,Object>> silly1 = 
annotsCatalog.getCatalogItems(CatalogPredicates.displayName(Predicates.equalTo("MySillyAppBuilderTemplate")));
-        Assert.assertEquals(Iterables.getOnlyElement(silly1).getDescription(), 
"Some silly app builder test");
-    }
-    
-    @Test
     public void testAnnotationIsDefault() {
         doTestAnnotationIsDefault(false);
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogClasspathDo.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogClasspathDo.java
 
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogClasspathDo.java
index 9cdc705..bd0c3c7 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogClasspathDo.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogClasspathDo.java
@@ -36,7 +36,6 @@ import org.apache.brooklyn.api.entity.ImplementedBy;
 import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.api.policy.Policy;
 import org.apache.brooklyn.api.sensor.Enricher;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.mgmt.BrooklynTags;
 import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
 import org.apache.brooklyn.util.core.ResourceUtils;
@@ -212,10 +211,9 @@ public class CatalogClasspathDo {
                                 // not sure why we have to look for sub-types 
of Application, 
                                 // they should be picked up as sub-types of 
Entity, but in maven builds (only!)
                                 // they are not -- i presume a bug in scanner
-                                scanner.getSubTypesOf(Application.class), 
-                                
scanner.getSubTypesOf(ApplicationBuilder.class)));
+                                scanner.getSubTypesOf(Application.class)));
                 for (Class<?> c: entities) {
-                    if (Application.class.isAssignableFrom(c) || 
ApplicationBuilder.class.isAssignableFrom(c)) {
+                    if (Application.class.isAssignableFrom(c)) {
                         addCatalogEntry(new CatalogTemplateItemDto(), c);
                         countApps++;
                     } else {
@@ -296,7 +294,6 @@ public class CatalogClasspathDo {
     @Deprecated
     public CatalogItem<?,?> addCatalogEntry(Class<?> c) {
         if (Application.class.isAssignableFrom(c)) return addCatalogEntry(new 
CatalogTemplateItemDto(), c);
-        if (ApplicationBuilder.class.isAssignableFrom(c)) return 
addCatalogEntry(new CatalogTemplateItemDto(), c);
         if (Entity.class.isAssignableFrom(c)) return addCatalogEntry(new 
CatalogEntityItemDto(), c);
         if (Policy.class.isAssignableFrom(c)) return addCatalogEntry(new 
CatalogPolicyItemDto(), c);
         if (Enricher.class.isAssignableFrom(c)) return addCatalogEntry(new 
CatalogEnricherItemDto(), c);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/main/java/org/apache/brooklyn/core/entity/factory/ApplicationBuilder.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/entity/factory/ApplicationBuilder.java
 
b/core/src/main/java/org/apache/brooklyn/core/entity/factory/ApplicationBuilder.java
deleted file mode 100644
index 281be2b..0000000
--- 
a/core/src/main/java/org/apache/brooklyn/core/entity/factory/ApplicationBuilder.java
+++ /dev/null
@@ -1,250 +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.core.entity.factory;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.brooklyn.api.entity.Entity;
-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.core.entity.Entities;
-import org.apache.brooklyn.core.entity.StartableApplication;
-import org.apache.brooklyn.entity.stock.BasicApplication;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.annotations.Beta;
-
-/**
- * Experimental mechanism for defining/building applications. In future 
releases, this
- * API will change. Its concepts will most likely be merged with a TOSCA 
implementation
- * and with {@link EntitySpec}.
- *
- * For building an application. Users can sub-class and override doBuild(), 
putting the logic for  
- * creating and wiring together entities in there.
- * 
- * The builder is mutable; a given instance should be used to build only a 
single application.
- * Once {@link #manage()} has been called, the application will be built and 
no additional configuration
- * should be performed through this builder.  
- * 
- * Example (simplified) code for sub-classing is:
- * <pre>
- * {@code
- *   app = new ApplicationBuilder() {
- *       //@Override
- *       public void doBuild() {
- *           MySqlNode db = addChild(EntitySpec.create(MySqlNode.class)));
- *           JBoss7Server as = addChild(EntitySpec.create(JBoss7Server.class)
- *                   .configure(HTTP_PORT, "8080+")
- *                   .configure(javaSysProp("brooklyn.example.db.url"), 
attributeWhenReady(db, MySqlNode.MYSQL_URL));
- *       }
- *   }.manage();
- * }
- * </pre>
- * 
- * @author aled
- * 
- * @deprecated since 0.9.0; use {@link EntitySpec} and {@link 
EntityManager#createEntity(EntitySpec)}, having 
- *             added the children to the spec etc.
- */
-@Deprecated
-@Beta
-public abstract class ApplicationBuilder {
-
-    @SuppressWarnings("unused")
-    private static final Logger LOG = 
LoggerFactory.getLogger(ApplicationBuilder.class);
-
-    @SuppressWarnings("unchecked")
-    @Beta
-    /** @deprecated since 0.7.0 the management context should normally be 
passed in;
-     * for TestApplication also see 
TestApplication.Factory.newManagedInstanceForTests() */ 
-    @Deprecated
-    public static <T extends StartableApplication> T newManagedApp(Class<T> 
type) {
-        if (type.isInterface()) {
-            return newManagedApp(EntitySpec.create(type));
-        } else {
-            return (T) 
newManagedApp(EntitySpec.create(StartableApplication.class, type));
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    private static <T extends StartableApplication> T 
newManagedApp(EntitySpec<T> spec) {
-        return (T) new ApplicationBuilder(spec) {
-            @Override protected void doBuild() {
-            }
-        }.manage();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Beta
-    public static <T extends StartableApplication> T newManagedApp(Class<T> 
type, ManagementContext managementContext) {
-        if (type.isInterface()) {
-            return newManagedApp(EntitySpec.create(type), managementContext);
-        } else {
-            return (T) 
newManagedApp(EntitySpec.create(StartableApplication.class, type), 
managementContext);
-        }
-    }
-
-    /** @deprecated class can be removed; users of this convenience method can 
now simply do mgmt.getEntityManager().createEntity(spec) */ 
-    @Deprecated
-    @SuppressWarnings("unchecked")
-    @Beta
-    public static <T extends StartableApplication> T 
newManagedApp(EntitySpec<T> spec, ManagementContext managementContext) {
-        return (T) new ApplicationBuilder(spec) {
-            @Override protected void doBuild() {
-            }
-        }.manage(managementContext);
-    }
-
-    protected volatile boolean managed = false;
-    protected final AtomicBoolean inManage = new AtomicBoolean(false);
-    private EntitySpec<? extends StartableApplication> appSpec;
-    private ManagementContext managementContext;
-    private StartableApplication app;
-    
-    public ApplicationBuilder() {
-        this.appSpec = EntitySpec.create(BasicApplication.class);
-    }
-
-    public ApplicationBuilder(EntitySpec<? extends StartableApplication> 
appSpec) {
-        this.appSpec = EntitySpec.create(appSpec);
-    }
-
-    public final ApplicationBuilder appDisplayName(String val) {
-        checkPreManage();
-        appSpec.displayName(val);
-        return this;
-    }
-    
-    protected final <T extends Entity> T createEntity(EntitySpec<T> spec) {
-        checkDuringManage();
-        EntityManager entityManager = managementContext.getEntityManager();
-        return entityManager.createEntity(spec);
-    }
-
-    /**
-     * Adds the given entity as a child of the application being built.
-     * To be called during {@link #doBuild()}.
-     */
-    protected final <T extends Entity> T addChild(T entity) {
-        checkDuringManage();
-        return app.addChild(entity);
-    }
-
-    /**
-     * Returns the type of the application being built.
-     */
-    public final Class<? extends StartableApplication> getType() {
-        return appSpec.getType();
-    }
-    
-    /**
-     * Configures the application instance.
-     */
-    public final ApplicationBuilder configure(Map<?,?> config) {
-        checkPreManage();
-        appSpec.configure(config);
-        return this;
-    }
-    
-    /**
-     * Adds the given entity as a child of the application being built.
-     */
-    protected final <T extends Entity> T addChild(EntitySpec<T> spec) {
-        checkDuringManage();
-        return addChild(createEntity(spec));
-    }
-    
-    protected final <T extends Entity> T addChild(Map<?,?> config, Class<T> 
type) {
-        checkDuringManage();
-        EntitySpec<T> spec = EntitySpec.create(type).configure(config);
-        return addChild(createEntity(spec));
-    }
-    
-    protected final ManagementContext getManagementContext() {
-        return checkNotNull(managementContext, "must only be called after 
manage()");
-    }
-
-    protected final StartableApplication getApp() {
-        return checkNotNull(app, "must only be called after manage()");
-    }
-
-    /**
-     * For overriding, to create and wire together entities.
-     */
-    protected abstract void doBuild();
-
-    /**
-     * Creates a new {@link ManagementContext}, and then builds and manages 
the application.
-     * 
-     * @see #manage(ManagementContext)
-     */
-    public final StartableApplication manage() {
-        return manage(Entities.newManagementContext());
-    }
-    
-    /**
-     * Builds and manages the application, calling the user's {@link 
#doBuild()} method.
-     * 
-     * @throws IllegalStateException If already managed, or if called during 
{@link #doBuild()}, or if 
-     *                               multiple concurrent calls
-     */
-    public final StartableApplication manage(ManagementContext 
managementContext) {
-        if (!inManage.compareAndSet(false, true)) {
-            throw new IllegalStateException("Concurrent and re-entrant calls 
to manage() forbidden on "+this);
-        }
-        try {
-            checkNotManaged();
-            this.managementContext = managementContext;
-            this.app = 
managementContext.getEntityManager().createEntity(appSpec);
-            doBuild();
-            // not needed with 0.9.0 (TODO - remove when confirmed)
-//            Entities.startManagement(app, managementContext);
-            managed = true;
-            return app;
-        } finally {
-            inManage.set(false);
-        }
-    }
-    
-    protected void checkPreManage() {
-        if (inManage.get()) {
-            throw new IllegalStateException("Builder being managed; cannot 
perform operation during call to manage(), or in doBuild()");
-        }
-        if (managed) {
-            throw new IllegalStateException("Builder already managed; cannot 
perform operation after call to manage()");
-        }
-    }
-    
-    protected void checkNotManaged() {
-        if (managed) {
-            throw new IllegalStateException("Builder already managed; cannot 
perform operation after call to manage()");
-        }
-    }
-    
-    protected void checkDuringManage() {
-        if (!inManage.get() || app == null) {
-            throw new IllegalStateException("Operation only permitted during 
manage, e.g. called from doBuild() of "+this);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/catalog/internal/MyCatalogItems.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/catalog/internal/MyCatalogItems.java
 
b/core/src/test/java/org/apache/brooklyn/core/catalog/internal/MyCatalogItems.java
index 9bd108b..b940928 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/catalog/internal/MyCatalogItems.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/catalog/internal/MyCatalogItems.java
@@ -20,17 +20,10 @@ package org.apache.brooklyn.core.catalog.internal;
 
 import org.apache.brooklyn.api.catalog.Catalog;
 import org.apache.brooklyn.core.entity.AbstractApplication;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 
 public class MyCatalogItems {
 
     @Catalog(description="Some silly app test")
     public static class MySillyAppTemplate extends AbstractApplication {
     }
-    
-    @Catalog(description="Some silly app builder test")
-    public static class MySillyAppBuilderTemplate extends ApplicationBuilder {
-        @Override protected void doBuild() {
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/entity/EntityNameTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/entity/EntityNameTest.java 
b/core/src/test/java/org/apache/brooklyn/core/entity/EntityNameTest.java
index ca94807..e5ca898 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/EntityNameTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/EntityNameTest.java
@@ -20,11 +20,9 @@ package org.apache.brooklyn.core.entity;
 
 import static org.testng.Assert.assertEquals;
 
-import com.google.common.collect.Iterables;
 import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.entity.EntitySpec;
 import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
 import org.apache.brooklyn.core.test.entity.TestApplication;
 import org.apache.brooklyn.core.test.entity.TestEntity;
@@ -32,6 +30,8 @@ import org.apache.brooklyn.entity.stock.BasicApplication;
 import org.apache.brooklyn.util.core.task.DeferredSupplier;
 import org.testng.annotations.Test;
 
+import com.google.common.collect.Iterables;
+
 public class EntityNameTest extends BrooklynAppUnitTestSupport {
 
     @Test
@@ -78,7 +78,7 @@ public class EntityNameTest extends 
BrooklynAppUnitTestSupport {
     public void testAppUsesDefaultDisplayName() {
         EntitySpec<TestApplication> appSpec = 
EntitySpec.create(TestApplication.class)
                 .configure(AbstractApplication.DEFAULT_DISPLAY_NAME, 
"myDefaultName");
-        TestApplication app2 = ApplicationBuilder.newManagedApp(appSpec, mgmt);
+        TestApplication app2 = 
mgmt.getEntityManager().createEntity(EntitySpec.create(appSpec));
 
         assertEquals(app2.getDisplayName(), "myDefaultName");
     }
@@ -87,7 +87,7 @@ public class EntityNameTest extends 
BrooklynAppUnitTestSupport {
     public void testAppUsesEntityName() {
         EntitySpec<BasicApplication> appSpec = 
EntitySpec.create(BasicApplication.class)
                 .configure(AbstractApplication.DEFAULT_DISPLAY_NAME, 
"myDefaultName").child(EntitySpec.create(TestApplication.class));
-        BasicApplication app2 = ApplicationBuilder.newManagedApp(appSpec, 
mgmt);
+        BasicApplication app2 = 
mgmt.getEntityManager().createEntity(EntitySpec.create(appSpec));
 
         assertEquals(app2.getDisplayName(), "myDefaultName");
         Entity childEntity = Iterables.getFirst(app2.getChildren(), null);
@@ -99,7 +99,7 @@ public class EntityNameTest extends 
BrooklynAppUnitTestSupport {
         EntitySpec<TestApplication> appSpec = 
EntitySpec.create(TestApplication.class)
                 .displayName("myName")
                 .configure(AbstractApplication.DEFAULT_DISPLAY_NAME, 
"myDefaultName");
-        TestApplication app2 = ApplicationBuilder.newManagedApp(appSpec, mgmt);
+        TestApplication app2 = 
mgmt.getEntityManager().createEntity(EntitySpec.create(appSpec));
         
         assertEquals(app2.getDisplayName(), "myName");
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/entity/drivers/downloads/BasicDownloadsRegistryTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/entity/drivers/downloads/BasicDownloadsRegistryTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/entity/drivers/downloads/BasicDownloadsRegistryTest.java
index f2bf364..48f95b4 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/entity/drivers/downloads/BasicDownloadsRegistryTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/entity/drivers/downloads/BasicDownloadsRegistryTest.java
@@ -26,45 +26,30 @@ import 
org.apache.brooklyn.api.entity.drivers.downloads.DownloadResolver;
 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.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.internal.BrooklynProperties;
-import org.apache.brooklyn.core.location.SimulatedLocation;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.core.test.entity.TestApplication;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
 import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
-public class BasicDownloadsRegistryTest {
+public class BasicDownloadsRegistryTest extends BrooklynAppUnitTestSupport {
 
-    private BrooklynProperties brooklynProperties;
-    private LocalManagementContext managementContext;
     private Location loc;
-    private TestApplication app;
     private TestEntity entity;
     private MyEntityDriver driver;
 
     @BeforeMethod(alwaysRun=true)
+    @Override
     public void setUp() throws Exception {
-        brooklynProperties = BrooklynProperties.Factory.newEmpty();
-        managementContext = new LocalManagementContext(brooklynProperties);
-        loc = new SimulatedLocation();
-        app = ApplicationBuilder.newManagedApp(TestApplication.class, 
managementContext);
+        super.setUp();
+        loc = app.newSimulatedLocation();
         entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
         driver = new MyEntityDriver(entity, loc);
-        
     }
     
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-        if (app != null) Entities.destroyAll(app.getManagementContext());
-    }
-
     @Test
     public void testUsesDownloadUrlAttribute() throws Exception {
         entity.config().set(BrooklynConfigKeys.SUGGESTED_VERSION, "myversion");
@@ -86,7 +71,7 @@ public class BasicDownloadsRegistryTest {
         String expectedLocalRepo = 
String.format("file://$HOME/.brooklyn/repository/%s/%s/%s", "TestEntity", 
"myentityversion", expectedFilename);
         String expectedDownloadUrl = String.format("acme.com/%s", 
expectedFilename);
         String expectedCloudsoftRepo = 
String.format("http://downloads.cloudsoftcorp.com/brooklyn/repository/%s/%s/%s";,
 "TestEntity", "myentityversion", expectedFilename);
-        DownloadResolver actual = 
managementContext.getEntityDownloadsManager().newDownloader(driver, "myaddon", 
ImmutableMap.of("addonversion", "myaddonversion"));
+        DownloadResolver actual = 
mgmt.getEntityDownloadsManager().newDownloader(driver, "myaddon", 
ImmutableMap.of("addonversion", "myaddonversion"));
         assertEquals(actual.getTargets(), ImmutableList.of(expectedLocalRepo, 
expectedDownloadUrl, expectedCloudsoftRepo), "actual="+actual);
     }
     
@@ -94,7 +79,7 @@ public class BasicDownloadsRegistryTest {
     public void 
testDefaultResolverSubstitutesDownloadUrlFailsIfVersionMissing() throws 
Exception {
         entity.sensors().set(Attributes.DOWNLOAD_URL, "version=${version}");
         try {
-            DownloadResolver result = 
managementContext.getEntityDownloadsManager().newDownloader(driver);
+            DownloadResolver result = 
mgmt.getEntityDownloadsManager().newDownloader(driver);
             fail("Should have failed, but got "+result);
         } catch (IllegalArgumentException e) {
             if (!e.toString().contains("${version}")) throw e;
@@ -103,7 +88,7 @@ public class BasicDownloadsRegistryTest {
     
     @Test
     public void 
testReturnsLocalRepoThenOverrideThenAttributeValThenCloudsoftUrlThenFallback() 
throws Exception {
-        BrooklynProperties managementProperties = 
managementContext.getBrooklynProperties();
+        BrooklynProperties managementProperties = mgmt.getBrooklynProperties();
         managementProperties.put("brooklyn.downloads.all.url", 
"http://fromprops/${version}.allprimary";);
         managementProperties.put("brooklyn.downloads.all.fallbackurl", 
"http://fromfallback/${version}.allfallback";);
         entity.sensors().set(Attributes.DOWNLOAD_URL, 
"http://fromattrib/${version}.default";);
@@ -126,7 +111,7 @@ public class BasicDownloadsRegistryTest {
         entity.config().set(BrooklynConfigKeys.SUGGESTED_VERSION, "myversion");
         entity.sensors().set(Attributes.DOWNLOAD_URL, 
"http://myhost.com/myfile-${version}.tar.gz";);
 
-        DownloadResolver actual = 
managementContext.getEntityDownloadsManager().newDownloader(driver);
+        DownloadResolver actual = 
mgmt.getEntityDownloadsManager().newDownloader(driver);
         assertEquals(actual.getFilename(), "myfile-myversion.tar.gz");
     }
     
@@ -135,7 +120,7 @@ public class BasicDownloadsRegistryTest {
         entity.config().set(BrooklynConfigKeys.SUGGESTED_VERSION, "myversion");
         entity.sensors().set(Attributes.DOWNLOAD_ADDON_URLS, 
ImmutableMap.of("myaddon", "http://myhost.com/myfile-${addonversion}.tar.gz";));
 
-        DownloadResolver actual = 
managementContext.getEntityDownloadsManager().newDownloader(driver, "myaddon", 
ImmutableMap.of("addonversion", "myaddonversion"));
+        DownloadResolver actual = 
mgmt.getEntityDownloadsManager().newDownloader(driver, "myaddon", 
ImmutableMap.of("addonversion", "myaddonversion"));
         assertEquals(actual.getFilename(), "myfile-myaddonversion.tar.gz");
     }
     
@@ -144,12 +129,12 @@ public class BasicDownloadsRegistryTest {
         entity.config().set(BrooklynConfigKeys.SUGGESTED_VERSION, "myversion");
         entity.sensors().set(Attributes.DOWNLOAD_URL, 
"http://myhost.com/download/";);
 
-        DownloadResolver actual = 
managementContext.getEntityDownloadsManager().newDownloader(driver, 
ImmutableMap.of("filename", "overridden.filename.tar.gz"));
+        DownloadResolver actual = 
mgmt.getEntityDownloadsManager().newDownloader(driver, 
ImmutableMap.of("filename", "overridden.filename.tar.gz"));
         assertEquals(actual.getFilename(), "overridden.filename.tar.gz");
     }
     
     private void assertResolves(String... expected) {
-        DownloadResolver actual = 
managementContext.getEntityDownloadsManager().newDownloader(driver);
+        DownloadResolver actual = 
mgmt.getEntityDownloadsManager().newDownloader(driver);
         assertEquals(actual.getTargets(), ImmutableList.copyOf(expected), 
"actual="+actual);
     }
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/entity/drivers/downloads/DownloadProducerFromLocalRepoTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/entity/drivers/downloads/DownloadProducerFromLocalRepoTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/entity/drivers/downloads/DownloadProducerFromLocalRepoTest.java
index ac3e955..77e0206 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/entity/drivers/downloads/DownloadProducerFromLocalRepoTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/entity/drivers/downloads/DownloadProducerFromLocalRepoTest.java
@@ -27,40 +27,31 @@ import 
org.apache.brooklyn.api.entity.drivers.downloads.DownloadResolverManager.
 import 
org.apache.brooklyn.api.entity.drivers.downloads.DownloadResolverManager.DownloadTargets;
 import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.core.entity.BrooklynConfigKeys;
-import org.apache.brooklyn.core.entity.Entities;
-import 
org.apache.brooklyn.core.entity.drivers.downloads.BasicDownloadRequirement;
-import 
org.apache.brooklyn.core.entity.drivers.downloads.DownloadProducerFromLocalRepo;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.internal.BrooklynProperties;
-import org.apache.brooklyn.core.location.SimulatedLocation;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.core.test.entity.TestApplication;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
 import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
-public class DownloadProducerFromLocalRepoTest {
+public class DownloadProducerFromLocalRepoTest extends 
BrooklynAppUnitTestSupport {
 
     private BrooklynProperties brooklynProperties;
-    private LocalManagementContext managementContext;
     private Location loc;
-    private TestApplication app;
     private TestEntity entity;
     private MyEntityDriver driver;
     private String entitySimpleType;
     private DownloadProducerFromLocalRepo resolver;
 
     @BeforeMethod(alwaysRun=true)
+    @Override
     public void setUp() throws Exception {
-        brooklynProperties = BrooklynProperties.Factory.newEmpty();
-        managementContext = new LocalManagementContext(brooklynProperties);
+        super.setUp();
+        brooklynProperties = mgmt.getBrooklynProperties();
         
-        loc = new SimulatedLocation();
-        app = ApplicationBuilder.newManagedApp(TestApplication.class, 
managementContext);
+        loc = app.newSimulatedLocation();
         entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
         driver = new MyEntityDriver(entity, loc);
         entitySimpleType = TestEntity.class.getSimpleName();
@@ -68,11 +59,6 @@ public class DownloadProducerFromLocalRepoTest {
         resolver = new DownloadProducerFromLocalRepo(brooklynProperties);
     }
     
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-        if (app != null) Entities.destroyAll(app.getManagementContext());
-    }
-
     @Test
     public void testReturnsEmptyWhenDisabled() throws Exception {
         
brooklynProperties.put(DownloadProducerFromLocalRepo.LOCAL_REPO_ENABLED, false);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/entity/drivers/downloads/DownloadProducerFromPropertiesTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/entity/drivers/downloads/DownloadProducerFromPropertiesTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/entity/drivers/downloads/DownloadProducerFromPropertiesTest.java
index b0be66d..3c645b9 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/entity/drivers/downloads/DownloadProducerFromPropertiesTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/entity/drivers/downloads/DownloadProducerFromPropertiesTest.java
@@ -27,52 +27,43 @@ import 
org.apache.brooklyn.api.entity.drivers.downloads.DownloadResolverManager.
 import 
org.apache.brooklyn.api.entity.drivers.downloads.DownloadResolverManager.DownloadTargets;
 import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.core.entity.BrooklynConfigKeys;
-import org.apache.brooklyn.core.entity.Entities;
-import 
org.apache.brooklyn.core.entity.drivers.downloads.BasicDownloadRequirement;
-import 
org.apache.brooklyn.core.entity.drivers.downloads.DownloadProducerFromLocalRepo;
-import 
org.apache.brooklyn.core.entity.drivers.downloads.DownloadProducerFromProperties;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.internal.BrooklynProperties;
-import org.apache.brooklyn.core.location.SimulatedLocation;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.core.test.entity.TestApplication;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
 import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
-public class DownloadProducerFromPropertiesTest {
+public class DownloadProducerFromPropertiesTest extends 
BrooklynAppUnitTestSupport {
 
     private BrooklynProperties brooklynProperties;
-    private LocalManagementContext managementContext;
     private Location loc;
-    private TestApplication app;
     private TestEntity entity;
     private MyEntityDriver driver;
     private DownloadProducerFromProperties resolver;
 
     @BeforeMethod(alwaysRun=true)
+    @Override
     public void setUp() throws Exception {
-        brooklynProperties = BrooklynProperties.Factory.newEmpty();
-        
brooklynProperties.put(DownloadProducerFromLocalRepo.LOCAL_REPO_ENABLED, false);
-        managementContext = new LocalManagementContext(brooklynProperties);
+        super.setUp();
         
-        loc = new SimulatedLocation();
-        app = ApplicationBuilder.newManagedApp(TestApplication.class, 
managementContext);
+        brooklynProperties = mgmt.getBrooklynProperties();
+        loc = app.newSimulatedLocation();
         entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
         driver = new MyEntityDriver(entity, loc);
         
         resolver = new DownloadProducerFromProperties(brooklynProperties);
     }
     
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-        if (app != null) Entities.destroyAll(app.getManagementContext());
+    @Override
+    protected BrooklynProperties getBrooklynProperties() {
+        BrooklynProperties result = BrooklynProperties.Factory.newEmpty();
+        result.put(DownloadProducerFromLocalRepo.LOCAL_REPO_ENABLED, false);
+        return result;
     }
-
+    
     @Test
     public void testReturnsEmptyWhenEmpty() throws Exception {
         assertResolves(ImmutableList.<String>of(), ImmutableList.<String>of());

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/entity/proxying/ApplicationBuilderOverridingTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/entity/proxying/ApplicationBuilderOverridingTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/entity/proxying/ApplicationBuilderOverridingTest.java
deleted file mode 100644
index c00d33b..0000000
--- 
a/core/src/test/java/org/apache/brooklyn/core/entity/proxying/ApplicationBuilderOverridingTest.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.brooklyn.core.entity.proxying;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
-
-import java.util.concurrent.Callable;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.apache.brooklyn.api.entity.Application;
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.core.entity.AbstractEntity;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.EntityInternal;
-import org.apache.brooklyn.core.entity.StartableApplication;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
-import org.apache.brooklyn.core.objs.proxy.EntityProxy;
-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.stock.BasicApplication;
-import org.apache.brooklyn.util.exceptions.Exceptions;
-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.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-
-public class ApplicationBuilderOverridingTest {
-
-    private static final Logger LOG = 
LoggerFactory.getLogger(ApplicationBuilderOverridingTest.class);
-    
-    private static final long TIMEOUT_MS = 10*1000;
-    
-    private ManagementContext spareManagementContext;
-    private Application app;
-    private ExecutorService executor;
-    
-    @BeforeMethod(alwaysRun=true)
-    public void setUp() throws Exception {
-        spareManagementContext = LocalManagementContextForTests.newInstance();
-        executor = Executors.newCachedThreadPool();
-    }
-    
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() {
-        if (app != null) Entities.destroyAll(app.getManagementContext());
-        app = null;
-        if (spareManagementContext != null) 
Entities.destroyAll(spareManagementContext);
-        spareManagementContext = null;
-    }
-
-    @Test
-    public void testUsesDefaultBasicApplicationClass() {
-        app = new ApplicationBuilder() {
-            @Override public void doBuild() {}
-        }.manage();
-        
-        assertEquals(app.getEntityType().getName(), 
BasicApplication.class.getCanonicalName());
-        assertIsProxy(app);
-    }
-    
-    @Test
-    public void testUsesSuppliedApplicationClass() {
-        app = new ApplicationBuilder(EntitySpec.create(TestApplication.class)) 
{
-            @Override public void doBuild() {}
-        }.manage();
-        
-        assertEquals(app.getEntityType().getName(), 
TestApplication.class.getName());
-    }
-
-    @Test
-    public void testUsesSuppliedManagementContext() {
-        app = new ApplicationBuilder() {
-            @Override public void doBuild() {}
-        }.manage(spareManagementContext);
-        
-        assertEquals(app.getManagementContext(), spareManagementContext);
-    }
-
-    @Test
-    public void testCreatesChildEntity() {
-        final AtomicReference<TestEntity> expectedChild = new 
AtomicReference<TestEntity>();
-        app = new ApplicationBuilder() {
-            @Override public void doBuild() {
-                
expectedChild.set(addChild(EntitySpec.create(TestEntity.class)));
-            }
-        }.manage();
-        
-        assertIsProxy(expectedChild.get());
-        assertEquals(ImmutableSet.copyOf(app.getChildren()), 
ImmutableSet.of(expectedChild.get()));
-        assertEquals(expectedChild.get().getParent(), app);
-    }
-
-    @Test(enabled=false)
-    public void testAppHierarchyIsManaged() {
-        app = new ApplicationBuilder() {
-            @Override public void doBuild() {
-                Entity entity = addChild(EntitySpec.create(TestEntity.class));
-            }
-        }.manage();
-        
-        assertIsManaged(app);
-        assertIsManaged(Iterables.get(app.getChildren(), 0));
-    }
-
-    // TODO Can't assert the child added in doBuild is unmanaged
-    @Test(enabled=false)
-    public void testEntityAddedInDoBuildIsUnmanagedUntilAppIsManaged() {
-        app = new ApplicationBuilder() {
-            @Override public void doBuild() {
-                Entity entity = addChild(EntitySpec.create(TestEntity.class));
-                
assertFalse(getManagementContext().getEntityManager().isManaged(entity));
-            }
-        }.manage();
-        
-        assertIsManaged(app);
-        assertIsManaged(Iterables.get(app.getChildren(), 0));
-    }
-
-    @Test(expectedExceptions=IllegalStateException.class)
-    public void testRentrantCallToManageForbidden() {
-        ManagementContext secondManagementContext = 
LocalManagementContextForTests.newInstance();
-        try {
-            app = new ApplicationBuilder() {
-                @Override public void doBuild() {
-                    manage(spareManagementContext);
-                }
-            }.manage(secondManagementContext);
-        } finally {
-            Entities.destroyAll(secondManagementContext);
-        }
-    }
-
-    @Test(expectedExceptions=IllegalStateException.class)
-    public void testMultipleCallsToManageForbidden() {
-        ApplicationBuilder appBuilder = new ApplicationBuilder() {
-            @Override public void doBuild() {
-            }
-        };
-        app = appBuilder.manage();
-        
-        appBuilder.manage(spareManagementContext);
-    }
-
-    @Test(expectedExceptions=IllegalStateException.class)
-    public void testCallToConfigureAfterManageForbidden() {
-        ApplicationBuilder appBuilder = new ApplicationBuilder() {
-            @Override public void doBuild() {
-            }
-        };
-        app = appBuilder.manage();
-        appBuilder.configure(ImmutableMap.of());
-    }
-
-    @Test(expectedExceptions=IllegalStateException.class)
-    public void testCallToSetDisplayNameAfterManageForbidden() {
-        ApplicationBuilder appBuilder = new ApplicationBuilder() {
-            @Override public void doBuild() {
-            }
-        };
-        app = appBuilder.manage(spareManagementContext);
-        appBuilder.appDisplayName("myname");
-    }
-
-    @Test
-    public void testConcurrentCallToManageForbidden() throws Exception {
-        final AtomicReference<Throwable> err = new 
AtomicReference<Throwable>();
-        final CountDownLatch inbuildLatch = new CountDownLatch(1);
-        final CountDownLatch continueLatch = new CountDownLatch(1);
-        final ApplicationBuilder builder = new ApplicationBuilder() {
-            @Override public void doBuild() {
-                inbuildLatch.countDown();
-                try {
-                    assertTrue(continueLatch.await(TIMEOUT_MS, 
TimeUnit.MILLISECONDS));
-                } catch (InterruptedException e) {
-                    throw Exceptions.propagate(e);
-                }
-            }
-        };
-        Future<StartableApplication> future = executor.submit(new 
Callable<StartableApplication>() {
-            @Override
-            public StartableApplication call() {
-                try {
-                    return builder.manage();
-                } catch (Throwable t) {
-                    LOG.error("Problem in simple ApplicationBuilder", t);
-                    err.set(t);
-                    inbuildLatch.countDown();
-                    throw Exceptions.propagate(t);
-                }
-            }
-        });
-        
-        inbuildLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS);
-        if (err.get() != null) {
-            throw Exceptions.propagate(err.get());
-        }
-        
-        try {
-            app = builder.manage(spareManagementContext);
-            fail();
-        } catch (IllegalStateException e) {
-            // expected
-        }
-        
-        continueLatch.countDown();
-        app = future.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
-    }
-
-    private void assertIsProxy(Entity e) {
-        assertFalse(e instanceof AbstractEntity, 
"e="+e+";e.class="+e.getClass());
-        assertTrue(e instanceof EntityProxy, "e="+e+";e.class="+e.getClass());
-    }
-    
-    private void assertIsManaged(Entity e) {
-        assertTrue(((EntityInternal)e).getManagementSupport().isDeployed(), 
"e="+e);
-    }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/entity/proxying/EntityManagerTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/entity/proxying/EntityManagerTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/entity/proxying/EntityManagerTest.java
index 903a15a..976beda 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/entity/proxying/EntityManagerTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/entity/proxying/EntityManagerTest.java
@@ -33,7 +33,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import org.apache.brooklyn.api.entity.EntitySpec;
 import org.apache.brooklyn.api.mgmt.EntityManager;
 import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.mgmt.internal.LocalEntityManager;
 import org.apache.brooklyn.core.objs.proxy.EntityProxy;
 import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
@@ -105,7 +104,7 @@ public class EntityManagerTest extends 
BrooklynAppUnitTestSupport {
 
     @Test
     public void testGetEntities() {
-        TestApplication app2 = 
ApplicationBuilder.newManagedApp(TestApplication.class, mgmt);
+        TestApplication app2 = 
mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class));
         TestEntity entity = 
app.createAndManageChild(EntitySpec.create(TestEntity.class));
         TestEntity child = 
entity.createAndManageChild(EntitySpec.create(TestEntity.class));
         

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/entity/proxying/EntityProxyTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/entity/proxying/EntityProxyTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/entity/proxying/EntityProxyTest.java
index 48e2460..babb4a9 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/entity/proxying/EntityProxyTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/entity/proxying/EntityProxyTest.java
@@ -31,9 +31,6 @@ import org.apache.brooklyn.api.entity.EntitySpec;
 import org.apache.brooklyn.api.mgmt.EntityManager;
 import org.apache.brooklyn.api.mgmt.Task;
 import org.apache.brooklyn.core.entity.AbstractEntity;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.StartableApplication;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.mgmt.BrooklynTaskTags;
 import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
 import org.apache.brooklyn.core.objs.proxy.EntityProxy;
@@ -147,23 +144,6 @@ public class EntityProxyTest extends 
BrooklynAppUnitTestSupport {
         assertEquals(entity2.getConfig(TestEntity.CONF_NAME), "baz");
     }
 
-    @Test
-    public void testCreateInAppWithClassAndMap() {
-        StartableApplication app2 = null;
-        try {
-            ApplicationBuilder appB = new ApplicationBuilder() {
-                @Override
-                protected void doBuild() {
-                    addChild(MutableMap.of("confName", "faz"), 
TestEntity.class);
-                }
-            };
-            app2 = appB.manage();
-            
assertEquals(Iterables.getOnlyElement(app2.getChildren()).getConfig(TestEntity.CONF_NAME),
 "faz");
-        } finally {
-            if (app2 != null) Entities.destroyAll(app2.getManagementContext());
-        }
-    }
-
     private void assertIsProxy(Entity e) {
         assertFalse(e instanceof AbstractEntity, "e="+e+";e.class="+(e != null 
? e.getClass() : null));
         assertTrue(e instanceof EntityProxy, "e="+e+";e.class="+(e != null ? 
e.getClass() : null));

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/location/cloud/CloudMachineNamerTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/location/cloud/CloudMachineNamerTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/location/cloud/CloudMachineNamerTest.java
index 0759114..d6504a0 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/location/cloud/CloudMachineNamerTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/location/cloud/CloudMachineNamerTest.java
@@ -22,13 +22,10 @@ import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertTrue;
 
 import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
-import org.apache.brooklyn.core.location.cloud.CloudLocationConfig;
 import org.apache.brooklyn.core.location.cloud.names.AbstractCloudMachineNamer;
 import org.apache.brooklyn.core.location.cloud.names.BasicCloudMachineNamer;
 import org.apache.brooklyn.core.location.cloud.names.CloudMachineNamer;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
+import org.apache.brooklyn.core.test.BrooklynMgmtUnitTestSupport;
 import org.apache.brooklyn.core.test.entity.TestApplication;
 import org.apache.brooklyn.core.test.entity.TestEntity;
 import org.apache.brooklyn.util.core.config.ConfigBag;
@@ -36,22 +33,22 @@ import org.apache.brooklyn.util.text.Strings;
 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;
-public class CloudMachineNamerTest {
+
+public class CloudMachineNamerTest extends BrooklynMgmtUnitTestSupport {
 
     private static final Logger log = 
LoggerFactory.getLogger(CloudMachineNamerTest.class);
     
-    private TestApplication app;
-    
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-        if (app != null) Entities.destroyAll(app.getManagementContext());
+    @BeforeMethod(alwaysRun=true)
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
     }
 
     @Test
     public void testGenerateGroupIdWithEntity() {
-        app = 
ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class).displayName("TistApp"),
 LocalManagementContextForTests.newInstance());
+        TestApplication app = 
mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class).displayName("TistApp"));
         TestEntity child = 
app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("TestEnt"));
 
         ConfigBag cfg = new ConfigBag()
@@ -73,7 +70,7 @@ public class CloudMachineNamerTest {
     
     @Test
     public void testGenerateNewMachineName() {
-        app = 
ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class).displayName("TistApp"),
 LocalManagementContextForTests.newInstance());
+        TestApplication app = 
mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class).displayName("TistApp"));
         TestEntity child = 
app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("TestEnt"));
 
         ConfigBag cfg = new ConfigBag()
@@ -92,7 +89,7 @@ public class CloudMachineNamerTest {
     
     @Test
     public void testGenerateNewMachineUniqueNameFromGroupId() {
-        app = 
ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class).displayName("TistApp"),
 LocalManagementContextForTests.newInstance());
+        TestApplication app = 
mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class).displayName("TistApp"));
         TestEntity child = 
app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("TestEnt"));
 
         ConfigBag cfg = new ConfigBag()
@@ -107,7 +104,7 @@ public class CloudMachineNamerTest {
     
     @Test
     public void testLengthMaxPermittedForMachineName() {
-        app = 
ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class).displayName("TistApp"),
 LocalManagementContextForTests.newInstance());
+        TestApplication app = 
mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class).displayName("TistApp"));
         TestEntity child = 
app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("TestEnt"));
         
         ConfigBag cfg = new ConfigBag()
@@ -124,7 +121,7 @@ public class CloudMachineNamerTest {
     
     @Test
     public void testLengthReservedForNameInGroup() {
-        app = 
ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class).displayName("TistApp"),
 LocalManagementContextForTests.newInstance());
+        TestApplication app = 
mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class).displayName("TistApp"));
         TestEntity child = 
app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("TestEnt"));
         
         ConfigBag cfg = new ConfigBag()
@@ -142,7 +139,7 @@ public class CloudMachineNamerTest {
 
     @Test
     public void testSanitizesNewMachineName() {
-        app = 
ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class).displayName("T_%$()\r\n\t[]*.!App"),
 LocalManagementContextForTests.newInstance());
+        TestApplication app = 
mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class).displayName("T_%$()\r\n\t[]*.!App"));
         TestEntity child = 
app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("ent"));
 
         ConfigBag cfg = new ConfigBag()

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/location/cloud/CustomMachineNamerTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/location/cloud/CustomMachineNamerTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/location/cloud/CustomMachineNamerTest.java
index 7503ff2..b370dea 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/location/cloud/CustomMachineNamerTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/location/cloud/CustomMachineNamerTest.java
@@ -19,40 +19,30 @@
 package org.apache.brooklyn.core.location.cloud;
 
 import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
-import org.apache.brooklyn.core.location.cloud.CloudLocationConfig;
 import org.apache.brooklyn.core.location.cloud.names.CustomMachineNamer;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.core.test.entity.TestApplication;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
 import org.apache.brooklyn.core.test.entity.TestEntity;
 import org.apache.brooklyn.util.core.config.ConfigBag;
 import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableMap;
 
-public class CustomMachineNamerTest {
+public class CustomMachineNamerTest extends BrooklynAppUnitTestSupport {
     
-    private TestApplication app;
     private TestEntity child;
     private ConfigBag config;
     
     @BeforeMethod(alwaysRun=true)
-    public void setUp() {
-        app = 
ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class).displayName("TestApp"),
 LocalManagementContextForTests.newInstance());
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
         child = 
app.createAndManageChild(EntitySpec.create(TestEntity.class).displayName("TestEnt"));
         config = new ConfigBag()
             .configure(CloudLocationConfig.CALLER_CONTEXT, child);
     }
     
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-        if (app != null) Entities.destroyAll(app.getManagementContext());
-    }
-
     @Test
     public void testMachineNameNoConfig() {
         config.configure(CloudLocationConfig.CALLER_CONTEXT, child);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/mgmt/entitlement/AcmeEntitlementManagerTestFixture.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/entitlement/AcmeEntitlementManagerTestFixture.java
 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/entitlement/AcmeEntitlementManagerTestFixture.java
index 86dba94..cd596a5 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/entitlement/AcmeEntitlementManagerTestFixture.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/entitlement/AcmeEntitlementManagerTestFixture.java
@@ -26,11 +26,7 @@ import org.apache.brooklyn.api.entity.EntitySpec;
 import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.internal.BrooklynProperties;
-import org.apache.brooklyn.core.mgmt.entitlement.Entitlements;
-import org.apache.brooklyn.core.mgmt.entitlement.NotEntitledException;
-import org.apache.brooklyn.core.mgmt.entitlement.WebEntitlementContext;
 import org.apache.brooklyn.core.mgmt.entitlement.Entitlements.EntityAndItem;
 import 
org.apache.brooklyn.core.mgmt.entitlement.Entitlements.StringAndArgument;
 import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
@@ -52,7 +48,7 @@ public abstract class AcmeEntitlementManagerTestFixture {
     
     public void setup(ConfigBag cfg) {
         mgmt = new 
LocalManagementContextForTests(BrooklynProperties.Factory.newEmpty().addFrom(cfg));
-        app = 
ApplicationBuilder.newManagedApp(EntitySpec.create(BasicApplication.class), 
mgmt);
+        app = 
mgmt.getEntityManager().createEntity(EntitySpec.create(BasicApplication.class));
     }
 
     @BeforeMethod(alwaysRun=true)

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/mgmt/entitlement/EntitlementsTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/entitlement/EntitlementsTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/entitlement/EntitlementsTest.java
index a22d45c..736d0b2 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/entitlement/EntitlementsTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/entitlement/EntitlementsTest.java
@@ -21,41 +21,14 @@ package org.apache.brooklyn.core.mgmt.entitlement;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertTrue;
 
-import org.apache.brooklyn.api.entity.Application;
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.api.mgmt.entitlement.EntitlementManager;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
-import org.apache.brooklyn.core.internal.BrooklynProperties;
-import org.apache.brooklyn.core.mgmt.entitlement.Entitlements;
 import org.apache.brooklyn.core.mgmt.entitlement.Entitlements.EntityAndItem;
 import 
org.apache.brooklyn.core.mgmt.entitlement.Entitlements.StringAndArgument;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.entity.stock.BasicApplication;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
 import org.testng.annotations.Test;
 
 @Test
-public class EntitlementsTest {
-
-    private ManagementContext mgmt;
-    private Application app;
-
-    @BeforeMethod
-    public void setup() {
-        mgmt = new 
LocalManagementContextForTests(BrooklynProperties.Factory.newEmpty());
-        app = 
ApplicationBuilder.newManagedApp(EntitySpec.create(BasicApplication.class), 
mgmt);
-    }
-
-    @AfterMethod
-    public void tearDown() {
-        if (app != null) Entities.destroyAll(app.getManagementContext());
-        if (mgmt != null) Entities.destroyAll(mgmt);
-        app = null;
-        mgmt = null;
-    }
+public class EntitlementsTest extends BrooklynAppUnitTestSupport {
 
     // allowing
     public void testAllowingRoot() {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/mgmt/entitlement/EntityEntitlementTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/entitlement/EntityEntitlementTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/entitlement/EntityEntitlementTest.java
index 6a0a8d0..20dec4d 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/entitlement/EntityEntitlementTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/entitlement/EntityEntitlementTest.java
@@ -23,10 +23,7 @@ import org.apache.brooklyn.api.entity.EntitySpec;
 import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.internal.BrooklynProperties;
-import org.apache.brooklyn.core.mgmt.entitlement.Entitlements;
-import org.apache.brooklyn.core.mgmt.entitlement.NotEntitledException;
 import org.apache.brooklyn.core.mgmt.entitlement.Entitlements.EntityAndItem;
 import 
org.apache.brooklyn.core.mgmt.entitlement.Entitlements.StringAndArgument;
 import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
@@ -51,7 +48,7 @@ public class EntityEntitlementTest {
     
     public void setup(ConfigBag cfg) {
         mgmt = new 
LocalManagementContextForTests(BrooklynProperties.Factory.newEmpty().addFrom(cfg));
-        app = 
ApplicationBuilder.newManagedApp(EntitySpec.create(BasicApplication.class), 
mgmt);
+        app = 
mgmt.getEntityManager().createEntity(EntitySpec.create(BasicApplication.class));
     }
     
     @AfterMethod(alwaysRun=true)

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerSplitBrainTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerSplitBrainTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerSplitBrainTest.java
index c3657c6..3c486f3 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerSplitBrainTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerSplitBrainTest.java
@@ -36,7 +36,6 @@ import 
org.apache.brooklyn.api.mgmt.ha.ManagementPlaneSyncRecord;
 import org.apache.brooklyn.api.mgmt.ha.ManagementPlaneSyncRecordPersister;
 import org.apache.brooklyn.core.BrooklynFeatureEnablement;
 import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import 
org.apache.brooklyn.core.mgmt.ha.TestEntityFailingRebind.RebindException;
 import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
 import 
org.apache.brooklyn.core.mgmt.persist.BrooklynMementoPersisterToObjectStore;
@@ -205,8 +204,8 @@ public class HighAvailabilityManagerSplitBrainTest {
         n2.ha.start(HighAvailabilityMode.AUTO);
         assertEquals(n1.ha.getNodeState(), ManagementNodeState.MASTER);
 
-        TestApplication app = ApplicationBuilder.newManagedApp(
-                
EntitySpec.create(TestApplication.class).impl(TestEntityFailingRebind.class), 
n1.mgmt);
+        TestApplication app = n1.mgmt.getEntityManager().createEntity(
+                
EntitySpec.create(TestApplication.class).impl(TestEntityFailingRebind.class));
         app.start(ImmutableList.<Location>of());
 
         n1.mgmt.getRebindManager().forcePersistNow(false, null);
@@ -254,8 +253,8 @@ public class HighAvailabilityManagerSplitBrainTest {
         n1.ha.start(HighAvailabilityMode.AUTO);
         n2.ha.start(HighAvailabilityMode.AUTO);
 
-        TestApplication app = ApplicationBuilder.newManagedApp(
-                
EntitySpec.create(TestApplication.class).impl(TestEntityFailingRebind.class), 
n1.mgmt);
+        TestApplication app = n1.mgmt.getEntityManager().createEntity(
+                
EntitySpec.create(TestApplication.class).impl(TestEntityFailingRebind.class));
         app.start(ImmutableList.<Location>of());
 
         n1.mgmt.getRebindManager().forcePersistNow(false, null);
@@ -323,7 +322,7 @@ public class HighAvailabilityManagerSplitBrainTest {
         assertEquals(n2.mgmt.getApplications().size(), 0);
 
         // create
-        TestApplication app = 
ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class), 
n1.mgmt);
+        TestApplication app = 
n1.mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class));
         app.start(ImmutableList.<Location>of());
         app.sensors().set(TestApplication.MY_ATTRIBUTE, "hello");
         

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/AccessManagerTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/AccessManagerTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/AccessManagerTest.java
index d3ade7b..a8de731 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/AccessManagerTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/AccessManagerTest.java
@@ -26,36 +26,16 @@ 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.LocationSpec;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.location.SimulatedLocation;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
 import org.apache.brooklyn.core.test.entity.TestApplication;
 import org.apache.brooklyn.core.test.entity.TestEntity;
 import org.apache.brooklyn.util.exceptions.Exceptions;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableSet;
 
-public class AccessManagerTest {
-
-    private LocalManagementContext managementContext;
-    private TestApplication app;
-    
-    @BeforeMethod(alwaysRun=true)
-    public void setUp() throws Exception {
-        managementContext = new LocalManagementContextForTests();
-        app = ApplicationBuilder.newManagedApp(TestApplication.class, 
managementContext);
-    }
-    
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-        if (managementContext != null) Entities.destroyAll(managementContext);
-        app = null;
-    }
+public class AccessManagerTest extends BrooklynAppUnitTestSupport {
 
     @Test
     public void testEntityManagementAllowed() throws Exception {
@@ -63,7 +43,7 @@ public class AccessManagerTest {
         TestEntity e1 = 
app.createAndManageChild(EntitySpec.create(TestEntity.class));
 
         // when forbidden, should give error trying to create+manage new entity
-        managementContext.getAccessManager().setEntityManagementAllowed(false);
+        mgmt.getAccessManager().setEntityManagementAllowed(false);
         try {
             app.createAndManageChild(EntitySpec.create(TestEntity.class));
             fail();
@@ -76,7 +56,7 @@ public class AccessManagerTest {
 
         // when forbidden, should refuse to create new app
         try {
-            ApplicationBuilder.newManagedApp(TestApplication.class, 
managementContext);
+            
mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class));
             fail();
         } catch (Exception e) {
             // expect it to be forbidden
@@ -86,24 +66,24 @@ public class AccessManagerTest {
         }
 
         // but when forbidden, still allowed to create locations
-        
managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
+        
mgmt.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
         
         // when re-enabled, can create entities again
-        managementContext.getAccessManager().setEntityManagementAllowed(true);
+        mgmt.getAccessManager().setEntityManagementAllowed(true);
         TestEntity e3 = 
app.createAndManageChild(EntitySpec.create(TestEntity.class));
         
-        
assertEquals(ImmutableSet.copyOf(managementContext.getEntityManager().getEntities()),
 ImmutableSet.of(app, e1, e3));
+        
assertEquals(ImmutableSet.copyOf(mgmt.getEntityManager().getEntities()), 
ImmutableSet.of(app, e1, e3));
     }
     
     @Test
     public void testLocationManagementAllowed() throws Exception {
         // default is allowed
-        Location loc1 = 
managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
+        Location loc1 = 
mgmt.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
 
         // when forbidden, should give error
-        
managementContext.getAccessManager().setLocationManagementAllowed(false);
+        mgmt.getAccessManager().setLocationManagementAllowed(false);
         try {
-            
managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
+            
mgmt.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
             fail();
         } catch (Exception e) {
             // expect it to be forbidden
@@ -113,31 +93,31 @@ public class AccessManagerTest {
         }
 
         // but when forbidden, still allowed to create entity
-        ApplicationBuilder.newManagedApp(TestApplication.class, 
managementContext);
+        
mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class));
         
         // when re-enabled, can create entities again
-        
managementContext.getAccessManager().setLocationManagementAllowed(true);
-        Location loc3 = 
managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
+        mgmt.getAccessManager().setLocationManagementAllowed(true);
+        Location loc3 = 
mgmt.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
         
-        
assertEquals(ImmutableSet.copyOf(managementContext.getLocationManager().getLocations()),
 ImmutableSet.of(loc1, loc3));
+        
assertEquals(ImmutableSet.copyOf(mgmt.getLocationManager().getLocations()), 
ImmutableSet.of(loc1, loc3));
     }
     
     @Test
     public void testLocationProvisioningAllowed() throws Exception {
-        SimulatedLocation loc = 
managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
+        SimulatedLocation loc = 
mgmt.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
         
         // default is allowed
-        
assertTrue(managementContext.getAccessController().canProvisionLocation(loc).isAllowed());
+        
assertTrue(mgmt.getAccessController().canProvisionLocation(loc).isAllowed());
 
         // when forbidden, should say so
-        
managementContext.getAccessManager().setLocationProvisioningAllowed(false);
-        
assertFalse(managementContext.getAccessController().canProvisionLocation(loc).isAllowed());
+        mgmt.getAccessManager().setLocationProvisioningAllowed(false);
+        
assertFalse(mgmt.getAccessController().canProvisionLocation(loc).isAllowed());
 
         // but when forbidden, still allowed to create locations
-        
managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
+        
mgmt.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
         
         // when re-enabled, can create entities again
-        
managementContext.getAccessManager().setLocationProvisioningAllowed(true);
-        
assertTrue(managementContext.getAccessController().canProvisionLocation(loc).isAllowed());
+        mgmt.getAccessManager().setLocationProvisioningAllowed(true);
+        
assertTrue(mgmt.getAccessController().canProvisionLocation(loc).isAllowed());
     }
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterTestFixture.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterTestFixture.java
 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterTestFixture.java
index 75dd95b..0aa3df6 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterTestFixture.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterTestFixture.java
@@ -37,7 +37,6 @@ 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.core.entity.Entities;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.mgmt.rebind.PersistenceExceptionHandlerImpl;
 import org.apache.brooklyn.core.mgmt.rebind.RebindContextImpl;
 import org.apache.brooklyn.core.mgmt.rebind.RebindTestUtils;
@@ -81,7 +80,7 @@ public abstract class BrooklynMementoPersisterTestFixture {
         }
         EntitySpec<TestApplication> appSpec = 
EntitySpec.create(TestApplication.class)
                 
.location(LocationSpec.create(SshMachineLocation.class).configure("address", 
"localhost"));
-        app = ApplicationBuilder.newManagedApp(appSpec, 
localManagementContext);
+        app = localManagementContext.getEntityManager().createEntity(appSpec);
         location = Iterables.getOnlyElement( app.getLocations() );
         entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
         enricher = 
app.enrichers().add(Enrichers.builder().propagatingAll().from(entity).build());

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/server/entity/BrooklynMetricsTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/server/entity/BrooklynMetricsTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/server/entity/BrooklynMetricsTest.java
index 6717868..e1dc654 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/server/entity/BrooklynMetricsTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/server/entity/BrooklynMetricsTest.java
@@ -25,11 +25,8 @@ 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.SensorEventListener;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.location.SimulatedLocation;
-import org.apache.brooklyn.core.server.entity.BrooklynMetrics;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
 import org.apache.brooklyn.core.test.entity.TestApplication;
 import org.apache.brooklyn.core.test.entity.TestApplicationNoEnrichersImpl;
 import org.apache.brooklyn.core.test.entity.TestEntity;
@@ -37,15 +34,13 @@ import 
org.apache.brooklyn.core.test.entity.TestEntityNoEnrichersImpl;
 import org.apache.brooklyn.test.Asserts;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.time.Duration;
-import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableList;
 
-public class BrooklynMetricsTest {
+public class BrooklynMetricsTest extends BrooklynAppUnitTestSupport {
 
-    private static final long TIMEOUT_MS = 2*1000;
     private final static int NUM_SUBSCRIPTIONS_PER_ENTITY = 4;
     
     TestApplication app;
@@ -53,18 +48,19 @@ public class BrooklynMetricsTest {
     BrooklynMetrics brooklynMetrics;
     
     @BeforeMethod(alwaysRun=true)
-    public void setUp() {
-        loc = new SimulatedLocation();
-        app = 
ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class, 
TestApplicationNoEnrichersImpl.class),
-            LocalManagementContextForTests.newInstance());
-        brooklynMetrics = 
app.createAndManageChild(EntitySpec.create(BrooklynMetrics.class).configure("updatePeriod",
 10L));
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        loc = app.newSimulatedLocation();
+        brooklynMetrics = 
app.addChild(EntitySpec.create(BrooklynMetrics.class).configure("updatePeriod", 
10L));
     }
     
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-        if (app != null) Entities.destroyAll(app.getManagementContext());
+    @Override
+    protected void setUpApp() {
+        app = 
mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class)
+                .impl(TestApplicationNoEnrichersImpl.class));
     }
-
+    
     @Test
     public void testInitialBrooklynMetrics() {
         app.start(ImmutableList.of(loc));

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/test/entity/TestApplication.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/test/entity/TestApplication.java 
b/core/src/test/java/org/apache/brooklyn/core/test/entity/TestApplication.java
index d5ad915..b5269bb 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/test/entity/TestApplication.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/test/entity/TestApplication.java
@@ -28,7 +28,6 @@ import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.api.sensor.AttributeSensor;
 import org.apache.brooklyn.core.entity.EntityInternal;
 import org.apache.brooklyn.core.entity.StartableApplication;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.location.SimulatedLocation;
 import org.apache.brooklyn.core.sensor.Sensors;
 import 
org.apache.brooklyn.location.localhost.LocalhostMachineProvisioningLocation;
@@ -57,7 +56,7 @@ public interface TestApplication extends 
StartableApplication, EntityInternal {
 
     public static class Factory {
         public static TestApplication 
newManagedInstanceForTests(ManagementContext mgmt) {
-            return ApplicationBuilder.newManagedApp(TestApplication.class, 
mgmt);
+            return 
mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class));
         }
         public static TestApplication newManagedInstanceForTests() {
             return newManagedInstanceForTests(new 
LocalManagementContextForTests());

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/core/test/qa/longevity/EntityCleanupLongevityTestFixture.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/test/qa/longevity/EntityCleanupLongevityTestFixture.java
 
b/core/src/test/java/org/apache/brooklyn/core/test/qa/longevity/EntityCleanupLongevityTestFixture.java
index e8544d8..e94bbf4 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/test/qa/longevity/EntityCleanupLongevityTestFixture.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/test/qa/longevity/EntityCleanupLongevityTestFixture.java
@@ -29,7 +29,6 @@ import org.apache.brooklyn.api.location.LocationSpec;
 import org.apache.brooklyn.api.sensor.SensorEvent;
 import org.apache.brooklyn.api.sensor.SensorEventListener;
 import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.internal.storage.BrooklynStorage;
 import org.apache.brooklyn.core.location.SimulatedLocation;
 import org.apache.brooklyn.core.mgmt.internal.AbstractManagementContext;
@@ -164,8 +163,8 @@ public abstract class EntityCleanupLongevityTestFixture {
     }
 
     protected TestApplication newApp() {
-        final TestApplication result = 
ApplicationBuilder.newManagedApp(TestApplication.class, managementContext);
-        weakApps.put(app, null);
+        final TestApplication result = 
managementContext.getEntityManager().createEntity(EntitySpec.create(TestApplication.class));
+        weakApps.put(result, null);
         TestEntity entity = 
result.createAndManageChild(EntitySpec.create(TestEntity.class));
         result.subscriptions().subscribe(entity, TestEntity.NAME, new 
SensorEventListener<String>() {
             @Override public void onEvent(SensorEvent<String> event) {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/entity/stock/DataEntityTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/entity/stock/DataEntityTest.java 
b/core/src/test/java/org/apache/brooklyn/entity/stock/DataEntityTest.java
index 366645d..8185455 100644
--- a/core/src/test/java/org/apache/brooklyn/entity/stock/DataEntityTest.java
+++ b/core/src/test/java/org/apache/brooklyn/entity/stock/DataEntityTest.java
@@ -24,19 +24,14 @@ import static org.testng.Assert.assertTrue;
 import java.util.concurrent.atomic.AtomicReference;
 
 import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.location.LocationSpec;
-import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.api.sensor.AttributeSensor;
 import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.core.entity.EntityAsserts;
-import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
 import org.apache.brooklyn.core.location.SimulatedLocation;
 import org.apache.brooklyn.core.sensor.Sensors;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.core.test.entity.TestApplication;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
 import org.apache.brooklyn.test.Asserts;
 import org.apache.brooklyn.util.collections.MutableMap;
-import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
@@ -44,11 +39,9 @@ import com.google.common.base.Predicates;
 import com.google.common.base.Supplier;
 import com.google.common.collect.ImmutableList;
 
-public class DataEntityTest {
+public class DataEntityTest extends BrooklynAppUnitTestSupport {
 
-    private ManagementContext managementContext;
     private SimulatedLocation loc;
-    private TestApplication app;
     private DataEntity entity;
     private AttributeSensor<String>  stringSensor = 
Sensors.newStringSensor("string", "String sensor");
     private AttributeSensor<Long>  longSensor = Sensors.newLongSensor("long", 
"Long sensor");
@@ -62,16 +55,10 @@ public class DataEntityTest {
     
     @BeforeMethod(alwaysRun=true)
     public void setUp() throws Exception {
-        managementContext = new LocalManagementContextForTests();
-        loc = 
managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
-        app = ApplicationBuilder.newManagedApp(TestApplication.class, 
managementContext);
+        super.setUp();
+        loc = app.newSimulatedLocation();
     }
     
-    @AfterMethod(alwaysRun=true)
-    public void tearDown() throws Exception {
-        if (managementContext != null) 
Entities.destroyAllCatching(managementContext);
-    }
-
     @Test
     public void testSupplierSetsAttribute() throws Exception {
         entity = app.createAndManageChild(EntitySpec.create(DataEntity.class)

Reply via email to