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:28 UTC
[3/5] brooklyn-server git commit: Rewrite tests: don’t rely on entity constructors
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());
}
}