You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2014/08/30 01:01:19 UTC

[19/26] git commit: use initApp for apps to ensure enrichers get added, fixing tests and other misc tidies

use initApp for apps to ensure enrichers get added, fixing tests and other misc tidies


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/5ec0a00b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/5ec0a00b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/5ec0a00b

Branch: refs/heads/master
Commit: 5ec0a00b1c9deb4ff3b7ccc4dc7e7e6755fded26
Parents: b2daedf
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Mon Aug 25 16:29:52 2014 -0500
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Aug 27 02:17:18 2014 -0400

----------------------------------------------------------------------
 .../entity/basic/AbstractApplication.java       |  7 ++++
 .../entity/basic/BasicApplicationImpl.java      |  7 ----
 .../catalog/internal/MyCatalogItems.java        |  4 --
 .../basic/DependentConfigurationTest.java       | 35 +++++++++++++---
 .../entity/rebind/RebindTestFixtureWithApp.java |  3 +-
 .../test/entity/TestApplicationImpl.java        |  5 ---
 .../entity/TestApplicationNoEnrichersImpl.java  | 44 ++++++++++++++++++++
 .../brooklyn/demo/GlobalWebFabricExample.java   |  2 +-
 .../demo/StandaloneQpidBrokerExample.java       |  2 +-
 .../brooklyn/demo/CumulusRDFApplication.java    |  4 +-
 .../demo/HighAvailabilityCassandraCluster.java  |  2 +-
 .../java/brooklyn/demo/ResilientMongoDbApp.java |  2 +-
 .../java/brooklyn/demo/RiakClusterExample.java  |  2 +-
 .../brooklyn/demo/SimpleCassandraCluster.java   |  2 +-
 .../main/java/brooklyn/demo/StormSampleApp.java |  2 +-
 .../brooklyn/demo/WideAreaCassandraCluster.java |  2 +-
 .../brooklyn/demo/NodeJsTodoApplication.java    |  2 +-
 .../brooklyn/demo/SingleWebServerExample.java   |  2 +-
 .../demo/WebClusterDatabaseExample.java         |  4 +-
 .../demo/WebClusterDatabaseExampleApp.java      |  4 +-
 .../demo/WebClusterDatabaseExampleGroovy.groovy |  2 +-
 .../java/brooklyn/demo/WebClusterExample.java   |  2 +-
 .../entity/basic/lifecycle/MyEntityImpl.java    |  3 +-
 .../basic/lifecycle/NaiveScriptRunnerTest.java  |  3 ++
 .../basic/lifecycle/ScriptHelperTest.java       | 13 +++---
 .../brooklyn/entity/pool/ServerPoolTest.java    | 13 +++---
 .../qa/longevity/webcluster/WebClusterApp.java  |  2 +-
 .../rest/testing/mocks/RestMockApp.java         |  8 ----
 .../util/BrooklynRestResourceUtilsTest.java     |  4 --
 29 files changed, 113 insertions(+), 74 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/core/src/main/java/brooklyn/entity/basic/AbstractApplication.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/AbstractApplication.java b/core/src/main/java/brooklyn/entity/basic/AbstractApplication.java
index da33208..35e0083 100644
--- a/core/src/main/java/brooklyn/entity/basic/AbstractApplication.java
+++ b/core/src/main/java/brooklyn/entity/basic/AbstractApplication.java
@@ -57,6 +57,13 @@ public abstract class AbstractApplication extends AbstractEntity implements Star
     public AbstractApplication() {
     }
 
