http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/location/byon/FixedListMachineProvisioningLocationRebindTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/location/byon/FixedListMachineProvisioningLocationRebindTest.java b/core/src/test/java/org/apache/brooklyn/location/byon/FixedListMachineProvisioningLocationRebindTest.java index caef64e..f8d8440 100644 --- a/core/src/test/java/org/apache/brooklyn/location/byon/FixedListMachineProvisioningLocationRebindTest.java +++ b/core/src/test/java/org/apache/brooklyn/location/byon/FixedListMachineProvisioningLocationRebindTest.java @@ -20,23 +20,16 @@ package org.apache.brooklyn.location.byon; import static org.testng.Assert.assertEquals; -import java.io.File; import java.util.Set; import javax.annotation.Nullable; 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.location.LocationConfigKeys; -import org.apache.brooklyn.core.mgmt.rebind.RebindTestUtils; +import org.apache.brooklyn.core.mgmt.rebind.RebindTestFixtureWithApp; import org.apache.brooklyn.core.test.entity.TestApplication; -import org.apache.brooklyn.location.byon.FixedListMachineProvisioningLocation; import org.apache.brooklyn.location.ssh.SshMachineLocation; import org.apache.brooklyn.util.collections.MutableSet; -import org.apache.brooklyn.util.os.Os; -import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -44,19 +37,13 @@ import com.google.common.base.Function; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; -public class FixedListMachineProvisioningLocationRebindTest { +public class FixedListMachineProvisioningLocationRebindTest extends RebindTestFixtureWithApp { private FixedListMachineProvisioningLocation<SshMachineLocation> origLoc; - private ClassLoader classLoader = getClass().getClassLoader(); - private ManagementContext origManagementContext; - private TestApplication origApp; - private TestApplication newApp; - private File mementoDir; @BeforeMethod(alwaysRun=true) public void setUp() throws Exception { - mementoDir = Os.newTempDir(getClass()); - origManagementContext = RebindTestUtils.newPersistingManagementContext(mementoDir, classLoader, 1); + super.setUp(); origLoc = new FixedListMachineProvisioningLocation.Builder(origManagementContext.getLocationManager()) .addAddresses("localhost", "127.0.0.1") @@ -65,17 +52,9 @@ public class FixedListMachineProvisioningLocationRebindTest { .keyData("myKeyData") .keyPassphrase("myKeyPassphrase") .build(); - origApp = ApplicationBuilder.newManagedApp(TestApplication.class, origManagementContext); origApp.start(ImmutableList.of(origLoc)); } - @AfterMethod(alwaysRun = true) - public void tearDown() throws Exception { - if (origManagementContext != null) Entities.destroyAll(origManagementContext); - if (newApp != null) Entities.destroyAll(newApp.getManagementContext()); - if (mementoDir != null) RebindTestUtils.deleteMementoDir(mementoDir); - } - @Test public void testRebindPreservesConfig() throws Exception { newApp = rebind(); @@ -112,11 +91,6 @@ public class FixedListMachineProvisioningLocationRebindTest { assertLocationIdsEqual(newLoc.getAvailable(), origLoc.getAvailable()); } - private TestApplication rebind() throws Exception { - RebindTestUtils.stopPersistence(origApp); - return (TestApplication) RebindTestUtils.rebind(mementoDir, getClass().getClassLoader()); - } - private void assertLocationIdsEqual(Iterable<? extends Location> actual, Iterable<? extends Location> expected) { Function<Location, String> locationIdFunction = new Function<Location, String>() { @Override public String apply(@Nullable Location input) {
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/core/src/test/java/org/apache/brooklyn/location/multi/MultiLocationRebindTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/location/multi/MultiLocationRebindTest.java b/core/src/test/java/org/apache/brooklyn/location/multi/MultiLocationRebindTest.java index e26b210..6ebd492 100644 --- a/core/src/test/java/org/apache/brooklyn/location/multi/MultiLocationRebindTest.java +++ b/core/src/test/java/org/apache/brooklyn/location/multi/MultiLocationRebindTest.java @@ -18,27 +18,17 @@ */ package org.apache.brooklyn.location.multi; -import java.io.File; import java.util.List; -import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.location.Location; import org.apache.brooklyn.api.location.LocationSpec; -import org.apache.brooklyn.api.mgmt.ManagementContext; -import org.apache.brooklyn.core.entity.Entities; -import org.apache.brooklyn.core.entity.factory.ApplicationBuilder; import org.apache.brooklyn.core.location.cloud.AvailabilityZoneExtension; -import org.apache.brooklyn.core.mgmt.rebind.RebindTestUtils; -import org.apache.brooklyn.core.test.entity.TestApplication; +import org.apache.brooklyn.core.mgmt.rebind.RebindTestFixtureWithApp; import org.apache.brooklyn.location.byon.FixedListMachineProvisioningLocation; -import org.apache.brooklyn.location.multi.MultiLocation; import org.apache.brooklyn.location.ssh.SshMachineLocation; import org.apache.brooklyn.test.Asserts; import org.apache.brooklyn.util.collections.MutableSet; import org.apache.brooklyn.util.net.Networking; -import org.apache.brooklyn.util.os.Os; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import com.google.common.base.Function; @@ -46,36 +36,14 @@ import com.google.common.base.Predicates; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; -public class MultiLocationRebindTest { +public class MultiLocationRebindTest extends RebindTestFixtureWithApp { - private ClassLoader classLoader = getClass().getClassLoader(); - private ManagementContext origManagementContext; - private ManagementContext newManagementContext; - private File mementoDir; - - private TestApplication origApp; - private TestApplication newApp; private SshMachineLocation mac1a; private SshMachineLocation mac2a; private FixedListMachineProvisioningLocation<SshMachineLocation> loc1; private FixedListMachineProvisioningLocation<SshMachineLocation> loc2; private MultiLocation<SshMachineLocation> multiLoc; - @BeforeMethod(alwaysRun=true) - public void setUp() throws Exception { - mementoDir = Os.newTempDir(getClass()); - origManagementContext = RebindTestUtils.newPersistingManagementContext(mementoDir, classLoader, 1); - origApp = ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class), origManagementContext); - } - - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (origManagementContext != null) Entities.destroyAll(origManagementContext); - if (newApp != null) Entities.destroyAll(newApp.getManagementContext()); - if (newManagementContext != null) Entities.destroyAll(newManagementContext); - if (mementoDir != null) RebindTestUtils.deleteMementoDir(mementoDir); - } - @SuppressWarnings("unchecked") @Test public void testRebindsMultiLocation() throws Exception { @@ -98,7 +66,7 @@ public class MultiLocationRebindTest { newApp = rebind(); newManagementContext = newApp.getManagementContext(); - MultiLocation newMultiLoc = (MultiLocation) Iterables.find(newManagementContext.getLocationManager().getLocations(), Predicates.instanceOf(MultiLocation.class)); + MultiLocation<?> newMultiLoc = (MultiLocation<?>) Iterables.find(newManagementContext.getLocationManager().getLocations(), Predicates.instanceOf(MultiLocation.class)); AvailabilityZoneExtension azExtension = newMultiLoc.getExtension(AvailabilityZoneExtension.class); List<Location> newSublLocs = azExtension.getAllSubLocations(); Iterable<String> newSubLocNames = Iterables.transform(newSublLocs, new Function<Location, String>() { @@ -107,16 +75,4 @@ public class MultiLocationRebindTest { }}); Asserts.assertEqualsIgnoringOrder(newSubLocNames, ImmutableList.of("loc1", "loc2")); } - - private TestApplication rebind() throws Exception { - return rebind(true); - } - - private TestApplication rebind(boolean checkSerializable) throws Exception { - RebindTestUtils.stopPersistence(origApp); - if (checkSerializable) { - RebindTestUtils.checkCurrentMementoSerializable(origApp); - } - return (TestApplication) RebindTestUtils.rebind(mementoDir, getClass().getClassLoader()); - } } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java ---------------------------------------------------------------------- diff --git a/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java b/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java index 12f6833..03efc5d 100644 --- a/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java +++ b/launcher-common/src/main/java/org/apache/brooklyn/launcher/common/BasicLauncher.java @@ -45,7 +45,6 @@ import org.apache.brooklyn.config.ConfigKey; import org.apache.brooklyn.core.catalog.internal.CatalogInitialization; import org.apache.brooklyn.core.entity.Attributes; import org.apache.brooklyn.core.entity.Entities; -import org.apache.brooklyn.core.entity.StartableApplication; import org.apache.brooklyn.core.entity.trait.Startable; import org.apache.brooklyn.core.internal.BrooklynProperties; import org.apache.brooklyn.core.mgmt.EntityManagementUtils; @@ -105,8 +104,7 @@ public class BasicLauncher<T extends BasicLauncher<T>> { private final List<String> locationSpecs = new ArrayList<String>(); private final List<Location> locations = new ArrayList<Location>(); - @SuppressWarnings("deprecation") // TODO convert to EntitySpec; should be easy when users not allowed to pass in a builder - private final List<org.apache.brooklyn.core.entity.factory.ApplicationBuilder> appBuildersToManage = new ArrayList<org.apache.brooklyn.core.entity.factory.ApplicationBuilder>(); + private final List<EntitySpec<? extends Application>> appSpecsToManage = new ArrayList<>(); private final List<String> yamlAppsToManage = new ArrayList<String>(); private final List<Application> apps = new ArrayList<Application>(); @@ -143,36 +141,13 @@ public class BasicLauncher<T extends BasicLauncher<T>> { } /** - * Specifies that the launcher should build and manage the given Brooklyn application. - * The application must not yet be managed. - * The application will not be started as part of this call (callers can - * subsequently call {@link #start()} or {@link #getApplications()}. - * - * @see #application(EntitySpec) - * - * @deprecated since 0.9.0; instead use {@link #application(String)} for YAML apps, or {@link #application(EntitySpec)}. - * Note that apps are now auto-managed on construction through EntitySpec/YAML. - */ - @Deprecated - public T application(org.apache.brooklyn.core.entity.factory.ApplicationBuilder appBuilder) { - LOG.warn("Caller supplied ApplicationBuilder; convert to EntitySpec as this style builder may not be supported in future."); - appBuildersToManage.add(checkNotNull(appBuilder, "appBuilder")); - return self(); - } - - /** * Specifies that the launcher should build and manage the Brooklyn application * described by the given spec. * The application will not be started as part of this call (callers can * subsequently call {@link #start()} or {@link #getApplications()}. - * - * @see #application(Application) */ - @SuppressWarnings("deprecation") // when appsToManage is EntitySpec this will no longer be needed - public T application(EntitySpec<? extends StartableApplication> appSpec) { - appBuildersToManage.add(new org.apache.brooklyn.core.entity.factory.ApplicationBuilder(checkNotNull(appSpec, "appSpec")) { - @Override protected void doBuild() { - }}); + public T application(EntitySpec<? extends Application> appSpec) { + appSpecsToManage.add(appSpec); return self(); } @@ -652,10 +627,9 @@ public class BasicLauncher<T extends BasicLauncher<T>> { rebindManager.startPersistence(); } - @SuppressWarnings("deprecation") protected void createApps() { - for (org.apache.brooklyn.core.entity.factory.ApplicationBuilder appBuilder : appBuildersToManage) { - StartableApplication app = appBuilder.manage(managementContext); + for (EntitySpec<? extends Application> spec : appSpecsToManage) { + Application app = managementContext.getEntityManager().createEntity(spec); apps.add(app); } for (String blueprint : yamlAppsToManage) { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java ---------------------------------------------------------------------- diff --git a/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java b/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java index e013884..3c874f8 100644 --- a/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java +++ b/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java @@ -37,7 +37,6 @@ import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.mgmt.ManagementContext; import org.apache.brooklyn.core.entity.Entities; import org.apache.brooklyn.core.entity.EntityInternal; -import org.apache.brooklyn.core.entity.factory.ApplicationBuilder; import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests; import org.apache.brooklyn.core.test.entity.TestApplication; import org.apache.brooklyn.launcher.BrooklynWebServer; @@ -90,7 +89,7 @@ public class BrooklynEntityMirrorIntegrationTest { server.start(); serverMgmt.getHighAvailabilityManager().disabled(); - serverApp = ApplicationBuilder.newManagedApp(TestApplication.class, serverMgmt); + serverApp = TestApplication.Factory.newManagedInstanceForTests(serverMgmt); ((LocalManagementContextForTests)serverMgmt).noteStartupComplete(); } catch (Exception e) { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeRestTest.java ---------------------------------------------------------------------- diff --git a/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeRestTest.java b/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeRestTest.java index ca8f699..b54fe3c 100644 --- a/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeRestTest.java +++ b/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeRestTest.java @@ -45,7 +45,6 @@ import org.apache.brooklyn.core.config.BasicConfigKey; import org.apache.brooklyn.core.entity.Attributes; import org.apache.brooklyn.core.entity.Entities; import org.apache.brooklyn.core.entity.EntityInternal; -import org.apache.brooklyn.core.entity.factory.ApplicationBuilder; import org.apache.brooklyn.core.test.entity.TestApplication; import org.apache.brooklyn.core.test.entity.TestEntity; import org.apache.brooklyn.launcher.SimpleYamlLauncherForTests; @@ -67,7 +66,7 @@ public class BrooklynNodeRestTest { public void testBrooklynNodeRestDeployAndMirror() { final SimpleYamlLauncher l = new SimpleYamlLauncherForTests(); try { - TestApplication app = ApplicationBuilder.newManagedApp(TestApplication.class, l.getManagementContext()); + TestApplication app = TestApplication.Factory.newManagedInstanceForTests(l.getManagementContext()); BrooklynNode bn = app.createAndManageChild(EntitySpec.create(BrooklynNode.class, SameBrooklynNodeImpl.class)); bn.start(MutableSet.<Location>of()); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherTest.java ---------------------------------------------------------------------- diff --git a/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherTest.java b/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherTest.java index 8e89352..f2fb412 100644 --- a/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherTest.java +++ b/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherTest.java @@ -172,19 +172,6 @@ public class BrooklynLauncherTest { } @Test - @SuppressWarnings("deprecation") - public void testStartsAppFromBuilder() throws Exception { - launcher = newLauncherForTests(true) - .webconsole(false) - .application(new org.apache.brooklyn.core.entity.factory.ApplicationBuilder(EntitySpec.create(TestApplication.class)) { - @Override protected void doBuild() { - }}) - .start(); - - assertOnlyApp(launcher, TestApplication.class); - } - - @Test public void testStartsAppFromYAML() throws Exception { String yaml = "name: example-app\n" + "services:\n" + http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/policy/src/test/java/org/apache/brooklyn/policy/ha/ConnectionFailureDetectorTest.java ---------------------------------------------------------------------- diff --git a/policy/src/test/java/org/apache/brooklyn/policy/ha/ConnectionFailureDetectorTest.java b/policy/src/test/java/org/apache/brooklyn/policy/ha/ConnectionFailureDetectorTest.java index 0ef1ac8..e8ea2a1 100644 --- a/policy/src/test/java/org/apache/brooklyn/policy/ha/ConnectionFailureDetectorTest.java +++ b/policy/src/test/java/org/apache/brooklyn/policy/ha/ConnectionFailureDetectorTest.java @@ -28,15 +28,11 @@ import java.net.ServerSocket; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -import org.apache.brooklyn.api.mgmt.ManagementContext; import org.apache.brooklyn.api.policy.PolicySpec; import org.apache.brooklyn.api.sensor.Sensor; 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.test.entity.LocalManagementContextForTests; -import org.apache.brooklyn.core.test.entity.TestApplication; +import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport; import org.apache.brooklyn.policy.ha.HASensors.FailureDescriptor; import org.apache.brooklyn.test.Asserts; import org.apache.brooklyn.util.collections.MutableMap; @@ -55,26 +51,23 @@ import com.google.common.net.HostAndPort; // at least one report of *test* failures, as in no events coming in; // log unavailable but the test has been passing everywhere else so we // suspect some environments don't support this test -public class ConnectionFailureDetectorTest { +public class ConnectionFailureDetectorTest extends BrooklynAppUnitTestSupport { private static final int TIMEOUT_MS = 30*1000; private static final int OVERHEAD = 250; private static final int POLL_PERIOD = 100; - private ManagementContext managementContext; - private TestApplication app; - private List<SensorEvent<FailureDescriptor>> events; private ServerSocket serverSocket; private HostAndPort serverSocketAddress; @BeforeMethod(alwaysRun=true) + @Override public void setUp() throws Exception { - events = new CopyOnWriteArrayList<SensorEvent<FailureDescriptor>>(); + super.setUp(); - managementContext = new LocalManagementContextForTests(); - app = ApplicationBuilder.newManagedApp(TestApplication.class, managementContext); + events = new CopyOnWriteArrayList<SensorEvent<FailureDescriptor>>(); app.getManagementContext().getSubscriptionManager().subscribe( app, @@ -98,8 +91,11 @@ public class ConnectionFailureDetectorTest { @AfterMethod(alwaysRun=true) public void tearDown() throws Exception { - stopServerSocket(); - if (managementContext != null) Entities.destroyAll(managementContext); + try { + stopServerSocket(); + } finally { + super.tearDown(); + } } private HostAndPort startServerSocket() throws Exception { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceFailureDetectorStabilizationTest.java ---------------------------------------------------------------------- diff --git a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceFailureDetectorStabilizationTest.java b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceFailureDetectorStabilizationTest.java index 8c67489..faeeba8 100644 --- a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceFailureDetectorStabilizationTest.java +++ b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceFailureDetectorStabilizationTest.java @@ -25,53 +25,47 @@ import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import org.apache.brooklyn.api.entity.EntitySpec; -import org.apache.brooklyn.api.mgmt.ManagementContext; import org.apache.brooklyn.api.sensor.EnricherSpec; import org.apache.brooklyn.api.sensor.Sensor; 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.entity.lifecycle.Lifecycle; import org.apache.brooklyn.core.entity.lifecycle.ServiceStateLogic; import org.apache.brooklyn.core.entity.lifecycle.ServiceStateLogicTest; -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.policy.ha.HASensors.FailureDescriptor; import org.apache.brooklyn.test.Asserts; import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.time.Duration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import org.apache.brooklyn.policy.ha.HASensors.FailureDescriptor; import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.ImmutableMap; /** also see more primitive tests in {@link ServiceStateLogicTest} */ -public class ServiceFailureDetectorStabilizationTest { +public class ServiceFailureDetectorStabilizationTest extends BrooklynAppUnitTestSupport { private static final Logger LOG = LoggerFactory.getLogger(ServiceFailureDetectorStabilizationTest.class); private static final int TIMEOUT_MS = 10*1000; private static final int OVERHEAD = 250; - private ManagementContext managementContext; - private TestApplication app; private TestEntity e1; private List<SensorEvent<FailureDescriptor>> events; @BeforeMethod(alwaysRun=true) + @Override public void setUp() throws Exception { + super.setUp(); + events = new CopyOnWriteArrayList<SensorEvent<FailureDescriptor>>(); - managementContext = new LocalManagementContextForTests(); - app = ApplicationBuilder.newManagedApp(TestApplication.class, managementContext); e1 = app.createAndManageChild(EntitySpec.create(TestEntity.class)); e1.sensors().set(TestEntity.SERVICE_UP, true); ServiceStateLogic.setExpectedState(e1, Lifecycle.RUNNING); @@ -94,11 +88,6 @@ public class ServiceFailureDetectorStabilizationTest { }); } - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (managementContext != null) Entities.destroyAll(managementContext); - } - @Test(groups="Integration") // Because slow public void testNotNotifiedOfTemporaryFailuresDuringStabilisationDelay() throws Exception { e1.enrichers().add(EnricherSpec.create(ServiceFailureDetector.class) http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceFailureDetectorTest.java ---------------------------------------------------------------------- diff --git a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceFailureDetectorTest.java b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceFailureDetectorTest.java index 8f15e99..6df79bb 100644 --- a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceFailureDetectorTest.java +++ b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceFailureDetectorTest.java @@ -26,50 +26,46 @@ import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import org.apache.brooklyn.api.entity.EntitySpec; -import org.apache.brooklyn.api.mgmt.ManagementContext; import org.apache.brooklyn.api.sensor.EnricherSpec; import org.apache.brooklyn.api.sensor.Sensor; import org.apache.brooklyn.api.sensor.SensorEvent; import org.apache.brooklyn.api.sensor.SensorEventListener; import org.apache.brooklyn.core.entity.Attributes; -import org.apache.brooklyn.core.entity.Entities; import org.apache.brooklyn.core.entity.EntityAsserts; -import org.apache.brooklyn.core.entity.factory.ApplicationBuilder; import org.apache.brooklyn.core.entity.lifecycle.Lifecycle; import org.apache.brooklyn.core.entity.lifecycle.ServiceStateLogic; import org.apache.brooklyn.core.entity.lifecycle.ServiceStateLogic.ServiceProblemsLogic; -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.policy.ha.HASensors.FailureDescriptor; import org.apache.brooklyn.test.Asserts; import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.time.Duration; import org.apache.brooklyn.util.time.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import org.apache.brooklyn.policy.ha.HASensors.FailureDescriptor; import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.collect.ImmutableMap; -public class ServiceFailureDetectorTest { +public class ServiceFailureDetectorTest extends BrooklynAppUnitTestSupport { private static final Logger log = LoggerFactory.getLogger(ServiceFailureDetectorTest.class); private static final int TIMEOUT_MS = 10*1000; - private ManagementContext managementContext; - private TestApplication app; private TestEntity e1; private List<SensorEvent<FailureDescriptor>> events; private SensorEventListener<FailureDescriptor> eventListener; @BeforeMethod(alwaysRun=true) + @Override public void setUp() throws Exception { + super.setUp(); + events = new CopyOnWriteArrayList<SensorEvent<FailureDescriptor>>(); eventListener = new SensorEventListener<FailureDescriptor>() { @Override public void onEvent(SensorEvent<FailureDescriptor> event) { @@ -77,8 +73,6 @@ public class ServiceFailureDetectorTest { } }; - managementContext = new LocalManagementContextForTests(); - app = ApplicationBuilder.newManagedApp(TestApplication.class, managementContext); e1 = app.createAndManageChild(EntitySpec.create(TestEntity.class)); e1.enrichers().add(ServiceStateLogic.newEnricherForServiceStateFromProblemsAndUp()); @@ -86,11 +80,6 @@ public class ServiceFailureDetectorTest { app.getManagementContext().getSubscriptionManager().subscribe(e1, HASensors.ENTITY_RECOVERED, eventListener); } - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (managementContext != null) Entities.destroyAll(managementContext); - } - @Test(groups="Integration") // Has a 1 second wait public void testNotNotifiedOfFailuresForHealthy() throws Exception { // Create members before and after the policy is registered, to test both scenarios http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java ---------------------------------------------------------------------- diff --git a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java index 5faf289..392a50c 100644 --- a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java +++ b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java @@ -31,7 +31,6 @@ import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.location.Location; import org.apache.brooklyn.api.location.LocationSpec; -import org.apache.brooklyn.api.mgmt.ManagementContext; import org.apache.brooklyn.api.policy.PolicySpec; import org.apache.brooklyn.api.sensor.SensorEvent; import org.apache.brooklyn.api.sensor.SensorEventListener; @@ -39,15 +38,14 @@ import org.apache.brooklyn.core.entity.Attributes; import org.apache.brooklyn.core.entity.Entities; import org.apache.brooklyn.core.entity.EntityAsserts; import org.apache.brooklyn.core.entity.EntityInternal; -import org.apache.brooklyn.core.entity.factory.ApplicationBuilder; import org.apache.brooklyn.core.entity.lifecycle.Lifecycle; import org.apache.brooklyn.core.entity.lifecycle.ServiceStateLogic.ComputeServiceIndicatorsFromChildrenAndMembers; import org.apache.brooklyn.core.entity.trait.FailingEntity; import org.apache.brooklyn.core.location.SimulatedLocation; -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.entity.group.DynamicCluster; +import org.apache.brooklyn.policy.ha.HASensors.FailureDescriptor; import org.apache.brooklyn.test.Asserts; import org.apache.brooklyn.util.collections.QuorumCheck; import org.apache.brooklyn.util.core.config.ConfigBag; @@ -55,10 +53,8 @@ import org.apache.brooklyn.util.javalang.JavaClassNames; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.Assert; -import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import org.apache.brooklyn.policy.ha.HASensors.FailureDescriptor; import com.google.common.base.Predicate; import com.google.common.base.Predicates; @@ -68,21 +64,19 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Sets; -public class ServiceReplacerTest { +public class ServiceReplacerTest extends BrooklynAppUnitTestSupport { private static final Logger log = LoggerFactory.getLogger(ServiceReplacerTest.class); - private ManagementContext managementContext; - private TestApplication app; private SimulatedLocation loc; private SensorEventListener<Object> eventListener; private List<SensorEvent<?>> events; @BeforeMethod(alwaysRun=true) public void setUp() throws Exception { - managementContext = new LocalManagementContextForTests(); - app = ApplicationBuilder.newManagedApp(TestApplication.class, managementContext); - loc = managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class)); + super.setUp(); + + loc = app.newSimulatedLocation(); events = Lists.newCopyOnWriteArrayList(); eventListener = new SensorEventListener<Object>() { @Override public void onEvent(SensorEvent<Object> event) { @@ -91,11 +85,6 @@ public class ServiceReplacerTest { }; } - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (managementContext != null) Entities.destroyAll(managementContext); - } - @Test public void testReplacesFailedMember() throws Exception { final DynamicCluster cluster = app.createAndManageChild(EntitySpec.create(DynamicCluster.class) @@ -165,7 +154,7 @@ public class ServiceReplacerTest { // Expect to have the second failed entity still kicking around as proof (in quarantine) // The cluster should NOT go on fire until after the 2nd failure - Iterable<Entity> members = Iterables.filter(managementContext.getEntityManager().getEntities(), Predicates.instanceOf(FailingEntity.class)); + Iterable<Entity> members = Iterables.filter(mgmt.getEntityManager().getEntities(), Predicates.instanceOf(FailingEntity.class)); assertEquals(Iterables.size(members), 2); // e2 failed to start, so it won't have called stop on e1 @@ -300,7 +289,7 @@ public class ServiceReplacerTest { if (i <= 3) { Asserts.succeedsEventually(new Runnable() { @Override public void run() { - Set<FailingEntity> all = ImmutableSet.copyOf(Iterables.filter(managementContext.getEntityManager().getEntities(), FailingEntity.class)); + Set<FailingEntity> all = ImmutableSet.copyOf(Iterables.filter(mgmt.getEntityManager().getEntities(), FailingEntity.class)); Set<FailingEntity> replacements = Sets.difference(all, initialMembers); Set<?> replacementMembers = Sets.intersection(ImmutableSet.of(cluster.getMembers()), replacements); assertTrue(replacementMembers.isEmpty()); @@ -309,7 +298,7 @@ public class ServiceReplacerTest { } else { Asserts.succeedsContinually(new Runnable() { @Override public void run() { - Set<FailingEntity> all = ImmutableSet.copyOf(Iterables.filter(managementContext.getEntityManager().getEntities(), FailingEntity.class)); + Set<FailingEntity> all = ImmutableSet.copyOf(Iterables.filter(mgmt.getEntityManager().getEntities(), FailingEntity.class)); Set<FailingEntity> replacements = Sets.difference(all, initialMembers); assertEquals(replacements.size(), 4); }}); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/BalanceableWorkerPoolTest.java ---------------------------------------------------------------------- diff --git a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/BalanceableWorkerPoolTest.java b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/BalanceableWorkerPoolTest.java index 770e3f5..52f99b4 100644 --- a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/BalanceableWorkerPoolTest.java +++ b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/BalanceableWorkerPoolTest.java @@ -24,45 +24,39 @@ import static org.testng.Assert.fail; import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.entity.Group; import org.apache.brooklyn.api.entity.ImplementedBy; -import org.apache.brooklyn.core.entity.Entities; -import org.apache.brooklyn.core.entity.factory.ApplicationBuilder; +import org.apache.brooklyn.api.location.LocationSpec; import org.apache.brooklyn.core.entity.trait.Resizable; import org.apache.brooklyn.core.location.SimulatedLocation; -import org.apache.brooklyn.core.test.entity.TestApplication; +import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport; import org.apache.brooklyn.entity.group.AbstractGroup; import org.apache.brooklyn.entity.group.AbstractGroupImpl; import org.apache.brooklyn.entity.group.DynamicGroup; -import org.apache.brooklyn.util.collections.MutableMap; 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.base.Predicates; import com.google.common.collect.ImmutableList; -public class BalanceableWorkerPoolTest { +public class BalanceableWorkerPoolTest extends BrooklynAppUnitTestSupport { - private static final Logger LOG = LoggerFactory.getLogger(BalanceableWorkerPoolTest.class); - protected static final long TIMEOUT_MS = 10*1000; protected static final long SHORT_WAIT_MS = 250; protected static final long CONTAINER_STARTUP_DELAY_MS = 100; - protected TestApplication app; protected SimulatedLocation loc; protected BalanceableWorkerPool pool; protected Group containerGroup; protected Group itemGroup; @BeforeMethod(alwaysRun=true) - public void before() { - loc = new SimulatedLocation(MutableMap.of("name", "loc")); + @Override + public void setUp() throws Exception { + super.setUp(); + loc = mgmt.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class) + .configure("name", "loc")); - app = ApplicationBuilder.newManagedApp(TestApplication.class); containerGroup = app.createAndManageChild(EntitySpec.create(DynamicGroup.class) .displayName("containerGroup") .configure(DynamicGroup.ENTITY_FILTER, Predicates.instanceOf(MockContainerEntity.class))); @@ -75,11 +69,6 @@ public class BalanceableWorkerPoolTest { app.start(ImmutableList.of(loc)); } - @AfterMethod(alwaysRun=true) - public void after() { - if (app != null) Entities.destroyAll(app.getManagementContext()); - } - @Test public void testDefaultResizeFailsIfContainerGroupNotResizable() throws Exception { try { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/ItemsInContainersGroupTest.java ---------------------------------------------------------------------- diff --git a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/ItemsInContainersGroupTest.java b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/ItemsInContainersGroupTest.java index 973a1a3..59a9b24 100644 --- a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/ItemsInContainersGroupTest.java +++ b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/ItemsInContainersGroupTest.java @@ -23,14 +23,14 @@ import static org.testng.Assert.assertEquals; import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.entity.Group; +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.test.BrooklynAppUnitTestSupport; import org.apache.brooklyn.core.test.entity.TestApplication; import org.apache.brooklyn.entity.group.DynamicGroup; 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; @@ -38,21 +38,21 @@ import com.google.common.base.Predicate; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; -public class ItemsInContainersGroupTest { +public class ItemsInContainersGroupTest extends BrooklynAppUnitTestSupport { // all tests are 20ms or less, but use a big timeout just in case very slow machine! private static final long TIMEOUT_MS = 15000; - private TestApplication app; private SimulatedLocation loc; private Group containerGroup; private ItemsInContainersGroup itemGroup; @BeforeMethod(alwaysRun=true) public void setUp() throws Exception { - loc = new SimulatedLocation(MutableMap.of("name", "loc")); + super.setUp(); + loc = mgmt.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class) + .configure("name", "loc")); - app = ApplicationBuilder.newManagedApp(TestApplication.class); containerGroup = app.createAndManageChild(EntitySpec.create(DynamicGroup.class) .displayName("containerGroup") .configure(DynamicGroup.ENTITY_FILTER, new Predicate<Entity>() { @@ -68,11 +68,6 @@ public class ItemsInContainersGroupTest { app.start(ImmutableList.of(loc)); } - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (app != null) Entities.destroyAll(app.getManagementContext()); - } - @Test public void testSimpleMembership() throws Exception { MockContainerEntity containerIn = newContainer(app, "A", "ingroup"); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java ---------------------------------------------------------------------- diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java index d9eb7ee..600c90f 100644 --- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java +++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java @@ -21,7 +21,6 @@ package org.apache.brooklyn.rest.util; import static com.google.common.collect.Iterables.transform; import static org.apache.brooklyn.rest.util.WebResourceUtils.notFound; -import java.lang.reflect.Constructor; import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashMap; @@ -300,7 +299,6 @@ public class BrooklynRestResourceUtils { } } - @SuppressWarnings({ "deprecation" }) public Application create(ApplicationSpec spec) { log.warn("Using deprecated functionality (as of 0.9.0), ApplicationSpec style (pre CAMP plans). " + "Transition to actively supported spec plans."); @@ -332,21 +330,7 @@ public class BrooklynRestResourceUtils { } try { - if (org.apache.brooklyn.core.entity.factory.ApplicationBuilder.class.isAssignableFrom(itemAndClass.clazz)) { - // warning only added in 0.9.0 - log.warn("Using deprecated ApplicationBuilder "+itemAndClass.clazz+"; callers must migrate to use of Application"); - Constructor<?> constructor = itemAndClass.clazz.getConstructor(); - org.apache.brooklyn.core.entity.factory.ApplicationBuilder appBuilder = (org.apache.brooklyn.core.entity.factory.ApplicationBuilder) constructor.newInstance(); - if (!Strings.isEmpty(name)) appBuilder.appDisplayName(name); - if (entities.size() > 0) - log.warn("Cannot supply additional entities when using an ApplicationBuilder; ignoring in spec {}", spec); - - log.info("REST placing '{}' under management", spec.getName()); - appBuilder.configure(convertFlagsToKeys(appBuilder.getType(), configO)); - configureRenderingMetadata(spec, appBuilder); - instance = appBuilder.manage(mgmt); - - } else if (Application.class.isAssignableFrom(itemAndClass.clazz)) { + if (Application.class.isAssignableFrom(itemAndClass.clazz)) { org.apache.brooklyn.api.entity.EntitySpec<?> coreSpec = toCoreEntitySpec(itemAndClass.clazz, name, configO, itemAndClass.catalogItemId); configureRenderingMetadata(spec, coreSpec); for (EntitySpec entitySpec : entities) { @@ -432,11 +416,6 @@ public class BrooklynRestResourceUtils { return result; } - @SuppressWarnings("deprecation") - protected void configureRenderingMetadata(ApplicationSpec spec, org.apache.brooklyn.core.entity.factory.ApplicationBuilder appBuilder) { - appBuilder.configure(getRenderingConfigurationFor(spec.getType())); - } - protected void configureRenderingMetadata(ApplicationSpec input, org.apache.brooklyn.api.entity.EntitySpec<?> entity) { entity.configure(getRenderingConfigurationFor(input.getType())); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/ApplicationResourceTest.java ---------------------------------------------------------------------- diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/ApplicationResourceTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/ApplicationResourceTest.java index 967d72d..277fd32 100644 --- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/ApplicationResourceTest.java +++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/ApplicationResourceTest.java @@ -212,31 +212,6 @@ public class ApplicationResourceTest extends BrooklynRestResourceTest { assertEquals(client().path(appUri).get(ApplicationSummary.class).getSpec().getName(), "simple-app-interface"); } - @SuppressWarnings("deprecation") - @Test(dependsOnMethods = { "testDeployApplication", "testLocatedLocation" }) - public void testDeployApplicationFromBuilder() throws Exception { - ApplicationSpec spec = ApplicationSpec.builder() - .type(org.apache.brooklyn.rest.testing.mocks.RestMockAppBuilder.class.getCanonicalName()) - .name("simple-app-builder") - .locations(ImmutableSet.of("localhost")) - .build(); - - Response response = clientDeploy(spec); - assertTrue(response.getStatus() / 100 == 2, "response is " + response); - - // Expect app to be running - URI appUri = response.getLocation(); - waitForApplicationToBeRunning(response.getLocation(), Duration.TEN_SECONDS); - assertEquals(client().path(appUri).get(ApplicationSummary.class).getSpec().getName(), "simple-app-builder"); - - // Expect app to have the child-entity - Set<EntitySummary> entities = client().path(appUri.toString() + "/entities") - .get(new GenericType<Set<EntitySummary>>() {}); - assertEquals(entities.size(), 1); - assertEquals(Iterables.getOnlyElement(entities).getName(), "child1"); - assertEquals(Iterables.getOnlyElement(entities).getType(), RestMockSimpleEntity.class.getCanonicalName()); - } - @Test(dependsOnMethods = { "testDeployApplication", "testLocatedLocation" }) public void testDeployApplicationYaml() throws Exception { String yaml = "{ name: simple-app-yaml, location: localhost, services: [ { serviceType: "+BasicApplication.class.getCanonicalName()+" } ] }"; http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockAppBuilder.java ---------------------------------------------------------------------- diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockAppBuilder.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockAppBuilder.java deleted file mode 100644 index affb3f3..0000000 --- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockAppBuilder.java +++ /dev/null @@ -1,41 +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.rest.testing.mocks; - -import org.apache.brooklyn.api.entity.Entity; -import org.apache.brooklyn.api.entity.EntitySpec; -import org.apache.brooklyn.core.entity.StartableApplication; -import org.apache.brooklyn.core.entity.factory.ApplicationBuilder; -import org.apache.brooklyn.util.javalang.Reflections; - -/** @deprecated since 0.9.0 don't use {@link ApplicationBuilder} */ -@Deprecated -public class RestMockAppBuilder extends ApplicationBuilder { - - public RestMockAppBuilder() { - super(EntitySpec.create(StartableApplication.class).impl(RestMockApp.class)); - } - - @Override - protected void doBuild() { - addChild(EntitySpec.create(Entity.class).impl(RestMockSimpleEntity.class) - .additionalInterfaces(Reflections.getAllInterfaces(RestMockSimpleEntity.class)) - .displayName("child1")); - } -} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/server-cli/src/main/java/org/apache/brooklyn/cli/Main.java ---------------------------------------------------------------------- diff --git a/server-cli/src/main/java/org/apache/brooklyn/cli/Main.java b/server-cli/src/main/java/org/apache/brooklyn/cli/Main.java index 41c7e28..f68f142 100644 --- a/server-cli/src/main/java/org/apache/brooklyn/cli/Main.java +++ b/server-cli/src/main/java/org/apache/brooklyn/cli/Main.java @@ -59,7 +59,6 @@ import org.apache.brooklyn.core.entity.AbstractApplication; 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.entity.trait.Startable; import org.apache.brooklyn.core.mgmt.ShutdownHandler; import org.apache.brooklyn.core.mgmt.ha.OsgiManager; @@ -67,6 +66,7 @@ import org.apache.brooklyn.core.mgmt.persist.BrooklynPersistenceUtils; import org.apache.brooklyn.core.mgmt.persist.PersistMode; import org.apache.brooklyn.core.mgmt.rebind.transformer.CompoundTransformer; import org.apache.brooklyn.core.objs.BrooklynTypes; +import org.apache.brooklyn.entity.stock.BasicApplication; import org.apache.brooklyn.launcher.BrooklynLauncher; import org.apache.brooklyn.launcher.BrooklynServerDetails; import org.apache.brooklyn.launcher.config.StopWhichAppsOnShutdown; @@ -78,6 +78,7 @@ import org.apache.brooklyn.util.exceptions.FatalRuntimeException; import org.apache.brooklyn.util.exceptions.UserFacingException; import org.apache.brooklyn.util.guava.Maybe; import org.apache.brooklyn.util.javalang.Enums; +import org.apache.brooklyn.util.javalang.Reflections; import org.apache.brooklyn.util.net.Networking; import org.apache.brooklyn.util.text.Identifiers; import org.apache.brooklyn.util.text.StringEscapes.JavaStringEscapes; @@ -683,8 +684,8 @@ public class Main extends AbstractMain { String content = utils.getResourceAsString(app); launcher.application(content); } else { - ApplicationBuilder loadedApp = loadApplicationFromClasspathOrParse(utils, loader, app); - launcher.application(loadedApp); + EntitySpec<? extends Application> appSpec = loadApplicationFromClasspathOrParse(utils, loader, app); + launcher.application(appSpec); } } } @@ -731,49 +732,46 @@ public class Main extends AbstractMain { } /** - * Helper method that gets an instance of a brooklyn {@link AbstractApplication} or an {@link ApplicationBuilder}. - * Guaranteed to be non-null result of one of those types (throwing exception if app not appropriate). + * Helper method that gets an instance of a brooklyn {@link EntitySpec}. + * Guaranteed to be non-null result (throwing exception if app not appropriate). + * + * @throws FatalConfigurationRuntimeException if class is not an {@link Application} or {@link Entity} */ @SuppressWarnings("unchecked") - protected ApplicationBuilder loadApplicationFromClasspathOrParse(ResourceUtils utils, GroovyClassLoader loader, String app) + protected EntitySpec<? extends Application> loadApplicationFromClasspathOrParse(ResourceUtils utils, GroovyClassLoader loader, String app) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException { - Class<?> tempclazz; + Class<?> clazz; log.debug("Loading application as class on classpath: {}", app); try { - tempclazz = loader.loadClass(app, true, false); + clazz = loader.loadClass(app, true, false); } catch (ClassNotFoundException cnfe) { // Not a class on the classpath throw new IllegalStateException("Unable to load app class '"+app+"'", cnfe); } - final Class<?> clazz = tempclazz; - // Instantiate an app builder (wrapping app/entity class in ApplicationBuilder) - // TODO Should change to use EntitySpec - if (ApplicationBuilder.class.isAssignableFrom(clazz)) { - Constructor<?> constructor = clazz.getConstructor(); - return (ApplicationBuilder) constructor.newInstance(); - } else if (StartableApplication.class.isAssignableFrom(clazz)) { - EntitySpec<? extends StartableApplication> appSpec; - if (tempclazz.isInterface()) - appSpec = EntitySpec.create((Class<? extends StartableApplication>) clazz); - else - appSpec = EntitySpec.create(StartableApplication.class, (Class<? extends StartableApplication>) clazz); - return new ApplicationBuilder(appSpec) { - @Override protected void doBuild() { - }}; - } else if (AbstractEntity.class.isAssignableFrom(clazz)) { - // TODO Should we really accept any entity type, and just wrap it in an app? That's not documented! - return new ApplicationBuilder() { - @Override protected void doBuild() { - addChild(EntitySpec.create(Entity.class).impl((Class<? extends AbstractEntity>)clazz).additionalInterfaces(clazz.getInterfaces())); - }}; + if (Application.class.isAssignableFrom(clazz)) { + if (clazz.isInterface()) { + return EntitySpec.create((Class<? extends Application>)clazz); + } else { + return EntitySpec.create(Application.class) + .impl((Class<? extends Application>) clazz) + .additionalInterfaces(Reflections.getAllInterfaces(clazz)); + } + } else if (Entity.class.isAssignableFrom(clazz)) { - return new ApplicationBuilder() { - @Override protected void doBuild() { - addChild(EntitySpec.create((Class<? extends Entity>)clazz)); - }}; + // TODO Should we really accept any entity type, and just wrap it in an app? That's not documented! + EntitySpec<?> childSpec; + if (clazz.isInterface()) { + childSpec = EntitySpec.create((Class<? extends Entity>)clazz); + } else { + childSpec = EntitySpec.create(Entity.class) + .impl((Class<? extends Application>) clazz) + .additionalInterfaces(Reflections.getAllInterfaces(clazz)); + } + return EntitySpec.create(BasicApplication.class).child(childSpec); + } else { - throw new FatalConfigurationRuntimeException("Application class "+clazz+" must extend one of ApplicationBuilder or AbstractApplication"); + throw new FatalConfigurationRuntimeException("Application class "+clazz+" must be an Application or Entity"); } } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/server-cli/src/test/java/org/apache/brooklyn/cli/CliTest.java ---------------------------------------------------------------------- diff --git a/server-cli/src/test/java/org/apache/brooklyn/cli/CliTest.java b/server-cli/src/test/java/org/apache/brooklyn/cli/CliTest.java index c3fbf28..2751d00 100644 --- a/server-cli/src/test/java/org/apache/brooklyn/cli/CliTest.java +++ b/server-cli/src/test/java/org/apache/brooklyn/cli/CliTest.java @@ -40,6 +40,7 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.regex.Pattern; import org.apache.brooklyn.api.catalog.CatalogItem; +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.entity.ImplementedBy; @@ -58,7 +59,6 @@ import org.apache.brooklyn.core.entity.AbstractApplication; 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.entity.trait.Startable; import org.apache.brooklyn.core.location.SimulatedLocation; import org.apache.brooklyn.core.objs.proxy.EntityProxy; @@ -100,7 +100,8 @@ public class CliTest { public static final AtomicBoolean GROOVY_INVOKED = new AtomicBoolean(false); private ExecutorService executor; - private StartableApplication app; + private Application app; + private ManagementContext mgmt; private List<File> filesToDelete; private static volatile ExampleEntity exampleEntity; @@ -123,6 +124,7 @@ public class CliTest { public void tearDown() throws Exception { if (executor != null) executor.shutdownNow(); if (app != null) Entities.destroyAll(app.getManagementContext()); + if (mgmt != null && mgmt.isRunning()) Entities.destroyAll(mgmt); if (exampleEntity != null && exampleEntity.getApplication() != null) Entities.destroyAll(exampleEntity.getApplication().getManagementContext()); if (filesToDelete != null) { for (File file : filesToDelete) { @@ -135,25 +137,21 @@ public class CliTest { @Test public void testLoadApplicationFromClasspath() throws Exception { String appName = ExampleApp.class.getName(); - Object appBuilder = loadApplicationFromClasspathOrParse(appName); - assertTrue(appBuilder instanceof ApplicationBuilder, "app="+appBuilder); - assertAppWrappedInBuilder((ApplicationBuilder)appBuilder, ExampleApp.class.getCanonicalName()); - } - - @Test - public void testLoadApplicationBuilderFromClasspath() throws Exception { - String appName = ExampleAppBuilder.class.getName(); - Object appBuilder = loadApplicationFromClasspathOrParse(appName); - assertTrue(appBuilder instanceof ExampleAppBuilder, "app="+appBuilder); + Object appSpec = loadApplicationFromClasspathOrParse(appName); + assertTrue(appSpec instanceof EntitySpec, "app="+appSpec); + + assertEquals(((EntitySpec<?>)appSpec).getImplementation(), ExampleApp.class); } @Test public void testLoadEntityFromClasspath() throws Exception { String entityName = ExampleEntity.class.getName(); - Object appBuilder = loadApplicationFromClasspathOrParse(entityName); - assertTrue(appBuilder instanceof ApplicationBuilder, "app="+appBuilder); + Object appSpec = loadApplicationFromClasspathOrParse(entityName); + assertTrue(appSpec instanceof EntitySpec, "app="+appSpec); - app = ((ApplicationBuilder)appBuilder).manage(); + mgmt = LocalManagementContextForTests.newInstance(); + app = (Application) mgmt.getEntityManager().createEntity((EntitySpec<?>)appSpec); + Collection<Entity> entities = app.getChildren(); assertEquals(entities.size(), 1, "entities="+entities); assertTrue(Iterables.getOnlyElement(entities) instanceof ExampleEntity, "entities="+entities+"; ifs="+Iterables.getOnlyElement(entities).getClass().getInterfaces()); @@ -164,10 +162,12 @@ public class CliTest { @Test public void testLoadEntityImplFromClasspath() throws Exception { String entityName = ExampleEntityImpl.class.getName(); - Object appBuilder = loadApplicationFromClasspathOrParse(entityName); - assertTrue(appBuilder instanceof ApplicationBuilder, "app="+appBuilder); + Object appSpec = loadApplicationFromClasspathOrParse(entityName); + assertTrue(appSpec instanceof EntitySpec, "app="+appSpec); + + mgmt = LocalManagementContextForTests.newInstance(); + app = (Application) mgmt.getEntityManager().createEntity((EntitySpec<?>)appSpec); - app = ((ApplicationBuilder)appBuilder).manage(); Collection<Entity> entities = app.getChildren(); assertEquals(entities.size(), 1, "entities="+entities); assertEquals(Iterables.getOnlyElement(entities).getEntityType().getName(), ExampleEntity.class.getCanonicalName(), "entities="+entities); @@ -181,16 +181,6 @@ public class CliTest { return launchCommand.loadApplicationFromClasspathOrParse(resourceUtils, loader, appName); } - private void assertAppWrappedInBuilder(ApplicationBuilder builder, String expectedAppTypeName) { - StartableApplication app = builder.manage(); - try { - String typeName = app.getEntityType().getName(); - assertEquals(typeName, expectedAppTypeName, "app="+app+"; typeName="+typeName); - } finally { - Entities.destroyAll(app.getManagementContext()); - } - } - @Test public void testInvokeGroovyScript() throws Exception { File groovyFile = File.createTempFile("testinvokegroovy", "groovy"); @@ -756,11 +746,4 @@ public class CliTest { @Override public void restart() { } } - - // An empty app builder to be used for testing - public static class ExampleAppBuilder extends ApplicationBuilder { - @Override protected void doBuild() { - // no-op - } - } } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/software/base/src/test/java/org/apache/brooklyn/entity/AbstractGoogleComputeLiveTest.java ---------------------------------------------------------------------- diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/AbstractGoogleComputeLiveTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/AbstractGoogleComputeLiveTest.java index e2c0dcc..7d70dd0 100644 --- a/software/base/src/test/java/org/apache/brooklyn/entity/AbstractGoogleComputeLiveTest.java +++ b/software/base/src/test/java/org/apache/brooklyn/entity/AbstractGoogleComputeLiveTest.java @@ -22,15 +22,9 @@ import java.util.List; import java.util.Map; 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.internal.LocalManagementContext; -import org.apache.brooklyn.core.test.entity.TestApplication; +import org.apache.brooklyn.core.test.BrooklynAppLiveTestSupport; import org.apache.brooklyn.util.collections.MutableMap; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import com.google.common.base.CaseFormat; @@ -40,7 +34,7 @@ import com.google.common.collect.ImmutableMap; /** * Runs a test with many different distros and versions. */ -public abstract class AbstractGoogleComputeLiveTest { +public abstract class AbstractGoogleComputeLiveTest extends BrooklynAppLiveTestSupport { // TODO See todos in AbstractEc2LiveTest @@ -50,39 +44,28 @@ public abstract class AbstractGoogleComputeLiveTest { public static final String STANDARD_HARDWARE_ID = "us-central1-b/n1-standard-1-d"; private static final int MAX_TAG_LENGTH = 63; - protected BrooklynProperties brooklynProperties; - protected ManagementContext ctx; - - protected TestApplication app; protected Location jcloudsLocation; - @BeforeMethod(alwaysRun=true) - public void setUp() throws Exception { + @Override + protected BrooklynProperties getBrooklynProperties() { + // Don't let any defaults from brooklyn.properties (except credentials) interfere with test List<String> propsToRemove = ImmutableList.of("imageId", "imageDescriptionRegex", "imageNameRegex", "inboundPorts", "hardwareId", "minRam"); - - // Don't let any defaults from brooklyn.properties (except credentials) interfere with test - brooklynProperties = BrooklynProperties.Factory.newDefault(); + BrooklynProperties result = BrooklynProperties.Factory.newDefault(); for (String propToRemove : propsToRemove) { for (String propVariant : ImmutableList.of(propToRemove, CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_HYPHEN, propToRemove))) { - brooklynProperties.remove("brooklyn.locations.jclouds."+PROVIDER+"."+propVariant); - brooklynProperties.remove("brooklyn.locations."+propVariant); - brooklynProperties.remove("brooklyn.jclouds."+PROVIDER+"."+propVariant); - brooklynProperties.remove("brooklyn.jclouds."+propVariant); + result.remove("brooklyn.locations.jclouds."+PROVIDER+"."+propVariant); + result.remove("brooklyn.locations."+propVariant); + result.remove("brooklyn.jclouds."+PROVIDER+"."+propVariant); + result.remove("brooklyn.jclouds."+propVariant); } } // Also removes scriptHeader (e.g. if doing `. ~/.bashrc` and `. ~/.profile`, then that can cause "stdin: is not a tty") - brooklynProperties.remove("brooklyn.ssh.config.scriptHeader"); + result.remove("brooklyn.ssh.config.scriptHeader"); - ctx = new LocalManagementContext(brooklynProperties); - app = ApplicationBuilder.newManagedApp(TestApplication.class, ctx); - } - - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (app != null) Entities.destroyAllCatching(app.getManagementContext()); + return result; } - + @Test(groups = {"Live"}) public void test_DefaultImage() throws Exception { runTest(ImmutableMap.<String,String>of()); @@ -128,7 +111,7 @@ public abstract class AbstractGoogleComputeLiveTest { .put("tags", ImmutableList.of(tag)) .putAll(flags) .build(); - jcloudsLocation = ctx.getLocationRegistry().getLocationManaged(LOCATION_SPEC, allFlags); + jcloudsLocation = mgmt.getLocationRegistry().getLocationManaged(LOCATION_SPEC, allFlags); doTest(jcloudsLocation); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/software/base/src/test/java/org/apache/brooklyn/entity/AbstractSoftlayerLiveTest.java ---------------------------------------------------------------------- diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/AbstractSoftlayerLiveTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/AbstractSoftlayerLiveTest.java index 5ef83ab..f7e7e07 100644 --- a/software/base/src/test/java/org/apache/brooklyn/entity/AbstractSoftlayerLiveTest.java +++ b/software/base/src/test/java/org/apache/brooklyn/entity/AbstractSoftlayerLiveTest.java @@ -22,17 +22,11 @@ import java.util.List; import java.util.Map; 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.internal.LocalManagementContext; -import org.apache.brooklyn.core.test.entity.TestApplication; +import org.apache.brooklyn.core.test.BrooklynAppLiveTestSupport; import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.text.StringShortener; import org.apache.brooklyn.util.text.Strings; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import com.google.common.base.CaseFormat; @@ -42,45 +36,35 @@ import com.google.common.collect.ImmutableMap; /** * Runs a test with many different distros and versions. */ -public abstract class AbstractSoftlayerLiveTest { +public abstract class AbstractSoftlayerLiveTest extends BrooklynAppLiveTestSupport { public static final String PROVIDER = "softlayer"; public static final int MAX_TAG_LENGTH = 20; public static final int MAX_VM_NAME_LENGTH = 30; - protected BrooklynProperties brooklynProperties; - protected ManagementContext ctx; - - protected TestApplication app; protected Location jcloudsLocation; - @BeforeMethod(alwaysRun=true) - public void setUp() throws Exception { + @Override + protected BrooklynProperties getBrooklynProperties() { List<String> propsToRemove = ImmutableList.of("imageId", "imageDescriptionRegex", "imageNameRegex", "inboundPorts", "hardwareId", "minRam"); // Don't let any defaults from brooklyn.properties (except credentials) interfere with test - brooklynProperties = BrooklynProperties.Factory.newDefault(); + BrooklynProperties result = BrooklynProperties.Factory.newDefault(); for (String propToRemove : propsToRemove) { for (String propVariant : ImmutableList.of(propToRemove, CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_HYPHEN, propToRemove))) { - brooklynProperties.remove("brooklyn.locations.jclouds."+PROVIDER+"."+propVariant); - brooklynProperties.remove("brooklyn.locations."+propVariant); - brooklynProperties.remove("brooklyn.jclouds."+PROVIDER+"."+propVariant); - brooklynProperties.remove("brooklyn.jclouds."+propVariant); + result.remove("brooklyn.locations.jclouds."+PROVIDER+"."+propVariant); + result.remove("brooklyn.locations."+propVariant); + result.remove("brooklyn.jclouds."+PROVIDER+"."+propVariant); + result.remove("brooklyn.jclouds."+propVariant); } } // Also removes scriptHeader (e.g. if doing `. ~/.bashrc` and `. ~/.profile`, then that can cause "stdin: is not a tty") - brooklynProperties.remove("brooklyn.ssh.config.scriptHeader"); + result.remove("brooklyn.ssh.config.scriptHeader"); - ctx = new LocalManagementContext(brooklynProperties); - app = ApplicationBuilder.newManagedApp(TestApplication.class, ctx); - } - - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (app != null) Entities.destroyAll(app.getManagementContext()); + return result; } - + @Test(groups = {"Live"}) public void test_Default() throws Exception { runTest(ImmutableMap.<String,Object>of()); @@ -106,7 +90,7 @@ public abstract class AbstractSoftlayerLiveTest { .put("vmNameMaxLength", MAX_VM_NAME_LENGTH) .putAll(flags) .build(); - jcloudsLocation = ctx.getLocationRegistry().getLocationManaged(PROVIDER, allFlags); + jcloudsLocation = mgmt.getLocationRegistry().getLocationManaged(PROVIDER, allFlags); doTest(jcloudsLocation); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/software/base/src/test/java/org/apache/brooklyn/entity/chef/ChefConfigsTest.java ---------------------------------------------------------------------- diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/chef/ChefConfigsTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/chef/ChefConfigsTest.java index de77a64..dfdb85f 100644 --- a/software/base/src/test/java/org/apache/brooklyn/entity/chef/ChefConfigsTest.java +++ b/software/base/src/test/java/org/apache/brooklyn/entity/chef/ChefConfigsTest.java @@ -20,28 +20,16 @@ package org.apache.brooklyn.entity.chef; import java.util.Set; -import org.apache.brooklyn.core.entity.Entities; -import org.apache.brooklyn.core.entity.factory.ApplicationBuilder; -import org.apache.brooklyn.core.test.entity.TestApplication; +import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport; import org.apache.brooklyn.entity.chef.ChefConfig; import org.apache.brooklyn.entity.chef.ChefConfigs; import org.testng.Assert; -import org.testng.annotations.AfterMethod; import org.testng.annotations.Test; -public class ChefConfigsTest { +public class ChefConfigsTest extends BrooklynAppUnitTestSupport { - private TestApplication app = null; - - @AfterMethod(alwaysRun=true) - public void tearDown() { - if (app!=null) Entities.destroyAll(app.getManagementContext()); - app = null; - } - @Test public void testAddToRunList() { - app = ApplicationBuilder.newManagedApp(TestApplication.class); ChefConfigs.addToLaunchRunList(app, "a", "b"); Set<? extends String> runs = app.getConfig(ChefConfig.CHEF_LAUNCH_RUN_LIST); Assert.assertEquals(runs.size(), 2, "runs="+runs); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/software/base/src/test/java/org/apache/brooklyn/entity/chef/ChefServerTasksIntegrationTest.java ---------------------------------------------------------------------- diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/chef/ChefServerTasksIntegrationTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/chef/ChefServerTasksIntegrationTest.java index ff5441e..a7b5803 100644 --- a/software/base/src/test/java/org/apache/brooklyn/entity/chef/ChefServerTasksIntegrationTest.java +++ b/software/base/src/test/java/org/apache/brooklyn/entity/chef/ChefServerTasksIntegrationTest.java @@ -21,10 +21,8 @@ package org.apache.brooklyn.entity.chef; import java.io.ByteArrayOutputStream; import java.io.IOException; -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.test.entity.TestApplication; +import org.apache.brooklyn.core.test.BrooklynAppLiveTestSupport; import org.apache.brooklyn.entity.chef.ChefConfig; import org.apache.brooklyn.entity.chef.ChefServerTasks; import org.apache.brooklyn.util.core.task.system.ProcessTaskWrapper; @@ -34,8 +32,6 @@ import org.apache.brooklyn.util.time.Time; 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; /** Many tests expect knife on the path, but none require any configuration beyond that. @@ -65,25 +61,12 @@ import org.testng.annotations.Test; * Note also that some tests require a location named:ChefLive to be set up in your brooklyn.properties. * This can be a cloud (but will require frequent chef-node pruning) or a permanently set-up machine. **/ -public class ChefServerTasksIntegrationTest { +// TODO Does it really need to be a live test? When converting from ApplicationBuilder, preserved +// existing behaviour of using the live BrooklynProperties. +public class ChefServerTasksIntegrationTest extends BrooklynAppLiveTestSupport { private static final Logger log = LoggerFactory.getLogger(ChefServerTasksIntegrationTest.class); - protected TestApplication app; - protected ManagementContext mgmt; - - @BeforeMethod(alwaysRun=true) - public void setup() throws Exception { - app = ApplicationBuilder.newManagedApp(TestApplication.class); - mgmt = app.getManagementContext(); - } - - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (mgmt != null) Entities.destroyAll(mgmt); - mgmt = null; - } - /** @deprecated use {@link ChefLiveTestSupport} */ @Deprecated public synchronized static String installBrooklynChefHostedConfig() { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/software/base/src/test/java/org/apache/brooklyn/entity/software/base/AbstractDockerLiveTest.java ---------------------------------------------------------------------- diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/AbstractDockerLiveTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/AbstractDockerLiveTest.java index f7602c0..c2f626d 100644 --- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/AbstractDockerLiveTest.java +++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/AbstractDockerLiveTest.java @@ -23,15 +23,9 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; 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.internal.LocalManagementContext; -import org.apache.brooklyn.core.test.entity.TestApplication; +import org.apache.brooklyn.core.test.BrooklynAppLiveTestSupport; import org.apache.brooklyn.util.collections.MutableMap; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.util.List; @@ -40,44 +34,34 @@ import java.util.Map; /** * Runs a test with many different distros and versions. */ -public abstract class AbstractDockerLiveTest { +public abstract class AbstractDockerLiveTest extends BrooklynAppLiveTestSupport { public static final String PROVIDER = "docker"; - protected BrooklynProperties brooklynProperties; - protected ManagementContext ctx; - - protected TestApplication app; protected Location jcloudsLocation; - @BeforeMethod(alwaysRun=true) - public void setUp() throws Exception { + @Override + protected BrooklynProperties getBrooklynProperties() { + // Don't let any defaults from brooklyn.properties (except credentials) interfere with test List<String> propsToRemove = ImmutableList.of("imageDescriptionRegex", "imageNameRegex", "inboundPorts", "hardwareId", "minRam"); - - // Don't let any defaults from brooklyn.properties (except credentials) interfere with test - brooklynProperties = BrooklynProperties.Factory.newDefault(); + + BrooklynProperties result = BrooklynProperties.Factory.newDefault(); for (String propToRemove : propsToRemove) { for (String propVariant : ImmutableList.of(propToRemove, CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_HYPHEN, propToRemove))) { - brooklynProperties.remove("brooklyn.locations.jclouds."+PROVIDER+"."+propVariant); - brooklynProperties.remove("brooklyn.locations."+propVariant); - brooklynProperties.remove("brooklyn.jclouds."+PROVIDER+"."+propVariant); - brooklynProperties.remove("brooklyn.jclouds."+propVariant); + result.remove("brooklyn.locations.jclouds."+PROVIDER+"."+propVariant); + result.remove("brooklyn.locations."+propVariant); + result.remove("brooklyn.jclouds."+PROVIDER+"."+propVariant); + result.remove("brooklyn.jclouds."+propVariant); } } // Also removes scriptHeader (e.g. if doing `. ~/.bashrc` and `. ~/.profile`, then that can cause "stdin: is not a tty") - brooklynProperties.remove("brooklyn.ssh.config.scriptHeader"); - - ctx = new LocalManagementContext(brooklynProperties); - app = ApplicationBuilder.newManagedApp(TestApplication.class, ctx); - } + result.remove("brooklyn.ssh.config.scriptHeader"); - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (app != null) Entities.destroyAllCatching(app.getManagementContext()); + return result; } - + @Test(groups={"Live", "WIP"}) public void test_Ubuntu_13_10() throws Exception { runTest(ImmutableMap.of("imageId", "7fe2ec2ff748c411cf0d6833120741778c00e1b07a83c4104296b6258b5331c4", @@ -91,7 +75,7 @@ public abstract class AbstractDockerLiveTest { .put("tags", ImmutableList.of(tag)) .putAll(flags) .build(); - jcloudsLocation = ctx.getLocationRegistry().getLocationManaged(PROVIDER, allFlags); + jcloudsLocation = mgmt.getLocationRegistry().getLocationManaged(PROVIDER, allFlags); doTest(jcloudsLocation); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/52f9ebdd/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessOpenIptablesStreamsLiveTest.java ---------------------------------------------------------------------- diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessOpenIptablesStreamsLiveTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessOpenIptablesStreamsLiveTest.java index 990556f..81b58fd 100644 --- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessOpenIptablesStreamsLiveTest.java +++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessOpenIptablesStreamsLiveTest.java @@ -26,12 +26,8 @@ import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.location.Location; import org.apache.brooklyn.api.mgmt.HasTaskChildren; import org.apache.brooklyn.api.mgmt.Task; -import org.apache.brooklyn.core.entity.factory.ApplicationBuilder; -import org.apache.brooklyn.core.internal.BrooklynProperties; import org.apache.brooklyn.core.mgmt.BrooklynTaskTags; import org.apache.brooklyn.core.test.BrooklynAppLiveTestSupport; -import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests; -import org.apache.brooklyn.core.test.entity.TestApplication; import org.apache.brooklyn.util.core.task.TaskPredicates; import org.apache.brooklyn.util.text.StringPredicates; import org.slf4j.Logger; @@ -47,25 +43,18 @@ public class SoftwareProcessOpenIptablesStreamsLiveTest extends BrooklynAppLiveT private static final Logger LOG = LoggerFactory.getLogger(SoftwareProcessOpenIptablesStreamsLiveTest.class); - protected BrooklynProperties brooklynProperties; - protected Location jcloudsLocation; - protected TestApplication app; - @Override @BeforeMethod(alwaysRun=true) public void setUp() throws Exception { - - mgmt = new LocalManagementContextForTests(BrooklynProperties.Factory.newDefault()); + super.setUp(); jcloudsLocation = mgmt.getLocationRegistry().getLocationManaged("jclouds:aws-ec2:us-west-1", ImmutableMap.<String, Object>builder() .put("osFamily", "centos") .put("osVersionRegex", "6\\..*") .put("inboundPorts", ImmutableList.of(22, 31880, 31001, 8080, 8443, 1099)) .build()); - - app = ApplicationBuilder.newManagedApp(newAppSpec(), mgmt); } @Test(groups = "Live")
