You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2016/11/11 09:50:17 UTC
[1/8] brooklyn-server git commit: Fix integration tests in
brooklyn-core
Repository: brooklyn-server
Updated Branches:
refs/heads/master dff428e52 -> 1caa48ff2
Fix integration tests in brooklyn-core
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/b714516a
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/b714516a
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/b714516a
Branch: refs/heads/master
Commit: b714516a57eabf4ef50d41ae8c3de9f5b93ffdc8
Parents: 70f2950
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Mon Nov 7 19:13:00 2016 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Nov 10 18:06:45 2016 +0200
----------------------------------------------------------------------
.../geo/external-ip-address-resolvers.txt | 3 ++-
.../entity/RecordingSensorEventListener.java | 4 ++++
.../brooklyn/enricher/stock/EnrichersTest.java | 22 +++++++++++++-------
.../java/org/apache/brooklyn/test/Asserts.java | 4 +++-
.../util/javalang/MemoryUsageTrackerTest.java | 1 +
5 files changed, 25 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b714516a/core/src/main/resources/org/apache/brooklyn/location/geo/external-ip-address-resolvers.txt
----------------------------------------------------------------------
diff --git a/core/src/main/resources/org/apache/brooklyn/location/geo/external-ip-address-resolvers.txt b/core/src/main/resources/org/apache/brooklyn/location/geo/external-ip-address-resolvers.txt
index 693114a..c51b394 100644
--- a/core/src/main/resources/org/apache/brooklyn/location/geo/external-ip-address-resolvers.txt
+++ b/core/src/main/resources/org/apache/brooklyn/location/geo/external-ip-address-resolvers.txt
@@ -18,7 +18,8 @@
http://jsonip.com/
http://myip.dnsomatic.com/
http://checkip.dyndns.org/
-http://wtfismyip.com/text
+# Uses Let's Encrypt certificate supported only in Java 8u101+
+# https://wtfismyip.com/text
http://whatismyip.akamai.com/
http://myip.wampdeveloper.com/
http://icanhazip.com/
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b714516a/core/src/test/java/org/apache/brooklyn/core/entity/RecordingSensorEventListener.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/RecordingSensorEventListener.java b/core/src/test/java/org/apache/brooklyn/core/entity/RecordingSensorEventListener.java
index f5384b2..e0c4ed0 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/RecordingSensorEventListener.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/RecordingSensorEventListener.java
@@ -126,4 +126,8 @@ public class RecordingSensorEventListener<T> implements SensorEventListener<T>,
}
}
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + "[size=" + getEvents().size() + "; events=" + getEvents() + "]";
+ }
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b714516a/core/src/test/java/org/apache/brooklyn/enricher/stock/EnrichersTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/enricher/stock/EnrichersTest.java b/core/src/test/java/org/apache/brooklyn/enricher/stock/EnrichersTest.java
index e20664b..4e6c87e 100644
--- a/core/src/test/java/org/apache/brooklyn/enricher/stock/EnrichersTest.java
+++ b/core/src/test/java/org/apache/brooklyn/enricher/stock/EnrichersTest.java
@@ -18,6 +18,9 @@
*/
package org.apache.brooklyn.enricher.stock;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNull;
+
import java.util.Collection;
import java.util.Map;
import java.util.Set;
@@ -185,7 +188,7 @@ public class EnrichersTest extends BrooklynAppUnitTestSupport {
}
@Test(groups="Integration") // because takes a second
- public void testTransformingRespectsUnchangedButWillRepublish() {
+ public void testTransformingRespectsUnchangedButWillRepublish() throws Exception {
RecordingSensorEventListener<String> record = new RecordingSensorEventListener<>();
app.getManagementContext().getSubscriptionManager().subscribe(entity, STR2, record);
@@ -197,21 +200,26 @@ public class EnrichersTest extends BrooklynAppUnitTestSupport {
return ("ignoredval".equals(input)) ? Entities.UNCHANGED : input;
}})
.build());
- Asserts.assertThat(record.getEvents(), CollectionFunctionals.sizeEquals(0));
+ // check notifyOfInitialValue (set in Transformer) is null
+ Asserts.eventually(Suppliers.ofInstance(record), CollectionFunctionals.sizeEquals(1));
+ SensorEvent<String> initialEvent = Iterables.getOnlyElement(record);
+ assertEquals(initialEvent.getSensor(), STR2);
+ assertNull(initialEvent.getValue());
entity.sensors().set(STR1, "myval");
- Asserts.eventually(Suppliers.ofInstance(record), CollectionFunctionals.sizeEquals(1));
- EntityAsserts.assertAttributeEquals(entity, STR2, "myval");
+ Asserts.eventually(Suppliers.ofInstance(record), CollectionFunctionals.sizeEquals(2));
+ EntityAsserts.assertAttributeEqualsEventually(entity, STR2, "myval");
entity.sensors().set(STR1, "ignoredval");
EntityAsserts.assertAttributeEqualsContinually(entity, STR2, "myval");
entity.sensors().set(STR1, "myval2");
- Asserts.eventually(Suppliers.ofInstance(record), CollectionFunctionals.sizeEquals(2));
- EntityAsserts.assertAttributeEquals(entity, STR2, "myval2");
+ Asserts.eventually(Suppliers.ofInstance(record), CollectionFunctionals.sizeEquals(3));
+ EntityAsserts.assertAttributeEqualsEventually(entity, STR2, "myval2");
entity.sensors().set(STR1, "myval2");
- entity.sensors().set(STR1, "myval2");
+ // Duplicate values still trigger change events
+ // entity.sensors().set(STR1, "myval2");
entity.sensors().set(STR1, "myval3");
Asserts.eventually(Suppliers.ofInstance(record), CollectionFunctionals.sizeEquals(5));
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b714516a/utils/common/src/main/java/org/apache/brooklyn/test/Asserts.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/org/apache/brooklyn/test/Asserts.java b/utils/common/src/main/java/org/apache/brooklyn/test/Asserts.java
index 21a1b53..a4717e2 100644
--- a/utils/common/src/main/java/org/apache/brooklyn/test/Asserts.java
+++ b/utils/common/src/main/java/org/apache/brooklyn/test/Asserts.java
@@ -951,6 +951,7 @@ public class Asserts {
}
lastException = null;
} catch(Throwable e) {
+ Exceptions.propagateIfInterrupt(e);
lastException = e;
if (log.isTraceEnabled()) log.trace("Attempt {} after {} ms: {}", new Object[] {attempt, System.currentTimeMillis() - startTime, e.getMessage()});
if (abortOnException) throw e;
@@ -966,10 +967,11 @@ public class Asserts {
throw lastException;
throw fail("invalid results; last was: "+result);
} catch (Throwable t) {
+ Exceptions.propagateIfInterrupt(t);
if (logException) log.info("failed succeeds-eventually, "+attempt+" attempts, "+
(System.currentTimeMillis()-startTime)+"ms elapsed "+
"(rethrowing): "+t);
- throw Exceptions.propagateAnnotated("failed succeeds-eventually, "+attempt+" attempts, "+
+ throw new AssertionError("failed succeeds-eventually, "+attempt+" attempts, "+
(System.currentTimeMillis()-startTime)+"ms elapsed: "+Exceptions.collapseText(t), t);
}
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b714516a/utils/common/src/test/java/org/apache/brooklyn/util/javalang/MemoryUsageTrackerTest.java
----------------------------------------------------------------------
diff --git a/utils/common/src/test/java/org/apache/brooklyn/util/javalang/MemoryUsageTrackerTest.java b/utils/common/src/test/java/org/apache/brooklyn/util/javalang/MemoryUsageTrackerTest.java
index f5b61dc..e80f08d 100644
--- a/utils/common/src/test/java/org/apache/brooklyn/util/javalang/MemoryUsageTrackerTest.java
+++ b/utils/common/src/test/java/org/apache/brooklyn/util/javalang/MemoryUsageTrackerTest.java
@@ -102,6 +102,7 @@ public class MemoryUsageTrackerTest {
if (containsAbsent(dump)) break;
}
int cleared = countAbsents(dump);
+ assertTrue(cleared > 0, "No soft references cleared after trying to allocate all available memory");
LOG.info("First soft reference cleared after "+dump.size()+" 1M blocks created; "+cleared+" of them cleared; memory just before collected is "+beforeCollectedMemory);
// Expect the soft references to only have been collected when most of the JVM's memory
[2/8] brooklyn-server git commit: Convert integration tests to unit
tests and fix timing related failures
Posted by al...@apache.org.
Convert integration tests to unit tests and fix timing related failures
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/89646d5d
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/89646d5d
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/89646d5d
Branch: refs/heads/master
Commit: 89646d5d80d88ec05583e2d9d7c7fdec5036c36c
Parents: b714516
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Tue Nov 8 14:21:41 2016 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Nov 10 18:06:50 2016 +0200
----------------------------------------------------------------------
.../brooklyn/core/entity/EntityAssertsTest.java | 203 +++++++++++--------
.../brooklyn/enricher/stock/EnrichersTest.java | 12 +-
2 files changed, 125 insertions(+), 90 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/89646d5d/core/src/test/java/org/apache/brooklyn/core/entity/EntityAssertsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/EntityAssertsTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/EntityAssertsTest.java
index 8ea2fd0..bfdac3c 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/EntityAssertsTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/EntityAssertsTest.java
@@ -18,19 +18,18 @@
*/
package org.apache.brooklyn.core.entity;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
+import java.util.concurrent.Callable;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutionException;
import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.location.LocationSpec;
-import org.apache.brooklyn.api.sensor.AttributeSensor;
-import org.apache.brooklyn.core.location.SimulatedLocation;
+import org.apache.brooklyn.api.location.Location;
+import org.apache.brooklyn.api.mgmt.Task;
import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
import org.apache.brooklyn.core.test.entity.TestEntity;
import org.apache.brooklyn.entity.group.DynamicGroup;
+import org.apache.brooklyn.util.repeat.Repeater;
import org.apache.brooklyn.util.time.Duration;
-import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -46,35 +45,17 @@ public class EntityAssertsTest extends BrooklynAppUnitTestSupport {
private static final String STOOGE = "stooge";
- private SimulatedLocation loc;
private TestEntity entity;
- private ScheduledExecutorService executor;
private DynamicGroup stooges;
@BeforeMethod(alwaysRun=true)
@Override
public void setUp() throws Exception {
super.setUp();
- loc = app.getManagementContext().getLocationManager().createLocation(LocationSpec.create(SimulatedLocation.class));
entity = app.createAndManageChild(EntitySpec.create(TestEntity.class));
- stooges = app.createAndManageChild(EntitySpec.create(DynamicGroup.class));
- final EntitySpec<TestEntity> stooge =
- EntitySpec.create(TestEntity.class).configure(TestEntity.CONF_NAME, STOOGE);
- app.createAndManageChild(stooge);
- app.createAndManageChild(stooge);
- app.createAndManageChild(stooge);
- app.start(ImmutableList.of(loc));
- executor = Executors.newScheduledThreadPool(3);
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- if (executor != null) executor.shutdownNow();
- if (app != null) Entities.destroyAll(app.getManagementContext());
- super.tearDown();
+ app.start(ImmutableList.<Location>of());
}
-
@Test
public void shouldAssertAttributeEquals() {
final String myName = "myname";
@@ -99,47 +80,59 @@ public class EntityAssertsTest extends BrooklynAppUnitTestSupport {
EntityAsserts.assertConfigEquals(entity, TestEntity.CONF_NAME, "bogus");
}
- @Test(groups="Integration")
- public void shouldAssertAttributeEqualsEventually() {
+ @Test
+ public void shouldAssertAttributeEqualsEventually() throws Exception {
entity.sensors().set(TestEntity.NAME, "before");
final String after = "after";
- setSensorValueLater(TestEntity.NAME, after, Duration.seconds(2));
- EntityAsserts.assertAttributeEqualsEventually(entity, TestEntity.NAME, after);
+
+ Task<?> assertValue = entity.getExecutionContext().submit(new Runnable() {
+ @Override
+ public void run() {
+ EntityAsserts.assertAttributeEqualsEventually(entity, TestEntity.NAME, after);
+ }
+ });
+ entity.sensors().set(TestEntity.NAME, after);
+ assertValue.get();
}
- @Test(groups="Integration", expectedExceptions = AssertionError.class)
+ @Test(expectedExceptions = AssertionError.class)
public void shouldFailToAssertAttributeEqualsEventually() {
entity.sensors().set(TestEntity.NAME, "before");
final String after = "after";
- setSensorValueLater(TestEntity.NAME, after, Duration.seconds(2));
- EntityAsserts.assertAttributeEqualsEventually(ImmutableMap.of("timeout", "1s"), entity, TestEntity.NAME, after);
+ EntityAsserts.assertAttributeEqualsEventually(ImmutableMap.of("timeout", "100ms"), entity, TestEntity.NAME, after);
}
- private <T> void setSensorValueLater(final AttributeSensor<T> sensor, final T value, final Duration delay) {
- executor.schedule(new Runnable() {
+ @Test
+ public void shouldAssertAttributeEventuallyNonNull() throws Exception {
+ EntityAsserts.assertAttributeEquals(entity, TestEntity.NAME, null);
+ Task<?> assertValue = entity.getExecutionContext().submit(new Runnable() {
@Override
public void run() {
- entity.sensors().set(sensor, value);
+ EntityAsserts.assertAttributeEventuallyNonNull(entity, TestEntity.NAME);
}
- }, delay.toUnit(TimeUnit.MILLISECONDS), TimeUnit.MILLISECONDS);
- }
-
- @Test(groups="Integration")
- public void shouldAssertAttributeEventuallyNonNull() {
- EntityAsserts.assertAttributeEquals(entity, TestEntity.NAME, null);
- setSensorValueLater(TestEntity.NAME, "something", Duration.seconds(1));
- EntityAsserts.assertAttributeEventuallyNonNull(entity, TestEntity.NAME);
+ });
+ entity.sensors().set(TestEntity.NAME, "something");
+ assertValue.get();
}
- @Test(groups="Integration")
- public void shouldAssertAttributeEventually() {
- setSensorValueLater(TestEntity.NAME, "testing testing 123", Duration.seconds(1));
- EntityAsserts.assertAttributeEventually(entity, TestEntity.NAME, new Predicate<String>() {
+ @Test
+ public void shouldAssertAttributeEventually() throws Exception {
+ final CountDownLatch eventuallyEntered = new CountDownLatch(2);
+ Task<?> assertValue = entity.getExecutionContext().submit(new Runnable() {
@Override
- public boolean apply(String input) {
- return input.matches(".*\\d+");
+ public void run() {
+ EntityAsserts.assertAttributeEventually(entity, TestEntity.NAME, new Predicate<String>() {
+ @Override
+ public boolean apply(String input) {
+ eventuallyEntered.countDown();
+ return input.matches(".*\\d+");
+ }
+ });
}
});
+ eventuallyEntered.await();
+ entity.sensors().set(TestEntity.NAME, "testing testing 123");
+ assertValue.get();
}
@Test
@@ -149,68 +142,110 @@ public class EntityAssertsTest extends BrooklynAppUnitTestSupport {
EntityAsserts.assertAttribute(entity, TestEntity.NAME, Predicates.equalTo(before));
}
- @Test(groups="Integration")
- public void shouldAssertPredicateEventuallyTrue() {
+ @Test
+ public void shouldAssertPredicateEventuallyTrue() throws Exception {
final int testVal = 987654321;
- executor.schedule(new Runnable() {
+ final CountDownLatch eventuallyEntered = new CountDownLatch(2);
+ Task<?> assertValue = entity.getExecutionContext().submit(new Runnable() {
@Override
public void run() {
- entity.setSequenceValue(testVal);
- }
- }, 1, TimeUnit.SECONDS);
- EntityAsserts.assertPredicateEventuallyTrue(entity, new Predicate<TestEntity>() {
- @Override
- public boolean apply(TestEntity input) {
- return testVal == input.getSequenceValue() ;
+ EntityAsserts.assertPredicateEventuallyTrue(entity, new Predicate<TestEntity>() {
+ @Override
+ public boolean apply(TestEntity input) {
+ eventuallyEntered.countDown();
+ return testVal == input.getSequenceValue();
+ }
+ });
}
});
+ eventuallyEntered.await();
+ entity.setSequenceValue(testVal);
+ assertValue.get();
}
- @Test(groups="Integration")
+ @Test
public void shouldAssertAttributeEqualsContinually() {
final String myName = "myname";
entity.sensors().set(TestEntity.NAME, myName);
EntityAsserts.assertAttributeEqualsContinually(
- ImmutableMap.of("timeout", "2s"), entity, TestEntity.NAME, myName);
+ ImmutableMap.of("timeout", "100ms"), entity, TestEntity.NAME, myName);
}
- @Test(groups="Integration", expectedExceptions = AssertionError.class)
- public void shouldFailAssertAttributeEqualsContinually() {
+ @Test(expectedExceptions = AssertionError.class)
+ public void shouldFailAssertAttributeEqualsContinually() throws Throwable {
final String myName = "myname";
entity.sensors().set(TestEntity.NAME, myName);
- setSensorValueLater(TestEntity.NAME, "something", Duration.seconds(1));
- EntityAsserts.assertAttributeEqualsContinually(
- ImmutableMap.of("timeout", "2s"), entity, TestEntity.NAME, myName);
+ Task<?> assertValue = entity.getExecutionContext().submit(new Runnable() {
+ @Override
+ public void run() {
+ EntityAsserts.assertAttributeEqualsContinually(entity, TestEntity.NAME, myName);
+ }
+ });
+ entity.sensors().set(TestEntity.NAME, "something");
+ try {
+ assertValue.get();
+ } catch (ExecutionException e) {
+ //strip wrapper exception
+ throw e.getCause();
+ }
}
- @Test(groups="Integration")
- public void shouldAssertGroupSizeEqualsEventually() {
- setGroupFilterLater(STOOGE, 1);
- EntityAsserts.assertGroupSizeEqualsEventually(ImmutableMap.of("timeout", "2s"), stooges, 3);
- setGroupFilterLater("Marx Brother", 1);
- EntityAsserts.assertGroupSizeEqualsEventually(stooges, 0);
- }
+ @Test
+ public void shouldAssertGroupSizeEqualsEventually() throws Exception {
+ stooges = app.createAndManageChild(EntitySpec.create(DynamicGroup.class));
+ final EntitySpec<TestEntity> stooge =
+ EntitySpec.create(TestEntity.class).configure(TestEntity.CONF_NAME, STOOGE);
+ app.createAndManageChild(stooge);
+ app.createAndManageChild(stooge);
+ app.createAndManageChild(stooge);
- private void setGroupFilterLater(final String conf, long delaySeconds) {
- executor.schedule(new Runnable() {
+ Task<?> assertValue1 = entity.getExecutionContext().submit(new Runnable() {
@Override
public void run() {
- stooges.setEntityFilter(EntityPredicates.configEqualTo(TestEntity.CONF_NAME, conf));
+ EntityAsserts.assertGroupSizeEqualsEventually(ImmutableMap.of("timeout", "2s"), stooges, 3);
}
- }, delaySeconds, TimeUnit.SECONDS);
+ });
+ stooges.setEntityFilter(EntityPredicates.configEqualTo(TestEntity.CONF_NAME, STOOGE));
+ assertValue1.get();
+ Task<?> assertValue2 = entity.getExecutionContext().submit(new Runnable() {
+ @Override
+ public void run() {
+ EntityAsserts.assertGroupSizeEqualsEventually(stooges, 0);
+ }
+ });
+ stooges.setEntityFilter(EntityPredicates.configEqualTo(TestEntity.CONF_NAME, "Marx Brother"));
+ assertValue2.get();
}
- @Test(groups="Integration")
- public void shouldAssertAttributeChangesEventually () {
+ @Test
+ public void shouldAssertAttributeChangesEventually () throws Exception{
entity.sensors().set(TestEntity.NAME, "before");
- setSensorValueLater(TestEntity.NAME, "after", Duration.seconds(2));
- EntityAsserts.assertAttributeChangesEventually(entity, TestEntity.NAME);
+ final Task<?> assertValue = entity.getExecutionContext().submit(new Runnable() {
+ @Override
+ public void run() {
+ EntityAsserts.assertAttributeChangesEventually(entity, TestEntity.NAME);
+ }
+ });
+ Repeater.create()
+ .repeat(new Runnable() {
+ @Override
+ public void run() {
+ entity.sensors().set(TestEntity.NAME, "after" + System.currentTimeMillis());
+ }
+ }).until(new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ return assertValue.isDone();
+ }
+ }).every(Duration.millis(10))
+ .run();
+ assertValue.get();
}
- @Test(groups="Integration")
+ @Test
public void shouldAssertAttributeNever() {
entity.sensors().set(TestEntity.NAME, "ever");
- EntityAsserts.assertAttributeContinuallyNotEqualTo(ImmutableMap.of("timeout", "5s"), entity, TestEntity.NAME, "after");
+ EntityAsserts.assertAttributeContinuallyNotEqualTo(ImmutableMap.of("timeout", "100ms"), entity, TestEntity.NAME, "after");
}
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/89646d5d/core/src/test/java/org/apache/brooklyn/enricher/stock/EnrichersTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/enricher/stock/EnrichersTest.java b/core/src/test/java/org/apache/brooklyn/enricher/stock/EnrichersTest.java
index 4e6c87e..19503e7 100644
--- a/core/src/test/java/org/apache/brooklyn/enricher/stock/EnrichersTest.java
+++ b/core/src/test/java/org/apache/brooklyn/enricher/stock/EnrichersTest.java
@@ -112,7 +112,7 @@ public class EnrichersTest extends BrooklynAppUnitTestSupport {
EntityAsserts.assertAttributeEqualsEventually(entity, NUM3, 1);
}
- @Test(groups="Integration") // because takes a second
+ @Test
public void testCombiningRespectsUnchanged() {
entity.enrichers().add(Enrichers.builder()
.combining(NUM1, NUM2)
@@ -132,7 +132,7 @@ public class EnrichersTest extends BrooklynAppUnitTestSupport {
EntityAsserts.assertAttributeEqualsEventually(entity, NUM3, 126);
entity.sensors().set(NUM1, 2);
- EntityAsserts.assertAttributeEqualsContinually(entity, NUM3, 126);
+ EntityAsserts.assertAttributeEqualsContinually(ImmutableMap.of("timeout", "100ms"), entity, NUM3, 126);
}
@Test
@@ -187,7 +187,7 @@ public class EnrichersTest extends BrooklynAppUnitTestSupport {
EntityAsserts.assertAttributeEqualsEventually(entity, STR2, "myvalmysuffix");
}
- @Test(groups="Integration") // because takes a second
+ @Test
public void testTransformingRespectsUnchangedButWillRepublish() throws Exception {
RecordingSensorEventListener<String> record = new RecordingSensorEventListener<>();
app.getManagementContext().getSubscriptionManager().subscribe(entity, STR2, record);
@@ -211,7 +211,7 @@ public class EnrichersTest extends BrooklynAppUnitTestSupport {
EntityAsserts.assertAttributeEqualsEventually(entity, STR2, "myval");
entity.sensors().set(STR1, "ignoredval");
- EntityAsserts.assertAttributeEqualsContinually(entity, STR2, "myval");
+ EntityAsserts.assertAttributeEqualsContinually(ImmutableMap.of("timeout", "100ms"), entity, STR2, "myval");
entity.sensors().set(STR1, "myval2");
Asserts.eventually(Suppliers.ofInstance(record), CollectionFunctionals.sizeEquals(3));
@@ -378,7 +378,7 @@ public class EnrichersTest extends BrooklynAppUnitTestSupport {
EntityAsserts.assertAttributeEqualsEventually(group, LONG1, Long.valueOf(1));
}
- @Test(groups="Integration") // because takes a second
+ @Test
public void testAggregatingRespectsUnchanged() {
group.addMember(entity);
group.enrichers().add(Enrichers.builder()
@@ -399,7 +399,7 @@ public class EnrichersTest extends BrooklynAppUnitTestSupport {
EntityAsserts.assertAttributeEqualsEventually(group, LONG1, Long.valueOf(123));
entity.sensors().set(NUM1, 987654);
- EntityAsserts.assertAttributeEqualsContinually(group, LONG1, Long.valueOf(123));
+ EntityAsserts.assertAttributeEqualsContinually(ImmutableMap.of("timeout", "100ms"), group, LONG1, Long.valueOf(123));
}
@Test
[7/8] brooklyn-server git commit: more integration test fixes
Posted by al...@apache.org.
more integration test fixes
brooklyn-software-base, brooklyn-camp, brooklyn-rest-resources
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/3ec0dd45
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/3ec0dd45
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/3ec0dd45
Branch: refs/heads/master
Commit: 3ec0dd45acbf5a06265f05f6aaa2d764245f3144
Parents: fe2b4b6
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Thu Nov 10 18:20:35 2016 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Nov 10 23:04:13 2016 +0200
----------------------------------------------------------------------
camp/camp-brooklyn/pom.xml | 2 +-
.../brooklyn/VanillaBashNetcatYamlTest.java | 3 +-
.../ApplicationResourceIntegrationTest.java | 50 ++++++++++----------
.../SensorResourceIntegrationTest.java | 2 +
.../BrooklynClusterIntegrationTest.java | 2 +-
.../BrooklynNodeIntegrationTest.java | 42 ++++++++--------
...SoftwareProcessSshDriverIntegrationTest.java | 16 -------
.../AbstractSoftwareProcessStreamsTest.java | 2 +-
...laSoftwareProcessStreamsIntegrationTest.java | 5 +-
9 files changed, 58 insertions(+), 66 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3ec0dd45/camp/camp-brooklyn/pom.xml
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/pom.xml b/camp/camp-brooklyn/pom.xml
index 232e5c2..ce0f275 100644
--- a/camp/camp-brooklyn/pom.xml
+++ b/camp/camp-brooklyn/pom.xml
@@ -21,7 +21,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>brooklyn-camp</artifactId>
<packaging>jar</packaging>
- <name>Brooklyn CAMP REST API</name>
+ <name>Brooklyn CAMP</name>
<description>
Brooklyn support for the Oasis CAMP server
</description>
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3ec0dd45/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/VanillaBashNetcatYamlTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/VanillaBashNetcatYamlTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/VanillaBashNetcatYamlTest.java
index f3a345d..bf8685b 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/VanillaBashNetcatYamlTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/VanillaBashNetcatYamlTest.java
@@ -49,7 +49,8 @@ public class VanillaBashNetcatYamlTest extends AbstractYamlTest {
private static final AttributeSensor<String> SENSOR_OUTPUT_ALL = Sensors.newStringSensor("output.all");
final static Effector<String> EFFECTOR_SAY_HI = Effectors.effector(String.class, "sayHiNetcat").buildAbstract();
- @Test(groups="Integration")
+ // OSX specific test because of netcat arguments
+ @Test(groups={"Integration","Broken"})
public void testInvocationSensorAndEnricher() throws Exception {
Preconditions.checkArgument(Networking.isPortAvailable(4321), "port 4321 must not be in use (no leaked nc instances) for this test to succeed!");
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3ec0dd45/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/ApplicationResourceIntegrationTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/ApplicationResourceIntegrationTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/ApplicationResourceIntegrationTest.java
index 743eee4..e1a6de5 100644
--- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/ApplicationResourceIntegrationTest.java
+++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/ApplicationResourceIntegrationTest.java
@@ -24,13 +24,12 @@ import static org.testng.Assert.assertTrue;
import java.net.URI;
import java.util.Set;
+import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.Test;
import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
+import org.apache.brooklyn.entity.software.base.EmptySoftwareProcess;
import org.apache.brooklyn.rest.domain.ApplicationSpec;
import org.apache.brooklyn.rest.domain.ApplicationSummary;
import org.apache.brooklyn.rest.domain.EntitySpec;
@@ -39,27 +38,30 @@ import org.apache.brooklyn.rest.domain.SensorSummary;
import org.apache.brooklyn.rest.testing.BrooklynRestResourceTest;
import org.apache.brooklyn.test.Asserts;
import org.apache.brooklyn.util.collections.MutableMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.annotations.Test;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
-import javax.ws.rs.core.GenericType;
-@Test(singleThreaded = true)
+@Test( // by using a different suite name we disallow interleaving other tests between the methods of this test class, which wrecks the test fixtures
+ suiteName = "ApplicationResourceIntegrationTest")
public class ApplicationResourceIntegrationTest extends BrooklynRestResourceTest {
@SuppressWarnings("unused")
private static final Logger log = LoggerFactory.getLogger(ApplicationResourceIntegrationTest.class);
- private final ApplicationSpec redisSpec = ApplicationSpec.builder().name("redis-app")
- .entities(ImmutableSet.of(new EntitySpec("redis-ent", "org.apache.brooklyn.entity.nosql.redis.RedisStore")))
+ private final ApplicationSpec simpleSpec = ApplicationSpec.builder().name("simple-app")
+ .entities(ImmutableSet.of(new EntitySpec("simple-ent", EmptySoftwareProcess.class.getName())))
.locations(ImmutableSet.of("localhost"))
.build();
@Test(groups="Integration")
- public void testDeployRedisApplication() throws Exception {
- Response response = clientDeploy(redisSpec);
+ public void testDeploySimpleApplication() throws Exception {
+ Response response = clientDeploy(simpleSpec);
assertEquals(response.getStatus(), 201);
assertEquals(getManagementContext().getApplications().size(), 1);
@@ -68,9 +70,9 @@ public class ApplicationResourceIntegrationTest extends BrooklynRestResourceTest
waitForApplicationToBeRunning(response.getLocation());
}
- @Test(groups="Integration", dependsOnMethods = "testDeployRedisApplication")
+ @Test(groups="Integration", dependsOnMethods = "testDeploySimpleApplication")
public void testListEntities() {
- Set<EntitySummary> entities = client().path("/applications/redis-app/entities")
+ Set<EntitySummary> entities = client().path("/applications/simple-app/entities")
.get(new GenericType<Set<EntitySummary>>() {});
for (EntitySummary entity : entities) {
@@ -83,28 +85,28 @@ public class ApplicationResourceIntegrationTest extends BrooklynRestResourceTest
}
}
- @Test(groups="Integration", dependsOnMethods = "testDeployRedisApplication")
- public void testListSensorsRedis() {
- Set<SensorSummary> sensors = client().path("/applications/redis-app/entities/redis-ent/sensors")
+ @Test(groups="Integration", dependsOnMethods = "testDeploySimpleApplication")
+ public void testListSensors() {
+ Set<SensorSummary> sensors = client().path("/applications/simple-app/entities/simple-ent/sensors")
.get(new GenericType<Set<SensorSummary>>() {});
assertTrue(sensors.size() > 0);
SensorSummary uptime = Iterables.find(sensors, new Predicate<SensorSummary>() {
@Override
public boolean apply(SensorSummary sensorSummary) {
- return sensorSummary.getName().equals("redis.uptime");
+ return sensorSummary.getName().equals("service.process.isRunning");
}
});
- assertEquals(uptime.getType(), "java.lang.Integer");
+ assertEquals(uptime.getType(), "java.lang.Boolean");
}
- @Test(groups="Integration", dependsOnMethods = { "testListSensorsRedis", "testListEntities" })
- public void testTriggerRedisStopEffector() throws Exception {
- Response response = client().path("/applications/redis-app/entities/redis-ent/effectors/stop")
+ @Test(groups="Integration", dependsOnMethods = { "testListSensors", "testListEntities" })
+ public void testTriggerStopEffector() throws Exception {
+ Response response = client().path("/applications/simple-app/entities/simple-ent/effectors/stop")
.type(MediaType.APPLICATION_JSON_TYPE)
.post(toJsonEntity(ImmutableMap.of()));
assertEquals(response.getStatus(), Response.Status.ACCEPTED.getStatusCode());
- final URI stateSensor = URI.create("/applications/redis-app/entities/redis-ent/sensors/service.state");
+ final URI stateSensor = URI.create("/applications/simple-app/entities/simple-ent/sensors/service.state");
final String expectedStatus = Lifecycle.STOPPED.toString();
Asserts.succeedsEventually(MutableMap.of("timeout", 60 * 1000), new Runnable() {
public void run() {
@@ -117,13 +119,13 @@ public class ApplicationResourceIntegrationTest extends BrooklynRestResourceTest
});
}
- @Test(groups="Integration", dependsOnMethods = "testTriggerRedisStopEffector" )
- public void testDeleteRedisApplication() throws Exception {
+ @Test(groups="Integration", dependsOnMethods = "testTriggerStopEffector" )
+ public void testDeleteApplication() throws Exception {
int size = getManagementContext().getApplications().size();
- Response response = client().path("/applications/redis-app")
+ Response response = client().path("/applications/simple-app")
.delete();
- waitForPageNotFoundResponse("/applications/redis-app", ApplicationSummary.class);
+ waitForPageNotFoundResponse("/applications/simple-app", ApplicationSummary.class);
assertEquals(response.getStatus(), Response.Status.ACCEPTED.getStatusCode());
assertEquals(getManagementContext().getApplications().size(), size-1);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3ec0dd45/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/SensorResourceIntegrationTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/SensorResourceIntegrationTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/SensorResourceIntegrationTest.java
index 7cf082b..41bcb70 100644
--- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/SensorResourceIntegrationTest.java
+++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/SensorResourceIntegrationTest.java
@@ -41,6 +41,8 @@ import org.testng.annotations.Test;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
+@Test( // by using a different suite name we disallow interleaving other tests between the methods of this test class, which wrecks the test fixtures
+ suiteName = "SensorResourceIntegrationTest")
public class SensorResourceIntegrationTest extends BrooklynRestResourceTest {
private ManagementContext mgmt;
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3ec0dd45/software/base/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynClusterIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynClusterIntegrationTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynClusterIntegrationTest.java
index f4074c0..1e91d2d 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynClusterIntegrationTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynClusterIntegrationTest.java
@@ -76,7 +76,7 @@ public class BrooklynClusterIntegrationTest extends BrooklynAppUnitTestSupport {
}
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testCanStartAndStop() throws Exception {
BrooklynCluster cluster = app.createAndManageChild(EntitySpec.create(BrooklynCluster.class)
.configure(BrooklynCluster.INITIAL_SIZE, 1)
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3ec0dd45/software/base/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java
index 4d4c92e..4ea842e 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java
@@ -172,7 +172,7 @@ services:
*/
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testCanStartAndStop() throws Exception {
BrooklynNode brooklynNode = app.createAndManageChild(newBrooklynNodeSpecForTest());
app.start(locs);
@@ -184,7 +184,7 @@ services:
EntityAsserts.assertAttributeEquals(brooklynNode, BrooklynNode.SERVICE_UP, false);
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testSetsGlobalBrooklynPropertiesFromContents() throws Exception {
BrooklynNode brooklynNode = app.createAndManageChild(newBrooklynNodeSpecForTest()
.configure(BrooklynNode.BROOKLYN_GLOBAL_PROPERTIES_REMOTE_PATH, pseudoBrooklynPropertiesFile.getAbsolutePath())
@@ -195,7 +195,7 @@ services:
assertEquals(Files.readLines(pseudoBrooklynPropertiesFile, Charsets.UTF_8), ImmutableList.of("abc=def"));
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testSetsLocalBrooklynPropertiesFromContents() throws Exception {
BrooklynNode brooklynNode = app.createAndManageChild(newBrooklynNodeSpecForTest()
.configure(BrooklynNode.BROOKLYN_LOCAL_PROPERTIES_REMOTE_PATH, pseudoBrooklynPropertiesFile.getAbsolutePath())
@@ -206,7 +206,7 @@ services:
assertEquals(Files.readLines(pseudoBrooklynPropertiesFile, Charsets.UTF_8), ImmutableList.of("abc=def"));
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testSetsBrooklynPropertiesFromUri() throws Exception {
File brooklynPropertiesSourceFile = File.createTempFile("brooklynnode-test", ".properties");
Files.write("abc=def", brooklynPropertiesSourceFile, Charsets.UTF_8);
@@ -220,7 +220,7 @@ services:
assertEquals(Files.readLines(pseudoBrooklynPropertiesFile, Charsets.UTF_8), ImmutableList.of("abc=def"));
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testSetsBrooklynCatalogFromContents() throws Exception {
BrooklynNode brooklynNode = app.createAndManageChild(newBrooklynNodeSpecForTest()
.configure(BrooklynNode.BROOKLYN_CATALOG_REMOTE_PATH, pseudoBrooklynCatalogFile.getAbsolutePath())
@@ -231,7 +231,7 @@ services:
assertEquals(Files.readLines(pseudoBrooklynCatalogFile, Charsets.UTF_8), ImmutableList.of("<catalog/>"));
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testSetsBrooklynCatalogFromUri() throws Exception {
Files.write("abc=def", brooklynCatalogSourceFile, Charsets.UTF_8);
@@ -244,17 +244,17 @@ services:
assertEquals(Files.readLines(pseudoBrooklynCatalogFile, Charsets.UTF_8), ImmutableList.of("abc=def"));
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testSetsBrooklynCatalogInitialBomFromContents() throws Exception {
runBrooklynCatalogInitialBom(false);
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testSetsBrooklynCatalogInitialBomFromUri() throws Exception {
runBrooklynCatalogInitialBom(true);
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void runBrooklynCatalogInitialBom(boolean useUri) throws Exception {
String catalogContents = Joiner.on("\n").join(
"brooklyn.catalog:",
@@ -297,7 +297,7 @@ services:
"\"?(running|RUNNING)\"?");
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testCopiesResources() throws Exception {
File sourceFile = File.createTempFile("brooklynnode-test", ".properties");
Files.write("abc=def", sourceFile, Charsets.UTF_8);
@@ -319,7 +319,7 @@ services:
}
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testCopiesClasspathEntriesInConfigKey() throws Exception {
String content = "abc=def";
File classpathEntry1 = File.createTempFile("first", ".properties");
@@ -350,7 +350,7 @@ services:
}
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testCopiesClasspathEntriesInConfigKey2() throws Exception {
String content = "abc=def";
File classpathEntry1 = File.createTempFile("first", ".properties");
@@ -467,7 +467,7 @@ services:
// TODO test that the classpath set above is actually used
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testSetsBrooklynWebConsolePort() throws Exception {
BrooklynNode brooklynNode = app.createAndManageChild(newBrooklynNodeSpecForTest()
.configure(BrooklynNode.HTTP_PORT, PortRanges.fromString("45000+")));
@@ -481,7 +481,7 @@ services:
HttpTestUtils.assertHttpStatusCodeEquals(webConsoleUri.toString(), 200, 401);
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testStartsAppOnStartup() throws Exception {
BrooklynNode brooklynNode = app.createAndManageChild(newBrooklynNodeSpecForTest()
.configure(BrooklynNode.APP, BasicApplicationImpl.class.getName()));
@@ -521,7 +521,7 @@ services:
}});
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testStartsAppViaEffector() throws Exception {
BrooklynNode brooklynNode = app.createAndManageChild(newBrooklynNodeSpecForTest());
app.start(locs);
@@ -544,7 +544,7 @@ services:
"\"?(running|RUNNING)\"?");
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testUsesLocation() throws Exception {
String brooklynPropertiesContents =
"brooklyn.location.named.mynamedloc=localhost:(name=myname)\n"+
@@ -578,7 +578,7 @@ services:
assertEquals(parseJson(locatedLocationsContent, ImmutableList.of(appLocationId, "longitude"), Double.class), 45.6, 0.00001);
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testAuthenticationAndHttps() throws Exception {
String adminPassword = "p4ssw0rd";
BrooklynNode brooklynNode = app.createAndManageChild(newBrooklynNodeSpecForTest()
@@ -611,7 +611,7 @@ services:
Assert.assertEquals(response.getResponseCode(), 200);
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testStopPlainThrowsException() throws Exception {
BrooklynNode brooklynNode = setUpBrooklynNodeWithApp();
@@ -637,17 +637,17 @@ services:
}
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testStopAndKillAppsEffector() throws Exception {
createNodeAndExecStopEffector(BrooklynNode.STOP_NODE_AND_KILL_APPS);
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testStopButLeaveAppsEffector() throws Exception {
createNodeAndExecStopEffector(BrooklynNode.STOP_NODE_BUT_LEAVE_APPS);
}
- @Test(groups="Integration")
+ @Test(groups={"Integration", "Broken"})
public void testStopAndRestartProcess() throws Exception {
persistenceDir = Files.createTempDir();
BrooklynNode brooklynNode = app.createAndManageChild(newBrooklynNodeSpecForTest()
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3ec0dd45/software/base/src/test/java/org/apache/brooklyn/entity/java/JavaSoftwareProcessSshDriverIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/java/JavaSoftwareProcessSshDriverIntegrationTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/java/JavaSoftwareProcessSshDriverIntegrationTest.java
index 425c831..d39ed94 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/java/JavaSoftwareProcessSshDriverIntegrationTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/java/JavaSoftwareProcessSshDriverIntegrationTest.java
@@ -131,22 +131,6 @@ public class JavaSoftwareProcessSshDriverIntegrationTest extends BrooklynAppLive
Os.deleteRecursively(dir2);
}
- @Test(groups = "Integration")
- public void testStartsInLegacySpecifiedDirectory() throws Exception {
- String dir1 = Os.mergePathsUnix(Os.tmp(), "/brooklyn-test-"+Strings.makeRandomId(4));
- String dir2 = Os.mergePathsUnix(Os.tmp(), "/brooklyn-test-"+Strings.makeRandomId(4));
- tearDown();
- mgmt = new LocalManagementContextForTests();
- mgmt.getBrooklynProperties().put("brooklyn.dirs.install", dir1);
- mgmt.getBrooklynProperties().put("brooklyn.dirs.run", dir2);
- setUp();
-
- app.config().set(BrooklynConfigKeys.RUN_DIR, dir2);
- doTestSpecifiedDirectory(dir1, dir2);
- Os.deleteRecursively(dir1);
- Os.deleteRecursively(dir2);
- }
-
protected void doTestSpecifiedDirectory(final String installDirPrefix, final String runDirPrefix) throws Exception {
final MyEntity entity = app.createAndManageChild(EntitySpec.create(MyEntity.class));
app.start(ImmutableList.of(localhost));
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3ec0dd45/software/base/src/test/java/org/apache/brooklyn/entity/software/base/AbstractSoftwareProcessStreamsTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/AbstractSoftwareProcessStreamsTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/AbstractSoftwareProcessStreamsTest.java
index 4197551..75216f7 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/AbstractSoftwareProcessStreamsTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/AbstractSoftwareProcessStreamsTest.java
@@ -94,7 +94,7 @@ public abstract class AbstractSoftwareProcessStreamsTest extends BrooklynAppLive
String stdout = getStreamOrFail(subTask, BrooklynTaskTags.STREAM_STDOUT);
String stderr = getStreamOrFail(subTask, BrooklynTaskTags.STREAM_STDERR);
// String env = getStreamOrFail(subTask, BrooklynTaskTags.STREAM_ENV);
- String msg = "stdin="+stdin+"; stdout="+stdout+"; stderr="+stderr; //+"; env="+env;
+ String msg = "taskName='" + taskNameRegex + "'; expected=" + echoed + "; actual=" + stdout + "\nstdin="+stdin+"\nstdout="+stdout+"\nstderr="+stderr; //+"; env="+env;
assertTrue(stdin.contains("echo "+echoed), msg);
assertTrue(stdout.contains(echoed), msg);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3ec0dd45/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaSoftwareProcessStreamsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaSoftwareProcessStreamsIntegrationTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaSoftwareProcessStreamsIntegrationTest.java
index 2712b84..ee630b5 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaSoftwareProcessStreamsIntegrationTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaSoftwareProcessStreamsIntegrationTest.java
@@ -37,7 +37,10 @@ public class VanillaSoftwareProcessStreamsIntegrationTest extends AbstractSoftwa
localhost = app.getManagementContext().getLocationRegistry().getLocationManaged("localhost");
}
- @Test(groups = "Integration")
+ // Fails on subsequent runs because "BROOKLYN" marker already created in
+ // install folder so install step not executed.
+ // TODO Tests leave a lot of garbage in /tmp - should clean up after themselves.
+ @Test(groups = {"Integration", "Broken"})
@Override
public void testGetsStreams() {
Map<String, String> cmds = getCommands();
[3/8] brooklyn-server git commit: Use ssh cli in batch mode - don't
ask for passwords
Posted by al...@apache.org.
Use ssh cli in batch mode - don't ask for passwords
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/69c91c35
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/69c91c35
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/69c91c35
Branch: refs/heads/master
Commit: 69c91c35aec7dc22187717cc1254e90f23e347a4
Parents: 89646d5
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Tue Nov 8 15:04:25 2016 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Nov 10 18:06:51 2016 +0200
----------------------------------------------------------------------
.../apache/brooklyn/util/core/internal/ssh/cli/SshCliTool.java | 3 +++
1 file changed, 3 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/69c91c35/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/cli/SshCliTool.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/cli/SshCliTool.java b/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/cli/SshCliTool.java
index d5a8c6b..e854f18 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/cli/SshCliTool.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/internal/ssh/cli/SshCliTool.java
@@ -224,6 +224,7 @@ public class SshCliTool extends SshAbstractTool implements SshTool {
try {
List<String> cmd = Lists.newArrayList();
cmd.add(getOptionalVal(props, PROP_SCP_EXECUTABLE, scpExecutable));
+ cmd.add("-B");
if (privateKeyFile != null) {
cmd.add("-i");
cmd.add(privateKeyFile.getAbsolutePath());
@@ -260,6 +261,8 @@ public class SshCliTool extends SshAbstractTool implements SshTool {
List<String> cmd = Lists.newArrayList();
cmd.add(getOptionalVal(props, PROP_SSH_EXECUTABLE, sshExecutable));
String propsFlags = getOptionalVal(props, PROP_SSH_FLAGS, sshFlags);
+ cmd.add("-o");
+ cmd.add("BatchMode=yes");
if (propsFlags!=null && propsFlags.trim().length()>0)
cmd.addAll(Arrays.asList(propsFlags.trim().split(" ")));
if (privateKeyFile != null) {
[8/8] brooklyn-server git commit: This closes #412
Posted by al...@apache.org.
This closes #412
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/1caa48ff
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/1caa48ff
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/1caa48ff
Branch: refs/heads/master
Commit: 1caa48ff2a015d2484313b85a226861e3c893c5e
Parents: dff428e 3ec0dd4
Author: Aled Sage <al...@gmail.com>
Authored: Fri Nov 11 09:50:00 2016 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Fri Nov 11 09:50:00 2016 +0000
----------------------------------------------------------------------
camp/camp-brooklyn/pom.xml | 2 +-
.../brooklyn/VanillaBashNetcatYamlTest.java | 3 +-
.../brooklyn/core/entity/AbstractEntity.java | 5 +-
.../util/core/internal/ssh/cli/SshCliTool.java | 3 +
.../geo/external-ip-address-resolvers.txt | 3 +-
.../entity/AbstractApplicationLegacyTest.java | 9 +-
.../brooklyn/core/entity/EntityAssertsTest.java | 203 +++++++++++--------
.../core/entity/EntityAutomanagedTest.java | 7 +
.../entity/RecordingSensorEventListener.java | 4 +
.../brooklyn/enricher/stock/EnrichersTest.java | 34 ++--
.../AbstractCleanOrphanedStateTest.java | 2 +-
.../location/jclouds/JcloudsLocation.java | 2 +-
pom.xml | 4 +-
.../ApplicationResourceIntegrationTest.java | 50 ++---
.../SensorResourceIntegrationTest.java | 2 +
.../BrooklynClusterIntegrationTest.java | 2 +-
.../BrooklynNodeIntegrationTest.java | 42 ++--
...SoftwareProcessSshDriverIntegrationTest.java | 16 --
.../AbstractSoftwareProcessStreamsTest.java | 2 +-
...laSoftwareProcessStreamsIntegrationTest.java | 5 +-
.../java/org/apache/brooklyn/test/Asserts.java | 4 +-
.../util/javalang/MemoryUsageTrackerTest.java | 1 +
.../brooklyn/util/pool/BasicPoolTest.java | 2 +-
23 files changed, 234 insertions(+), 173 deletions(-)
----------------------------------------------------------------------
[4/8] brooklyn-server git commit: Upgrade testng to latest version
Posted by al...@apache.org.
Upgrade testng to latest version
Now that we don't support Java 6 there's no restriction on upgrading testng.
The new version could improve the execution order by not interleaving tests from different classes. But seems that's not the case when using dependsOn*
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/2d3caac5
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/2d3caac5
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/2d3caac5
Branch: refs/heads/master
Commit: 2d3caac5722e9b982f8c8349fd50e35e1b6d05c2
Parents: 69c91c3
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Thu Nov 10 10:54:47 2016 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Nov 10 18:06:52 2016 +0200
----------------------------------------------------------------------
.../apache/brooklyn/launcher/AbstractCleanOrphanedStateTest.java | 2 +-
pom.xml | 4 +++-
.../test/java/org/apache/brooklyn/util/pool/BasicPoolTest.java | 2 +-
3 files changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2d3caac5/launcher/src/test/java/org/apache/brooklyn/launcher/AbstractCleanOrphanedStateTest.java
----------------------------------------------------------------------
diff --git a/launcher/src/test/java/org/apache/brooklyn/launcher/AbstractCleanOrphanedStateTest.java b/launcher/src/test/java/org/apache/brooklyn/launcher/AbstractCleanOrphanedStateTest.java
index a594f2a..8c5608e 100644
--- a/launcher/src/test/java/org/apache/brooklyn/launcher/AbstractCleanOrphanedStateTest.java
+++ b/launcher/src/test/java/org/apache/brooklyn/launcher/AbstractCleanOrphanedStateTest.java
@@ -36,10 +36,10 @@ import org.apache.brooklyn.util.collections.MutableMap;
import org.apache.brooklyn.util.core.flags.SetFromFlag;
import org.apache.commons.lang.builder.EqualsBuilder;
-import com.beust.jcommander.internal.Sets;
import com.google.common.base.Function;
import com.google.common.base.Functions;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
public abstract class AbstractCleanOrphanedStateTest extends RebindTestFixtureWithApp {
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2d3caac5/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index b6469ae..01861bf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -173,7 +173,9 @@
<cxf.javax.annotation-api.version>1.2</cxf.javax.annotation-api.version>
<!-- Testing Dependency Versions -->
- <testng.version>6.8.8</testng.version>
+ <!-- testng 6.9.13 has this problem https://github.com/cbeust/testng/issues/1168, to be fixed in the release following 6.9.13.8. -->
+ <!-- Recent versions of testng are not pushed to maven central, they are publishing to jcentral. -->
+ <testng.version>6.9.10</testng.version>
<mockito.version>1.10.8</mockito.version>
<assertj.version>2.2.0</assertj.version> <!-- v 2.2.0 is being used as v 3.20 introduces Java8 dependencies-->
<cobertura.plugin.version>2.7</cobertura.plugin.version>
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2d3caac5/utils/common/src/test/java/org/apache/brooklyn/util/pool/BasicPoolTest.java
----------------------------------------------------------------------
diff --git a/utils/common/src/test/java/org/apache/brooklyn/util/pool/BasicPoolTest.java b/utils/common/src/test/java/org/apache/brooklyn/util/pool/BasicPoolTest.java
index 16d3877..5b0007a 100644
--- a/utils/common/src/test/java/org/apache/brooklyn/util/pool/BasicPoolTest.java
+++ b/utils/common/src/test/java/org/apache/brooklyn/util/pool/BasicPoolTest.java
@@ -37,13 +37,13 @@ import org.apache.brooklyn.util.pool.Pool;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-import org.testng.internal.annotations.Sets;
import com.google.common.base.Function;
import com.google.common.base.Predicates;
import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
[6/8] brooklyn-server git commit: Make sure entity doesn't equal null
Posted by al...@apache.org.
Make sure entity doesn't equal null
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/fe2b4b69
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/fe2b4b69
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/fe2b4b69
Branch: refs/heads/master
Commit: fe2b4b6997c1d48541f100d3fcb02f6f89223426
Parents: b6af270
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Thu Nov 10 22:24:36 2016 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Nov 10 22:46:46 2016 +0200
----------------------------------------------------------------------
.../org/apache/brooklyn/core/entity/AbstractEntity.java | 5 +++--
.../brooklyn/core/entity/AbstractApplicationLegacyTest.java | 9 +++++++--
.../apache/brooklyn/core/entity/EntityAutomanagedTest.java | 7 +++++++
3 files changed, 17 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/fe2b4b69/core/src/main/java/org/apache/brooklyn/core/entity/AbstractEntity.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/entity/AbstractEntity.java b/core/src/main/java/org/apache/brooklyn/core/entity/AbstractEntity.java
index 6c5f73e..fd7a403 100644
--- a/core/src/main/java/org/apache/brooklyn/core/entity/AbstractEntity.java
+++ b/core/src/main/java/org/apache/brooklyn/core/entity/AbstractEntity.java
@@ -429,8 +429,9 @@ public abstract class AbstractEntity extends AbstractBrooklynObject implements E
@Override
public boolean equals(Object o) {
- return (o == this || o == selfProxy) ||
- (o instanceof Entity && Objects.equal(getId(), ((Entity)o).getId()));
+ return o != null &&
+ ((o == this || o == selfProxy) ||
+ (o instanceof Entity && Objects.equal(getId(), ((Entity)o).getId())));
}
/** internal use only */ @Beta
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/fe2b4b69/core/src/test/java/org/apache/brooklyn/core/entity/AbstractApplicationLegacyTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/AbstractApplicationLegacyTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/AbstractApplicationLegacyTest.java
index d1d4dc3..68ac612 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/AbstractApplicationLegacyTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/AbstractApplicationLegacyTest.java
@@ -20,6 +20,8 @@ package org.apache.brooklyn.core.entity;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotEquals;
+import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
import java.util.List;
@@ -92,8 +94,11 @@ public class AbstractApplicationLegacyTest extends BrooklynAppUnitTestSupport {
assertTrue(Entities.isManaged(app2));
assertTrue(Entities.isManaged(child));
assertEquals(child.getCallHistory(), ImmutableList.of("start"));
- assertEquals(mgmt.getEntityManager().getEntity(app2.getId()), app2);
- assertEquals(mgmt.getEntityManager().getEntity(child.getId()), child);
+ assertNull(mgmt.getEntityManager().getEntity(app2.getId()), "app2 shouldn't be managed by mgmt");
+ assertNull(mgmt.getEntityManager().getEntity(child.getId()), "child shouldn't be managed by mgmt");
+ assertNotEquals(mgmt, app2.getManagementContext(), "managing app2 creates a new management context");
+ assertEquals(app2.getManagementContext().getEntityManager().getEntity(app2.getId()), app2);
+ assertEquals(app2.getManagementContext().getEntityManager().getEntity(child.getId()), child);
app2.stop();
assertEquals(child.getCallHistory(), ImmutableList.of("start", "stop"));
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/fe2b4b69/core/src/test/java/org/apache/brooklyn/core/entity/EntityAutomanagedTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/EntityAutomanagedTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/EntityAutomanagedTest.java
index 741b936..84c7eef 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/EntityAutomanagedTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/EntityAutomanagedTest.java
@@ -20,6 +20,7 @@ package org.apache.brooklyn.core.entity;
import static com.google.common.base.Preconditions.checkNotNull;
import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotEquals;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
@@ -32,6 +33,7 @@ import org.apache.brooklyn.core.entity.EntityAutomanagedTest.RecordingCollection
import org.apache.brooklyn.core.entity.EntityAutomanagedTest.RecordingCollectionChangeListener.ChangeType;
import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
import org.apache.brooklyn.core.test.entity.TestApplication;
+import org.apache.brooklyn.core.test.entity.TestApplicationImpl;
import org.apache.brooklyn.core.test.entity.TestEntity;
import org.apache.brooklyn.test.Asserts;
import org.testng.annotations.BeforeMethod;
@@ -263,6 +265,11 @@ public class EntityAutomanagedTest extends BrooklynAppUnitTestSupport {
listener.assertEventsEqualsEventually(ImmutableList.of(new ChangeEvent(ChangeType.ADDED, e)));
}
+ @Test
+ public void testEntityNotEqualNull() {
+ assertNotEquals(new TestApplicationImpl(), null);
+ }
+
// TODO Compiler problems - see comment at top of class
public static class RecordingCollectionChangeListener { // FIXME implements CollectionChangeListener<Entity> {
public enum ChangeType {
[5/8] brooklyn-server git commit: brooklyn-locations-jclouds
integration test fixes
Posted by al...@apache.org.
brooklyn-locations-jclouds integration test fixes
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/b6af2702
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/b6af2702
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/b6af2702
Branch: refs/heads/master
Commit: b6af2702d8ac247a4d383775daeeb4772d20b60e
Parents: 2d3caac
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Thu Nov 10 17:42:23 2016 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Nov 10 18:07:15 2016 +0200
----------------------------------------------------------------------
.../java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b6af2702/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
index 423326f..6582b02 100644
--- a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
+++ b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
@@ -224,7 +224,7 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im
private static final int NOTES_MAX_LENGTH = 1000;
@VisibleForTesting
- static final String AWS_VPC_HELP_URL = "http://brooklyn.apache.org/v/"+BrooklynVersion.get()+"/ops/locations/more-clouds.html";
+ static final String AWS_VPC_HELP_URL = "http://brooklyn.apache.org/v/latest/ops/locations/index.html#ec2-classic-problems-with-vpc-only-hardware-instance-types";
private final AtomicBoolean loggedSshKeysHint = new AtomicBoolean(false);
private final AtomicBoolean listedAvailableTemplatesOnNoSuchTemplate = new AtomicBoolean(false);