You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by dr...@apache.org on 2017/05/17 13:43:26 UTC
[1/5] [brooklyn-server] Git Push Summary
Repository: brooklyn-server
Updated Branches:
refs/heads/master 774d75e78 -> 8c38f3b29
[5/5] brooklyn-server git commit: This closes #679
Posted by dr...@apache.org.
This closes #679
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/8c38f3b2
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/8c38f3b2
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/8c38f3b2
Branch: refs/heads/master
Commit: 8c38f3b29ff4f90387ef451cf0f1dad71dff4db2
Parents: 774d75e c1c7178
Author: Duncan Godwin <dr...@googlemail.com>
Authored: Wed May 17 14:43:13 2017 +0100
Committer: Duncan Godwin <dr...@googlemail.com>
Committed: Wed May 17 14:43:13 2017 +0100
----------------------------------------------------------------------
.../entity/group/AbstractGroupImpl.java | 9 -
.../brooklyn/entity/group/DynamicGroupImpl.java | 8 -
.../core/effector/EffectorConcatenateTest.java | 106 ++++---
.../brooklyn/core/entity/AttributeTest.java | 31 +-
.../core/entity/EntitySetFromFlagTest.java | 81 +++---
.../brooklyn/core/entity/EntitySpecTest.java | 2 +-
.../brooklyn/core/entity/EntityTypeTest.java | 46 ++-
.../entity/OwnedChildrenDeprecatedTest.java | 215 ++++++++++++++
.../brooklyn/core/entity/OwnedChildrenTest.java | 160 +++--------
.../drivers/BasicEntityDriverManagerTest.java | 33 +--
.../drivers/EntityDriverRegistryTest.java | 35 +--
.../ReflectiveEntityDriverFactoryTest.java | 63 ++--
.../RegistryEntityDriverFactoryTest.java | 31 +-
.../proxying/InternalEntityFactoryTest.java | 32 ++-
.../core/mgmt/osgi/OsgiStandaloneTest.java | 2 +-
.../mgmt/osgi/OsgiVersionMoreEntityTest.java | 28 +-
.../core/mgmt/rebind/RebindCatalogItemTest.java | 3 +
.../brooklyn/core/test/entity/TestEntity.java | 4 +
.../core/test/entity/TestEntityImpl.java | 17 +-
.../YamlRollingTimeWindowMeanEnricherTest.java | 23 +-
.../brooklyn/entity/group/DynamicGroupTest.java | 285 +++++++++++--------
.../autoscaling/AutoScalerPolicyTest.java | 41 +--
.../autoscaling/LocallyResizableEntity.java | 49 +---
.../autoscaling/LocallyResizableEntityImpl.java | 76 +++++
.../policy/enricher/DeltaEnrichersTests.java | 59 ++--
.../enricher/RollingMeanEnricherTest.java | 29 +-
.../RollingTimeWindowMeanEnricherTest.java | 30 +-
.../AbstractFollowTheSunPolicyTest.java | 42 ++-
.../followthesun/FollowTheSunModelTest.java | 43 +--
.../AbstractLoadBalancingPolicyTest.java | 19 +-
.../loadbalancing/LoadBalancingModelTest.java | 28 +-
.../LoadBalancingPolicyConcurrencyTest.java | 8 +-
.../loadbalancing/MockItemEntityImpl.java | 5 +-
.../testing/mocks/RestMockSimpleEntity.java | 19 --
.../java/org/apache/brooklyn/cli/CliTest.java | 18 +-
.../entity/brooklynnode/BrooklynNodeImpl.java | 8 -
.../entity/java/VanillaJavaAppImpl.java | 14 +-
.../software/base/SoftwareProcessImpl.java | 13 -
.../base/SoftwareProcessEntityTest.java | 47 +--
.../MachineLifecycleEffectorTasksTest.java | 16 +-
.../base/lifecycle/StartStopSshDriverTest.java | 26 +-
.../apache/brooklyn/feed/jmx/JmxFeedTest.java | 47 ++-
42 files changed, 1020 insertions(+), 831 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/8c38f3b2/server-cli/src/test/java/org/apache/brooklyn/cli/CliTest.java
----------------------------------------------------------------------
[3/5] brooklyn-server git commit: Rewrite tests: don’t rely on entity constructors
Posted by dr...@apache.org.
Rewrite tests: don’t rely on 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/9a83a598
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/9a83a598
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/9a83a598
Branch: refs/heads/master
Commit: 9a83a59858a7f89a6e392f0b4fa0d6dee6280855
Parents: 2a39400
Author: Aled Sage <al...@gmail.com>
Authored: Mon May 15 08:07:14 2017 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Mon May 15 13:49:26 2017 +0100
----------------------------------------------------------------------
.../brooklyn/core/entity/AttributeTest.java | 31 +-
.../brooklyn/core/entity/EntitySpecTest.java | 2 +-
.../drivers/BasicEntityDriverManagerTest.java | 33 +--
.../drivers/EntityDriverRegistryTest.java | 35 +--
.../ReflectiveEntityDriverFactoryTest.java | 63 ++--
.../RegistryEntityDriverFactoryTest.java | 31 +-
.../proxying/InternalEntityFactoryTest.java | 32 ++-
.../core/mgmt/osgi/OsgiStandaloneTest.java | 2 +-
.../mgmt/osgi/OsgiVersionMoreEntityTest.java | 28 +-
.../brooklyn/core/test/entity/TestEntity.java | 4 +
.../core/test/entity/TestEntityImpl.java | 14 +
.../YamlRollingTimeWindowMeanEnricherTest.java | 23 +-
.../brooklyn/entity/group/DynamicGroupTest.java | 285 +++++++++++--------
.../AbstractFollowTheSunPolicyTest.java | 42 ++-
.../followthesun/FollowTheSunModelTest.java | 43 +--
.../AbstractLoadBalancingPolicyTest.java | 19 +-
.../loadbalancing/LoadBalancingModelTest.java | 28 +-
.../LoadBalancingPolicyConcurrencyTest.java | 8 +-
.../loadbalancing/MockItemEntityImpl.java | 5 +-
.../java/org/apache/brooklyn/cli/CliTest.java | 18 +-
.../base/SoftwareProcessEntityTest.java | 5 +-
.../MachineLifecycleEffectorTasksTest.java | 16 +-
22 files changed, 419 insertions(+), 348 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/core/src/test/java/org/apache/brooklyn/core/entity/AttributeTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/AttributeTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/AttributeTest.java
index 8c4c3a0..e4e5699 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/AttributeTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/AttributeTest.java
@@ -21,46 +21,47 @@ package org.apache.brooklyn.core.entity;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNull;
+import org.apache.brooklyn.api.entity.EntitySpec;
import org.apache.brooklyn.api.sensor.AttributeSensor;
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.core.test.entity.TestEntityImpl;
-import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-public class AttributeTest {
+public class AttributeTest extends BrooklynAppUnitTestSupport {
static AttributeSensor<String> COLOR = new BasicAttributeSensor<String>(String.class, "my.color");
- TestEntityImpl e;
+ TestEntity entity;
+ TestEntityImpl entityImpl;
@BeforeMethod(alwaysRun=true)
+ @Override
public void setUp() throws Exception {
- e = new TestEntityImpl();
- }
-
- @AfterMethod(alwaysRun = true)
- public void tearDown(){
- // nothing to tear down; entity was not managed (i.e. had no management context)
+ super.setUp();
+ entity = app.addChild(EntitySpec.create(TestEntity.class));
+ entityImpl = (TestEntityImpl) Entities.deproxy(entity);
}
@Test
public void canGetAndSetAttribute() {
- e.sensors().set(COLOR, "red");
- assertEquals(e.getAttribute(COLOR), "red");
+ entity.sensors().set(COLOR, "red");
+ assertEquals(entity.getAttribute(COLOR), "red");
}
@Test
public void missingAttributeIsNull() {
- assertEquals(e.getAttribute(COLOR), null);
+ assertEquals(entity.getAttribute(COLOR), null);
}
@Test
public void canGetAttributeByNameParts() {
// Initially null
- assertNull(e.getAttributeByNameParts(COLOR.getNameParts()));
+ assertNull(entityImpl.getAttributeByNameParts(COLOR.getNameParts()));
// Once set, returns val
- e.sensors().set(COLOR, "red");
- assertEquals(e.getAttributeByNameParts(COLOR.getNameParts()), "red");
+ entity.sensors().set(COLOR, "red");
+ assertEquals(entityImpl.getAttributeByNameParts(COLOR.getNameParts()), "red");
}
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/core/src/test/java/org/apache/brooklyn/core/entity/EntitySpecTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/EntitySpecTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/EntitySpecTest.java
index fd693b4..fb84693 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/EntitySpecTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/EntitySpecTest.java
@@ -149,7 +149,7 @@ public class EntitySpecTest extends BrooklynAppUnitTestSupport {
@Test
public void testCallsConfigureAfterConstruction() throws Exception {
- AbstractEntityLegacyTest.MyEntity entity = app.createAndManageChild(EntitySpec.create(AbstractEntityLegacyTest.MyEntity.class));
+ TestEntity entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
assertEquals(entity.getConfigureCount(), 1);
assertEquals(entity.getConfigureDuringConstructionCount(), 0);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/core/src/test/java/org/apache/brooklyn/core/entity/drivers/BasicEntityDriverManagerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/drivers/BasicEntityDriverManagerTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/drivers/BasicEntityDriverManagerTest.java
index d42ccb9..589d199 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/drivers/BasicEntityDriverManagerTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/drivers/BasicEntityDriverManagerTest.java
@@ -20,53 +20,50 @@ package org.apache.brooklyn.core.entity.drivers;
import static org.testng.Assert.assertTrue;
-import org.apache.brooklyn.api.entity.drivers.DriverDependentEntity;
-import org.apache.brooklyn.core.entity.drivers.BasicEntityDriverManager;
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.api.location.LocationSpec;
import org.apache.brooklyn.core.entity.drivers.ReflectiveEntityDriverFactoryTest.MyDriver;
import org.apache.brooklyn.core.entity.drivers.ReflectiveEntityDriverFactoryTest.MyDriverDependentEntity;
import org.apache.brooklyn.core.entity.drivers.ReflectiveEntityDriverFactoryTest.MySshDriver;
import org.apache.brooklyn.core.entity.drivers.RegistryEntityDriverFactoryTest.MyOtherSshDriver;
import org.apache.brooklyn.core.location.SimulatedLocation;
-import org.testng.annotations.AfterMethod;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
+import org.apache.brooklyn.location.ssh.SshMachineLocation;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
-import org.apache.brooklyn.util.collections.MutableMap;
-public class BasicEntityDriverManagerTest {
+public class BasicEntityDriverManagerTest extends BrooklynAppUnitTestSupport {
private BasicEntityDriverManager manager;
private SshMachineLocation sshLocation;
private SimulatedLocation simulatedLocation;
-
- @BeforeMethod
+ private MyDriverDependentEntity entity;
+
+ @BeforeMethod(alwaysRun=true)
+ @Override
public void setUp() throws Exception {
+ super.setUp();
manager = new BasicEntityDriverManager();
- sshLocation = new SshMachineLocation(MutableMap.of("address", "localhost"));
- simulatedLocation = new SimulatedLocation();
+ sshLocation = mgmt.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class)
+ .configure("address", "localhost"));
+ simulatedLocation = mgmt.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
+ entity = app.addChild(EntitySpec.create(MyDriverDependentEntity.class)
+ .configure(MyDriverDependentEntity.DRIVER_CLASS, MyDriver.class));
}
- @AfterMethod
- public void tearDown(){
- // nothing to tear down; no management context created
- }
-
@Test
public void testPrefersRegisteredDriver() throws Exception {
- DriverDependentEntity<MyDriver> entity = new MyDriverDependentEntity<MyDriver>(MyDriver.class);
manager.registerDriver(MyDriver.class, SshMachineLocation.class, MyOtherSshDriver.class);
assertTrue(manager.build(entity, sshLocation) instanceof MyOtherSshDriver);
}
@Test
public void testFallsBackToReflectiveDriver() throws Exception {
- DriverDependentEntity<MyDriver> entity = new MyDriverDependentEntity<MyDriver>(MyDriver.class);
assertTrue(manager.build(entity, sshLocation) instanceof MySshDriver);
}
@Test
public void testRespectsLocationWhenDecidingOnDriver() throws Exception {
- DriverDependentEntity<MyDriver> entity = new MyDriverDependentEntity<MyDriver>(MyDriver.class);
manager.registerDriver(MyDriver.class, SimulatedLocation.class, MyOtherSshDriver.class);
assertTrue(manager.build(entity, simulatedLocation) instanceof MyOtherSshDriver);
assertTrue(manager.build(entity, sshLocation) instanceof MySshDriver);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/core/src/test/java/org/apache/brooklyn/core/entity/drivers/EntityDriverRegistryTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/drivers/EntityDriverRegistryTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/drivers/EntityDriverRegistryTest.java
index 977d380..997ae05 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/drivers/EntityDriverRegistryTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/drivers/EntityDriverRegistryTest.java
@@ -20,40 +20,35 @@ package org.apache.brooklyn.core.entity.drivers;
import static org.testng.Assert.assertTrue;
-import org.apache.brooklyn.api.entity.drivers.DriverDependentEntity;
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-import org.apache.brooklyn.core.entity.Entities;
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.api.entity.drivers.EntityDriver;
+import org.apache.brooklyn.api.location.LocationSpec;
import org.apache.brooklyn.core.entity.drivers.ReflectiveEntityDriverFactoryTest.MyDriver;
import org.apache.brooklyn.core.entity.drivers.ReflectiveEntityDriverFactoryTest.MyDriverDependentEntity;
import org.apache.brooklyn.core.entity.drivers.RegistryEntityDriverFactoryTest.MyOtherSshDriver;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.testng.annotations.AfterMethod;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
+import org.apache.brooklyn.location.ssh.SshMachineLocation;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
-public class EntityDriverRegistryTest {
+public class EntityDriverRegistryTest extends BrooklynAppUnitTestSupport {
- private ManagementContext managementContext;
private SshMachineLocation sshLocation;
-
+ private MyDriverDependentEntity entity;
+
@BeforeMethod
public void setUp() throws Exception {
- managementContext = new LocalManagementContextForTests();
- sshLocation = new SshMachineLocation(MutableMap.of("address", "localhost"));
- }
-
- @AfterMethod
- public void tearDown(){
- if (managementContext != null) Entities.destroyAll(managementContext);
+ super.setUp();
+ sshLocation = mgmt.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class)
+ .configure("address", "localhost"));
+ entity = app.addChild(EntitySpec.create(MyDriverDependentEntity.class)
+ .configure(MyDriverDependentEntity.DRIVER_CLASS, MyDriver.class));
}
@Test
public void testInstantiatesRegisteredDriver() throws Exception {
- managementContext.getEntityDriverManager().registerDriver(MyDriver.class, SshMachineLocation.class, MyOtherSshDriver.class);
- DriverDependentEntity<MyDriver> entity = new MyDriverDependentEntity<MyDriver>(MyDriver.class);
- MyDriver driver = managementContext.getEntityDriverManager().build(entity, sshLocation);
+ mgmt.getEntityDriverManager().registerDriver(MyDriver.class, SshMachineLocation.class, MyOtherSshDriver.class);
+ EntityDriver driver = mgmt.getEntityDriverManager().build(entity, sshLocation);
assertTrue(driver instanceof MyOtherSshDriver);
}
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/core/src/test/java/org/apache/brooklyn/core/entity/drivers/ReflectiveEntityDriverFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/drivers/ReflectiveEntityDriverFactoryTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/drivers/ReflectiveEntityDriverFactoryTest.java
index 0c7dcd1..889447c 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/drivers/ReflectiveEntityDriverFactoryTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/drivers/ReflectiveEntityDriverFactoryTest.java
@@ -18,46 +18,48 @@
*/
package org.apache.brooklyn.core.entity.drivers;
-import org.apache.brooklyn.location.paas.PaasLocation;
-import org.apache.brooklyn.location.paas.TestPaasLocation;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
-import org.apache.brooklyn.util.collections.MutableMap;
+import static org.testng.Assert.assertTrue;
+
import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.entity.EntityLocal;
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.api.entity.ImplementedBy;
import org.apache.brooklyn.api.entity.drivers.DriverDependentEntity;
import org.apache.brooklyn.api.entity.drivers.EntityDriver;
import org.apache.brooklyn.api.location.Location;
+import org.apache.brooklyn.api.location.LocationSpec;
+import org.apache.brooklyn.config.ConfigKey;
+import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.core.entity.AbstractEntity;
-import org.apache.brooklyn.core.entity.drivers.ReflectiveEntityDriverFactory;
-import org.testng.annotations.AfterMethod;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
+import org.apache.brooklyn.location.paas.PaasLocation;
+import org.apache.brooklyn.location.paas.TestPaasLocation;
+import org.apache.brooklyn.location.ssh.SshMachineLocation;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-import static org.testng.Assert.assertTrue;
+import com.google.common.reflect.TypeToken;
-public class ReflectiveEntityDriverFactoryTest {
+public class ReflectiveEntityDriverFactoryTest extends BrooklynAppUnitTestSupport {
private ReflectiveEntityDriverFactory factory;
private SshMachineLocation sshLocation;
private PaasLocation paasLocation;
- private DriverDependentEntity<MyDriver> entity;
+ private MyDriverDependentEntity entity;
@BeforeMethod
public void setUp() throws Exception {
+ super.setUp();
+ sshLocation = mgmt.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class)
+ .configure("address", "localhost"));
+ paasLocation = mgmt.getLocationManager().createLocation(LocationSpec.create(TestPaasLocation.class));
factory = new ReflectiveEntityDriverFactory();
- sshLocation = new SshMachineLocation(MutableMap.of("address", "localhost"));
- entity = new MyDriverDependentEntity<MyDriver>(MyDriver.class);
-
- paasLocation = new TestPaasLocation();
+ entity = app.addChild(EntitySpec.create(MyDriverDependentEntity.class)
+ .configure(MyDriverDependentEntity.DRIVER_CLASS, MyDriver.class));
}
- @AfterMethod
- public void tearDown() {
- // nothing to tear down; no management context created
- }
-
protected void assertDriverIs(Class<?> clazz, Location location) {
- MyDriver driver = factory.build(entity, location);
+ MyDriver driver = (MyDriver) factory.build(entity, location);
assertTrue(driver.getClass().equals(clazz), "driver="+driver+"; should be "+clazz);
}
@@ -109,21 +111,24 @@ public class ReflectiveEntityDriverFactoryTest {
factory.addClassSimpleNameMapping(MyDriver.class.getSimpleName()+"X", MyCustomDriver.class.getSimpleName());
assertDriverIs(MySshDriver.class, sshLocation);
}
-
- public static class MyDriverDependentEntity<D extends EntityDriver> extends AbstractEntity implements DriverDependentEntity<D> {
- private final Class<D> clazz;
- public MyDriverDependentEntity(Class<D> clazz) {
- this.clazz = clazz;
- }
-
+ @ImplementedBy(MyDriverDependentEntityImpl.class)
+ public static interface MyDriverDependentEntity extends Entity, DriverDependentEntity<EntityDriver> {
+ @SuppressWarnings("serial")
+ ConfigKey<Class<? extends EntityDriver>> DRIVER_CLASS = ConfigKeys.newConfigKey(
+ new TypeToken<Class<? extends EntityDriver>>() {},
+ "driverClass");
+ }
+
+ public static class MyDriverDependentEntityImpl extends AbstractEntity implements MyDriverDependentEntity {
@Override
- public Class<D> getDriverInterface() {
- return clazz;
+ @SuppressWarnings("unchecked")
+ public Class<EntityDriver> getDriverInterface() {
+ return (Class<EntityDriver>) config().get(DRIVER_CLASS);
}
@Override
- public D getDriver() {
+ public EntityDriver getDriver() {
throw new UnsupportedOperationException();
}
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/core/src/test/java/org/apache/brooklyn/core/entity/drivers/RegistryEntityDriverFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/drivers/RegistryEntityDriverFactoryTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/drivers/RegistryEntityDriverFactoryTest.java
index 4f079a1..60f70fa 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/drivers/RegistryEntityDriverFactoryTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/drivers/RegistryEntityDriverFactoryTest.java
@@ -23,39 +23,37 @@ import static org.testng.Assert.assertTrue;
import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.entity.EntityLocal;
-import org.apache.brooklyn.api.entity.drivers.DriverDependentEntity;
+import org.apache.brooklyn.api.entity.EntitySpec;
import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.core.entity.drivers.RegistryEntityDriverFactory;
+import org.apache.brooklyn.api.location.LocationSpec;
import org.apache.brooklyn.core.entity.drivers.ReflectiveEntityDriverFactoryTest.MyDriver;
import org.apache.brooklyn.core.entity.drivers.ReflectiveEntityDriverFactoryTest.MyDriverDependentEntity;
import org.apache.brooklyn.core.location.SimulatedLocation;
-import org.testng.annotations.AfterMethod;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
+import org.apache.brooklyn.location.ssh.SshMachineLocation;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
-import org.apache.brooklyn.util.collections.MutableMap;
-public class RegistryEntityDriverFactoryTest {
+public class RegistryEntityDriverFactoryTest extends BrooklynAppUnitTestSupport {
private RegistryEntityDriverFactory factory;
private SshMachineLocation sshLocation;
private SimulatedLocation simulatedLocation;
-
+ private MyDriverDependentEntity entity;
+
@BeforeMethod
public void setUp() throws Exception {
+ super.setUp();
factory = new RegistryEntityDriverFactory();
- sshLocation = new SshMachineLocation(MutableMap.of("address", "localhost"));
- simulatedLocation = new SimulatedLocation();
- }
-
- @AfterMethod
- public void tearDown(){
- // nothing to tear down; no management context created
+ sshLocation = mgmt.getLocationManager().createLocation(LocationSpec.create(SshMachineLocation.class)
+ .configure("address", "localhost"));
+ simulatedLocation = mgmt.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
+ entity = app.addChild(EntitySpec.create(MyDriverDependentEntity.class)
+ .configure(MyDriverDependentEntity.DRIVER_CLASS, MyDriver.class));
}
@Test
public void testHasDriver() throws Exception {
- DriverDependentEntity<MyDriver> entity = new MyDriverDependentEntity<MyDriver>(MyDriver.class);
factory.registerDriver(MyDriver.class, SshMachineLocation.class, MyOtherSshDriver.class);
assertTrue(factory.hasDriver(entity, sshLocation));
assertFalse(factory.hasDriver(entity, simulatedLocation));
@@ -63,9 +61,8 @@ public class RegistryEntityDriverFactoryTest {
@Test
public void testInstantiatesRegisteredDriver() throws Exception {
- DriverDependentEntity<MyDriver> entity = new MyDriverDependentEntity<MyDriver>(MyDriver.class);
factory.registerDriver(MyDriver.class, SshMachineLocation.class, MyOtherSshDriver.class);
- MyDriver driver = factory.build(entity, sshLocation);
+ MyDriver driver = (MyDriver) factory.build(entity, sshLocation);
assertTrue(driver instanceof MyOtherSshDriver);
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/core/src/test/java/org/apache/brooklyn/core/entity/proxying/InternalEntityFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/proxying/InternalEntityFactoryTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/proxying/InternalEntityFactoryTest.java
index 9cb7060..7439b71 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/proxying/InternalEntityFactoryTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/proxying/InternalEntityFactoryTest.java
@@ -43,19 +43,19 @@ import org.testng.annotations.Test;
public class InternalEntityFactoryTest {
- private ManagementContextInternal managementContext;
+ private ManagementContextInternal mgmt;
private InternalEntityFactory factory;
@BeforeMethod(alwaysRun=true)
public void setUp() throws Exception {
- managementContext = new LocalManagementContextForTests();
- InternalPolicyFactory policyFactory = new InternalPolicyFactory(managementContext);
- factory = new InternalEntityFactory(managementContext, managementContext.getEntityManager().getEntityTypeRegistry(), policyFactory);
+ mgmt = new LocalManagementContextForTests();
+ InternalPolicyFactory policyFactory = new InternalPolicyFactory(mgmt);
+ factory = new InternalEntityFactory(mgmt, mgmt.getEntityManager().getEntityTypeRegistry(), policyFactory);
}
@AfterMethod(alwaysRun=true)
public void tearDown() throws Exception {
- if (managementContext != null) Entities.destroyAll(managementContext);
+ if (mgmt != null) Entities.destroyAll(mgmt);
}
@Test
@@ -73,12 +73,19 @@ public class InternalEntityFactoryTest {
@Test
public void testCreatesProxy() throws Exception {
- TestApplicationImpl app = new TestApplicationImpl();
EntitySpec<Application> spec = EntitySpec.create(Application.class).impl(TestApplicationImpl.class);
+ Application app = factory.createEntity(spec);
Application proxy = factory.createEntityProxy(spec, app);
+ TestApplicationImpl deproxied = (TestApplicationImpl) Entities.deproxy(proxy);
- assertFalse(proxy instanceof TestApplicationImpl, "proxy="+app);
- assertTrue(proxy instanceof EntityProxy, "proxy="+app);
+ assertTrue(app instanceof TestApplicationImpl, "app="+app);
+
+ assertFalse(proxy instanceof TestApplicationImpl, "proxy="+proxy);
+ assertTrue(proxy instanceof EntityProxy, "proxy="+proxy);
+ assertTrue(proxy instanceof Application, "proxy="+proxy);
+
+ assertTrue(deproxied instanceof TestApplicationImpl, "deproxied="+deproxied);
+ assertFalse(deproxied instanceof EntityProxy, "deproxied="+deproxied);
}
@Test
@@ -92,13 +99,14 @@ public class InternalEntityFactoryTest {
@Test
public void testCreatesProxyImplementingAdditionalInterfaces() throws Exception {
- MyApplicationImpl app = new MyApplicationImpl();
EntitySpec<Application> spec = EntitySpec.create(Application.class).impl(MyApplicationImpl.class).additionalInterfaces(MyInterface.class);
+ Application app = factory.createEntity(spec);
Application proxy = factory.createEntityProxy(spec, app);
- assertFalse(proxy instanceof MyApplicationImpl, "proxy="+app);
- assertTrue(proxy instanceof MyInterface, "proxy="+app);
- assertTrue(proxy instanceof EntityProxy, "proxy="+app);
+ assertFalse(proxy instanceof MyApplicationImpl, "proxy="+proxy);
+ assertTrue(proxy instanceof Application, "proxy="+proxy);
+ assertTrue(proxy instanceof MyInterface, "proxy="+proxy);
+ assertTrue(proxy instanceof EntityProxy, "proxy="+proxy);
}
public interface MyInterface {
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/core/src/test/java/org/apache/brooklyn/core/mgmt/osgi/OsgiStandaloneTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/osgi/OsgiStandaloneTest.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/osgi/OsgiStandaloneTest.java
index 15b9ae9..b21ba28 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/osgi/OsgiStandaloneTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/osgi/OsgiStandaloneTest.java
@@ -170,7 +170,7 @@ public class OsgiStandaloneTest extends OsgiTestBase {
public void testLoadOsgiBundleDependencies() throws Exception {
Bundle bundle = installFromClasspath(BROOKLYN_TEST_OSGI_ENTITIES_PATH);
Assert.assertNotNull(bundle);
- Class<?> aClass = bundle.loadClass("org.apache.brooklyn.test.osgi.entities.SimpleApplicationImpl");
+ Class<?> aClass = bundle.loadClass("org.apache.brooklyn.test.osgi.entities.SimpleObject");
Object aInst = aClass.newInstance();
Assert.assertNotNull(aInst);
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/core/src/test/java/org/apache/brooklyn/core/mgmt/osgi/OsgiVersionMoreEntityTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/osgi/OsgiVersionMoreEntityTest.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/osgi/OsgiVersionMoreEntityTest.java
index f19556e..83b48c2 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/osgi/OsgiVersionMoreEntityTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/osgi/OsgiVersionMoreEntityTest.java
@@ -18,6 +18,8 @@
*/
package org.apache.brooklyn.core.mgmt.osgi;
+import static org.testng.Assert.assertTrue;
+
import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
@@ -35,9 +37,11 @@ import org.apache.brooklyn.core.catalog.internal.CatalogItemBuilder;
import org.apache.brooklyn.core.catalog.internal.CatalogItemDtoAbstract;
import org.apache.brooklyn.core.catalog.internal.CatalogUtils;
import org.apache.brooklyn.core.effector.Effectors;
+import org.apache.brooklyn.core.entity.AbstractEntity;
import org.apache.brooklyn.core.entity.Entities;
import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
+import org.apache.brooklyn.core.objs.proxy.EntityProxy;
import org.apache.brooklyn.core.objs.proxy.InternalEntityFactory;
import org.apache.brooklyn.core.objs.proxy.InternalPolicyFactory;
import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
@@ -93,18 +97,17 @@ public class OsgiVersionMoreEntityTest implements OsgiTestResources {
*/
@Test
public void testEntityProxy() throws Exception {
+ TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), BROOKLYN_TEST_OSGI_ENTITIES_PATH);
+
File storageTempDir = Os.newTempDir("osgi-standalone");
Framework framework = Osgis.getFramework(storageTempDir.getAbsolutePath(), true);
+ ManagementContextInternal managementContext = null;
try {
- ManagementContextInternal managementContext;
- InternalEntityFactory factory;
-
managementContext = new LocalManagementContextForTests();
InternalPolicyFactory policyFactory = new InternalPolicyFactory(managementContext);
- factory = new InternalEntityFactory(managementContext, managementContext.getEntityManager().getEntityTypeRegistry(), policyFactory);
+ InternalEntityFactory factory = new InternalEntityFactory(managementContext, managementContext.getEntityManager().getEntityTypeRegistry(), policyFactory);
- TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), BROOKLYN_TEST_OSGI_ENTITIES_PATH);
Bundle bundle = Osgis.install(framework, BROOKLYN_TEST_OSGI_ENTITIES_PATH);
@SuppressWarnings("unchecked")
Class<? extends Entity> bundleCls = (Class<? extends Entity>) bundle.loadClass("org.apache.brooklyn.test.osgi.entities.SimpleEntityImpl");
@@ -113,12 +116,19 @@ public class OsgiVersionMoreEntityTest implements OsgiTestResources {
@SuppressWarnings("unchecked")
EntitySpec<Entity> spec = (((EntitySpec<Entity>)EntitySpec.create(bundleInterface))).impl(bundleCls);
- Entity entity = bundleCls.newInstance();
- factory.createEntityProxy(spec, entity);
+ AbstractEntity entityImpl = (AbstractEntity) factory.createEntity(spec);
+ Entity entityProxy = factory.createEntityProxy(spec, entityImpl);
+
+ assertTrue(entityProxy instanceof EntityProxy, "proxy="+entityProxy);
+ assertTrue(entityProxy instanceof Entity, "proxy="+entityProxy);
+ assertTrue(bundleInterface.isInstance(entityProxy), "proxy="+entityProxy);
- if (managementContext != null) Entities.destroyAll(managementContext);
} finally {
- OsgiTestBase.tearDownOsgiFramework(framework, storageTempDir);
+ try {
+ if (managementContext != null) Entities.destroyAll(managementContext);
+ } finally {
+ OsgiTestBase.tearDownOsgiFramework(framework, storageTempDir);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/core/src/test/java/org/apache/brooklyn/core/test/entity/TestEntity.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/test/entity/TestEntity.java b/core/src/test/java/org/apache/brooklyn/core/test/entity/TestEntity.java
index 85cc9e2..bfada48 100644
--- a/core/src/test/java/org/apache/brooklyn/core/test/entity/TestEntity.java
+++ b/core/src/test/java/org/apache/brooklyn/core/test/entity/TestEntity.java
@@ -112,6 +112,10 @@ public interface TestEntity extends Entity, Startable, EntityLocal, EntityIntern
public Map<?,?> getConfigureProperties();
+ public int getConfigureCount();
+
+ public int getConfigureDuringConstructionCount();
+
public int getSequenceValue();
public void setSequenceValue(int value);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/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 2331b48..a2a64b9 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
@@ -58,6 +58,8 @@ public class TestEntityImpl extends AbstractEntity implements TestEntity {
protected AtomicInteger counter = new AtomicInteger(0);
protected Map<?,?> constructorProperties;
protected Map<?,?> configureProperties;
+ protected int configureCount;
+ protected int configureDuringConstructionCount;
protected List<String> callHistory = Collections.synchronizedList(Lists.<String>newArrayList());
public TestEntityImpl() {
@@ -69,11 +71,13 @@ public class TestEntityImpl extends AbstractEntity implements TestEntity {
public TestEntityImpl(Map properties, Entity parent) {
super(properties, parent);
this.constructorProperties = properties;
+ this.configureDuringConstructionCount = configureCount;
}
@Override
public AbstractEntity configure(Map flags) {
this.configureProperties = flags;
+ configureCount++;
return super.configure(flags);
}
@@ -133,6 +137,16 @@ public class TestEntityImpl extends AbstractEntity implements TestEntity {
}
@Override
+ public int getConfigureCount() {
+ return configureCount;
+ }
+
+ @Override
+ public int getConfigureDuringConstructionCount() {
+ return configureDuringConstructionCount;
+ }
+
+ @Override
public synchronized int getSequenceValue() {
return sequenceValue;
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/core/src/test/java/org/apache/brooklyn/enricher/stock/YamlRollingTimeWindowMeanEnricherTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/enricher/stock/YamlRollingTimeWindowMeanEnricherTest.java b/core/src/test/java/org/apache/brooklyn/enricher/stock/YamlRollingTimeWindowMeanEnricherTest.java
index 58eed85..a6b8208 100644
--- a/core/src/test/java/org/apache/brooklyn/enricher/stock/YamlRollingTimeWindowMeanEnricherTest.java
+++ b/core/src/test/java/org/apache/brooklyn/enricher/stock/YamlRollingTimeWindowMeanEnricherTest.java
@@ -24,22 +24,16 @@ 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.EnricherSpec;
-import org.apache.brooklyn.core.entity.AbstractApplication;
-import org.apache.brooklyn.core.entity.Entities;
import org.apache.brooklyn.core.sensor.BasicAttributeSensor;
import org.apache.brooklyn.core.sensor.BasicSensorEvent;
-import org.apache.brooklyn.enricher.stock.YamlRollingTimeWindowMeanEnricher;
-import org.apache.brooklyn.enricher.stock.YamlTimeWeightedDeltaEnricher;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
import org.apache.brooklyn.enricher.stock.YamlRollingTimeWindowMeanEnricher.ConfidenceQualifiedNumber;
import org.apache.brooklyn.entity.stock.BasicEntity;
import org.apache.brooklyn.util.time.Duration;
-import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-public class YamlRollingTimeWindowMeanEnricherTest {
-
- AbstractApplication app;
+public class YamlRollingTimeWindowMeanEnricherTest extends BrooklynAppUnitTestSupport {
BasicEntity producer;
@@ -55,10 +49,10 @@ public class YamlRollingTimeWindowMeanEnricherTest {
SubscriptionContext subscription;
@SuppressWarnings("unchecked")
- @BeforeMethod
- public void before() {
- app = new AbstractApplication() {};
- Entities.startManagement(app);
+ @BeforeMethod(alwaysRun=true)
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
producer = app.addChild(EntitySpec.create(BasicEntity.class));
intSensor = new BasicAttributeSensor<Integer>(Integer.class, "int sensor");
@@ -77,11 +71,6 @@ public class YamlRollingTimeWindowMeanEnricherTest {
.configure(YamlRollingTimeWindowMeanEnricher.WINDOW_DURATION, timePeriod));
}
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- if (app != null) Entities.destroyAll(app.getManagementContext());
- }
-
@Test
public void testDefaultAverageWhenEmpty() {
ConfidenceQualifiedNumber average = averager.getAverage(0, 0);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/core/src/test/java/org/apache/brooklyn/entity/group/DynamicGroupTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/entity/group/DynamicGroupTest.java b/core/src/test/java/org/apache/brooklyn/entity/group/DynamicGroupTest.java
index 6fd133b..f785865 100644
--- a/core/src/test/java/org/apache/brooklyn/entity/group/DynamicGroupTest.java
+++ b/core/src/test/java/org/apache/brooklyn/entity/group/DynamicGroupTest.java
@@ -31,17 +31,21 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
+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.sensor.AttributeSensor;
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.AbstractEntity;
+import org.apache.brooklyn.config.ConfigKey;
+import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.core.entity.Entities;
import org.apache.brooklyn.core.entity.EntityPredicates;
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.TestEntity;
import org.apache.brooklyn.test.Asserts;
@@ -51,7 +55,6 @@ 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;
@@ -62,29 +65,23 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
-public class DynamicGroupTest {
+public class DynamicGroupTest extends BrooklynAppUnitTestSupport {
private static final Logger LOG = LoggerFactory.getLogger(DynamicGroupTest.class);
private static final int TIMEOUT_MS = 50*1000;
private static final int VERY_SHORT_WAIT_MS = 100;
- private TestApplication app;
private DynamicGroup group;
private TestEntity e1;
private TestEntity e2;
@BeforeMethod(alwaysRun=true)
- public void setUp() {
- app = TestApplication.Factory.newManagedInstanceForTests();
- group = app.createAndManageChild(EntitySpec.create(DynamicGroup.class));
- e1 = app.createAndManageChild(EntitySpec.create(TestEntity.class));
- e2 = app.createAndManageChild(EntitySpec.create(TestEntity.class));
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- if (app != null) Entities.destroyAll(app.getManagementContext());
+ public void setUp() throws Exception {
+ super.setUp();
+ group = app.addChild(EntitySpec.create(DynamicGroup.class));
+ e1 = app.addChild(EntitySpec.create(TestEntity.class));
+ e2 = app.addChild(EntitySpec.create(TestEntity.class));
}
@Test
@@ -219,13 +216,11 @@ public class DynamicGroupTest {
// is deleted!
@Test
public void testStoppedGroupIgnoresComingAndGoingsOfEntities() throws Exception {
- Entity e3 = new AbstractEntity() {};
group.setEntityFilter(Predicates.instanceOf(TestEntity.class));
assertEqualsIgnoringOrder(group.getMembers(), ImmutableSet.of(e1, e2));
group.stop();
- e3.setParent(app);
- Entities.manage(e3);
+ Entity e3 = app.addChild(EntitySpec.create(TestEntity.class));
Asserts.succeedsContinually(MutableMap.of("timeout", VERY_SHORT_WAIT_MS), new Runnable() {
@Override
public void run() {
@@ -242,13 +237,13 @@ public class DynamicGroupTest {
@Test
public void testUnmanagedGroupIgnoresComingAndGoingsOfEntities() {
- Entity e3 = new AbstractEntity() {};
group.setEntityFilter(Predicates.instanceOf(TestEntity.class));
assertEqualsIgnoringOrder(group.getMembers(), ImmutableSet.of(e1, e2));
Entities.unmanage(group);
- e3.setParent(app);
- Entities.manage(e3);
+ @SuppressWarnings("unused")
+ Entity e3 = app.addChild(EntitySpec.create(TestEntity.class));
+
Asserts.succeedsContinually(MutableMap.of("timeout", VERY_SHORT_WAIT_MS), new Runnable() {
@Override
public void run() {
@@ -344,106 +339,99 @@ public class DynamicGroupTest {
@Test(groups="Integration")
public void testEntityAddedAndRemovedCalledSequentially() throws Exception {
final int NUM_CYCLES = 10;
- final Set<Entity> knownMembers = Sets.newLinkedHashSet();
- final AtomicInteger notificationCount = new AtomicInteger(0);
- final AtomicInteger concurrentCallsCount = new AtomicInteger(0);
- final List<Exception> exceptions = new CopyOnWriteArrayList<Exception>();
- DynamicGroupImpl group2 = new DynamicGroupImpl() {
- @Override protected void onEntityAdded(Entity item) {
- try {
- onCall("Member added: member="+item);
- assertTrue(knownMembers.add(item));
- } catch (Throwable t) {
- exceptions.add(new Exception("Error detected adding "+item, t));
- throw Exceptions.propagate(t);
- }
- }
- @Override protected void onEntityRemoved(Entity item) {
- try {
- onCall("Member removed: member="+item);
- assertTrue(knownMembers.remove(item));
- } catch (Throwable t) {
- exceptions.add(new Exception("Error detected adding "+item, t));
- throw Exceptions.propagate(t);
- }
- }
- private void onCall(String msg) {
- LOG.debug(msg+", thread="+Thread.currentThread().getName());
- try {
- assertEquals(concurrentCallsCount.incrementAndGet(), 1);
- Time.sleep(100);
- } finally {
- concurrentCallsCount.decrementAndGet();
- }
- notificationCount.incrementAndGet();
- }
- };
- group2.config().set(DynamicGroup.ENTITY_FILTER, Predicates.instanceOf(TestEntity.class));
- app.addChild(group2);
- Entities.manage(group2);
+ DynamicGroup group2 = app.addChild(EntitySpec.create(DynamicGroup.class)
+ .impl(DynamicGroupCheckingEntityAddedAndRemovedSequentially.class)
+ .configure(DynamicGroup.ENTITY_FILTER, Predicates.instanceOf(TestEntity.class)));
for (int i = 0; i < NUM_CYCLES; i++) {
TestEntity entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
Entities.unmanage(entity);
}
+ final DynamicGroupCheckingEntityAddedAndRemovedSequentially group2impl =
+ (DynamicGroupCheckingEntityAddedAndRemovedSequentially) Entities.deproxy(group2);
+
Asserts.succeedsEventually(new Runnable() {
@Override
public void run() {
- assertTrue(notificationCount.get() == (NUM_CYCLES*2) || exceptions.size() > 0);
+ assertTrue(group2impl.notificationCount.get() == (NUM_CYCLES*2) || group2impl.exceptions.size() > 0);
}});
- if (exceptions.size() > 0) {
- throw exceptions.get(0);
+ if (group2impl.exceptions.size() > 0) {
+ throw group2impl.exceptions.get(0);
}
- assertEquals(notificationCount.get(), NUM_CYCLES*2);
+ assertEquals(group2impl.notificationCount.get(), NUM_CYCLES*2);
+ }
+ public static class DynamicGroupCheckingEntityAddedAndRemovedSequentially extends DynamicGroupImpl {
+ final Set<Entity> knownMembers = Sets.newLinkedHashSet();
+ final AtomicInteger notificationCount = new AtomicInteger(0);
+ final AtomicInteger concurrentCallsCount = new AtomicInteger(0);
+ final List<Exception> exceptions = new CopyOnWriteArrayList<Exception>();
+
+ @Override
+ protected void onEntityAdded(Entity item) {
+ try {
+ onCall("Member added: member="+item);
+ assertTrue(knownMembers.add(item));
+ } catch (Throwable t) {
+ exceptions.add(new Exception("Error detected adding "+item, t));
+ throw Exceptions.propagate(t);
+ }
+ }
+ @Override
+ protected void onEntityRemoved(Entity item) {
+ try {
+ onCall("Member removed: member="+item);
+ assertTrue(knownMembers.remove(item));
+ } catch (Throwable t) {
+ exceptions.add(new Exception("Error detected adding "+item, t));
+ throw Exceptions.propagate(t);
+ }
+ }
+ private void onCall(String msg) {
+ LOG.debug(msg+", thread="+Thread.currentThread().getName());
+ try {
+ assertEquals(concurrentCallsCount.incrementAndGet(), 1);
+ Time.sleep(100);
+ } finally {
+ concurrentCallsCount.decrementAndGet();
+ }
+ notificationCount.incrementAndGet();
+ }
}
// See Deadlock in https://github.com/brooklyncentral/brooklyn/issues/378
- // TODO Now that entities are auto-managed, this test is no longer appropriate.
- // Should it be re-written or deleted?
- @Test(groups="WIP")
+ // Rewritten to avoid using entity-constructors and explicit "manage" call, so possibly not
+ // as directly applicable to the deadlock in the github issue, but that old code path is no
+ // longer possible!
+ @Test
public void testDoesNotDeadlockOnManagedAndMemberAddedConcurrently() throws Exception {
final CountDownLatch rescanReachedLatch = new CountDownLatch(1);
final CountDownLatch entityAddedReachedLatch = new CountDownLatch(1);
final CountDownLatch rescanLatch = new CountDownLatch(1);
final CountDownLatch entityAddedLatch = new CountDownLatch(1);
- final TestEntity e3 = app.addChild(EntitySpec.create(TestEntity.class));
-
- final DynamicGroupImpl group2 = new DynamicGroupImpl() {
- @Override public void rescanEntities() {
- rescanReachedLatch.countDown();
- try {
- rescanLatch.await();
- } catch (InterruptedException e) {
- Exceptions.propagate(e);
- }
- super.rescanEntities();
- }
- @Override protected void onEntityAdded(Entity item) {
- entityAddedReachedLatch.countDown();
- try {
- entityAddedLatch.await();
- } catch (InterruptedException e) {
- Exceptions.propagate(e);
- }
- super.onEntityAdded(item);
- }
- };
- group2.config().set(DynamicGroup.ENTITY_FILTER, Predicates.<Object>equalTo(e3));
- app.addChild(group2);
+ final AtomicReference<DynamicGroup> group2ref = new AtomicReference<>();
+ final AtomicReference<TestEntity> e3ref = new AtomicReference<>();
Thread t1 = new Thread(new Runnable() {
@Override public void run() {
- Entities.manage(group2);
+ DynamicGroup group2 = app.addChild(EntitySpec.create(DynamicGroupTestManagedAndMemberAddedConcurrently.class)
+ .configure("rescanReachedLatch", rescanReachedLatch)
+ .configure("entityAddedReachedLatch", entityAddedReachedLatch)
+ .configure("rescanLatch", rescanLatch)
+ .configure("entityAddedLatch", entityAddedLatch)
+ .configure(DynamicGroup.ENTITY_FILTER, EntityPredicates.displayNameEqualTo("e3")));
+ group2ref.set(group2);
}});
Thread t2 = new Thread(new Runnable() {
@Override public void run() {
- Entities.manage(e3);
+ TestEntity e3 = app.addChild(EntitySpec.create(TestEntity.class)
+ .displayName("e3"));
+ e3ref.set(e3);
}});
t1.start();
@@ -469,48 +457,66 @@ public class DynamicGroupTest {
Asserts.succeedsEventually(new Runnable() {
@Override
public void run() {
- assertEqualsIgnoringOrder(group2.getMembers(), ImmutableSet.of(e3));
+ assertEqualsIgnoringOrder(group2ref.get().getMembers(), ImmutableSet.of(e3ref.get()));
}});
}
+ @ImplementedBy(DynamicGroupTestManagedAndMemberAddedConcurrentlyImpl.class)
+ public interface DynamicGroupTestManagedAndMemberAddedConcurrently extends DynamicGroup {
+ ConfigKey<CountDownLatch> RESCAN_REACHED_LATCH = ConfigKeys.newConfigKey(CountDownLatch.class, "rescanReachedLatch");
+ ConfigKey<CountDownLatch> ENTITY_ADDED_REACHED_LATCH = ConfigKeys.newConfigKey(CountDownLatch.class, "entityAddedReachedLatch");
+ ConfigKey<CountDownLatch> RESCAN_LATCH = ConfigKeys.newConfigKey(CountDownLatch.class, "rescanLatch");
+ ConfigKey<CountDownLatch> ENTITY_ADDED_LATCH = ConfigKeys.newConfigKey(CountDownLatch.class, "entityAddedLatch");
+ }
+ public static class DynamicGroupTestManagedAndMemberAddedConcurrentlyImpl extends DynamicGroupImpl implements DynamicGroupTestManagedAndMemberAddedConcurrently {
+ CountDownLatch rescanReachedLatch;
+ CountDownLatch entityAddedReachedLatch;
+ CountDownLatch rescanLatch;
+ CountDownLatch entityAddedLatch;
+
+ @Override
+ public void init() {
+ super.init();
+ rescanReachedLatch = config().get(RESCAN_REACHED_LATCH);
+ entityAddedReachedLatch = config().get(ENTITY_ADDED_REACHED_LATCH);
+ rescanLatch = config().get(RESCAN_LATCH);
+ entityAddedLatch = config().get(ENTITY_ADDED_LATCH);
+ }
+
+ @Override public void rescanEntities() {
+ rescanReachedLatch.countDown();
+ try {
+ rescanLatch.await();
+ } catch (InterruptedException e) {
+ Exceptions.propagate(e);
+ }
+ super.rescanEntities();
+ }
+ @Override protected void onEntityAdded(Entity item) {
+ entityAddedReachedLatch.countDown();
+ try {
+ entityAddedLatch.await();
+ } catch (InterruptedException e) {
+ Exceptions.propagate(e);
+ }
+ super.onEntityAdded(item);
+ }
+ }
// See deadlock in https://issues.apache.org/jira/browse/BROOKLYN-66
@Test
public void testDoesNotDeadlockOnUnmanageWhileOtherMemberBeingAdded() throws Exception {
- final CountDownLatch removingMemberReachedLatch = new CountDownLatch(1);
- final CountDownLatch addingMemberReachedLatch = new CountDownLatch(1);
- final CountDownLatch addingMemberContinueLatch = new CountDownLatch(1);
- final AtomicBoolean addingMemberDoLatching = new AtomicBoolean(false);
final List<Entity> membersAdded = new CopyOnWriteArrayList<Entity>();
- final DynamicGroupImpl group2 = new DynamicGroupImpl() {
- private final BasicSensorSupport interceptedSensors = new BasicSensorSupport() {
- @Override
- public <T> void emit(Sensor<T> sensor, T val) {
- // intercept inside AbstractGroup.addMember, while it still holds lock on members
- if (sensor == AbstractGroup.MEMBER_ADDED && addingMemberDoLatching.get()) {
- addingMemberReachedLatch.countDown();
- try {
- addingMemberContinueLatch.await();
- } catch (InterruptedException e) {
- throw Exceptions.propagate(e);
- }
- }
- super.emit(sensor, val);
- }
- };
- @Override
- public BasicSensorSupport sensors() {
- return interceptedSensors;
- }
- @Override
- public boolean removeMember(final Entity member) {
- removingMemberReachedLatch.countDown();
- return super.removeMember(member);
- }
- };
- group2.config().set(DynamicGroup.MEMBER_DELEGATE_CHILDREN, true);
- app.addChild(group2);
- Entities.manage(group2);
+ final DynamicGroup group2 = app.addChild(EntitySpec.create(DynamicGroup.class)
+ .impl(DynamicGroupTestingUnmanageWhileOtherMemberBeingAdded.class)
+ .configure(DynamicGroup.MEMBER_DELEGATE_CHILDREN, true));
+
+ DynamicGroupTestingUnmanageWhileOtherMemberBeingAdded group2impl =
+ (DynamicGroupTestingUnmanageWhileOtherMemberBeingAdded) Entities.deproxy(group2);
+ final CountDownLatch removingMemberReachedLatch = group2impl.removingMemberReachedLatch;
+ final CountDownLatch addingMemberReachedLatch = group2impl.addingMemberReachedLatch;
+ final CountDownLatch addingMemberContinueLatch = group2impl.addingMemberContinueLatch;
+ final AtomicBoolean addingMemberDoLatching = group2impl.addingMemberDoLatching;
app.subscriptions().subscribe(group2, AbstractGroup.MEMBER_ADDED, new SensorEventListener<Entity>() {
@Override public void onEvent(SensorEvent<Entity> event) {
@@ -553,6 +559,37 @@ public class DynamicGroupTest {
t2.interrupt();
}
}
+ public static class DynamicGroupTestingUnmanageWhileOtherMemberBeingAdded extends DynamicGroupImpl {
+ final CountDownLatch removingMemberReachedLatch = new CountDownLatch(1);
+ final CountDownLatch addingMemberReachedLatch = new CountDownLatch(1);
+ final CountDownLatch addingMemberContinueLatch = new CountDownLatch(1);
+ final AtomicBoolean addingMemberDoLatching = new AtomicBoolean(false);
+
+ private final BasicSensorSupport interceptedSensors = new BasicSensorSupport() {
+ @Override
+ public <T> void emit(Sensor<T> sensor, T val) {
+ // intercept inside AbstractGroup.addMember, while it still holds lock on members
+ if (sensor == AbstractGroup.MEMBER_ADDED && addingMemberDoLatching.get()) {
+ addingMemberReachedLatch.countDown();
+ try {
+ addingMemberContinueLatch.await();
+ } catch (InterruptedException e) {
+ throw Exceptions.propagate(e);
+ }
+ }
+ super.emit(sensor, val);
+ }
+ };
+ @Override
+ public BasicSensorSupport sensors() {
+ return interceptedSensors;
+ }
+ @Override
+ public boolean removeMember(final Entity member) {
+ removingMemberReachedLatch.countDown();
+ return super.removeMember(member);
+ }
+ };
@Test
public void testOnlyMatchesEntitiesInSameApplication() {
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/policy/src/test/java/org/apache/brooklyn/policy/followthesun/AbstractFollowTheSunPolicyTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/org/apache/brooklyn/policy/followthesun/AbstractFollowTheSunPolicyTest.java b/policy/src/test/java/org/apache/brooklyn/policy/followthesun/AbstractFollowTheSunPolicyTest.java
index b973c11..dff0f25 100644
--- a/policy/src/test/java/org/apache/brooklyn/policy/followthesun/AbstractFollowTheSunPolicyTest.java
+++ b/policy/src/test/java/org/apache/brooklyn/policy/followthesun/AbstractFollowTheSunPolicyTest.java
@@ -30,13 +30,15 @@ import org.apache.brooklyn.api.entity.EntitySpec;
import org.apache.brooklyn.api.entity.Group;
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.SimulatedLocation;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
import org.apache.brooklyn.core.test.entity.TestApplication;
import org.apache.brooklyn.entity.group.DynamicGroup;
+import org.apache.brooklyn.policy.loadbalancing.BalanceableContainer;
+import org.apache.brooklyn.policy.loadbalancing.MockContainerEntity;
+import org.apache.brooklyn.policy.loadbalancing.MockItemEntity;
+import org.apache.brooklyn.policy.loadbalancing.MockItemEntityImpl;
+import org.apache.brooklyn.policy.loadbalancing.Movable;
import org.apache.brooklyn.test.Asserts;
import org.apache.brooklyn.util.collections.MutableMap;
import org.apache.brooklyn.util.time.Time;
@@ -44,11 +46,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
-import org.apache.brooklyn.policy.loadbalancing.BalanceableContainer;
-import org.apache.brooklyn.policy.loadbalancing.MockContainerEntity;
-import org.apache.brooklyn.policy.loadbalancing.MockItemEntity;
-import org.apache.brooklyn.policy.loadbalancing.MockItemEntityImpl;
-import org.apache.brooklyn.policy.loadbalancing.Movable;
import com.google.common.base.Function;
import com.google.common.base.Predicates;
@@ -57,7 +54,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
-public class AbstractFollowTheSunPolicyTest {
+public abstract class AbstractFollowTheSunPolicyTest extends BrooklynAppUnitTestSupport {
private static final Logger LOG = LoggerFactory.getLogger(AbstractFollowTheSunPolicyTest.class);
@@ -66,8 +63,6 @@ public class AbstractFollowTheSunPolicyTest {
protected static final long CONTAINER_STARTUP_DELAY_MS = 100;
- protected TestApplication app;
- protected ManagementContext managementContext;
protected SimulatedLocation loc1;
protected SimulatedLocation loc2;
protected FollowTheSunPool pool;
@@ -78,17 +73,16 @@ public class AbstractFollowTheSunPolicyTest {
protected Random random = new Random();
@BeforeMethod(alwaysRun=true)
+ @Override
public void setUp() throws Exception {
+ super.setUp();
LOG.debug("In AbstractFollowTheSunPolicyTest.setUp()");
MockItemEntityImpl.totalMoveCount.set(0);
MockItemEntityImpl.lastMoveTime.set(0);
- managementContext = LocalManagementContextForTests.newInstance();
- app = ApplicationBuilder.newManagedApp(TestApplication.class, managementContext);
-
- loc1 = managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class).configure("name", "loc1"));
- loc2 = managementContext.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class).configure("name", "loc2"));
+ loc1 = mgmt.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class).configure("name", "loc1"));
+ loc2 = mgmt.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class).configure("name", "loc2"));
containerGroup = app.createAndManageChild(EntitySpec.create(DynamicGroup.class)
.displayName("containerGroup")
@@ -106,11 +100,15 @@ public class AbstractFollowTheSunPolicyTest {
}
@AfterMethod(alwaysRun=true)
- public void tearDown() {
- if (pool != null && policy != null) pool.policies().remove(policy);
- if (app != null) Entities.destroyAll(app.getManagementContext());
- MockItemEntityImpl.totalMoveCount.set(0);
- MockItemEntityImpl.lastMoveTime.set(0);
+ @Override
+ public void tearDown() throws Exception {
+ try {
+ if (pool != null && policy != null) pool.policies().remove(policy);
+ } finally {
+ super.tearDown();
+ MockItemEntityImpl.totalMoveCount.set(0);
+ MockItemEntityImpl.lastMoveTime.set(0);
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/policy/src/test/java/org/apache/brooklyn/policy/followthesun/FollowTheSunModelTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/org/apache/brooklyn/policy/followthesun/FollowTheSunModelTest.java b/policy/src/test/java/org/apache/brooklyn/policy/followthesun/FollowTheSunModelTest.java
index 29344aa..c0956f0 100644
--- a/policy/src/test/java/org/apache/brooklyn/policy/followthesun/FollowTheSunModelTest.java
+++ b/policy/src/test/java/org/apache/brooklyn/policy/followthesun/FollowTheSunModelTest.java
@@ -22,41 +22,48 @@ import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
+import org.apache.brooklyn.api.entity.EntitySpec;
import org.apache.brooklyn.api.location.Location;
+import org.apache.brooklyn.api.location.LocationSpec;
import org.apache.brooklyn.core.location.SimulatedLocation;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
import org.apache.brooklyn.policy.loadbalancing.MockContainerEntity;
-import org.apache.brooklyn.policy.loadbalancing.MockContainerEntityImpl;
import org.apache.brooklyn.policy.loadbalancing.MockItemEntity;
-import org.apache.brooklyn.policy.loadbalancing.MockItemEntityImpl;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
-public class FollowTheSunModelTest {
+public class FollowTheSunModelTest extends BrooklynAppUnitTestSupport {
- private Location loc1 = new SimulatedLocation(DefaultFollowTheSunModel.newHashMap("name","loc1"));
- private Location loc2 = new SimulatedLocation(DefaultFollowTheSunModel.newHashMap("name","loc2"));
- private MockContainerEntity container1 = new MockContainerEntityImpl();
- private MockContainerEntity container2 = new MockContainerEntityImpl();
- private MockItemEntity item1 = new MockItemEntityImpl();
- private MockItemEntity item2 = new MockItemEntityImpl();
- private MockItemEntity item3 = new MockItemEntityImpl();
+ private Location loc1;
+ private Location loc2;
+ private MockContainerEntity container1;
+ private MockContainerEntity container2;
+ private MockItemEntity item1;
+ private MockItemEntity item2;
+ private MockItemEntity item3;
private DefaultFollowTheSunModel<MockContainerEntity, MockItemEntity> model;
@BeforeMethod(alwaysRun=true)
+ @Override
public void setUp() throws Exception {
+ super.setUp();
model = new DefaultFollowTheSunModel<MockContainerEntity, MockItemEntity>("myname");
+
+ loc1 = mgmt.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class)
+ .configure("name","loc1"));
+ loc2 = mgmt.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class)
+ .configure("name","loc2"));
+ container1 = app.addChild(EntitySpec.create(MockContainerEntity.class));
+ container2 = app.addChild(EntitySpec.create(MockContainerEntity.class));
+ item1 = app.addChild(EntitySpec.create(MockItemEntity.class));
+ item2 = app.addChild(EntitySpec.create(MockItemEntity.class));
+ item3 = app.addChild(EntitySpec.create(MockItemEntity.class));
}
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- // noting to tear down; no management context created
- }
-
@Test
public void testSimpleAddAndRemove() throws Exception {
model.onContainerAdded(container1, loc1);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/AbstractLoadBalancingPolicyTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/AbstractLoadBalancingPolicyTest.java b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/AbstractLoadBalancingPolicyTest.java
index 8b2c387..faf4fae 100644
--- a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/AbstractLoadBalancingPolicyTest.java
+++ b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/AbstractLoadBalancingPolicyTest.java
@@ -32,9 +32,9 @@ import org.apache.brooklyn.api.entity.Group;
import org.apache.brooklyn.api.sensor.AttributeSensor;
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.config.BasicConfigKey;
-import org.apache.brooklyn.core.entity.Entities;
import org.apache.brooklyn.core.location.SimulatedLocation;
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.entity.group.DynamicGroup;
import org.apache.brooklyn.test.Asserts;
@@ -53,7 +53,7 @@ import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-public class AbstractLoadBalancingPolicyTest {
+public abstract class AbstractLoadBalancingPolicyTest extends BrooklynAppUnitTestSupport {
private static final Logger LOG = LoggerFactory.getLogger(AbstractLoadBalancingPolicyTest.class);
@@ -68,7 +68,6 @@ public class AbstractLoadBalancingPolicyTest {
public static final ConfigKey<Double> LOW_THRESHOLD_CONFIG_KEY = new BasicConfigKey<Double>(Double.class, TEST_METRIC.getName()+".threshold.low", "desc", 0.0);
public static final ConfigKey<Double> HIGH_THRESHOLD_CONFIG_KEY = new BasicConfigKey<Double>(Double.class, TEST_METRIC.getName()+".threshold.high", "desc", 0.0);
- protected TestApplication app;
protected SimulatedLocation loc;
protected BalanceableWorkerPool pool;
protected DefaultBalanceablePoolModel<Entity, Entity> model;
@@ -78,7 +77,9 @@ public class AbstractLoadBalancingPolicyTest {
protected Random random = new Random();
@BeforeMethod(alwaysRun=true)
- public void before() {
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
LOG.debug("In AbstractLoadBalancingPolicyTest.before()");
MockItemEntityImpl.totalMoveCount.set(0);
@@ -103,9 +104,13 @@ public class AbstractLoadBalancingPolicyTest {
}
@AfterMethod(alwaysRun=true)
- public void after() {
- if (policy != null) policy.destroy();
- if (app != null) Entities.destroyAll(app.getManagementContext());
+ @Override
+ public void tearDown() throws Exception {
+ try {
+ if (policy != null) policy.destroy();
+ } finally {
+ super.tearDown();
+ }
}
// Using this utility, as it gives more info about the workrates of all containers rather than just the one that differs
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/LoadBalancingModelTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/LoadBalancingModelTest.java b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/LoadBalancingModelTest.java
index d96f509..35f6878 100644
--- a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/LoadBalancingModelTest.java
+++ b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/LoadBalancingModelTest.java
@@ -22,33 +22,37 @@ import static org.testng.Assert.assertEquals;
import java.util.Collections;
-import org.testng.annotations.AfterMethod;
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
-public class LoadBalancingModelTest {
+public class LoadBalancingModelTest extends BrooklynAppUnitTestSupport {
private static final double PRECISION = 0.00001;
- private MockContainerEntity container1 = new MockContainerEntityImpl();
- private MockContainerEntity container2 = new MockContainerEntityImpl();
- private MockItemEntity item1 = new MockItemEntityImpl();
- private MockItemEntity item2 = new MockItemEntityImpl();
- private MockItemEntity item3 = new MockItemEntityImpl();
+ private MockContainerEntity container1;
+ private MockContainerEntity container2;
+ private MockItemEntity item1;
+ private MockItemEntity item2;
+ private MockItemEntity item3;
private DefaultBalanceablePoolModel<MockContainerEntity, MockItemEntity> model;
@BeforeMethod(alwaysRun=true)
+ @Override
public void setUp() throws Exception {
+ super.setUp();
model = new DefaultBalanceablePoolModel<MockContainerEntity, MockItemEntity>("myname");
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- // nothing to tear down; no management context created
+
+ container1 = app.addChild(EntitySpec.create(MockContainerEntity.class));
+ container2 = app.addChild(EntitySpec.create(MockContainerEntity.class));
+ item1 = app.addChild(EntitySpec.create(MockItemEntity.class));
+ item2 = app.addChild(EntitySpec.create(MockItemEntity.class));
+ item3 = app.addChild(EntitySpec.create(MockItemEntity.class));
}
@Test
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/LoadBalancingPolicyConcurrencyTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/LoadBalancingPolicyConcurrencyTest.java b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/LoadBalancingPolicyConcurrencyTest.java
index 6c6f392..fd032ff 100644
--- a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/LoadBalancingPolicyConcurrencyTest.java
+++ b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/LoadBalancingPolicyConcurrencyTest.java
@@ -51,16 +51,16 @@ public class LoadBalancingPolicyConcurrencyTest extends AbstractLoadBalancingPol
@BeforeMethod(alwaysRun=true)
@Override
- public void before() {
+ public void setUp() throws Exception {
scheduledExecutor = Executors.newScheduledThreadPool(10);
- super.before();
+ super.setUp();
}
@AfterMethod(alwaysRun=true)
@Override
- public void after() {
+ public void tearDown() throws Exception {
if (scheduledExecutor != null) scheduledExecutor.shutdownNow();
- super.after();
+ super.tearDown();
}
/**
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/MockItemEntityImpl.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/MockItemEntityImpl.java b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/MockItemEntityImpl.java
index 699fe59..e0c960d 100644
--- a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/MockItemEntityImpl.java
+++ b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/MockItemEntityImpl.java
@@ -27,6 +27,7 @@ import java.util.concurrent.locks.ReentrantLock;
import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.sensor.AttributeSensor;
import org.apache.brooklyn.core.entity.AbstractEntity;
+import org.apache.brooklyn.core.entity.Entities;
import org.apache.brooklyn.util.collections.MutableList;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -81,7 +82,7 @@ public class MockItemEntityImpl extends AbstractEntity implements MockItemEntity
_lock.lock();
try {
if (stopped) throw new IllegalStateException("Item "+this+" is stopped; cannot move to "+destination);
- if (currentContainer != null) currentContainer.removeItem(MockItemEntityImpl.this);
+ if (currentContainer != null && Entities.isManaged(currentContainer)) currentContainer.removeItem(MockItemEntityImpl.this);
currentContainer = destination;
destination.addItem(MockItemEntityImpl.this);
sensors().set(CONTAINER, currentContainer);
@@ -97,7 +98,7 @@ public class MockItemEntityImpl extends AbstractEntity implements MockItemEntity
if (LOG.isDebugEnabled()) LOG.debug("Mocks: stopping item {} (was in container {})", this, currentContainer);
_lock.lock();
try {
- if (currentContainer != null) currentContainer.removeItem(this);
+ if (currentContainer != null && Entities.isManaged(currentContainer)) currentContainer.removeItem(this);
currentContainer = null;
stopped = true;
} finally {
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/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 c85af6e..65b48eb 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
@@ -41,8 +41,10 @@ import java.util.regex.Pattern;
import org.apache.brooklyn.api.catalog.CatalogItem;
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.location.Location;
+import org.apache.brooklyn.api.location.LocationSpec;
import org.apache.brooklyn.api.mgmt.ManagementContext;
import org.apache.brooklyn.cli.AbstractMain.BrooklynCommand;
import org.apache.brooklyn.cli.AbstractMain.BrooklynCommandCollectingArgs;
@@ -219,19 +221,19 @@ public class CliTest {
@Test
public void testStopAllApplications() throws Exception {
LaunchCommand launchCommand = new Main.LaunchCommand();
- ExampleApp app = new ExampleApp();
- ManagementContext mgmt = null;
+ ManagementContext mgmt = LocalManagementContextForTests.newInstance();
+
try {
- Entities.startManagement(app);
- mgmt = app.getManagementContext();
- app.start(ImmutableList.of(new SimulatedLocation()));
- assertTrue(app.running);
+ StartableApplication app = mgmt.getEntityManager().createEntity(EntitySpec.create(StartableApplication.class).impl(ExampleApp.class));
+ ExampleApp appImpl = (ExampleApp) Entities.deproxy(app);
+ SimulatedLocation loc = mgmt.getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
+ app.start(ImmutableList.of(loc));
+ assertTrue(appImpl.running);
launchCommand.stopAllApps(ImmutableList.of(app));
- assertFalse(app.running);
+ assertFalse(appImpl.running);
} finally {
// Stopping the app will make app.getManagementContext return the "NonDeploymentManagementContext";
- // hence we've retrieved it before calling stopAllApps()
if (mgmt != null) Entities.destroyAll(mgmt);
}
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/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 ae3943b..635f2fd 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
@@ -92,7 +92,6 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.reflect.TypeToken;
-
public class SoftwareProcessEntityTest extends BrooklynAppUnitTestSupport {
// NB: These tests don't actually require ssh to localhost -- only that 'localhost' resolves.
@@ -364,12 +363,12 @@ public class SoftwareProcessEntityTest extends BrooklynAppUnitTestSupport {
.configure(StopSoftwareParameters.STOP_MACHINE_MODE, stopMachineMode)));
t1.asTask().get(10, TimeUnit.SECONDS);
- if (MachineLifecycleEffectorTasksTest.canStop(stopProcessMode, isEntityStopped)) {
+ if (MachineLifecycleEffectorTasksTest.canStop(app, stopProcessMode, isEntityStopped)) {
assertEquals(d.events, ImmutableList.of("stop"));
} else {
assertTrue(d.events.isEmpty());
}
- if (MachineLifecycleEffectorTasksTest.canStop(stopMachineMode, machine == null)) {
+ if (MachineLifecycleEffectorTasksTest.canStop(app, stopMachineMode, machine == null)) {
assertTrue(entity.getLocations().isEmpty());
assertTrue(l.getAvailable().contains(machine));
} else {
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9a83a598/software/base/src/test/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasksTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasksTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasksTest.java
index 4d51db0..b7bba5c 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasksTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasksTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertTrue;
import java.util.List;
+import org.apache.brooklyn.api.entity.Application;
import org.apache.brooklyn.api.entity.Entity;
import org.apache.brooklyn.api.entity.EntitySpec;
import org.apache.brooklyn.api.mgmt.Task;
@@ -34,12 +35,11 @@ import org.apache.brooklyn.core.entity.trait.Startable;
import org.apache.brooklyn.core.mgmt.BrooklynTaskTags;
import org.apache.brooklyn.core.sensor.DependentConfiguration;
import org.apache.brooklyn.core.sensor.Sensors;
-import org.apache.brooklyn.core.test.entity.TestApplication;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
import org.apache.brooklyn.entity.software.base.EmptySoftwareProcess;
import org.apache.brooklyn.entity.software.base.SoftwareProcess;
import org.apache.brooklyn.entity.software.base.SoftwareProcess.StopSoftwareParameters.StopMode;
import org.apache.brooklyn.entity.stock.BasicEntity;
-import org.apache.brooklyn.entity.stock.BasicEntityImpl;
import org.apache.brooklyn.location.jclouds.BailOutJcloudsLocation;
import org.apache.brooklyn.test.Asserts;
import org.apache.brooklyn.util.core.task.TaskInternal;
@@ -55,10 +55,11 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
-public class MachineLifecycleEffectorTasksTest {
- public static boolean canStop(StopMode stopMode, boolean isEntityStopped) {
- BasicEntityImpl entity = new BasicEntityImpl();
+public class MachineLifecycleEffectorTasksTest extends BrooklynAppUnitTestSupport {
+
+ public static boolean canStop(Application parent, StopMode stopMode, boolean isEntityStopped) {
Lifecycle state = isEntityStopped ? Lifecycle.STOPPED : Lifecycle.RUNNING;
+ BasicEntity entity = parent.addChild(EntitySpec.create(BasicEntity.class));
entity.sensors().set(SoftwareProcess.SERVICE_STATE_ACTUAL, state);
return MachineLifecycleEffectorTasks.canStop(stopMode, entity);
}
@@ -77,7 +78,7 @@ public class MachineLifecycleEffectorTasksTest {
@Test(dataProvider = "canStopStates")
public void testBasicSonftwareProcessCanStop(StopMode mode, boolean isEntityStopped, boolean expected) {
- boolean canStop = canStop(mode, isEntityStopped);
+ boolean canStop = canStop(app, mode, isEntityStopped);
assertEquals(canStop, expected);
}
@@ -86,7 +87,6 @@ public class MachineLifecycleEffectorTasksTest {
AttributeSensor<Boolean> ready = Sensors.newBooleanSensor("readiness");
- TestApplication app = TestApplication.Factory.newManagedInstanceForTests();
BasicEntity triggerEntity = app.createAndManageChild(EntitySpec.create(BasicEntity.class));
EmptySoftwareProcess entity = app.createAndManageChild(EntitySpec.create(EmptySoftwareProcess.class)
@@ -115,8 +115,6 @@ public class MachineLifecycleEffectorTasksTest {
} else {
Exceptions.propagate(t);
}
- } finally {
- Entities.destroyAll(app.getManagementContext());
}
}
[4/5] brooklyn-server git commit: Fix RebindCatalogItemTest
Posted by dr...@apache.org.
Fix RebindCatalogItemTest
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/c1c71780
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/c1c71780
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/c1c71780
Branch: refs/heads/master
Commit: c1c71780de62015318ce69169409c1adb2d595bc
Parents: 9a83a59
Author: Aled Sage <al...@gmail.com>
Authored: Mon May 15 20:10:54 2017 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Mon May 15 20:10:54 2017 +0100
----------------------------------------------------------------------
.../apache/brooklyn/core/mgmt/rebind/RebindCatalogItemTest.java | 3 +++
1 file changed, 3 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c1c71780/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindCatalogItemTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindCatalogItemTest.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindCatalogItemTest.java
index 292d0f4..2418a33 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindCatalogItemTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindCatalogItemTest.java
@@ -298,6 +298,7 @@ public class RebindCatalogItemTest extends RebindTestFixtureWithApp {
final String tag = "tag1";
origItem.tags().addTag(tag);
assertTrue(origItem.tags().containsTag(tag));
+ origManagementContext.getCatalog().persist(origItem);
rebindAndAssertCatalogsAreEqual();
@@ -352,7 +353,9 @@ public class RebindCatalogItemTest extends RebindTestFixtureWithApp {
item.setDeprecated(true);
catalog.persist(item);
+
rebindAndAssertCatalogsAreEqual();
+
RegisteredType catalogItemAfterRebind = newManagementContext.getTypeRegistry().get("rebind-yaml-catalog-item-test", TEST_VERSION);
assertTrue(catalogItemAfterRebind.isDeprecated(), "Expected item to be deprecated");
}
[2/5] brooklyn-server git commit: Delete entity constructors
Posted by dr...@apache.org.
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 <al...@gmail.com>
Authored: Wed May 10 14:43:07 2017 +0100
Committer: Aled Sage <al...@gmail.com>
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) {