+    public void init() { 
+        initApp();
+        super.init();
+    }
+    
+    protected void initApp() {}
+    
     /**
      * 
      * @deprecated since 0.6; use EntitySpec so no-arg constructor

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/core/src/main/java/brooklyn/entity/basic/BasicApplicationImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/BasicApplicationImpl.java b/core/src/main/java/brooklyn/entity/basic/BasicApplicationImpl.java
index 1dfc7bc..6915556 100644
--- a/core/src/main/java/brooklyn/entity/basic/BasicApplicationImpl.java
+++ b/core/src/main/java/brooklyn/entity/basic/BasicApplicationImpl.java
@@ -19,11 +19,4 @@
 package brooklyn.entity.basic;
 
 public class BasicApplicationImpl extends AbstractApplication implements BasicApplication {
-    public BasicApplicationImpl() {
-    }
-    
-    @Override
-    public void init() {
-        // no-op
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/core/src/test/java/brooklyn/catalog/internal/MyCatalogItems.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/catalog/internal/MyCatalogItems.java b/core/src/test/java/brooklyn/catalog/internal/MyCatalogItems.java
index 66fe0e6..3506d49 100644
--- a/core/src/test/java/brooklyn/catalog/internal/MyCatalogItems.java
+++ b/core/src/test/java/brooklyn/catalog/internal/MyCatalogItems.java
@@ -26,10 +26,6 @@ public class MyCatalogItems {
 
     @Catalog(description="Some silly app test")
     public static class MySillyAppTemplate extends AbstractApplication {
-        @Override
-        public void init() {
-            // no-op
-        }
     }
     
     @Catalog(description="Some silly app builder test")

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/core/src/test/java/brooklyn/entity/basic/DependentConfigurationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/basic/DependentConfigurationTest.java b/core/src/test/java/brooklyn/entity/basic/DependentConfigurationTest.java
index f6096a4..433d677 100644
--- a/core/src/test/java/brooklyn/entity/basic/DependentConfigurationTest.java
+++ b/core/src/test/java/brooklyn/entity/basic/DependentConfigurationTest.java
@@ -29,6 +29,8 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicReference;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
@@ -38,8 +40,12 @@ import brooklyn.entity.proxying.EntitySpec;
 import brooklyn.event.basic.DependentConfiguration;
 import brooklyn.management.Task;
 import brooklyn.test.Asserts;
+import brooklyn.test.EntityTestUtils;
 import brooklyn.test.entity.TestEntity;
 import brooklyn.util.collections.MutableList;
+import brooklyn.util.collections.MutableMap;
+import brooklyn.util.exceptions.Exceptions;
+import brooklyn.util.javalang.JavaClassNames;
 import brooklyn.util.task.BasicTask;
 import brooklyn.util.text.StringPredicates;
 import brooklyn.util.time.Duration;
@@ -58,6 +64,8 @@ import com.google.common.util.concurrent.Callables;
  */
 public class DependentConfigurationTest extends BrooklynAppUnitTestSupport {
 
+    private static final Logger log = LoggerFactory.getLogger(DependentConfigurationTest.class);
+    
     public static final int SHORT_WAIT_MS = 100;
     public static final int TIMEOUT_MS = 30*1000;
     
@@ -187,23 +195,38 @@ public class DependentConfigurationTest extends BrooklynAppUnitTestSupport {
     }
 
     @Test
-    public void testAttributeWhenReadyAbortsWhenOnfireByDefault() throws Exception {
+    public void testAttributeWhenReadyAbortsWhenOnFireByDefault() {
+        log.info("starting test "+JavaClassNames.niceClassAndMethod());
         final Task<String> t = submit(DependentConfiguration.builder()
                 .attributeWhenReady(entity, TestEntity.NAME)
                 .build());
 
         ServiceStateLogic.setExpectedState(entity, Lifecycle.ON_FIRE);
+        EntityTestUtils.assertAttributeEqualsEventually(entity, Attributes.SERVICE_STATE_ACTUAL, Lifecycle.ON_FIRE);
+        
         try {
             assertDoneEventually(t);
-            fail();
-        } catch (Exception e) {
-            if (!e.toString().contains("Aborted waiting for ready")) throw e;
+            fail("Should have failed already!");
+        } catch (Throwable e) {
+            if (e.toString().contains("Aborted waiting for ready")) 
+                return;
+            
+            log.warn("Did not abort as expected: "+e, e);
+            Entities.dumpInfo(entity);
+            
+            throw Exceptions.propagate(e);
         }
     }
 
+    @Test(invocationCount=100, groups = "Integration")
+    public void testAttributeWhenReadyAbortsWhenOnfireByDefaultManyTimes() {
+        testAttributeWhenReadyAbortsWhenOnFireByDefault();
+    }
+    
     @Test
-    public void testAttributeWhenReadyAbortsWhenAlreadyOnfireByDefault() throws Exception {
+    public void testAttributeWhenReadyAbortsWhenAlreadyOnFireByDefault() throws Exception {
         ServiceStateLogic.setExpectedState(entity, Lifecycle.ON_FIRE);
+        EntityTestUtils.assertAttributeEqualsEventually(entity, Attributes.SERVICE_STATE_ACTUAL, Lifecycle.ON_FIRE);
         
         final Task<String> t = submit(DependentConfiguration.builder()
                 .attributeWhenReady(entity, TestEntity.NAME)
@@ -281,7 +304,7 @@ public class DependentConfigurationTest extends BrooklynAppUnitTestSupport {
     
     private <T> T assertDoneEventually(final Task<T> t) throws Exception {
         final AtomicReference<ExecutionException> exception = new AtomicReference<ExecutionException>();
-        T result = Asserts.succeedsEventually(new Callable<T>() {
+        T result = Asserts.succeedsEventually(MutableMap.of("timeout", Duration.FIVE_SECONDS), new Callable<T>() {
             @Override public T call() throws InterruptedException, TimeoutException {
                 try {
                     return t.get(Duration.ONE_SECOND);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/core/src/test/java/brooklyn/entity/rebind/RebindTestFixtureWithApp.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/RebindTestFixtureWithApp.java b/core/src/test/java/brooklyn/entity/rebind/RebindTestFixtureWithApp.java
index 1d54199..81ca411 100644
--- a/core/src/test/java/brooklyn/entity/rebind/RebindTestFixtureWithApp.java
+++ b/core/src/test/java/brooklyn/entity/rebind/RebindTestFixtureWithApp.java
@@ -21,11 +21,12 @@ package brooklyn.entity.rebind;
 import brooklyn.entity.basic.ApplicationBuilder;
 import brooklyn.entity.proxying.EntitySpec;
 import brooklyn.test.entity.TestApplication;
+import brooklyn.test.entity.TestApplicationNoEnrichersImpl;
 
 public class RebindTestFixtureWithApp extends RebindTestFixture<TestApplication> {
 
     protected TestApplication createApp() {
-        return ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class), origManagementContext);
+        return ApplicationBuilder.newManagedApp(EntitySpec.create(TestApplication.class, TestApplicationNoEnrichersImpl.class), origManagementContext);
     }
     
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/core/src/test/java/brooklyn/test/entity/TestApplicationImpl.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/test/entity/TestApplicationImpl.java b/core/src/test/java/brooklyn/test/entity/TestApplicationImpl.java
index ae5c963..8c7d844 100644
--- a/core/src/test/java/brooklyn/test/entity/TestApplicationImpl.java
+++ b/core/src/test/java/brooklyn/test/entity/TestApplicationImpl.java
@@ -54,11 +54,6 @@ public class TestApplicationImpl extends AbstractApplication implements TestAppl
     }
 
     @Override
-    public void init() {
-        // no-op
-    }
-    
-    @Override
     public <T extends Entity> T createAndManageChild(EntitySpec<T> spec) {
         if (!getManagementSupport().isDeployed()) throw new IllegalStateException("Entity "+this+" not managed");
         T child = addChild(spec);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/core/src/test/java/brooklyn/test/entity/TestApplicationNoEnrichersImpl.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/test/entity/TestApplicationNoEnrichersImpl.java b/core/src/test/java/brooklyn/test/entity/TestApplicationNoEnrichersImpl.java
new file mode 100644
index 0000000..1435443
--- /dev/null
+++ b/core/src/test/java/brooklyn/test/entity/TestApplicationNoEnrichersImpl.java
@@ -0,0 +1,44 @@
+/*
+ * 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 brooklyn.test.entity;
+
+import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import brooklyn.entity.Entity;
+import brooklyn.entity.Group;
+import brooklyn.entity.basic.AbstractApplication;
+import brooklyn.entity.proxying.EntitySpec;
+import brooklyn.event.Sensor;
+import brooklyn.event.SensorEventListener;
+import brooklyn.location.LocationSpec;
+import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
+import brooklyn.management.SubscriptionHandle;
+import brooklyn.util.logging.LoggingSetup;
+
+/**
+ * Mock application for testing.
+ */
+public class TestApplicationNoEnrichersImpl extends TestApplicationImpl {
+    
+    protected void initEnrichers() { /* none */ }
+    
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/examples/global-web-fabric/src/main/java/brooklyn/demo/GlobalWebFabricExample.java
----------------------------------------------------------------------
diff --git a/examples/global-web-fabric/src/main/java/brooklyn/demo/GlobalWebFabricExample.java b/examples/global-web-fabric/src/main/java/brooklyn/demo/GlobalWebFabricExample.java
index 004f118..cf4fa24 100644
--- a/examples/global-web-fabric/src/main/java/brooklyn/demo/GlobalWebFabricExample.java
+++ b/examples/global-web-fabric/src/main/java/brooklyn/demo/GlobalWebFabricExample.java
@@ -82,7 +82,7 @@ public class GlobalWebFabricExample extends AbstractApplication {
         new PortAttributeSensorAndConfigKey(AbstractController.PROXY_HTTP_PORT, PortRanges.fromInteger(80));
     
     @Override
-    public void init() {
+    public void initApp() {
         StringConfigMap config = getManagementContext().getConfig();
         
         GeoscalingDnsService geoDns = addChild(EntitySpec.create(GeoscalingDnsService.class)

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/examples/simple-messaging-pubsub/src/main/java/brooklyn/demo/StandaloneQpidBrokerExample.java
----------------------------------------------------------------------
diff --git a/examples/simple-messaging-pubsub/src/main/java/brooklyn/demo/StandaloneQpidBrokerExample.java b/examples/simple-messaging-pubsub/src/main/java/brooklyn/demo/StandaloneQpidBrokerExample.java
index e042e0d..57400e3 100644
--- a/examples/simple-messaging-pubsub/src/main/java/brooklyn/demo/StandaloneQpidBrokerExample.java
+++ b/examples/simple-messaging-pubsub/src/main/java/brooklyn/demo/StandaloneQpidBrokerExample.java
@@ -43,7 +43,7 @@ public class StandaloneQpidBrokerExample extends AbstractApplication {
     public static final String DEFAULT_LOCATION = "localhost";
     
     @Override
-    public void init() {
+    public void initApp() {
         // Configure the Qpid broker entity
     	QpidBroker broker = addChild(EntitySpec.create(QpidBroker.class)
     	        .configure("amqpPort", 5672)

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/CumulusRDFApplication.java
----------------------------------------------------------------------
diff --git a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/CumulusRDFApplication.java b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/CumulusRDFApplication.java
index eaabaff..c560ca5 100644
--- a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/CumulusRDFApplication.java
+++ b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/CumulusRDFApplication.java
@@ -114,9 +114,7 @@ public class CumulusRDFApplication extends AbstractApplication {
      * </ul>
      */
     @Override
-    public void init() {
-        super.init();
-        
+    public void initApp() {
         // Cassandra cluster
         EntitySpec<CassandraDatacenter> clusterSpec = EntitySpec.create(CassandraDatacenter.class)
                 .configure(CassandraDatacenter.MEMBER_SPEC, EntitySpec.create(CassandraNode.class)

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/HighAvailabilityCassandraCluster.java
----------------------------------------------------------------------
diff --git a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/HighAvailabilityCassandraCluster.java b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/HighAvailabilityCassandraCluster.java
index c21c4cf..a105783 100644
--- a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/HighAvailabilityCassandraCluster.java
+++ b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/HighAvailabilityCassandraCluster.java
@@ -55,7 +55,7 @@ public class HighAvailabilityCassandraCluster extends AbstractApplication {
     
     
     @Override
-    public void init() {
+    public void initApp() {
         addChild(EntitySpec.create(CassandraDatacenter.class)
                 .configure(CassandraDatacenter.CLUSTER_NAME, "Brooklyn")
                 .configure(CassandraDatacenter.INITIAL_SIZE, getConfig(CASSANDRA_CLUSTER_SIZE))

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/ResilientMongoDbApp.java
----------------------------------------------------------------------
diff --git a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/ResilientMongoDbApp.java b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/ResilientMongoDbApp.java
index 290f25e..4acbbea 100644
--- a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/ResilientMongoDbApp.java
+++ b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/ResilientMongoDbApp.java
@@ -55,7 +55,7 @@ public class ResilientMongoDbApp extends AbstractApplication implements Startabl
     public static final String DEFAULT_LOCATION = "named:gce-europe-west1";
 
     @Override
-    public void init() {
+    public void initApp() {
         MongoDBReplicaSet rs = addChild(
                 EntitySpec.create(MongoDBReplicaSet.class)
                         .configure(MongoDBReplicaSet.INITIAL_SIZE, 3));

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/RiakClusterExample.java
----------------------------------------------------------------------
diff --git a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/RiakClusterExample.java b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/RiakClusterExample.java
index 0134e27..58b6f60 100644
--- a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/RiakClusterExample.java
+++ b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/RiakClusterExample.java
@@ -64,7 +64,7 @@ public class RiakClusterExample extends AbstractApplication {
         Entities.dumpInfo(launcher.getApplications());
     }
 
-    public void init() {
+    public void initApp() {
         addChild(EntitySpec.create(RiakCluster.class)
                 .configure(RiakCluster.INITIAL_SIZE, getConfig(RIAK_RING_SIZE))
                 .configure(RiakCluster.MEMBER_SPEC, EntitySpec.create(RiakNode.class)

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/SimpleCassandraCluster.java
----------------------------------------------------------------------
diff --git a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/SimpleCassandraCluster.java b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/SimpleCassandraCluster.java
index 577a9dc..94f792c 100644
--- a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/SimpleCassandraCluster.java
+++ b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/SimpleCassandraCluster.java
@@ -35,7 +35,7 @@ public class SimpleCassandraCluster extends AbstractApplication {
     private static final String DEFAULT_LOCATION = "localhost";
 
     @Override
-    public void init() {
+    public void initApp() {
         addChild(EntitySpec.create(CassandraDatacenter.class)
                 .configure(CassandraDatacenter.INITIAL_SIZE, 1)
                 .configure(CassandraDatacenter.CLUSTER_NAME, "Brooklyn"));

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/StormSampleApp.java
----------------------------------------------------------------------
diff --git a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/StormSampleApp.java b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/StormSampleApp.java
index cb70578..732ccd5 100644
--- a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/StormSampleApp.java
+++ b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/StormSampleApp.java
@@ -47,7 +47,7 @@ public class StormSampleApp extends AbstractApplication implements StartableAppl
     public static final String DEFAULT_LOCATION = "named:gce-europe-west1";
 
     @Override
-    public void init() {
+    public void initApp() {
         addChild(EntitySpec.create(StormDeployment.class)
             .configure(StormDeployment.SUPERVISORS_COUNT, 2)
             .configure(StormDeployment.ZOOKEEPERS_COUNT, 1));

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/WideAreaCassandraCluster.java
----------------------------------------------------------------------
diff --git a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/WideAreaCassandraCluster.java b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/WideAreaCassandraCluster.java
index 8e30fc4..325502f 100644
--- a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/WideAreaCassandraCluster.java
+++ b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/WideAreaCassandraCluster.java
@@ -54,7 +54,7 @@ public class WideAreaCassandraCluster extends AbstractApplication {
     
 	
     @Override
-    public void init() {
+    public void initApp() {
         addChild(EntitySpec.create(CassandraFabric.class)
                 .configure(CassandraDatacenter.CLUSTER_NAME, "Brooklyn")
                 .configure(CassandraDatacenter.INITIAL_SIZE, getConfig(CASSANDRA_CLUSTER_SIZE)) // per location

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/examples/simple-web-cluster/src/main/java/brooklyn/demo/NodeJsTodoApplication.java
----------------------------------------------------------------------
diff --git a/examples/simple-web-cluster/src/main/java/brooklyn/demo/NodeJsTodoApplication.java b/examples/simple-web-cluster/src/main/java/brooklyn/demo/NodeJsTodoApplication.java
index 54eb008..2eef128 100644
--- a/examples/simple-web-cluster/src/main/java/brooklyn/demo/NodeJsTodoApplication.java
+++ b/examples/simple-web-cluster/src/main/java/brooklyn/demo/NodeJsTodoApplication.java
@@ -42,7 +42,7 @@ import com.google.common.collect.ImmutableMap;
 public class NodeJsTodoApplication extends AbstractApplication implements StartableApplication {
 
     @Override
-    public void init() {
+    public void initApp() {
         RedisStore redis = addChild(EntitySpec.create(RedisStore.class));
 
         addChild(EntitySpec.create(NodeJsWebAppService.class)

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/examples/simple-web-cluster/src/main/java/brooklyn/demo/SingleWebServerExample.java
----------------------------------------------------------------------
diff --git a/examples/simple-web-cluster/src/main/java/brooklyn/demo/SingleWebServerExample.java b/examples/simple-web-cluster/src/main/java/brooklyn/demo/SingleWebServerExample.java
index 9cf027f..d974e35 100644
--- a/examples/simple-web-cluster/src/main/java/brooklyn/demo/SingleWebServerExample.java
+++ b/examples/simple-web-cluster/src/main/java/brooklyn/demo/SingleWebServerExample.java
@@ -44,7 +44,7 @@ public class SingleWebServerExample extends AbstractApplication {
     private static final String WAR_PATH = "classpath://hello-world-webapp.war";
 
     @Override
-    public void init() {
+    public void initApp() {
         addChild(EntitySpec.create(JBoss7Server.class)
                 .configure(JavaWebAppService.ROOT_WAR, WAR_PATH)
                 .configure(Attributes.HTTP_PORT, PortRanges.fromString("8080+")));

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterDatabaseExample.java
----------------------------------------------------------------------
diff --git a/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterDatabaseExample.java b/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterDatabaseExample.java
index bfd3a1c..fd7c9ae 100644
--- a/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterDatabaseExample.java
+++ b/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterDatabaseExample.java
@@ -69,9 +69,7 @@ public class WebClusterDatabaseExample extends AbstractApplication {
             "appservers.count", "Number of app servers deployed");
 
     @Override
-    public void init() {
-        super.init();
-        
+    public void initApp() {
         MySqlNode mysql = addChild(EntitySpec.create(MySqlNode.class)
                 .configure("creationScriptUrl", DB_SETUP_SQL_URL));
         

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterDatabaseExampleApp.java
----------------------------------------------------------------------
diff --git a/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterDatabaseExampleApp.java b/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterDatabaseExampleApp.java
index b1d3915..706445f 100644
--- a/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterDatabaseExampleApp.java
+++ b/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterDatabaseExampleApp.java
@@ -117,9 +117,7 @@ public class WebClusterDatabaseExampleApp extends AbstractApplication implements
     public static final AttributeSensor<String> ROOT_URL = WebAppServiceConstants.ROOT_URL;
 
     @Override
-    public void init() {
-        super.init();
-        
+    public void initApp() {
         MySqlNode mysql = addChild(
                 EntitySpec.create(MySqlNode.class)
                         .configure(MySqlNode.CREATION_SCRIPT_URL, Entities.getRequiredUrlConfig(this, DB_SETUP_SQL_URL)));

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterDatabaseExampleGroovy.groovy
----------------------------------------------------------------------
diff --git a/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterDatabaseExampleGroovy.groovy b/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterDatabaseExampleGroovy.groovy
index fc58a02..c3f6cc7 100644
--- a/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterDatabaseExampleGroovy.groovy
+++ b/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterDatabaseExampleGroovy.groovy
@@ -57,7 +57,7 @@ public class WebClusterDatabaseExampleGroovy extends AbstractApplication {
     public static final String DB_PASSWORD = "br00k11n";
     
     @Override
-    public void init() {
+    public void initApp() {
         MySqlNode mysql = addChild(MySqlNode,
                 creationScriptUrl: DB_SETUP_SQL_URL);
         

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterExample.java
----------------------------------------------------------------------
diff --git a/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterExample.java b/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterExample.java
index 28dab20..6a5d064 100644
--- a/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterExample.java
+++ b/examples/simple-web-cluster/src/main/java/brooklyn/demo/WebClusterExample.java
@@ -59,7 +59,7 @@ public class WebClusterExample extends AbstractApplication {
     private ControlledDynamicWebAppCluster web;
     
     @Override
-    public void init() {
+    public void initApp() {
         nginxController = addChild(EntitySpec.create(NginxController.class)
                 //.configure("domain", "webclusterexample.brooklyn.local")
                 .configure("port", "8000+"));

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/software/base/src/test/java/brooklyn/entity/basic/lifecycle/MyEntityImpl.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/basic/lifecycle/MyEntityImpl.java b/software/base/src/test/java/brooklyn/entity/basic/lifecycle/MyEntityImpl.java
index fcafc19..aa57e19 100644
--- a/software/base/src/test/java/brooklyn/entity/basic/lifecycle/MyEntityImpl.java
+++ b/software/base/src/test/java/brooklyn/entity/basic/lifecycle/MyEntityImpl.java
@@ -26,7 +26,6 @@ import brooklyn.entity.basic.SoftwareProcess;
 import brooklyn.entity.basic.SoftwareProcessDriver;
 import brooklyn.entity.basic.SoftwareProcessImpl;
 import brooklyn.entity.java.JavaSoftwareProcessSshDriver;
-import brooklyn.event.basic.BasicConfigKey;
 import brooklyn.location.basic.SshMachineLocation;
 import brooklyn.util.ResourceUtils;
 import brooklyn.util.collections.MutableList;
@@ -36,7 +35,7 @@ import brooklyn.util.text.Identifiers;
 
 public class MyEntityImpl extends SoftwareProcessImpl implements MyEntity {
     @Override
-    public Class getDriverInterface() {
+    public Class<?> getDriverInterface() {
         return MyEntityDriver.class;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/software/base/src/test/java/brooklyn/entity/basic/lifecycle/NaiveScriptRunnerTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/basic/lifecycle/NaiveScriptRunnerTest.java b/software/base/src/test/java/brooklyn/entity/basic/lifecycle/NaiveScriptRunnerTest.java
index eda5cbd..15f4fd4 100644
--- a/software/base/src/test/java/brooklyn/entity/basic/lifecycle/NaiveScriptRunnerTest.java
+++ b/software/base/src/test/java/brooklyn/entity/basic/lifecycle/NaiveScriptRunnerTest.java
@@ -54,6 +54,7 @@ public class NaiveScriptRunnerTest {
     @BeforeMethod
     private void setup() { commands.clear(); }
     
+    @SuppressWarnings("rawtypes")
     private NaiveScriptRunner newMockRunner(final int result) {
         return new NaiveScriptRunner() {
             @Override
@@ -68,6 +69,7 @@ public class NaiveScriptRunnerTest {
         };
     }
 
+    @SuppressWarnings("rawtypes")
     public static NaiveScriptRunner newLocalhostRunner() {
         return new NaiveScriptRunner() {
             LocalhostMachineProvisioningLocation location = new LocalhostMachineProvisioningLocation();
@@ -75,6 +77,7 @@ public class NaiveScriptRunnerTest {
             public int execute(List<String> script, String summaryForLogging) {
                 return execute(new MutableMap(), script, summaryForLogging);
             }
+            @SuppressWarnings("unchecked")
             @Override
             public int execute(Map flags, List<String> script, String summaryForLogging) {
                 try {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/software/base/src/test/java/brooklyn/entity/basic/lifecycle/ScriptHelperTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/basic/lifecycle/ScriptHelperTest.java b/software/base/src/test/java/brooklyn/entity/basic/lifecycle/ScriptHelperTest.java
index daa6109..bdb49b7 100644
--- a/software/base/src/test/java/brooklyn/entity/basic/lifecycle/ScriptHelperTest.java
+++ b/software/base/src/test/java/brooklyn/entity/basic/lifecycle/ScriptHelperTest.java
@@ -30,8 +30,6 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import brooklyn.entity.BrooklynAppUnitTestSupport;
-import brooklyn.entity.Entity;
-import brooklyn.entity.basic.Entities;
 import brooklyn.entity.basic.EntityLocal;
 import brooklyn.entity.basic.SoftwareProcess;
 import brooklyn.entity.basic.SoftwareProcessEntityTest;
@@ -83,16 +81,16 @@ public class ScriptHelperTest extends BrooklynAppUnitTestSupport {
         // currently, is initially set true after successful start
         Assert.assertTrue(entity.getAttribute(Startable.SERVICE_UP));
         
-//        entity.connectServiceUpIsRunning();
-        
         EntityTestUtils.assertAttributeEqualsEventually(entity, SoftwareProcess.SERVICE_PROCESS_IS_RUNNING, true);
-        log.info("XXX F");
         EntityTestUtils.assertAttributeEqualsEventually(entity, Startable.SERVICE_UP, true);
+        
+        log.debug("up, now cause failure");
+        
         driver.setFailExecution(true);
-        log.info("XXX G");
         EntityTestUtils.assertAttributeEqualsEventually(entity, SoftwareProcess.SERVICE_PROCESS_IS_RUNNING, false);
-        log.info("XXX H");
         EntityTestUtils.assertAttributeEqualsEventually(entity, Startable.SERVICE_UP, false);
+        
+        log.debug("caught failure, now clear");
         driver.setFailExecution(false);
         EntityTestUtils.assertAttributeEqualsEventually(entity, SoftwareProcess.SERVICE_PROCESS_IS_RUNNING, true);
         EntityTestUtils.assertAttributeEqualsEventually(entity, Startable.SERVICE_UP, true);
@@ -117,7 +115,6 @@ public class ScriptHelperTest extends BrooklynAppUnitTestSupport {
             FunctionFeed.builder()
                 .entity(this)
                 .period(Duration.millis(10))
-                .onlyIfServiceUp()
                 .poll(new FunctionPollConfig<Boolean, Boolean>(SERVICE_PROCESS_IS_RUNNING)
                     .onException(Functions.constant(Boolean.FALSE))
                     .callable(new Callable<Boolean>() {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/software/base/src/test/java/brooklyn/entity/pool/ServerPoolTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/pool/ServerPoolTest.java b/software/base/src/test/java/brooklyn/entity/pool/ServerPoolTest.java
index f565c54..584fbfe 100644
--- a/software/base/src/test/java/brooklyn/entity/pool/ServerPoolTest.java
+++ b/software/base/src/test/java/brooklyn/entity/pool/ServerPoolTest.java
@@ -29,18 +29,18 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.annotations.Test;
 
-import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-
 import brooklyn.entity.Entity;
 import brooklyn.entity.basic.Attributes;
+import brooklyn.entity.basic.Lifecycle;
 import brooklyn.location.LocationSpec;
 import brooklyn.location.basic.LocalhostMachineProvisioningLocation.LocalhostMachine;
-import brooklyn.test.Asserts;
 import brooklyn.test.EntityTestUtils;
 import brooklyn.test.entity.TestApplication;
 
+import com.google.common.base.Joiner;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
+
 public class ServerPoolTest extends AbstractServerPoolTest {
 
     private static final Logger LOG = LoggerFactory.getLogger(ServerPoolTest.class);
@@ -59,8 +59,7 @@ public class ServerPoolTest extends AbstractServerPoolTest {
     public void testFailureWhenNotEnoughServersAvailable() {
         TestApplication app = createAppWithChildren(getInitialPoolSize() + 1);
         assertNoMachinesAvailableForApp(app);
-        // Not asserting attr = true because the sensor will probably be null
-        assertFalse(Boolean.TRUE.equals(app.getAttribute(Attributes.SERVICE_UP)));
+        EntityTestUtils.assertAttributeEqualsEventually(app, Attributes.SERVICE_STATE_ACTUAL, Lifecycle.ON_FIRE);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/usage/qa/src/main/java/brooklyn/qa/longevity/webcluster/WebClusterApp.java
----------------------------------------------------------------------
diff --git a/usage/qa/src/main/java/brooklyn/qa/longevity/webcluster/WebClusterApp.java b/usage/qa/src/main/java/brooklyn/qa/longevity/webcluster/WebClusterApp.java
index 143dcbc..a223861 100644
--- a/usage/qa/src/main/java/brooklyn/qa/longevity/webcluster/WebClusterApp.java
+++ b/usage/qa/src/main/java/brooklyn/qa/longevity/webcluster/WebClusterApp.java
@@ -47,7 +47,7 @@ public class WebClusterApp extends AbstractApplication {
     private static final long loadCyclePeriodMs = 2 * 60 * 1000L;
 
     @Override
-    public void init() {
+    public void initApp() {
         final AttributeSensor<Double> sinusoidalLoad =
                 Sensors.newDoubleSensor("brooklyn.qa.sinusoidalLoad", "Sinusoidal server load");
         AttributeSensor<Double> averageLoad =

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/usage/rest-server/src/test/java/brooklyn/rest/testing/mocks/RestMockApp.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/test/java/brooklyn/rest/testing/mocks/RestMockApp.java b/usage/rest-server/src/test/java/brooklyn/rest/testing/mocks/RestMockApp.java
index 97915c9..186ca76 100644
--- a/usage/rest-server/src/test/java/brooklyn/rest/testing/mocks/RestMockApp.java
+++ b/usage/rest-server/src/test/java/brooklyn/rest/testing/mocks/RestMockApp.java
@@ -21,12 +21,4 @@ package brooklyn.rest.testing.mocks;
 import brooklyn.entity.basic.AbstractApplication;
 
 public class RestMockApp extends AbstractApplication {
-    
-    public RestMockApp() {
-    }
-
-    @Override
-    public void init() {
-        // no-op
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5ec0a00b/usage/rest-server/src/test/java/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/test/java/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java b/usage/rest-server/src/test/java/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java
index 58419bb..4c7d16b 100644
--- a/usage/rest-server/src/test/java/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java
+++ b/usage/rest-server/src/test/java/brooklyn/rest/util/BrooklynRestResourceUtilsTest.java
@@ -110,10 +110,6 @@ public class BrooklynRestResourceUtilsTest {
             description="Application which does nothing, included only as part of the test cases.",
             iconUrl="")
     public static class SampleNoOpApplication extends AbstractApplication implements MyInterface {
-        @Override
-        public void init() {
-            // no-op
-        }
     }
     
     public static class MyPolicy extends AbstractPolicy {