Delete entity constructors
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/2a394007 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/2a394007 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/2a394007 Branch: refs/heads/master Commit: 2a39400761afe1654201cb1e039cb3145e2df20e Parents: 15447e1 Author: Aled Sage <[email protected]> Authored: Wed May 10 14:43:07 2017 +0100 Committer: Aled Sage <[email protected]> Committed: Fri May 12 13:27:37 2017 +0100 ---------------------------------------------------------------------- .../entity/group/AbstractGroupImpl.java | 9 - .../brooklyn/entity/group/DynamicGroupImpl.java | 8 - .../core/effector/EffectorConcatenateTest.java | 106 +++++---- .../core/entity/EntitySetFromFlagTest.java | 81 +++---- .../brooklyn/core/entity/EntityTypeTest.java | 46 ++-- .../entity/OwnedChildrenDeprecatedTest.java | 215 +++++++++++++++++++ .../brooklyn/core/entity/OwnedChildrenTest.java | 160 ++++---------- .../core/test/entity/TestEntityImpl.java | 3 - .../autoscaling/AutoScalerPolicyTest.java | 41 ++-- .../autoscaling/LocallyResizableEntity.java | 49 +---- .../autoscaling/LocallyResizableEntityImpl.java | 76 +++++++ .../policy/enricher/DeltaEnrichersTests.java | 59 +++-- .../enricher/RollingMeanEnricherTest.java | 29 +-- .../RollingTimeWindowMeanEnricherTest.java | 30 +-- .../testing/mocks/RestMockSimpleEntity.java | 19 -- .../entity/brooklynnode/BrooklynNodeImpl.java | 8 - .../entity/java/VanillaJavaAppImpl.java | 14 +- .../software/base/SoftwareProcessImpl.java | 13 -- .../base/SoftwareProcessEntityTest.java | 42 ++-- .../base/lifecycle/StartStopSshDriverTest.java | 26 ++- .../apache/brooklyn/feed/jmx/JmxFeedTest.java | 47 ++-- 21 files changed, 598 insertions(+), 483 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/core/src/main/java/org/apache/brooklyn/entity/group/AbstractGroupImpl.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/entity/group/AbstractGroupImpl.java b/core/src/main/java/org/apache/brooklyn/entity/group/AbstractGroupImpl.java index a4bbf62..f1c1a6f 100644 --- a/core/src/main/java/org/apache/brooklyn/entity/group/AbstractGroupImpl.java +++ b/core/src/main/java/org/apache/brooklyn/entity/group/AbstractGroupImpl.java @@ -21,7 +21,6 @@ package org.apache.brooklyn.entity.group; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Map; import java.util.Set; import org.apache.brooklyn.api.entity.Entity; @@ -63,14 +62,6 @@ public abstract class AbstractGroupImpl extends AbstractEntity implements Abstra private Set<Entity> members = Sets.newLinkedHashSet(); - public AbstractGroupImpl() { - } - - @Deprecated - public AbstractGroupImpl(@SuppressWarnings("rawtypes") Map flags, Entity parent) { - super(flags, parent); - } - @Override public void setManagementContext(ManagementContextInternal managementContext) { super.setManagementContext(managementContext); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/core/src/main/java/org/apache/brooklyn/entity/group/DynamicGroupImpl.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicGroupImpl.java b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicGroupImpl.java index 7572430..0815d93 100644 --- a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicGroupImpl.java +++ b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicGroupImpl.java @@ -19,7 +19,6 @@ package org.apache.brooklyn.entity.group; import java.util.Collection; -import java.util.Map; import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.mgmt.Task; @@ -53,13 +52,6 @@ public class DynamicGroupImpl extends AbstractGroupImpl implements DynamicGroup private volatile MyEntitySetChangeListener setChangeListener = null; - public DynamicGroupImpl() { } - - @Deprecated - public DynamicGroupImpl(@SuppressWarnings("rawtypes") Map flags, Entity parent) { - super(flags, parent); - } - @Override public void init() { super.init(); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/core/src/test/java/org/apache/brooklyn/core/effector/EffectorConcatenateTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/core/effector/EffectorConcatenateTest.java b/core/src/test/java/org/apache/brooklyn/core/effector/EffectorConcatenateTest.java index 93692c6..a80839f 100644 --- a/core/src/test/java/org/apache/brooklyn/core/effector/EffectorConcatenateTest.java +++ b/core/src/test/java/org/apache/brooklyn/core/effector/EffectorConcatenateTest.java @@ -28,22 +28,21 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; import org.apache.brooklyn.api.entity.Entity; +import org.apache.brooklyn.api.entity.EntitySpec; +import org.apache.brooklyn.api.entity.ImplementedBy; import org.apache.brooklyn.api.mgmt.ExecutionManager; import org.apache.brooklyn.api.mgmt.Task; import org.apache.brooklyn.core.annotation.Effector; import org.apache.brooklyn.core.annotation.EffectorParam; -import org.apache.brooklyn.core.effector.MethodEffector; 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.mgmt.BrooklynTaskTags; -import org.apache.brooklyn.core.test.entity.TestApplication; -import org.apache.brooklyn.core.test.entity.TestApplicationImpl; +import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport; import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.core.task.BasicExecutionContext; import org.apache.brooklyn.util.core.task.Tasks; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -51,25 +50,37 @@ import com.google.common.base.Predicate; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; -public class EffectorConcatenateTest { - +public class EffectorConcatenateTest extends BrooklynAppUnitTestSupport { private static final Logger log = LoggerFactory.getLogger(EffectorConcatenateTest.class); private static final long TIMEOUT = 10*1000; - - public static class MyEntityImpl extends AbstractEntity { + @ImplementedBy(MyEntityImpl.class) + public static interface MyEntity extends Entity, EntityInternal { public static MethodEffector<String> CONCATENATE = new MethodEffector<String>(MyEntityImpl.class, "concatenate"); public static MethodEffector<Void> WAIT_A_BIT = new MethodEffector<Void>(MyEntityImpl.class, "waitabit"); public static MethodEffector<Void> SPAWN_CHILD = new MethodEffector<Void>(MyEntityImpl.class, "spawnchild"); - - public MyEntityImpl() { - super(); - } - public MyEntityImpl(Entity parent) { - super(parent); - } - + + @Effector(description="sample effector concatenating strings") + String concatenate(@EffectorParam(name="first", description="first argument") String first, + @EffectorParam(name="second", description="2nd arg") String second) throws Exception; + + @Effector(description="sample effector doing some waiting") + void waitabit() throws Exception; + + @Effector(description="sample effector that spawns a child task that waits a bit") + void spawnchild() throws Exception; + + AtomicReference<Task<?>> getWaitingTask(); + + /** latch is .countDown'ed by the effector at the beginning of the "waiting" point */ + CountDownLatch getNowWaitingLatch(); + + /** latch is await'ed on by the effector when it is in the "waiting" point */ + CountDownLatch getContinueFromWaitingLatch(); + } + + public static class MyEntityImpl extends AbstractEntity implements MyEntity { /** The "current task" representing the effector currently executing */ AtomicReference<Task<?>> waitingTask = new AtomicReference<Task<?>>(); @@ -78,14 +89,28 @@ public class EffectorConcatenateTest { /** latch is await'ed on by the effector when it is in the "waiting" point */ CountDownLatch continueFromWaitingLatch = new CountDownLatch(1); + + @Override + public AtomicReference<Task<?>> getWaitingTask() { + return waitingTask; + } + + @Override + public CountDownLatch getNowWaitingLatch() { + return nowWaitingLatch; + } - @Effector(description="sample effector concatenating strings") - public String concatenate(@EffectorParam(name="first", description="first argument") String first, - @EffectorParam(name="second", description="2nd arg") String second) throws Exception { + @Override + public CountDownLatch getContinueFromWaitingLatch() { + return continueFromWaitingLatch; + } + + @Override + public String concatenate(String first, String second) throws Exception { return first+second; } - @Effector(description="sample effector doing some waiting") + @Override public void waitabit() throws Exception { waitingTask.set(Tasks.current()); @@ -102,7 +127,7 @@ public class EffectorConcatenateTest { }}); } - @Effector(description="sample effector that spawns a child task that waits a bit") + @Override public void spawnchild() throws Exception { // spawn a child, then wait BasicExecutionContext.getCurrentExecutionContext().submit( @@ -121,29 +146,22 @@ public class EffectorConcatenateTest { } } - private TestApplication app; - private MyEntityImpl e; + private MyEntity entity; @BeforeMethod(alwaysRun=true) - public void setUp() { - app = new TestApplicationImpl(); - e = new MyEntityImpl(app); - Entities.startManagement(app); - } - - @AfterMethod(alwaysRun=true) - public void tearDown() { - if (app != null) Entities.destroyAll(app.getManagementContext()); + public void setUp() throws Exception { + super.setUp(); + entity = app.addChild(EntitySpec.create(MyEntity.class)); } @Test public void testCanInvokeEffector() throws Exception { // invocation map syntax - Task<String> task = e.invoke(MyEntityImpl.CONCATENATE, ImmutableMap.of("first", "a", "second", "b")); + Task<String> task = entity.invoke(MyEntity.CONCATENATE, ImmutableMap.of("first", "a", "second", "b")); assertEquals(task.get(TIMEOUT, TimeUnit.MILLISECONDS), "ab"); // method syntax - assertEquals("xy", e.concatenate("x", "y")); + assertEquals("xy", entity.concatenate("x", "y")); } @Test @@ -155,14 +173,14 @@ public class EffectorConcatenateTest { public void run() { try { // Expect "wait a bit" to tell us it's blocking - if (!e.nowWaitingLatch.await(TIMEOUT, TimeUnit.MILLISECONDS)) { + if (!entity.getNowWaitingLatch().await(TIMEOUT, TimeUnit.MILLISECONDS)) { result.set("took too long for waitabit to be waiting"); return; } // Expect "wait a bit" to have retrieved and set its task try { - Task<?> t = e.waitingTask.get(); + Task<?> t = entity.getWaitingTask().get(); String status = t.getStatusDetail(true); log.info("waitabit task says:\n"+status); if (!status.contains("waitabit extra status details")) { @@ -174,7 +192,7 @@ public class EffectorConcatenateTest { return; } } finally { - e.continueFromWaitingLatch.countDown(); + entity.getContinueFromWaitingLatch().countDown(); } } catch (Throwable t) { log.warn("Failure: "+t, t); @@ -183,7 +201,7 @@ public class EffectorConcatenateTest { }}); bg.start(); - e.invoke(MyEntityImpl.WAIT_A_BIT, ImmutableMap.<String,Object>of()) + entity.invoke(MyEntity.WAIT_A_BIT, ImmutableMap.<String,Object>of()) .get(TIMEOUT, TimeUnit.MILLISECONDS); bg.join(TIMEOUT*2); @@ -202,14 +220,14 @@ public class EffectorConcatenateTest { public void run() { try { // Expect "spawned child" to tell us it's blocking - if (!e.nowWaitingLatch.await(TIMEOUT, TimeUnit.MILLISECONDS)) { + if (!entity.getNowWaitingLatch().await(TIMEOUT, TimeUnit.MILLISECONDS)) { result.set("took too long for spawnchild's sub-task to be waiting"); return; } // Expect spawned task to be have been tagged with entity - ExecutionManager em = e.getManagementContext().getExecutionManager(); - Task<?> subtask = Iterables.find(BrooklynTaskTags.getTasksInEntityContext(em, e), new Predicate<Task<?>>() { + ExecutionManager em = entity.getManagementContext().getExecutionManager(); + Task<?> subtask = Iterables.find(BrooklynTaskTags.getTasksInEntityContext(em, entity), new Predicate<Task<?>>() { @Override public boolean apply(Task<?> input) { return "SpawnedChildName".equals(input.getDisplayName()); @@ -225,7 +243,7 @@ public class EffectorConcatenateTest { return; } } finally { - e.continueFromWaitingLatch.countDown(); + entity.getContinueFromWaitingLatch().countDown(); } } catch (Throwable t) { log.warn("Failure: "+t, t); @@ -234,7 +252,7 @@ public class EffectorConcatenateTest { }}); bg.start(); - e.invoke(MyEntityImpl.SPAWN_CHILD, ImmutableMap.<String,Object>of()) + entity.invoke(MyEntity.SPAWN_CHILD, ImmutableMap.<String,Object>of()) .get(TIMEOUT, TimeUnit.MILLISECONDS); bg.join(TIMEOUT*2); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/core/src/test/java/org/apache/brooklyn/core/entity/EntitySetFromFlagTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/EntitySetFromFlagTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/EntitySetFromFlagTest.java index c909893..7f5e8fd 100644 --- a/core/src/test/java/org/apache/brooklyn/core/entity/EntitySetFromFlagTest.java +++ b/core/src/test/java/org/apache/brooklyn/core/entity/EntitySetFromFlagTest.java @@ -23,54 +23,59 @@ import static org.testng.Assert.assertEquals; import java.util.Map; import org.apache.brooklyn.api.entity.Entity; +import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.location.PortRange; -import org.apache.brooklyn.core.entity.AbstractEntity; import org.apache.brooklyn.core.location.PortRanges; -import org.testng.annotations.Test; +import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport; +import org.apache.brooklyn.test.Asserts; import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.core.flags.SetFromFlag; +import org.apache.brooklyn.util.exceptions.Exceptions; +import org.testng.annotations.Test; + +import com.google.common.collect.ImmutableMap; -public class EntitySetFromFlagTest { +public class EntitySetFromFlagTest extends BrooklynAppUnitTestSupport { @Test public void testSetFromFlagUsingFieldName() { - MyEntity entity = new MyEntity(MutableMap.of("str1", "myval")); + MyEntity entity = newDeproxiedEntity(MutableMap.of("str1", "myval")); assertEquals(entity.str1, "myval"); } @Test public void testSetFromFlagUsingOverridenName() { - MyEntity entity = new MyEntity(MutableMap.of("altStr2", "myval")); + MyEntity entity = newDeproxiedEntity(MutableMap.of("altStr2", "myval")); assertEquals(entity.str2, "myval"); } @Test public void testSetFromFlagWhenNoDefaultIsNull() { - MyEntity entity = new MyEntity(); + MyEntity entity = newDeproxiedEntity(); assertEquals(entity.str1, null); } @Test public void testSetFromFlagUsesDefault() { - MyEntity entity = new MyEntity(); + MyEntity entity = newDeproxiedEntity(); assertEquals(entity.str3, "default str3"); } @Test public void testSetFromFlagOverridingDefault() { - MyEntity entity = new MyEntity(MutableMap.of("str3", "overridden str3")); + MyEntity entity = newDeproxiedEntity(MutableMap.of("str3", "overridden str3")); assertEquals(entity.str3, "overridden str3"); } @Test public void testSetFromFlagCastsPrimitives() { - MyEntity entity = new MyEntity(MutableMap.of("double1", 1f)); + MyEntity entity = newDeproxiedEntity(MutableMap.of("double1", 1f)); assertEquals(entity.double1, 1d); } @Test public void testSetFromFlagCastsDefault() { - MyEntity entity = new MyEntity(); + MyEntity entity = newDeproxiedEntity(); assertEquals(entity.byte1, (byte)1); assertEquals(entity.short1, (short)2); assertEquals(entity.int1, 3); @@ -92,44 +97,60 @@ public class EntitySetFromFlagTest { @Test public void testSetFromFlagCoercesDefaultToPortRange() { - MyEntity entity = new MyEntity(); + MyEntity entity = newDeproxiedEntity(); assertEquals(entity.portRange1, PortRanges.fromInteger(1234)); } @Test public void testSetFromFlagCoercesStringValueToPortRange() { - MyEntity entity = new MyEntity(MutableMap.of("portRange1", "1-3")); + MyEntity entity = newDeproxiedEntity(MutableMap.of("portRange1", "1-3")); assertEquals(entity.portRange1, new PortRanges.LinearPortRange(1, 3)); } @Test public void testSetFromFlagCoercesStringValueToInt() { - MyEntity entity = new MyEntity(MutableMap.of("int1", "123")); + MyEntity entity = newDeproxiedEntity(MutableMap.of("int1", "123")); assertEquals(entity.int1, 123); } @Test public void testSetIconUrl() { - MyEntity entity = new MyEntity(MutableMap.of("iconUrl", "/img/myicon.gif")); + MyEntity entity = newDeproxiedEntity(MutableMap.of("iconUrl", "/img/myicon.gif")); assertEquals(entity.getIconUrl(), "/img/myicon.gif"); } - @Test(expectedExceptions=IllegalArgumentException.class) - public void testFailsFastOnInvalidCoercion() {; - new MyEntity(MutableMap.of("int1", "thisisnotanint")); + @Test + public void testFailsFastOnInvalidCoercion() { + try { + newDeproxiedEntity(MutableMap.of("int1", "thisisnotanint")); + Asserts.shouldHaveFailedPreviously(); + } catch (Exception e) { + if (Exceptions.getFirstThrowableOfType(e, IllegalArgumentException.class) == null) { + throw e; + } + } } - // Fails because configure being called from inside constructor; so field is set after configure called - @Test(enabled=false) + @Test public void testSetFromFlagWithFieldThatIsExplicitySet() { - MyEntity entity = new MyEntity(MutableMap.of("str4", "myval")); + MyEntity entity = newDeproxiedEntity(MutableMap.of("str4", "myval")); assertEquals(entity.str4, "myval"); - MyEntity entity2 = new MyEntity(); + MyEntity entity2 = newDeproxiedEntity(); assertEquals(entity2.str4, "explicit str4"); } - private static class MyEntity extends AbstractEntity { + private MyEntity newDeproxiedEntity() { + return newDeproxiedEntity(ImmutableMap.of()); + } + + private MyEntity newDeproxiedEntity(Map<?, ?> config) { + Entity result = app.addChild(EntitySpec.create(Entity.class).impl(MyEntity.class) + .configure(config)); + return (MyEntity) Entities.deproxy(result); + } + + public static class MyEntity extends AbstractEntity { @SetFromFlag(defaultVal="1234") PortRange portRange1; @@ -193,21 +214,5 @@ public class EntitySetFromFlagTest { @SetFromFlag(defaultVal="true") Boolean bool2; - - MyEntity() { - super(MutableMap.of(), null); - } - - MyEntity(Map flags) { - super(flags, null); - } - - MyEntity(Entity parent) { - super(MutableMap.of(), parent); - } - - MyEntity(Map flags, Entity parent) { - super(flags, parent); - } } } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/core/src/test/java/org/apache/brooklyn/core/entity/EntityTypeTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/EntityTypeTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/EntityTypeTest.java index aac3cca..e7cf727 100644 --- a/core/src/test/java/org/apache/brooklyn/core/entity/EntityTypeTest.java +++ b/core/src/test/java/org/apache/brooklyn/core/entity/EntityTypeTest.java @@ -47,14 +47,6 @@ import java.util.Set; import javax.annotation.Nullable; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; - import org.apache.brooklyn.api.effector.Effector; import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.entity.EntitySpec; @@ -69,6 +61,13 @@ import org.apache.brooklyn.core.test.entity.TestEntity; import org.apache.brooklyn.core.test.entity.TestEntityImpl; import org.apache.brooklyn.test.Asserts; import org.apache.brooklyn.util.collections.MutableSet; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import com.google.common.base.Predicate; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; public class EntityTypeTest extends BrooklynAppUnitTestSupport { private static final AttributeSensor<String> TEST_SENSOR = Sensors.newStringSensor("test.sensor"); @@ -152,30 +151,25 @@ public class EntityTypeTest extends BrooklynAppUnitTestSupport { @Test public void testCustomSimpleName() throws Exception { - class CustomTypeNamedEntity extends AbstractEntity { - private final String typeName; - @SuppressWarnings("deprecation") - CustomTypeNamedEntity(Entity parent, String typeName) { - super(parent); - this.typeName = typeName; - } - @Override protected String getEntityTypeName() { - return typeName; - } - } - - CustomTypeNamedEntity entity2 = new CustomTypeNamedEntity(app, "a.b.with space"); - Entities.manage(entity2); + CustomTypeNamedEntity.typeName = "a.b.with space"; + Entity entity2 = app.addChild(EntitySpec.create(Entity.class).impl(CustomTypeNamedEntity.class)); assertEquals(entity2.getEntityType().getSimpleName(), "with_space"); - CustomTypeNamedEntity entity3 = new CustomTypeNamedEntity(app, "a.b.with$dollar"); - Entities.manage(entity3); + CustomTypeNamedEntity.typeName = "a.b.with$dollar"; + Entity entity3 = app.addChild(EntitySpec.create(Entity.class).impl(CustomTypeNamedEntity.class)); assertEquals(entity3.getEntityType().getSimpleName(), "with_dollar"); - CustomTypeNamedEntity entity4 = new CustomTypeNamedEntity(app, "a.nothingafterdot."); - Entities.manage(entity4); + CustomTypeNamedEntity.typeName = "a.nothingafterdot."; + Entity entity4 = app.addChild(EntitySpec.create(Entity.class).impl(CustomTypeNamedEntity.class)); assertEquals(entity4.getEntityType().getSimpleName(), "a.nothingafterdot."); } + public static class CustomTypeNamedEntity extends AbstractEntity { + static volatile String typeName; + + @Override protected String getEntityTypeName() { + return typeName; + } + } @Test public void testGetSensors() throws Exception{ http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/core/src/test/java/org/apache/brooklyn/core/entity/OwnedChildrenDeprecatedTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/OwnedChildrenDeprecatedTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/OwnedChildrenDeprecatedTest.java new file mode 100644 index 0000000..a134b6c --- /dev/null +++ b/core/src/test/java/org/apache/brooklyn/core/entity/OwnedChildrenDeprecatedTest.java @@ -0,0 +1,215 @@ +/* + * 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; + +import static org.apache.brooklyn.test.Asserts.assertEqualsIgnoringOrder; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNull; + +import org.apache.brooklyn.api.entity.Entity; +import org.apache.brooklyn.api.entity.EntitySpec; +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.test.Asserts; +import org.apache.brooklyn.util.collections.MutableMap; +import org.apache.brooklyn.util.exceptions.Exceptions; +import org.testng.annotations.Test; + +import com.google.common.collect.ImmutableList; + +public class OwnedChildrenDeprecatedTest extends BrooklynAppUnitTestSupport { + + // Tests that the deprecated "owner" still works + @Test + public void testSetOwnerInConstructorMap() { + Entity e = new AbstractEntity(MutableMap.of("owner", app)) {}; + + assertEquals(e.getParent(), app); + assertEqualsIgnoringOrder(app.getChildren(), ImmutableList.of(e)); + assertEquals(e.getApplication(), app); + } + + // Tests that the deprecated constructor still works + @Test + public void testSetParentInConstructorArgument() { + Entity e = new AbstractEntity(app) {}; + + assertEquals(e.getParent(), app); + assertEqualsIgnoringOrder(app.getChildren(), ImmutableList.of(e)); + assertEquals(e.getApplication(), app); + } + + // Tests with deprecated constructor usage + @Test + public void testSetParentWhenMatchesParentSetInConstructor() { + Entity e = new AbstractEntity(app) {}; + e.setParent(app); + + assertEquals(e.getParent(), app); + assertEqualsIgnoringOrder(app.getChildren(), ImmutableList.of(e)); + } + + // Tests with deprecated constructor usage + @Test + public void testSetParentWhenDiffersFromParentSetInConstructor() { + Entity e = new AbstractEntity(app) {}; + Entity e2 = new AbstractEntity() {}; + try { + e.setParent(e2); + Asserts.shouldHaveFailedPreviously(); + } catch (Exception ex) { + Exception uoe = Exceptions.getFirstThrowableOfType(ex, UnsupportedOperationException.class); + if (uoe == null || !uoe.toString().contains("Cannot change parent")) { + throw ex; + } + } + } + + // Tests deprecated setParent still works - should be set through EntitySpec or addChild + @Test + public void testSetParentInSetterMethod() { + Entity e = mgmt.getEntityManager().createEntity(EntitySpec.create(TestEntity.class)); + e.setParent(app); + + assertEquals(e.getParent(), app); + assertEqualsIgnoringOrder(app.getChildren(), ImmutableList.of(e)); + assertEquals(e.getApplication(), app); + } + + // Tests with deprecated setParent(Entity) + @Test + public void testSetParentWhenMatchesParentSetInSpec() { + Entity e = mgmt.getEntityManager().createEntity(EntitySpec.create(TestEntity.class).parent(app)); + e.setParent(app); + + assertEquals(e.getParent(), app); + assertEqualsIgnoringOrder(app.getChildren(), ImmutableList.of(e)); + } + + // Tests with deprecated setParent(Entity) + @Test + public void testSetParentWhenDiffersFromParentSetInSpec() { + Entity e = mgmt.getEntityManager().createEntity(EntitySpec.create(TestEntity.class).parent(app)); + Entity e2 = mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class)); + try { + e.setParent(e2); + Asserts.shouldHaveFailedPreviously(); + } catch (Exception ex) { + Exception uoe = Exceptions.getFirstThrowableOfType(ex, UnsupportedOperationException.class); + if (uoe == null || !uoe.toString().contains("Cannot change parent")) { + throw ex; + } + } + } + + // Tests deprecated addChild still works - users should instead set it through EntitySpec (or {@code addChild(EntitySpec)}) + @Test + public void testAddChild() { + Entity e = mgmt.getEntityManager().createEntity(EntitySpec.create(TestEntity.class)); + app.addChild(e); + + assertEquals(e.getParent(), app); + assertEqualsIgnoringOrder(app.getChildren(), ImmutableList.of(e)); + assertEquals(e.getApplication(), app); + } + + + + @Test(enabled = false) // FIXME fails currently + public void testRemoveChild() { + Entity e = app.addChild(EntitySpec.create(TestEntity.class)); + app.removeChild(e); + + assertEqualsIgnoringOrder(app.getChildren(), ImmutableList.of()); + assertEquals(e.getParent(), null); + } + + @Test + public void testParentalLoopForbiddenViaAddChild() { + Entity e = mgmt.getEntityManager().createEntity(EntitySpec.create(TestEntity.class)); + Entity e2 = e.addChild(EntitySpec.create(TestEntity.class)); + try { + e2.addChild(e); + Asserts.shouldHaveFailedPreviously(); + } catch (Exception ex) { + Exception cause = Exceptions.getFirstThrowableOfType(ex, IllegalStateException.class); + if (cause == null || !cause.toString().contains("loop detected trying to add child")) { + throw ex; + } + } + assertEqualsIgnoringOrder(e.getChildren(), ImmutableList.of(e2)); + assertEqualsIgnoringOrder(e2.getChildren(), ImmutableList.of()); + assertEquals(e.getParent(), null); + assertEquals(e2.getParent(), e); + } + + @Test + public void testParentalLoopForbiddenViaSetParent() { + Entity e = mgmt.getEntityManager().createEntity(EntitySpec.create(TestEntity.class)); + Entity e2 = e.addChild(EntitySpec.create(TestEntity.class)); + try { + e.setParent(e2); + Asserts.shouldHaveFailedPreviously(); + } catch (Exception ex) { + Exception cause = Exceptions.getFirstThrowableOfType(ex, IllegalStateException.class); + if (cause == null || !cause.toString().contains("loop detected trying to set parent")) { + throw ex; + } + } + assertEqualsIgnoringOrder(e.getChildren(), ImmutableList.of(e2)); + assertEqualsIgnoringOrder(e2.getChildren(), ImmutableList.of()); + assertEquals(e.getParent(), null); + assertEquals(e2.getParent(), e); + } + + @Test + public void testChildingOneselfForbidden() { + Entity e = mgmt.getEntityManager().createEntity(EntitySpec.create(TestEntity.class)); + try { + e.addChild(e); + Asserts.shouldHaveFailedPreviously(); + } catch (Exception ex) { + Exception cause = Exceptions.getFirstThrowableOfType(ex, IllegalStateException.class); + if (cause == null || !cause.toString().contains("cannot own itself")) { + throw ex; + } + } + + assertNull(e.getParent()); + assertEquals(e.getChildren(), ImmutableList.of()); + } + + @Test + public void testParentingOneselfForbidden() { + Entity e = mgmt.getEntityManager().createEntity(EntitySpec.create(TestEntity.class)); + try { + e.setParent(e); + Asserts.shouldHaveFailedPreviously(); + } catch (Exception ex) { + Exception cause = Exceptions.getFirstThrowableOfType(ex, IllegalStateException.class); + if (cause == null || !cause.toString().contains("cannot own itself")) { + throw ex; + } + } + + assertNull(e.getParent()); + assertEquals(e.getChildren(), ImmutableList.of()); + } +} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/core/src/test/java/org/apache/brooklyn/core/entity/OwnedChildrenTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/OwnedChildrenTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/OwnedChildrenTest.java index dede9aa..f750f6d 100644 --- a/core/src/test/java/org/apache/brooklyn/core/entity/OwnedChildrenTest.java +++ b/core/src/test/java/org/apache/brooklyn/core/entity/OwnedChildrenTest.java @@ -22,102 +22,62 @@ import static org.apache.brooklyn.test.Asserts.assertEqualsIgnoringOrder; 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 org.apache.brooklyn.api.entity.Application; import org.apache.brooklyn.api.entity.Entity; -import org.apache.brooklyn.core.entity.AbstractApplication; -import org.apache.brooklyn.core.entity.AbstractEntity; -import org.apache.brooklyn.core.entity.Entities; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; +import org.apache.brooklyn.api.entity.EntitySpec; +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.test.Asserts; +import org.apache.brooklyn.util.exceptions.Exceptions; import org.testng.annotations.Test; import com.google.common.collect.ImmutableList; -public class OwnedChildrenTest { +public class OwnedChildrenTest extends BrooklynAppUnitTestSupport { - private Application app; - - @BeforeMethod(alwaysRun=true) - public void setUp() { - app = new AbstractApplication() {}; - } - - @AfterMethod(alwaysRun = true) - public void tearDown(){ - if (app != null) Entities.destroyAll(app.getManagementContext()); - } - - // Tests that the deprecated "owner" still works @Test - public void testSetOwnerInConstructorMap() { - Entity e = new AbstractEntity(app) {}; + public void testAddChildUsingSpec() { + Entity e = app.addChild(EntitySpec.create(TestEntity.class)); assertEquals(e.getParent(), app); - assertEqualsIgnoringOrder(app.getChildren(), ImmutableList.of(e)); - assertEquals(e.getApplication(), app); + assertEquals(app.getChildren(), ImmutableList.of(e)); } @Test - public void testSetParentInConstructorMap() { - Entity e = new AbstractEntity(app) {}; + public void testSpecDeclaresParent() { + Entity e = mgmt.getEntityManager().createEntity(EntitySpec.create(TestEntity.class).parent(app)); assertEquals(e.getParent(), app); assertEqualsIgnoringOrder(app.getChildren(), ImmutableList.of(e)); - assertEquals(e.getApplication(), app); } @Test - public void testSetParentInConstructorArgument() { - Entity e = new AbstractEntity(app) {}; + public void testAddChildWhenMatchesParentSetInSpec() { + Entity e = app.addChild(EntitySpec.create(TestEntity.class).parent(app)); assertEquals(e.getParent(), app); assertEqualsIgnoringOrder(app.getChildren(), ImmutableList.of(e)); - assertEquals(e.getApplication(), app); } @Test - public void testSetParentInSetterMethod() { - Entity e = new AbstractEntity() {}; - e.setParent(app); - - assertEquals(e.getParent(), app); - assertEqualsIgnoringOrder(app.getChildren(), ImmutableList.of(e)); - assertEquals(e.getApplication(), app); - } - - @Test - public void testAddChild() { - Entity e = new AbstractEntity() {}; - app.addChild(e); - - assertEquals(e.getParent(), app); - assertEqualsIgnoringOrder(app.getChildren(), ImmutableList.of(e)); - assertEquals(e.getApplication(), app); - } - - @Test - public void testSetParentWhenMatchesParentSetInConstructor() { - Entity e = new AbstractEntity(app) {}; - e.setParent(app); - - assertEquals(e.getParent(), app); - assertEqualsIgnoringOrder(app.getChildren(), ImmutableList.of(e)); - } - - @Test(expectedExceptions = UnsupportedOperationException.class) - public void testSetParentWhenDiffersFromParentSetInConstructor() { - Entity e = new AbstractEntity(app) {}; - Entity e2 = new AbstractEntity() {}; - e.setParent(e2); - fail(); + public void testAddChildWhenDifferentParentSetInSpec() { + TestApplication app2 = mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class)); + try { + Entity e = app.addChild(EntitySpec.create(TestEntity.class).parent(app2)); + Asserts.shouldHaveFailedPreviously("entity="+e); + } catch (Exception ex) { + Exception cause = Exceptions.getFirstThrowableOfType(ex, IllegalArgumentException.class); + if (cause == null || !cause.toString().contains("failed because spec has different parent")) { + throw ex; + } + } } @Test public void testParentCanHaveMultipleChildren() { - Entity e = new AbstractEntity(app) {}; - Entity e2 = new AbstractEntity(app) {}; + Entity e = app.addChild(EntitySpec.create(TestEntity.class)); + Entity e2 = app.addChild(EntitySpec.create(TestEntity.class)); assertEquals(e.getParent(), app); assertEquals(e2.getParent(), app); @@ -126,9 +86,9 @@ public class OwnedChildrenTest { @Test public void testHierarchyOfOwners() { - Entity e = new AbstractEntity(app) {}; - Entity e2 = new AbstractEntity(e) {}; - Entity e3 = new AbstractEntity(e2) {}; + Entity e = app.addChild(EntitySpec.create(TestEntity.class)); + Entity e2 = e.addChild(EntitySpec.create(TestEntity.class)); + Entity e3 = e2.addChild(EntitySpec.create(TestEntity.class)); assertEquals(app.getParent(), null); assertEquals(e.getParent(), app); @@ -141,73 +101,43 @@ public class OwnedChildrenTest { assertEqualsIgnoringOrder(e3.getChildren(), ImmutableList.of()); } - @Test(enabled = false) // FIXME fails currently - public void testRemoveChild() { - Entity e = new AbstractEntity(app) {}; - app.removeChild(e); + @Test + public void testUnmanageEntityRemovedAsChild() { + Entity e = app.addChild(EntitySpec.create(TestEntity.class)); + Entities.unmanage(e); assertEqualsIgnoringOrder(app.getChildren(), ImmutableList.of()); assertEquals(e.getParent(), null); } @Test - public void testParentalLoopForbiddenViaAddChild() { - Entity e = new AbstractEntity() {}; - Entity e2 = new AbstractEntity(e) {}; - try { - e2.addChild(e); - fail(); - } catch (IllegalStateException ex) { - // success - } + public void testUnmanageParentRemovesChild() { + Entity e = app.addChild(EntitySpec.create(TestEntity.class)); + Entities.unmanage(app); - assertEqualsIgnoringOrder(e.getChildren(), ImmutableList.of(e2)); - assertEqualsIgnoringOrder(e2.getChildren(), ImmutableList.of()); - assertEquals(e.getParent(), null); - assertEquals(e2.getParent(), e); - } - - @Test - public void testParentalLoopForbiddenViaSetParent() { - Entity e = new AbstractEntity() {}; - Entity e2 = new AbstractEntity(e) {}; - try { - e.setParent(e2); - fail(); - } catch (IllegalStateException ex) { - ex.printStackTrace(); - // success - } - assertEqualsIgnoringOrder(e.getChildren(), ImmutableList.of(e2)); - assertEqualsIgnoringOrder(e2.getChildren(), ImmutableList.of()); - assertEquals(e.getParent(), null); - assertEquals(e2.getParent(), e); - } - - @Test(expectedExceptions = IllegalStateException.class) - public void testParentingOneselfForbidden() { - AbstractEntity e = new AbstractEntity() {}; - e.addChild(e); - fail(); + assertFalse(Entities.isManaged(app)); + assertFalse(Entities.isManaged(e)); } @Test public void testIsAncestor() { - AbstractEntity e = new AbstractEntity(app) {}; - AbstractEntity e2 = new AbstractEntity(e) {}; + Entity e = app.addChild(EntitySpec.create(TestEntity.class)); + Entity e2 = e.addChild(EntitySpec.create(TestEntity.class)); assertTrue(Entities.isAncestor(e2, app)); assertTrue(Entities.isAncestor(e2, e)); assertFalse(Entities.isAncestor(e2, e2)); + assertFalse(Entities.isAncestor(e, e2)); } @Test public void testIsDescendant() { - AbstractEntity e = new AbstractEntity(app) {}; - AbstractEntity e2 = new AbstractEntity(e) {}; + Entity e = app.addChild(EntitySpec.create(TestEntity.class)); + Entity e2 = e.addChild(EntitySpec.create(TestEntity.class)); assertTrue(Entities.isDescendant(app, e)); assertTrue(Entities.isDescendant(app, e2)); assertFalse(Entities.isDescendant(e2, e)); + assertFalse(Entities.isDescendant(e2, e2)); } } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/core/src/test/java/org/apache/brooklyn/core/test/entity/TestEntityImpl.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/brooklyn/core/test/entity/TestEntityImpl.java b/core/src/test/java/org/apache/brooklyn/core/test/entity/TestEntityImpl.java index b31caf2..2331b48 100644 --- a/core/src/test/java/org/apache/brooklyn/core/test/entity/TestEntityImpl.java +++ b/core/src/test/java/org/apache/brooklyn/core/test/entity/TestEntityImpl.java @@ -63,9 +63,6 @@ public class TestEntityImpl extends AbstractEntity implements TestEntity { public TestEntityImpl() { super(); } - public TestEntityImpl(Map properties) { - this(properties, null); - } public TestEntityImpl(Entity parent) { this(MutableMap.of(), parent); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyTest.java ---------------------------------------------------------------------- diff --git a/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyTest.java b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyTest.java index bdeaf17..3342959 100644 --- a/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyTest.java +++ b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyTest.java @@ -38,6 +38,7 @@ import org.apache.brooklyn.api.policy.PolicySpec; import org.apache.brooklyn.core.entity.Entities; import org.apache.brooklyn.core.entity.trait.Resizable; import org.apache.brooklyn.core.sensor.BasicNotificationSensor; +import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport; import org.apache.brooklyn.core.test.entity.TestApplication; import org.apache.brooklyn.core.test.entity.TestCluster; import org.apache.brooklyn.test.Asserts; @@ -55,7 +56,7 @@ import com.google.common.base.Stopwatch; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -public class AutoScalerPolicyTest { +public class AutoScalerPolicyTest extends BrooklynAppUnitTestSupport { private static final Logger log = LoggerFactory.getLogger(AutoScalerPolicyTest.class); @@ -69,16 +70,15 @@ public class AutoScalerPolicyTest { AutoScalerPolicy policy; TestCluster cluster; LocallyResizableEntity resizable; - TestApplication app; List<Integer> policyResizes = MutableList.of(); @BeforeMethod(alwaysRun=true) public void setUp() throws Exception { + super.setUp(); log.info("resetting "+getClass().getSimpleName()); - app = TestApplication.Factory.newManagedInstanceForTests(); cluster = app.createAndManageChild(EntitySpec.create(TestCluster.class).configure(TestCluster.INITIAL_SIZE, 1)); - resizable = new LocallyResizableEntity(cluster, cluster); - Entities.manage(resizable); + resizable = cluster.addChild(EntitySpec.create(LocallyResizableEntity.class) + .configure(LocallyResizableEntity.TEST_CLUSTER, cluster)); PolicySpec<AutoScalerPolicy> policySpec = PolicySpec.create(AutoScalerPolicy.class).configure(AutoScalerPolicy.RESIZE_OPERATOR, new ResizeOperator() { @Override public Integer resize(Entity entity, Integer desiredSize) { @@ -93,11 +93,14 @@ public class AutoScalerPolicyTest { @AfterMethod(alwaysRun=true) public void tearDown() throws Exception { - if (policy != null) policy.destroy(); - if (app != null) Entities.destroyAll(app.getManagementContext()); - cluster = null; - resizable = null; - policy = null; + try { + if (policy != null) policy.destroy(); + } finally { + super.tearDown(); + cluster = null; + resizable = null; + policy = null; + } } public void assertSizeEventually(Integer targetSize) { @@ -236,7 +239,7 @@ public class AutoScalerPolicyTest { @Test public void testNeverShrinkHotPool() throws Exception { - resizable.resizeSleepTime = 0; + resizable.setResizeSleepTime(0); resizable.resize(2); resizable.sensors().emit(AutoScalerPolicy.DEFAULT_POOL_HOT_SENSOR, message(2, 0L, 2*10L, 2*20L)); @@ -247,7 +250,7 @@ public class AutoScalerPolicyTest { @Test(groups="Integration") public void testConcurrentShrinkShrink() throws Exception { - resizable.resizeSleepTime = 250; + resizable.setResizeSleepTime(250); resizable.resize(4); resizable.sensors().emit(AutoScalerPolicy.DEFAULT_POOL_COLD_SENSOR, message(4, 30L, 4*10L, 4*20L)); // would cause pool to shrink to 3 @@ -260,7 +263,7 @@ public class AutoScalerPolicyTest { @Test(groups="Integration") public void testConcurrentGrowGrow() throws Exception { - resizable.resizeSleepTime = 250; + resizable.setResizeSleepTime(250); resizable.resize(2); resizable.sensors().emit(AutoScalerPolicy.DEFAULT_POOL_HOT_SENSOR, message(2, 41L, 2*10L, 2*20L)); // would cause pool to grow to 3 @@ -273,7 +276,7 @@ public class AutoScalerPolicyTest { @Test(groups="Integration") public void testConcurrentGrowShrink() throws Exception { - resizable.resizeSleepTime = 250; + resizable.setResizeSleepTime(250); resizable.resize(2); resizable.sensors().emit(AutoScalerPolicy.DEFAULT_POOL_HOT_SENSOR, message(2, 81L, 2*10L, 2*20L)); // would cause pool to grow to 5 @@ -286,7 +289,7 @@ public class AutoScalerPolicyTest { @Test(groups="Integration") public void testConcurrentShrinkGrow() throws Exception { - resizable.resizeSleepTime = 250; + resizable.setResizeSleepTime(250); resizable.resize(4); resizable.sensors().emit(AutoScalerPolicy.DEFAULT_POOL_COLD_SENSOR, message(4, 1L, 4*10L, 4*20L)); // would cause pool to shrink to 1 @@ -302,14 +305,14 @@ public class AutoScalerPolicyTest { @Test(groups="WIP") public void testRepeatedQueuedResizeTakesLatestValueRatherThanIntermediateValues() throws Exception { // TODO is this too time sensitive? the resize takes only 250ms so if it finishes before the next emit we'd also see size=2 - resizable.resizeSleepTime = 500; + resizable.setResizeSleepTime(250); resizable.resize(4); resizable.sensors().emit(AutoScalerPolicy.DEFAULT_POOL_COLD_SENSOR, message(4, 30L, 4*10L, 4*20L)); // shrink to 3 resizable.sensors().emit(AutoScalerPolicy.DEFAULT_POOL_COLD_SENSOR, message(4, 20L, 4*10L, 4*20L)); // shrink to 2 resizable.sensors().emit(AutoScalerPolicy.DEFAULT_POOL_COLD_SENSOR, message(4, 10L, 4*10L, 4*20L)); // shrink to 1 Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), currentSizeAsserter(resizable, 1)); - assertEquals(resizable.sizes, ImmutableList.of(4, 3, 1)); + assertEquals(resizable.getSizes(), ImmutableList.of(4, 3, 1)); } @@ -381,7 +384,7 @@ public class AutoScalerPolicyTest { assertEquals(resizable.getCurrentSize(), (Integer)1); Asserts.succeedsContinually(MutableMap.of("duration", 2000L), new Runnable() { @Override public void run() { - assertEquals(resizable.sizes, ImmutableList.of(1)); + assertEquals(resizable.getSizes(), ImmutableList.of(1)); }}); } @@ -510,7 +513,7 @@ public class AutoScalerPolicyTest { Asserts.succeedsContinually(MutableMap.of("duration", 2000L), new Runnable() { @Override public void run() { - assertEquals(resizable.sizes, ImmutableList.of(2)); + assertEquals(resizable.getSizes(), ImmutableList.of(2)); }}); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/LocallyResizableEntity.java ---------------------------------------------------------------------- diff --git a/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/LocallyResizableEntity.java b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/LocallyResizableEntity.java index 5550899..14698b4 100644 --- a/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/LocallyResizableEntity.java +++ b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/LocallyResizableEntity.java @@ -21,52 +21,23 @@ package org.apache.brooklyn.policy.autoscaling; import java.util.List; import org.apache.brooklyn.api.entity.Entity; -import org.apache.brooklyn.core.entity.AbstractEntity; +import org.apache.brooklyn.api.entity.ImplementedBy; +import org.apache.brooklyn.config.ConfigKey; +import org.apache.brooklyn.core.config.ConfigKeys; import org.apache.brooklyn.core.entity.trait.Resizable; -import org.apache.brooklyn.core.entity.trait.Startable; import org.apache.brooklyn.core.test.entity.TestCluster; -import com.google.common.base.Throwables; -import com.google.common.collect.Lists; - /** * Test class for providing a Resizable LocallyManagedEntity for policy testing * It is hooked up to a TestCluster that can be used to make assertions against */ -public class LocallyResizableEntity extends AbstractEntity implements Resizable { - List<Integer> sizes = Lists.newArrayList(); - TestCluster cluster; - long resizeSleepTime = 0; - - public LocallyResizableEntity (TestCluster tc) { - this(null, tc); - } - @SuppressWarnings("deprecation") - public LocallyResizableEntity (Entity parent, TestCluster tc) { - super(parent); - this.cluster = tc; - sensors().set(Startable.SERVICE_UP, true); - } - - @Override - public Integer resize(Integer newSize) { - try { - Thread.sleep(resizeSleepTime); - sizes.add(newSize); - return cluster.resize(newSize); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw Throwables.propagate(e); - } - } +@ImplementedBy(LocallyResizableEntityImpl.class) +public interface LocallyResizableEntity extends Entity, Resizable { + ConfigKey<TestCluster> TEST_CLUSTER = ConfigKeys.newConfigKey( + TestCluster.class, + "testCluster"); - @Override - public Integer getCurrentSize() { - return cluster.getCurrentSize(); - } + void setResizeSleepTime(long val); - @Override - public String toString() { - return getDisplayName(); - } + List<Integer> getSizes(); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/LocallyResizableEntityImpl.java ---------------------------------------------------------------------- diff --git a/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/LocallyResizableEntityImpl.java b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/LocallyResizableEntityImpl.java new file mode 100644 index 0000000..59144c4 --- /dev/null +++ b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/LocallyResizableEntityImpl.java @@ -0,0 +1,76 @@ +/* + * 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.policy.autoscaling; + +import static com.google.common.base.Preconditions.checkNotNull; + +import java.util.List; + +import org.apache.brooklyn.core.entity.AbstractEntity; +import org.apache.brooklyn.core.entity.trait.Startable; +import org.apache.brooklyn.core.test.entity.TestCluster; + +import com.google.common.base.Throwables; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; + +public class LocallyResizableEntityImpl extends AbstractEntity implements LocallyResizableEntity { + List<Integer> sizes = Lists.newArrayList(); + TestCluster cluster; + long resizeSleepTime = 0; + + @Override + public void init() { + super.init(); + this.cluster = checkNotNull(config().get(TEST_CLUSTER), "testCluster"); + sensors().set(Startable.SERVICE_UP, true); + } + + @Override + public void setResizeSleepTime(long val) { + resizeSleepTime = val; + } + + @Override + public List<Integer> getSizes() { + return ImmutableList.copyOf(sizes); + } + + @Override + public Integer resize(Integer newSize) { + try { + Thread.sleep(resizeSleepTime); + sizes.add(newSize); + return cluster.resize(newSize); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw Throwables.propagate(e); + } + } + + @Override + public Integer getCurrentSize() { + return cluster.getCurrentSize(); + } + + @Override + public String toString() { + return getDisplayName(); + } +} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/policy/src/test/java/org/apache/brooklyn/policy/enricher/DeltaEnrichersTests.java ---------------------------------------------------------------------- diff --git a/policy/src/test/java/org/apache/brooklyn/policy/enricher/DeltaEnrichersTests.java b/policy/src/test/java/org/apache/brooklyn/policy/enricher/DeltaEnrichersTests.java index 3722bcd..62cdef8 100644 --- a/policy/src/test/java/org/apache/brooklyn/policy/enricher/DeltaEnrichersTests.java +++ b/policy/src/test/java/org/apache/brooklyn/policy/enricher/DeltaEnrichersTests.java @@ -20,45 +20,35 @@ package org.apache.brooklyn.policy.enricher; import static org.testng.Assert.assertEquals; -import org.apache.brooklyn.api.entity.EntityLocal; +import org.apache.brooklyn.api.entity.Entity; +import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.mgmt.SubscriptionContext; import org.apache.brooklyn.api.sensor.AttributeSensor; import org.apache.brooklyn.api.sensor.Sensor; -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.sensor.BasicAttributeSensor; -import org.testng.annotations.AfterMethod; +import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport; +import org.apache.brooklyn.core.test.entity.TestEntity; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import com.google.common.base.Function; -public class DeltaEnrichersTests { +public class DeltaEnrichersTests extends BrooklynAppUnitTestSupport { - AbstractApplication app; - - EntityLocal producer; + Entity producer; Sensor<Integer> intSensor; Sensor<Double> avgSensor; SubscriptionContext subscription; - @BeforeMethod - public void before() { - app = new AbstractApplication() {}; - producer = new AbstractEntity(app) {}; - producer.setParent(app); - Entities.startManagement(app); - + @BeforeMethod(alwaysRun=true) + @Override + public void setUp() throws Exception { + super.setUp(); + producer = app.addChild(EntitySpec.create(TestEntity.class)); intSensor = new BasicAttributeSensor<Integer>(Integer.class, "int sensor"); } - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (app != null) Entities.destroyAll(app.getManagementContext()); - } - @Test public void testDeltaEnricher() { AttributeSensor<Integer> deltaSensor = new BasicAttributeSensor<Integer>(Integer.class, "delta sensor"); @@ -83,15 +73,16 @@ public class DeltaEnrichersTests { TimeWeightedDeltaEnricher.<Integer>getPerSecondDeltaEnricher(producer, intSensor, deltaSensor); producer.enrichers().add(delta); - delta.onEvent(intSensor.newEvent(producer, 0), 0); - assertEquals(producer.getAttribute(deltaSensor), null); + // Don't start with timestamp=0: that may be treated special delta.onEvent(intSensor.newEvent(producer, 0), 1000); + assertEquals(producer.getAttribute(deltaSensor), null); + delta.onEvent(intSensor.newEvent(producer, 0), 2000); assertEquals(producer.getAttribute(deltaSensor), 0d); - delta.onEvent(intSensor.newEvent(producer, 1), 2000); + delta.onEvent(intSensor.newEvent(producer, 1), 3000); assertEquals(producer.getAttribute(deltaSensor), 1d); - delta.onEvent(intSensor.newEvent(producer, 3), 3000); + delta.onEvent(intSensor.newEvent(producer, 3), 4000); assertEquals(producer.getAttribute(deltaSensor), 2d); - delta.onEvent(intSensor.newEvent(producer, 8), 4000); + delta.onEvent(intSensor.newEvent(producer, 8), 5000); assertEquals(producer.getAttribute(deltaSensor), 5d); } @@ -102,16 +93,16 @@ public class DeltaEnrichersTests { TimeWeightedDeltaEnricher.<Integer>getPerSecondDeltaEnricher(producer, intSensor, deltaSensor); producer.enrichers().add(delta); - delta.onEvent(intSensor.newEvent(producer, 0), 0); - delta.onEvent(intSensor.newEvent(producer, 0), 2000); + delta.onEvent(intSensor.newEvent(producer, 0), 1000); + delta.onEvent(intSensor.newEvent(producer, 0), 3000); assertEquals(producer.getAttribute(deltaSensor), 0d); - delta.onEvent(intSensor.newEvent(producer, 3), 5000); + delta.onEvent(intSensor.newEvent(producer, 3), 6000); assertEquals(producer.getAttribute(deltaSensor), 1d); - delta.onEvent(intSensor.newEvent(producer, 7), 7000); + delta.onEvent(intSensor.newEvent(producer, 7), 8000); assertEquals(producer.getAttribute(deltaSensor), 2d); - delta.onEvent(intSensor.newEvent(producer, 12), 7500); + delta.onEvent(intSensor.newEvent(producer, 12), 8500); assertEquals(producer.getAttribute(deltaSensor), 10d); - delta.onEvent(intSensor.newEvent(producer, 15), 9500); + delta.onEvent(intSensor.newEvent(producer, 15), 10500); assertEquals(producer.getAttribute(deltaSensor), 1.5d); } @@ -121,10 +112,10 @@ public class DeltaEnrichersTests { TimeWeightedDeltaEnricher<Integer> delta = new TimeWeightedDeltaEnricher<Integer>(producer, intSensor, deltaSensor, 1000, new AddConstant(123d)); producer.enrichers().add(delta); - delta.onEvent(intSensor.newEvent(producer, 0), 0); delta.onEvent(intSensor.newEvent(producer, 0), 1000); + delta.onEvent(intSensor.newEvent(producer, 0), 2000); assertEquals(producer.getAttribute(deltaSensor), 123+0d); - delta.onEvent(intSensor.newEvent(producer, 1), 2000); + delta.onEvent(intSensor.newEvent(producer, 1), 3000); assertEquals(producer.getAttribute(deltaSensor), 123+1d); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/policy/src/test/java/org/apache/brooklyn/policy/enricher/RollingMeanEnricherTest.java ---------------------------------------------------------------------- diff --git a/policy/src/test/java/org/apache/brooklyn/policy/enricher/RollingMeanEnricherTest.java b/policy/src/test/java/org/apache/brooklyn/policy/enricher/RollingMeanEnricherTest.java index b8b6f15..4db1a6f 100644 --- a/policy/src/test/java/org/apache/brooklyn/policy/enricher/RollingMeanEnricherTest.java +++ b/policy/src/test/java/org/apache/brooklyn/policy/enricher/RollingMeanEnricherTest.java @@ -20,22 +20,19 @@ package org.apache.brooklyn.policy.enricher; import static org.testng.Assert.assertEquals; -import org.apache.brooklyn.api.entity.EntityLocal; +import org.apache.brooklyn.api.entity.Entity; +import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.sensor.AttributeSensor; import org.apache.brooklyn.api.sensor.Sensor; -import org.apache.brooklyn.core.entity.AbstractApplication; -import org.apache.brooklyn.core.entity.AbstractEntity; -import org.apache.brooklyn.core.entity.Entities; import org.apache.brooklyn.core.sensor.BasicAttributeSensor; -import org.testng.annotations.AfterMethod; +import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport; +import org.apache.brooklyn.core.test.entity.TestEntity; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -public class RollingMeanEnricherTest { +public class RollingMeanEnricherTest extends BrooklynAppUnitTestSupport { - AbstractApplication app; - - EntityLocal producer; + Entity producer; Sensor<Integer> intSensor; AttributeSensor<Integer> deltaSensor; @@ -43,11 +40,10 @@ public class RollingMeanEnricherTest { RollingMeanEnricher<Integer> averager; @BeforeMethod(alwaysRun=true) - public void before() { - app = new AbstractApplication() {}; - producer = new AbstractEntity(app) {}; - producer.setParent(app); - Entities.startManagement(app); + @Override + public void setUp() throws Exception { + super.setUp(); + producer = app.addChild(EntitySpec.create(TestEntity.class)); intSensor = new BasicAttributeSensor<Integer>(Integer.class, "int sensor"); deltaSensor = new BasicAttributeSensor<Integer>(Integer.class, "delta sensor"); @@ -58,11 +54,6 @@ public class RollingMeanEnricherTest { producer.enrichers().add(averager); } - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (app != null) Entities.destroyAll(app.getManagementContext()); - } - @Test public void testDefaultAverage() { assertEquals(averager.getAverage(), null); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/policy/src/test/java/org/apache/brooklyn/policy/enricher/RollingTimeWindowMeanEnricherTest.java ---------------------------------------------------------------------- diff --git a/policy/src/test/java/org/apache/brooklyn/policy/enricher/RollingTimeWindowMeanEnricherTest.java b/policy/src/test/java/org/apache/brooklyn/policy/enricher/RollingTimeWindowMeanEnricherTest.java index 162833d..90854e7 100644 --- a/policy/src/test/java/org/apache/brooklyn/policy/enricher/RollingTimeWindowMeanEnricherTest.java +++ b/policy/src/test/java/org/apache/brooklyn/policy/enricher/RollingTimeWindowMeanEnricherTest.java @@ -20,24 +20,21 @@ package org.apache.brooklyn.policy.enricher; import static org.testng.Assert.assertEquals; -import org.apache.brooklyn.api.entity.EntityLocal; +import org.apache.brooklyn.api.entity.Entity; +import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.sensor.AttributeSensor; import org.apache.brooklyn.api.sensor.Sensor; -import org.apache.brooklyn.core.entity.AbstractApplication; -import org.apache.brooklyn.core.entity.AbstractEntity; -import org.apache.brooklyn.core.entity.Entities; import org.apache.brooklyn.core.sensor.BasicAttributeSensor; +import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport; +import org.apache.brooklyn.core.test.entity.TestEntity; import org.apache.brooklyn.policy.enricher.RollingTimeWindowMeanEnricher.ConfidenceQualifiedNumber; -import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @SuppressWarnings("deprecation") -public class RollingTimeWindowMeanEnricherTest { +public class RollingTimeWindowMeanEnricherTest extends BrooklynAppUnitTestSupport { - AbstractApplication app; - - EntityLocal producer; + Entity producer; Sensor<Integer> intSensor; AttributeSensor<Integer> deltaSensor; @@ -48,11 +45,11 @@ public class RollingTimeWindowMeanEnricherTest { private final long timePeriod = 1000; - @BeforeMethod - public void before() { - app = new AbstractApplication() {}; - producer = new AbstractEntity(app) {}; - Entities.startManagement(app); + @BeforeMethod(alwaysRun=true) + @Override + public void setUp() throws Exception { + super.setUp(); + producer = app.addChild(EntitySpec.create(TestEntity.class)); intSensor = new BasicAttributeSensor<Integer>(Integer.class, "int sensor"); deltaSensor = new BasicAttributeSensor<Integer>(Integer.class, "delta sensor"); @@ -63,11 +60,6 @@ public class RollingTimeWindowMeanEnricherTest { producer.enrichers().add(averager); } - @AfterMethod(alwaysRun=true) - public void tearDown() throws Exception { - if (app != null) Entities.destroyAll(app.getManagementContext()); - } - @Test public void testDefaultAverageWhenEmpty() { average = averager.getAverage(0); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockSimpleEntity.java ---------------------------------------------------------------------- diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockSimpleEntity.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockSimpleEntity.java index 36d3bf6..f1977a9 100644 --- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockSimpleEntity.java +++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockSimpleEntity.java @@ -18,9 +18,6 @@ */ package org.apache.brooklyn.rest.testing.mocks; -import java.util.Map; - -import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.sensor.AttributeSensor; import org.apache.brooklyn.config.ConfigKey; import org.apache.brooklyn.core.annotation.Effector; @@ -39,22 +36,6 @@ public class RestMockSimpleEntity extends SoftwareProcessImpl { private static final Logger log = LoggerFactory.getLogger(RestMockSimpleEntity.class); - public RestMockSimpleEntity() { - super(); - } - - public RestMockSimpleEntity(Entity parent) { - super(parent); - } - - public RestMockSimpleEntity(@SuppressWarnings("rawtypes") Map flags, Entity parent) { - super(flags, parent); - } - - public RestMockSimpleEntity(@SuppressWarnings("rawtypes") Map flags) { - super(flags); - } - @Override protected void connectSensors() { super.connectSensors(); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java ---------------------------------------------------------------------- diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java b/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java index 128f909..54c81d1 100644 --- a/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java +++ b/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java @@ -119,14 +119,6 @@ public class BrooklynNodeImpl extends SoftwareProcessImpl implements BrooklynNod private HttpFeed httpFeed; - public BrooklynNodeImpl() { - super(); - } - - public BrooklynNodeImpl(Entity parent) { - super(parent); - } - @Override public Class<?> getDriverInterface() { return BrooklynNodeDriver.class; http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/software/base/src/main/java/org/apache/brooklyn/entity/java/VanillaJavaAppImpl.java ---------------------------------------------------------------------- diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/java/VanillaJavaAppImpl.java b/software/base/src/main/java/org/apache/brooklyn/entity/java/VanillaJavaAppImpl.java index 6f73a4c..3609e73 100644 --- a/software/base/src/main/java/org/apache/brooklyn/entity/java/VanillaJavaAppImpl.java +++ b/software/base/src/main/java/org/apache/brooklyn/entity/java/VanillaJavaAppImpl.java @@ -23,35 +23,25 @@ import java.util.Collection; import java.util.List; import java.util.Map; -import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.entity.software.base.SoftwareProcessImpl; import org.apache.brooklyn.feed.jmx.JmxFeed; import org.apache.brooklyn.util.core.flags.SetFromFlag; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.annotations.VisibleForTesting; - public class VanillaJavaAppImpl extends SoftwareProcessImpl implements VanillaJavaApp { + private static final Logger log = LoggerFactory.getLogger(VanillaJavaApp.class); + static { JavaAppUtils.init(); } - private static final Logger log = LoggerFactory.getLogger(VanillaJavaApp.class); - @SetFromFlag protected long jmxPollPeriod; protected JmxFeed jmxFeed; - public VanillaJavaAppImpl() {} - - @VisibleForTesting - public VanillaJavaAppImpl(Map<?,?> properties, Entity parent) { - super(properties, parent); - } - @Override public String getMainClass() { return getConfig(MAIN_CLASS); } @Override http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcessImpl.java ---------------------------------------------------------------------- diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcessImpl.java b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcessImpl.java index 68b7955..89e49dd 100644 --- a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcessImpl.java +++ b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcessImpl.java @@ -89,19 +89,6 @@ public abstract class SoftwareProcessImpl extends AbstractEntity implements Soft protected boolean connectedSensors = false; - public SoftwareProcessImpl() { - super(MutableMap.of(), null); - } - public SoftwareProcessImpl(Entity parent) { - this(MutableMap.of(), parent); - } - public SoftwareProcessImpl(Map properties) { - this(properties, null); - } - public SoftwareProcessImpl(Map properties, Entity parent) { - super(properties, parent); - } - protected void setProvisioningLocation(MachineProvisioningLocation val) { if (getAttribute(PROVISIONING_LOCATION) != null) throw new IllegalStateException("Cannot change provisioning location: existing="+getAttribute(PROVISIONING_LOCATION)+"; new="+val); sensors().set(PROVISIONING_LOCATION, val); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessEntityTest.java ---------------------------------------------------------------------- diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessEntityTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessEntityTest.java index 3fa464c..ae3943b 100644 --- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessEntityTest.java +++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessEntityTest.java @@ -90,6 +90,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; +import com.google.common.reflect.TypeToken; public class SoftwareProcessEntityTest extends BrooklynAppUnitTestSupport { @@ -388,12 +389,8 @@ public class SoftwareProcessEntityTest extends BrooklynAppUnitTestSupport { @Test public void testReleaseEvenIfErrorDuringStart() throws Exception { - MyServiceImpl entity = new MyServiceImpl(app) { - @Override public Class<?> getDriverInterface() { - return SimulatedFailOnStartDriver.class; - } - }; - Entities.manage(entity); + MyService entity = app.addChild(EntitySpec.create(MyServiceWithCustomDriver.class) + .configure(MyServiceWithCustomDriver.DRIVER_CLASS, SimulatedFailOnStartDriver.class)); try { entity.start(ImmutableList.of(loc)); @@ -413,17 +410,12 @@ public class SoftwareProcessEntityTest extends BrooklynAppUnitTestSupport { Entities.unmanage(entity); } - @SuppressWarnings("rawtypes") - public void doTestReleaseEvenIfErrorDuringStop(final Class driver) throws Exception { - MyServiceImpl entity = new MyServiceImpl(app) { - @Override public Class<?> getDriverInterface() { - return driver; - } - }; - Entities.manage(entity); + public void doTestReleaseEvenIfErrorDuringStop(final Class<? extends SimulatedDriver> driver) throws Exception { + MyService entity = app.addChild(EntitySpec.create(MyServiceWithCustomDriver.class) + .configure(MyServiceWithCustomDriver.DRIVER_CLASS, driver)); entity.start(ImmutableList.of(loc)); - Task<Void> t = entity.invoke(Startable.STOP); + Task<Void> t = entity.invoke(Startable.STOP, ImmutableMap.<String, Object>of()); t.blockUntilEnded(); assertFalse(t.isError(), "Expected parent to succeed, not fail with " + Tasks.getError(t)); @@ -634,9 +626,6 @@ public class SoftwareProcessEntityTest extends BrooklynAppUnitTestSupport { } public static class MyServiceImpl extends SoftwareProcessImpl implements MyService { - public MyServiceImpl() {} - public MyServiceImpl(Entity parent) { super(parent); } - @Override protected void initEnrichers() { // Don't add enrichers messing with the SERVICE_UP state - we are setting it manually @@ -659,8 +648,21 @@ public class SoftwareProcessEntityTest extends BrooklynAppUnitTestSupport { } public static class MyServiceWithVersionImpl extends MyServiceImpl implements MyServiceWithVersion { - public MyServiceWithVersionImpl() {} - public MyServiceWithVersionImpl(Entity parent) { super(parent); } + } + + @ImplementedBy(MyServiceWithCustomDriverImpl.class) + public interface MyServiceWithCustomDriver extends MyService { + @SuppressWarnings("serial") + ConfigKey<Class<? extends SimulatedDriver>> DRIVER_CLASS = ConfigKeys.newConfigKey( + new TypeToken<Class<? extends SimulatedDriver>>() {}, + "driverClass"); + } + + public static class MyServiceWithCustomDriverImpl extends MyServiceImpl implements MyServiceWithCustomDriver { + @Override + public Class<?> getDriverInterface() { + return config().get(DRIVER_CLASS); + } } public static class SimulatedFailOnStartDriver extends SimulatedDriver { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/software/base/src/test/java/org/apache/brooklyn/entity/software/base/lifecycle/StartStopSshDriverTest.java ---------------------------------------------------------------------- diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/lifecycle/StartStopSshDriverTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/lifecycle/StartStopSshDriverTest.java index f18ccd6..a74bf04 100644 --- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/lifecycle/StartStopSshDriverTest.java +++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/lifecycle/StartStopSshDriverTest.java @@ -31,13 +31,13 @@ import java.util.Map; import java.util.Set; import org.apache.brooklyn.api.entity.EntityLocal; +import org.apache.brooklyn.api.entity.EntitySpec; +import org.apache.brooklyn.api.location.LocationSpec; import org.apache.brooklyn.core.entity.BrooklynConfigKeys; -import org.apache.brooklyn.core.entity.Entities; -import org.apache.brooklyn.core.test.entity.TestApplication; -import org.apache.brooklyn.core.test.entity.TestApplicationImpl; +import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport; import org.apache.brooklyn.core.test.entity.TestEntity; -import org.apache.brooklyn.core.test.entity.TestEntityImpl; import org.apache.brooklyn.entity.software.base.AbstractSoftwareProcessSshDriver; +import org.apache.brooklyn.location.ssh.SshMachineLocation; import org.apache.brooklyn.test.Asserts; import org.apache.brooklyn.util.collections.MutableList; import org.apache.brooklyn.util.collections.MutableSet; @@ -47,7 +47,6 @@ import org.apache.brooklyn.util.core.internal.ssh.sshj.SshjTool; import org.apache.brooklyn.util.stream.StreamGobbler; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import org.apache.brooklyn.location.ssh.SshMachineLocation; import com.google.common.base.Function; import com.google.common.collect.FluentIterable; @@ -55,7 +54,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -public class StartStopSshDriverTest { +public class StartStopSshDriverTest extends BrooklynAppUnitTestSupport { public class BasicStartStopSshDriver extends AbstractSoftwareProcessSshDriver { public BasicStartStopSshDriver(EntityLocal entity, SshMachineLocation machine) { @@ -82,15 +81,13 @@ public class StartStopSshDriverTest { } } - private TestApplication app; private TestEntity entity; private SshMachineLocationWithSshTool sshMachineLocation; private AbstractSoftwareProcessSshDriver driver; @SuppressWarnings("rawtypes") - protected static class SshMachineLocationWithSshTool extends SshMachineLocation { + public static class SshMachineLocationWithSshTool extends SshMachineLocation { SshTool lastTool; - public SshMachineLocationWithSshTool(Map flags) { super(flags); } @Override public SshTool connectSsh(Map args) { @@ -101,11 +98,12 @@ public class StartStopSshDriverTest { } @BeforeMethod(alwaysRun = true) - public void setUp() { - app = new TestApplicationImpl(); - entity = new TestEntityImpl(app); - Entities.startManagement(app); - sshMachineLocation = new SshMachineLocationWithSshTool(ImmutableMap.of("address", "localhost")); + public void setUp() throws Exception { + super.setUp(); + entity = app.addChild(EntitySpec.create(TestEntity.class)); + + sshMachineLocation = mgmt.getLocationManager().createLocation(LocationSpec.create(SshMachineLocationWithSshTool.class) + .configure("address", "localhost")); driver = new BasicStartStopSshDriver(entity, sshMachineLocation); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2a394007/software/base/src/test/java/org/apache/brooklyn/feed/jmx/JmxFeedTest.java ---------------------------------------------------------------------- diff --git a/software/base/src/test/java/org/apache/brooklyn/feed/jmx/JmxFeedTest.java b/software/base/src/test/java/org/apache/brooklyn/feed/jmx/JmxFeedTest.java index dc63361..6966a73 100644 --- a/software/base/src/test/java/org/apache/brooklyn/feed/jmx/JmxFeedTest.java +++ b/software/base/src/test/java/org/apache/brooklyn/feed/jmx/JmxFeedTest.java @@ -42,6 +42,7 @@ import javax.management.openmbean.TabularType; import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.entity.EntitySpec; +import org.apache.brooklyn.api.entity.ImplementedBy; import org.apache.brooklyn.api.sensor.AttributeSensor; import org.apache.brooklyn.api.sensor.SensorEvent; import org.apache.brooklyn.api.sensor.SensorEventListener; @@ -55,8 +56,8 @@ import org.apache.brooklyn.core.location.SimulatedLocation; import org.apache.brooklyn.core.sensor.BasicAttributeSensor; import org.apache.brooklyn.core.sensor.BasicNotificationSensor; import org.apache.brooklyn.core.sensor.Sensors; +import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport; import org.apache.brooklyn.core.test.entity.TestApplication; -import org.apache.brooklyn.core.test.entity.TestApplicationImpl; import org.apache.brooklyn.core.test.entity.TestEntity; import org.apache.brooklyn.core.test.entity.TestEntityImpl; import org.apache.brooklyn.entity.java.JmxAttributeSensor; @@ -89,7 +90,7 @@ import com.google.common.collect.Lists; * TODO tests of other JMX_AGENT_MODE are done in ActiveMqIntegrationTest; * would be nice to promote some to live here */ -public class JmxFeedTest { +public class JmxFeedTest extends BrooklynAppUnitTestSupport { // FIXME Move out the JmxHelper tests into the JmxHelperTest class @@ -101,7 +102,6 @@ public class JmxFeedTest { private static final int SHORT_WAIT_MS = 250; private JmxService jmxService; - private TestApplication app; private TestEntity entity; private JmxFeed feed; private JmxHelper jmxHelper; @@ -133,11 +133,13 @@ public class JmxFeedTest { } @BeforeMethod(alwaysRun=true) + @Override public void setUp() throws Exception { + super.setUp(); + jmxObjectName = new ObjectName(objectName); // Create an entity and configure it with the above JMX service - app = TestApplication.Factory.newManagedInstanceForTests(); entity = app.createAndManageChild(EntitySpec.create(TestEntity.class).impl(TestEntityWithJmx.class).additionalInterfaces(UsesJmx.class)); app.start(ImmutableList.of(new SimulatedLocation())); @@ -148,11 +150,14 @@ public class JmxFeedTest { @AfterMethod(alwaysRun=true) public void tearDown() throws Exception { - if (feed != null) feed.stop(); - if (jmxHelper != null) jmxHelper.disconnect(); - if (jmxService != null) jmxService.shutdown(); - if (app != null) Entities.destroyAll(app.getManagementContext()); - feed = null; + try { + if (feed != null) feed.stop(); + if (jmxHelper != null) jmxHelper.disconnect(); + if (jmxService != null) jmxService.shutdown(); + feed = null; + } finally { + super.tearDown(); + } } @Test @@ -391,9 +396,9 @@ public class JmxFeedTest { // Test reproduces functionality used in Monterey, for Venue entity being told of requestActor @Test public void testSubscribeToJmxNotificationAndEmitCorrespondingNotificationSensor() throws Exception { - TestApplication app2 = new TestApplicationImpl(); - final EntityWithEmitter entity = new EntityWithEmitter(app2); - Entities.startManagement(app2); + final TestApplication app2 = mgmt.getEntityManager().createEntity(EntitySpec.create(TestApplication.class)); + final EntityWithEmitter entity = app2.addChild(EntitySpec.create(EntityWithEmitter.class)); + try { app2.start(ImmutableList.of(new SimulatedLocation())); @@ -428,19 +433,13 @@ public class JmxFeedTest { Entities.destroyAll(app2.getManagementContext()); } } - - public static class EntityWithEmitter extends AbstractEntity { + + @ImplementedBy(EntityWithEmitterImpl.class) + public static interface EntityWithEmitter extends Entity { public static final BasicNotificationSensor<String> MY_NOTIF = new BasicNotificationSensor<String>(String.class, "test.myNotif", "My notif"); - - public EntityWithEmitter(Entity owner) { - super(owner); - } - public EntityWithEmitter(Map flags) { - super(flags); - } - public EntityWithEmitter(Map flags, Entity owner) { - super(flags, owner); - } + } + + public static class EntityWithEmitterImpl extends AbstractEntity implements EntityWithEmitter { } private Notification sendNotification(StandardEmitterMBean mbean, String type, long seq, Object userData) {
