You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by ha...@apache.org on 2015/08/08 04:19:06 UTC
[1/6] incubator-brooklyn git commit: [BROOKLYN-162] Update package
name to a.o.b in usage/test-support
Repository: incubator-brooklyn
Updated Branches:
refs/heads/master 83acab217 -> 2ed62d61b
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/test-support/src/main/java/org/apache/brooklyn/test/TestUtils.groovy
----------------------------------------------------------------------
diff --git a/usage/test-support/src/main/java/org/apache/brooklyn/test/TestUtils.groovy b/usage/test-support/src/main/java/org/apache/brooklyn/test/TestUtils.groovy
new file mode 100644
index 0000000..81d8c0c
--- /dev/null
+++ b/usage/test-support/src/main/java/org/apache/brooklyn/test/TestUtils.groovy
@@ -0,0 +1,541 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.test
+
+import static org.testng.Assert.*
+import groovy.time.TimeDuration
+
+import java.util.concurrent.Callable
+import java.util.concurrent.ExecutionException
+import java.util.concurrent.Executors
+
+import org.codehaus.groovy.runtime.InvokerInvocationException
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+
+import brooklyn.entity.Entity
+import brooklyn.event.AttributeSensor
+import brooklyn.test.Asserts;
+import brooklyn.util.text.StringFunctions;
+import brooklyn.util.time.Duration
+
+import com.google.common.base.Predicate
+import com.google.common.base.Supplier
+import com.google.common.collect.Iterables
+
+/**
+ * Helper functions for tests of Tomcat, JBoss and others.
+ *
+ * Note that methods will migrate from here to {@link Asserts} in future releases.
+ */
+public class TestUtils {
+ private static final Logger log = LoggerFactory.getLogger(TestUtils.class)
+
+ private TestUtils() { }
+
+ /**
+ * True if two attempts to connect to the port succeed.
+ *
+ * @deprecated since 0.5; use {@link brooklyn.util.NetworkUtils#isPortAvailable(int)}
+ */
+ @Deprecated
+ public static boolean isPortInUse(int port, long retryAfterMillis=0) {
+ try {
+ def s = new Socket("localhost", port)
+ s.close()
+ if (retryAfterMillis>0) {
+ log.debug "port {} still open, waiting 1s for it to really close", port
+ //give it 1s to close
+ Thread.sleep retryAfterMillis
+ s = new Socket("localhost", port)
+ s.close()
+ }
+ log.debug "port {} still open (conclusive)", port
+ return true
+ } catch (ConnectException e) {
+ return false
+ }
+ }
+
+ /**
+ * Connects to the given HTTP URL and asserts that the response had status code 200.
+ * @deprecated Use HttpTestUtils.getHttpStatusCode(url) == 200
+ */
+ @Deprecated
+ public static boolean urlRespondsWithStatusCode200(String url) {
+ int status = HttpTestUtils.getHttpStatusCode(url);
+ log.debug "connection to {} gives {}", url, status
+ if (status == 404)
+ throw new Exception("Connection to $url gave 404");
+ return status == 200
+ }
+
+ /**
+ * Connects to the given HTTP URL and asserts that the response had status code 200.
+ * @deprecated Use HttpTestUtils.getHttpStatusCode(url)
+ */
+ @Deprecated
+ public static int urlRespondsStatusCode(String url) {
+ return HttpTestUtils.getHttpStatusCode(url);
+ }
+
+ /**
+ * Connects to the given url and returns the connection.
+ * @deprecated Use HttpTestUtils.connectToUrl(url)
+ */
+ @Deprecated
+ public static URLConnection connectToURL(String url) {
+ return HttpTestUtils.connectToUrl(url);
+ }
+
+ // calling groovy from java doesn't cope with generics here; stripping them from here :-(
+ // <T> void assertEventually(Map flags=[:], Supplier<? extends T> supplier, Predicate<T> predicate)
+ /**
+ * @deprecated since 0.5; use {@link Asserts#eventually(Map, Supplier, Predicate)}
+ */
+ @Deprecated
+ public static void assertEventually(Map flags=[:], Supplier supplier, Predicate predicate) {
+ Asserts.eventually(flags, supplier, predicate);
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#eventually(Map, Supplier, Predicate, String)}
+ */
+ @Deprecated
+ public static <T> void assertEventually(Map flags=[:], Supplier<? extends T> supplier, Predicate<T> predicate, String errMsg) {
+ Asserts.eventually(flags, supplier, predicate, errMsg);
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#succeedsEventually(java.util.Map, Callable)}
+ */
+ @Deprecated
+ public static void assertEventually(Map flags=[:], Callable c) {
+ executeUntilSucceeds(flags, c);
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Runnable)}
+ */
+ @Deprecated
+ public static void assertEventually(Map flags=[:], Runnable c) {
+ executeUntilSucceeds(flags, c);
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Callable)}
+ */
+ @Deprecated
+ public static void executeUntilSucceeds(Map flags=[:], Closure c) {
+ Asserts.succeedsEventually(flags, c);
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Callable)}
+ */
+ @Deprecated
+ public static void executeUntilSucceeds(Map flags=[:], Callable c) {
+ Asserts.succeedsEventually(flags, c);
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Runnable)}
+ */
+ @Deprecated
+ public static void executeUntilSucceeds(Map flags=[:], Runnable r) {
+ if (r in Callable)
+ executeUntilSucceedsWithFinallyBlock(flags, {return ((Callable)r).call();}, { })
+ else if (r in Closure) // Closure check probably not necessary, just was trying to fix a server build which had a screwy problem
+ executeUntilSucceedsWithFinallyBlock(flags, {return ((Closure)r).call();}, { })
+ else
+ executeUntilSucceedsWithFinallyBlock(flags, {r.run(); return true}, { })
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Callable)}, and tear-down with {@link AfterMethod}.
+ */
+ @Deprecated
+ public static void executeUntilSucceedsElseShutdown(Map flags=[:], Entity entity, Closure c) {
+ try {
+ executeUntilSucceedsWithFinallyBlock(flags, c) { }
+ } catch (Throwable t) {
+ entity.stop()
+ throw t
+ }
+ }
+
+ /**
+ * convenience for entities to ensure they shutdown afterwards.
+ *
+ * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Callable)}, and tear-down with {@link AfterMethod}.
+ */
+ @Deprecated
+ public static void executeUntilSucceedsWithShutdown(Map flags=[:], Entity entity, Closure c) {
+ executeUntilSucceedsWithFinallyBlock(flags, c) { entity.stop() }
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Callable)}, and tear-down with {@link AfterMethod}.
+ */
+ @Deprecated
+ public static void executeUntilSucceedsWithFinallyBlock(Map flags=[:], Closure c, Closure finallyBlock={}) {
+ executeUntilSucceedsWithFinallyBlockInternal(flags, c, finallyBlock)
+ }
+
+ /**
+ * Convenience method for cases where we need to test until something is true.
+ *
+ * The runnable will be invoked periodically until it succesfully concludes.
+ * Additionally, a finally block can be supplied.
+ * <p>
+ * The following flags are supported:
+ * <ul>
+ * <li>abortOnError (boolean, default true)
+ * <li>abortOnException - (boolean, default false)
+ * <li>useGroovyTruth - (defaults to false; any result code apart from 'false' will be treated as success including null; ignored for Runnables which aren't Callables)
+ * <li>timeout - (a Duration or an integer in millis, defaults to 30*SECONDS)
+ * <li>period - (a Duration or an integer in millis, for fixed retry time; if not set, defaults to exponentially increasing from 1 to 500ms)
+ * <li>minPeriod - (a Duration or an integer in millis; only used if period not explicitly set; the minimum period when exponentially increasing; defaults to 1ms)
+ * <li>maxPeriod - (a Duration or an integer in millis; only used if period not explicitly set; the maximum period when exponentially increasing; defaults to 500ms)
+ * <li>maxAttempts - (integer, Integer.MAX_VALUE)
+ * </ul>
+ *
+ * @param flags, accepts the flags listed above
+ * @param r
+ * @param finallyBlock
+ *
+ * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Callable)}, and tear-down with {@link AfterMethod}.
+ */
+ @Deprecated
+ public static void executeUntilSucceedsWithFinallyBlock(Map flags=[:], Callable<?> c, Closure finallyBlock={}) {
+ executeUntilSucceedsWithFinallyBlockInternal(flags, c, finallyBlock);
+ }
+
+ /**
+ * the "real" implementation, renamed to allow multiple entry points (depending whether closure cast to callable)
+ *
+ * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Callable)}, and tear-down with {@link AfterMethod}.
+ */
+ @Deprecated
+ private static void executeUntilSucceedsWithFinallyBlockInternal(Map flags=[:], Callable<?> c, Closure finallyBlock={}) {
+// log.trace "abortOnError = {}", flags.abortOnError
+ boolean abortOnException = flags.abortOnException ?: false
+ boolean abortOnError = flags.abortOnError ?: false
+ boolean useGroovyTruth = flags.useGroovyTruth ?: false
+ boolean logException = flags.logException ?: true
+
+ // To speed up tests, default is for the period to start small and increase...
+ Duration duration = Duration.of(flags.timeout) ?: Duration.THIRTY_SECONDS;
+ Duration fixedPeriod = Duration.of(flags.period) ?: null
+ Duration minPeriod = fixedPeriod ?: Duration.of(flags.minPeriod) ?: Duration.millis(1)
+ Duration maxPeriod = fixedPeriod ?: Duration.of(flags.maxPeriod) ?: Duration.millis(500)
+ int maxAttempts = flags.maxAttempts ?: Integer.MAX_VALUE;
+ int attempt = 0;
+ long startTime = System.currentTimeMillis();
+ try {
+ Throwable lastException = null;
+ Object result;
+ long lastAttemptTime = 0;
+ long expireTime = startTime+duration.toMilliseconds();
+ long sleepTimeBetweenAttempts = minPeriod.toMilliseconds();
+
+ while (attempt<maxAttempts && lastAttemptTime<expireTime) {
+ try {
+ attempt++
+ lastAttemptTime = System.currentTimeMillis()
+ result = c.call()
+ log.trace "Attempt {} after {} ms: {}", attempt, System.currentTimeMillis() - startTime, result
+ if (useGroovyTruth) {
+ if (result) return;
+ } else if (result != false) {
+ if (result instanceof BooleanWithMessage)
+ log.warn "Test returned an instance of BooleanWithMessage but useGroovyTruth is not set! " +
+ "The result of this probably isn't what you intended."
+ return;
+ }
+ lastException = null
+ } catch(Throwable e) {
+ lastException = e
+ log.trace "Attempt {} after {} ms: {}", attempt, System.currentTimeMillis() - startTime, e.message
+ if (abortOnException) throw e
+ if (abortOnError && e in Error) throw e
+ }
+ long sleepTime = Math.min(sleepTimeBetweenAttempts, expireTime-System.currentTimeMillis())
+ if (sleepTime > 0) Thread.sleep(sleepTime)
+ sleepTimeBetweenAttempts = Math.min(sleepTimeBetweenAttempts*2, maxPeriod.toMilliseconds())
+ }
+
+ log.debug "TestUtils.executeUntilSucceedsWithFinallyBlockInternal exceeded max attempts or timeout - {} attempts lasting {} ms", attempt, System.currentTimeMillis()-startTime
+ if (lastException != null)
+ throw lastException
+ fail "invalid result: $result"
+ } catch (Throwable t) {
+ if (logException) log.info("failed execute-until-succeeds, "+attempt+" attempts, "+
+ (System.currentTimeMillis()-startTime)+"ms elapsed "+
+ "(rethrowing): "+t);
+ throw t
+ } finally {
+ finallyBlock.call()
+ }
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#succeedsContinually(Map, Runnable)}
+ */
+ @Deprecated
+ public static <T> void assertSucceedsContinually(Map flags=[:], Runnable job) {
+ assertSucceedsContinually(flags, Executors.callable(job));
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#succeedsContinually(Map, Callable)}
+ */
+ @Deprecated
+ public static void assertSucceedsContinually(Map flags=[:], Callable<?> job) {
+ Duration duration = Duration.of(flags.timeout) ?: Duration.ONE_SECOND
+ Duration period = Duration.of(flags.period) ?: Duration.millis(10)
+ long periodMs = period.toMilliseconds()
+ long startTime = System.currentTimeMillis()
+ long expireTime = startTime+duration.toMilliseconds()
+
+ boolean first = true;
+ while (first || System.currentTimeMillis() <= expireTime) {
+ job.call();
+ if (periodMs > 0) sleep(periodMs);
+ first = false;
+ }
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#continually(Map, Supplier, Predicate)}
+ */
+ @Deprecated
+ // FIXME When calling from java, the generics declared in groovy messing things up!
+ public static void assertContinuallyFromJava(Map flags=[:], Supplier<?> supplier, Predicate<?> predicate) {
+ Asserts.continually(flags, supplier, predicate);
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#continually(Map, Supplier, Predicate)}
+ */
+ @Deprecated
+ public static <T> void assertContinually(Map flags=[:], Supplier<? extends T> supplier, Predicate<T> predicate) {
+ Asserts.continually(flags, supplier, predicate, (String)null);
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#continually(Map, Supplier, Predicate, String)}
+ */
+ @Deprecated
+ public static <T> void assertContinually(Map flags=[:], Supplier<? extends T> supplier, Predicate<T> predicate, String errMsg, long durationMs) {
+ flags.put("duration", Duration.millis(durationMs));
+ Asserts.continually(flags, supplier, predicate, errMsg);
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#continually(Map, Supplier, Predicate, String)}
+ */
+ @Deprecated
+ public static <T> void assertContinually(Map flags=[:], Supplier<? extends T> supplier, Predicate<T> predicate, String errMsg) {
+ Asserts.continually(flags, supplier, predicate, errMsg);
+ }
+
+ public static class BooleanWithMessage {
+ boolean value; String message;
+ public BooleanWithMessage(boolean value, String message) {
+ this.value = value; this.message = message;
+ }
+ public boolean asBoolean() {
+ return value
+ }
+ public String toString() {
+ return message
+ }
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link brooklyn.util.ResourceUtils}
+ */
+ @Deprecated
+ public static File getResource(String path, ClassLoader loader) {
+ URL resource = loader.getResource(path)
+ if (resource==null)
+ throw new IllegalArgumentException("cannot find required entity '"+path+"'");
+
+ return new File(resource.path)
+ }
+
+ /**
+ * @deprecated since 0.5; use long and {@link TimeUnit}
+ */
+ @Deprecated
+ public static TimeDuration toTimeDuration(Object duration) {
+ return toTimeDuration(duration, null);
+ }
+
+ /**
+ * @deprecated since 0.5; use long and {@link TimeUnit}
+ */
+ @Deprecated
+ public static TimeDuration toTimeDuration(Object duration, TimeDuration defaultVal) {
+ if (duration == null) {
+ return defaultVal;
+ } else if (duration instanceof TimeDuration) {
+ return (TimeDuration) duration
+ } else if (duration instanceof Number) {
+ return new TimeDuration(0,0,0,(int)duration)
+ // TODO would be nice to have this, but we need to sort out utils / test-utils dependency
+// } else if (duration instanceof String) {
+// return Time.parseTimeString((String)duration);
+ } else {
+ throw new IllegalArgumentException("Cannot convert $duration of type ${duration.class.name} to a TimeDuration")
+ }
+ }
+
+ public static Throwable unwrapThrowable(Throwable t) {
+ if (t.getCause() == null) {
+ return t;
+ } else if (t instanceof ExecutionException) {
+ return unwrapThrowable(t.getCause())
+ } else if (t instanceof InvokerInvocationException) {
+ return unwrapThrowable(t.getCause())
+ } else {
+ return t
+ }
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link EntityTestUtils#assertAttributeEqualsEventually(Entity, AttributeSensor, Object)}
+ */
+ @Deprecated
+ public static <T> void assertAttributeEventually(Entity entity, AttributeSensor<T> attribute, T expected) {
+ executeUntilSucceeds() {
+ assertEquals(entity.getAttribute(attribute), expected);
+ }
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link EntityTestUtils#assertAttributeEqualsContinually(Entity, AttributeSensor, Object)}
+ */
+ @Deprecated
+ public static <T> void assertAttributeContinually(Entity entity, AttributeSensor<T> attribute, T expected) {
+ assertSucceedsContinually() {
+ assertEquals(entity.getAttribute(attribute), expected);
+ }
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link HttpTestUtils#assertHttpStatusCodeEquals(String, int)}
+ */
+ @Deprecated
+ public static void assertUrlStatusCodeEventually(final String url, final int expected) {
+ executeUntilSucceeds() {
+ assertEquals(urlRespondsStatusCode(url), expected);
+ }
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#assertFails(Runnable)}
+ */
+ @Deprecated
+ public static void assertFails(Runnable c) {
+ assertFailsWith(c, (Predicate)null);
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#assertFailsWith(Closure)}
+ */
+ @Deprecated
+ public static void assertFailsWith(Runnable c, Closure exceptionChecker) {
+ assertFailsWith(c, exceptionChecker as Predicate);
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#assertFailsWith(Runnable, Class, Class...)}
+ */
+ @Deprecated
+ public static void assertFailsWith(Runnable c, final Class<? extends Throwable> validException, final Class<? extends Throwable> ...otherValidExceptions) {
+ assertFailsWith(c, { e ->
+ if (validException.isInstance(e)) return true;
+ if (otherValidExceptions.find {it.isInstance(e)}) return true;
+ List expectedTypes = [validException];
+ expectedTypes.addAll(Arrays.asList(otherValidExceptions));
+ fail("Test threw exception of unexpected type "+e.getClass()+"; expecting "+expectedTypes);
+ });
+ }
+
+ /**
+ * @deprecated since 0.5; use {@link Asserts#assertFailsWith(Runnable, Predicate)}
+ */
+ @Deprecated
+ public static void assertFailsWith(Runnable c, Predicate<Throwable> exceptionChecker) {
+ boolean failed = false;
+ try {
+ c.run();
+ } catch (Throwable e) {
+ failed = true;
+ if (exceptionChecker!=null) {
+ if (!exceptionChecker.apply(e)) {
+ fail("Test threw invalid exception: "+e);
+ }
+ }
+ log.debug("Test for exception successful ("+e+")");
+ }
+ if (!failed) fail("Test code should have thrown exception but did not");
+ }
+
+ public static void assertSetsEqual(Collection c1, Collection c2) {
+ Set s = new LinkedHashSet();
+ s.addAll(c1); s.removeAll(c2);
+ if (!s.isEmpty()) fail("First argument contains additional contents: "+s);
+ s.clear(); s.addAll(c2); s.removeAll(c1);
+ if (!s.isEmpty()) fail("Second argument contains additional contents: "+s);
+ }
+
+ /**
+ * @deprecated since 0.5; use {@code assertFalse(Iterables.isEmpty(c))}
+ */
+ @Deprecated
+ public static <T> void assertNonEmpty(Iterable<T> c) {
+ if (c.iterator().hasNext()) return;
+ fail("Expected non-empty set");
+ }
+
+ /**
+ * @deprecated since 0.5; use {@code assertEquals(Iterables.size(c), expectedSize)}
+ */
+ @Deprecated
+ public static <T> void assertSize(Iterable<T> c, int expectedSize) {
+ int actualSize = Iterables.size(c);
+ if (actualSize==expectedSize) return;
+ fail("Expected collection of size "+expectedSize+" but got size "+actualSize+": "+c);
+ }
+
+ /**
+ * @deprecated since 0.7.0; use {@link Asserts#assertThat(Object, Predicate)} with {@link StringFunctions})}
+ */
+ @Deprecated
+ public static void assertStringContainsLiteral(String string, String substring) {
+ if (string==null) fail("String is null");
+ if (substring==null) fail("Substring is null");
+ if (string.indexOf(substring)>=0) return;
+ fail("String '"+string+"' does not contain expected pattern '"+substring+"'");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/test-support/src/main/java/org/apache/brooklyn/test/TrustingSslSocketFactory.java
----------------------------------------------------------------------
diff --git a/usage/test-support/src/main/java/org/apache/brooklyn/test/TrustingSslSocketFactory.java b/usage/test-support/src/main/java/org/apache/brooklyn/test/TrustingSslSocketFactory.java
new file mode 100644
index 0000000..58fb76c
--- /dev/null
+++ b/usage/test-support/src/main/java/org/apache/brooklyn/test/TrustingSslSocketFactory.java
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.test;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.net.URLConnection;
+import java.net.UnknownHostException;
+import java.security.cert.X509Certificate;
+
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Throwables;
+
+// FIXME copied from brooklyn-core because core not visible here
+
+public class TrustingSslSocketFactory extends SSLSocketFactory {
+
+ private static final Logger logger = LoggerFactory.getLogger(TrustingSslSocketFactory.class);
+
+ private static TrustingSslSocketFactory INSTANCE;
+ public synchronized static TrustingSslSocketFactory getInstance() {
+ if (INSTANCE==null) INSTANCE = new TrustingSslSocketFactory();
+ return INSTANCE;
+ }
+
+ private static SSLContext sslContext;
+ static {
+ try {
+ sslContext = SSLContext.getInstance("TLS");
+ } catch (Exception e) {
+ logger.error("Unable to set up SSLContext with TLS. Https activity will likely fail.", e);
+ }
+ }
+
+ /** configures a connection to accept all certificates, if it is for https */
+ public static <T extends URLConnection> T configure(T connection) {
+ if (connection instanceof HttpsURLConnection) {
+ ((HttpsURLConnection)connection).setSSLSocketFactory(getInstance());
+ }
+ return connection;
+ }
+
+ /** trusts all SSL certificates */
+ public static final TrustManager TRUST_ALL = new X509TrustManager() {
+ public X509Certificate[] getAcceptedIssuers() {
+ return new X509Certificate[0];
+ }
+ @Override
+ public void checkClientTrusted(X509Certificate[] chain, String authType)
+ throws java.security.cert.CertificateException {
+
+ }
+ @Override
+ public void checkServerTrusted(X509Certificate[] chain, String authType)
+ throws java.security.cert.CertificateException {
+ }
+ };
+
+ // no reason this can't be public, but no reason it should be necessary;
+ // just use getInstance to get the shared INSTANCE
+ protected TrustingSslSocketFactory() {
+ super();
+ try {
+ sslContext.init(null, new TrustManager[] { TRUST_ALL }, null);
+ } catch (Exception e) {
+ throw Throwables.propagate(e);
+ }
+ }
+
+ @Override
+ public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException {
+ return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
+ }
+
+ @Override
+ public Socket createSocket() throws IOException {
+ return sslContext.getSocketFactory().createSocket();
+ }
+
+ @Override
+ public String[] getDefaultCipherSuites() {
+ return sslContext.getSocketFactory().getDefaultCipherSuites();
+ }
+
+ @Override
+ public String[] getSupportedCipherSuites() {
+ return sslContext.getSocketFactory().getSupportedCipherSuites();
+ }
+
+ @Override
+ public Socket createSocket(String arg0, int arg1) throws IOException, UnknownHostException {
+ return sslContext.getSocketFactory().createSocket(arg0, arg1);
+ }
+
+ @Override
+ public Socket createSocket(InetAddress arg0, int arg1) throws IOException {
+ return sslContext.getSocketFactory().createSocket(arg0, arg1);
+ }
+
+ @Override
+ public Socket createSocket(String arg0, int arg1, InetAddress arg2, int arg3) throws IOException, UnknownHostException {
+ return sslContext.getSocketFactory().createSocket(arg0, arg1, arg2, arg3);
+ }
+
+ @Override
+ public Socket createSocket(InetAddress arg0, int arg1, InetAddress arg2, int arg3) throws IOException {
+ return sslContext.getSocketFactory().createSocket(arg0, arg1, arg2, arg3);
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/test-support/src/main/java/org/apache/brooklyn/test/WebAppMonitor.java
----------------------------------------------------------------------
diff --git a/usage/test-support/src/main/java/org/apache/brooklyn/test/WebAppMonitor.java b/usage/test-support/src/main/java/org/apache/brooklyn/test/WebAppMonitor.java
new file mode 100644
index 0000000..daba835
--- /dev/null
+++ b/usage/test-support/src/main/java/org/apache/brooklyn/test/WebAppMonitor.java
@@ -0,0 +1,214 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.test;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.slf4j.Logger;
+import org.testng.Assert;
+
+import brooklyn.test.Asserts;
+import brooklyn.util.collections.MutableMap;
+import brooklyn.util.time.Duration;
+
+/**
+ * Repeatedly polls a given URL, to check if it is always available.
+ *
+ * @author Alex, Aled
+ */
+public class WebAppMonitor implements Runnable {
+ final AtomicBoolean shouldBeActive = new AtomicBoolean(true);
+ final AtomicBoolean isActive = new AtomicBoolean(false);
+ final AtomicInteger successes = new AtomicInteger(0);
+ final AtomicInteger failures = new AtomicInteger(0);
+ final AtomicLong lastTime = new AtomicLong(-1);
+ final AtomicReference<Object> lastStatus = new AtomicReference<Object>(null);
+ final AtomicReference<Object> lastFailure = new AtomicReference<Object>(null);
+ Logger log;
+ Object problem = null;
+ String url;
+ long delayMillis = 500;
+ int expectedResponseCode = 200;
+
+ public WebAppMonitor(String url) {
+ this.url = url;
+ }
+ public WebAppMonitor() {
+ }
+ public WebAppMonitor logFailures(Logger log) {
+ this.log = log;
+ return this;
+ }
+ public WebAppMonitor delayMillis(long val) {
+ this.delayMillis = val;
+ return this;
+ }
+ public WebAppMonitor expectedResponseCode(int val) {
+ this.expectedResponseCode = val;
+ return this;
+ }
+ public WebAppMonitor url(String val) {
+ this.url = val;
+ return this;
+ }
+
+ public void run() {
+ synchronized (isActive) {
+ if (isActive.getAndSet(true))
+ throw new IllegalStateException("already running");
+ }
+ while (shouldBeActive.get()) {
+ long startTime = System.currentTimeMillis();
+ try {
+ if (preAttempt()) {
+ int code = HttpTestUtils.getHttpStatusCode(url);
+ lastTime.set(System.currentTimeMillis() - startTime);
+ lastStatus.set(code);
+ if (isResponseOkay(code)) {
+ successes.incrementAndGet();
+ } else {
+ lastFailure.set(code);
+ failures.incrementAndGet();
+ onFailure("return code "+code);
+ }
+ }
+ } catch (Exception e) {
+ lastTime.set(System.currentTimeMillis()-startTime);
+ lastStatus.set(e);
+ lastFailure.set(e);
+ failures.incrementAndGet();
+ onFailure(e);
+ }
+ try {
+ if (delayMillis > 0) {
+ Thread.sleep(delayMillis);
+ }
+ } catch (InterruptedException e) {
+ onFailure(e);
+ shouldBeActive.set(false);
+ }
+ }
+ synchronized (isActive) {
+ if (!isActive.getAndSet(false))
+ throw new IllegalStateException("shouldn't be possible!");
+ isActive.notifyAll();
+ }
+ }
+
+ public boolean isResponseOkay(Object code) {
+ return code!=null && new Integer(expectedResponseCode).equals(code);
+ }
+
+ public void setDelayMillis(long delayMillis) {
+ this.delayMillis = delayMillis;
+ }
+ public long getDelayMillis() {
+ return delayMillis;
+ }
+ public void terminate() throws InterruptedException {
+ shouldBeActive.set(false);
+ synchronized (isActive) {
+ while (isActive.get()) isActive.wait();
+ }
+ }
+ public int getFailures() {
+ return failures.get();
+ }
+ public int getSuccesses() {
+ return successes.get();
+ }
+ public void setUrl(String url) {
+ this.url = url;
+ }
+ public String getUrl() {
+ return url;
+ }
+ public Object getProblem() {
+ return problem;
+ }
+ public int getAttempts() {
+ return getFailures()+getSuccesses();
+ }
+ public boolean getLastWasFailed() {
+ return isResponseOkay(getLastStatus());
+ }
+ public Object getLastStatus() {
+ return lastStatus.get();
+ }
+ public long getLastTime() {
+ return lastTime.get();
+ }
+ /** result code (int) or exception */
+ public Object getLastFailure() {
+ return lastFailure.get();
+ }
+
+ public void onFailure(Object problem) {
+ if (log != null) {
+ log.warn("Detected failure in monitor accessing "+getUrl()+": "+problem);
+ }
+ this.problem = problem;
+ }
+
+ /** return false to skip a run */
+ public boolean preAttempt() {
+ return true;
+ }
+
+ public WebAppMonitor assertNoFailures(String message) {
+ return assertSuccessFraction(message, 1.0);
+ }
+ public WebAppMonitor assertAttemptsMade(int minAttempts, String message) {
+ if (getAttempts()<minAttempts) {
+ Assert.fail(message+" -- webapp access failures! " +
+ "(0 attempts made; probably blocked on server)");
+ }
+ return this;
+ }
+ public WebAppMonitor waitForAtLeastOneAttempt() {
+ return waitForAtLeastOneAttempt(Asserts.DEFAULT_TIMEOUT);
+ }
+ public WebAppMonitor waitForAtLeastOneAttempt(Duration timeout) {
+ Asserts.succeedsEventually(MutableMap.of("timeout", timeout), new Runnable() {
+ @Override public void run() {
+ Assert.assertTrue(getAttempts() >= 1);
+ }});
+ return this;
+ }
+ public WebAppMonitor assertSuccessFraction(String message, double fraction) {
+ int failures = getFailures();
+ int attempts = getAttempts();
+ if ((failures > (1-fraction) * attempts + 0.0001) || attempts <= 0) {
+ Assert.fail(message+" -- webapp access failures! " +
+ "("+failures+" failed of "+attempts+" monitoring attempts) against "+getUrl()+"; " +
+ "last was "+getLastStatus()+" taking "+getLastTime()+"ms" +
+ (getLastFailure() != null ? "; last failure was "+getLastFailure() : ""));
+ }
+ return this;
+ }
+ public WebAppMonitor resetCounts() {
+ failures.set(0);
+ successes.set(0);
+ return this;
+ }
+
+}
\ No newline at end of file
[3/6] incubator-brooklyn git commit: [BROOKLYN-162] Update package
name to a.o.b in usage/test-support
Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss6ServerAwsEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss6ServerAwsEc2LiveTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss6ServerAwsEc2LiveTest.java
index 11defe8..ca3ac2b 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss6ServerAwsEc2LiveTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss6ServerAwsEc2LiveTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertNotNull;
import java.net.URL;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import org.testng.annotations.Test;
@@ -30,7 +31,6 @@ import brooklyn.entity.AbstractEc2LiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss6ServerNonInheritingIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss6ServerNonInheritingIntegrationTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss6ServerNonInheritingIntegrationTest.java
index 911109c..cb3ffdf 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss6ServerNonInheritingIntegrationTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss6ServerNonInheritingIntegrationTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertNotNull;
import java.net.URL;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -32,7 +33,6 @@ import brooklyn.entity.java.UsesJmx;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerAwsEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerAwsEc2LiveTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerAwsEc2LiveTest.java
index 78f6153..46fdb80 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerAwsEc2LiveTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerAwsEc2LiveTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertNotNull;
import java.net.URL;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import org.testng.annotations.Test;
@@ -30,7 +31,6 @@ import brooklyn.entity.AbstractEc2LiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerDockerLiveTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerDockerLiveTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerDockerLiveTest.java
index a15e35d..813b38d 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerDockerLiveTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerDockerLiveTest.java
@@ -22,9 +22,12 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.software.AbstractDockerLiveTest;
import brooklyn.location.Location;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
+
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
+
import com.google.common.collect.ImmutableList;
+
import org.testng.annotations.Test;
import java.net.URL;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerNonInheritingIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerNonInheritingIntegrationTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerNonInheritingIntegrationTest.java
index 31647e6..a31a147 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerNonInheritingIntegrationTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerNonInheritingIntegrationTest.java
@@ -35,8 +35,10 @@ import brooklyn.entity.webapp.AbstractWebAppFixtureIntegrationTest;
import brooklyn.entity.webapp.HttpsSslConfig;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
+
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
+
import brooklyn.test.entity.TestApplication;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerRebindingIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerRebindingIntegrationTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerRebindingIntegrationTest.java
index d580a73..c855ccd 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerRebindingIntegrationTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/JBoss7ServerRebindingIntegrationTest.java
@@ -25,7 +25,10 @@ import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import org.apache.brooklyn.test.EntityTestUtils;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
+import org.apache.brooklyn.test.WebAppMonitor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -37,9 +40,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.rebind.RebindOptions;
import brooklyn.entity.rebind.RebindTestFixtureWithApp;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
-import brooklyn.test.HttpTestUtils;
-import brooklyn.test.WebAppMonitor;
import brooklyn.test.entity.TestApplication;
import com.google.common.base.Predicates;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/Jboss7ServerGoogleComputeLiveTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/Jboss7ServerGoogleComputeLiveTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/Jboss7ServerGoogleComputeLiveTest.java
index d28b1b7..e5cdcf5 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/Jboss7ServerGoogleComputeLiveTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/Jboss7ServerGoogleComputeLiveTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertNotNull;
import java.net.URL;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import org.testng.annotations.Test;
@@ -30,7 +31,6 @@ import brooklyn.entity.AbstractGoogleComputeLiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/nodejs/NodeJsWebAppEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/nodejs/NodeJsWebAppEc2LiveTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/nodejs/NodeJsWebAppEc2LiveTest.java
index b2b5937..ace298f 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/nodejs/NodeJsWebAppEc2LiveTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/nodejs/NodeJsWebAppEc2LiveTest.java
@@ -22,12 +22,12 @@ import static brooklyn.entity.webapp.nodejs.NodeJsWebAppFixtureIntegrationTest.A
import static brooklyn.entity.webapp.nodejs.NodeJsWebAppFixtureIntegrationTest.APP_NAME;
import static brooklyn.entity.webapp.nodejs.NodeJsWebAppFixtureIntegrationTest.GIT_REPO_URL;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.testng.annotations.Test;
import brooklyn.entity.AbstractEc2LiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
-import brooklyn.test.HttpTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/nodejs/NodeJsWebAppFixtureIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/nodejs/NodeJsWebAppFixtureIntegrationTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/nodejs/NodeJsWebAppFixtureIntegrationTest.java
index d567448..14c3ca1 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/nodejs/NodeJsWebAppFixtureIntegrationTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/nodejs/NodeJsWebAppFixtureIntegrationTest.java
@@ -29,13 +29,15 @@ import brooklyn.location.Location;
import brooklyn.location.basic.PortRanges;
import brooklyn.management.ManagementContext;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
-import brooklyn.test.HttpTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.net.Urls;
import brooklyn.util.time.Duration;
+
import com.google.common.collect.ImmutableList;
+
+import org.apache.brooklyn.test.EntityTestUtils;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/nodejs/NodeJsWebAppSoftlayerLiveTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/nodejs/NodeJsWebAppSoftlayerLiveTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/nodejs/NodeJsWebAppSoftlayerLiveTest.java
index ae87086..4919906 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/nodejs/NodeJsWebAppSoftlayerLiveTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/nodejs/NodeJsWebAppSoftlayerLiveTest.java
@@ -22,12 +22,12 @@ import static brooklyn.entity.webapp.nodejs.NodeJsWebAppFixtureIntegrationTest.A
import static brooklyn.entity.webapp.nodejs.NodeJsWebAppFixtureIntegrationTest.APP_NAME;
import static brooklyn.entity.webapp.nodejs.NodeJsWebAppFixtureIntegrationTest.GIT_REPO_URL;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.testng.annotations.Test;
import brooklyn.entity.AbstractSoftlayerLiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
-import brooklyn.test.HttpTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/Tomcat8ServerEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/Tomcat8ServerEc2LiveTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/Tomcat8ServerEc2LiveTest.java
index ecb7356..b8ffa32 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/Tomcat8ServerEc2LiveTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/Tomcat8ServerEc2LiveTest.java
@@ -27,7 +27,8 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.webapp.tomcat.Tomcat8Server;
import brooklyn.location.Location;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
+
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/Tomcat8ServerSoftlayerLiveTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/Tomcat8ServerSoftlayerLiveTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/Tomcat8ServerSoftlayerLiveTest.java
index 7268d10..d88191b 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/Tomcat8ServerSoftlayerLiveTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/Tomcat8ServerSoftlayerLiveTest.java
@@ -27,7 +27,8 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.webapp.tomcat.Tomcat8Server;
import brooklyn.location.Location;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
+
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/TomcatServerEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/TomcatServerEc2LiveTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/TomcatServerEc2LiveTest.java
index 5282e3a..467e3c4 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/TomcatServerEc2LiveTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/TomcatServerEc2LiveTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertNotNull;
import java.net.URL;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import org.testng.annotations.Test;
@@ -30,7 +31,6 @@ import brooklyn.entity.AbstractEc2LiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/TomcatServerSoftlayerLiveTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/TomcatServerSoftlayerLiveTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/TomcatServerSoftlayerLiveTest.java
index 13db672..ab23e7f 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/TomcatServerSoftlayerLiveTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/tomcat/TomcatServerSoftlayerLiveTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertNotNull;
import java.net.URL;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import org.testng.annotations.Test;
@@ -30,7 +31,6 @@ import brooklyn.entity.AbstractSoftlayerLiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/EnrichersSlightlySimplerYamlTest.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/EnrichersSlightlySimplerYamlTest.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/EnrichersSlightlySimplerYamlTest.java
index b416be5..e231432 100644
--- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/EnrichersSlightlySimplerYamlTest.java
+++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/EnrichersSlightlySimplerYamlTest.java
@@ -23,6 +23,7 @@ import java.util.Collection;
import java.util.Iterator;
import java.util.List;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -35,7 +36,6 @@ import brooklyn.entity.basic.EntityInternal;
import brooklyn.entity.group.DynamicCluster;
import brooklyn.entity.webapp.JavaWebAppSoftwareProcess;
import brooklyn.event.basic.Sensors;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.collections.CollectionFunctionals;
import brooklyn.util.collections.MutableList;
import brooklyn.util.math.MathPredicates;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/JavaWebAppsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/JavaWebAppsIntegrationTest.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/JavaWebAppsIntegrationTest.java
index 007c830..a55881c 100644
--- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/JavaWebAppsIntegrationTest.java
+++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/JavaWebAppsIntegrationTest.java
@@ -19,7 +19,6 @@
package org.apache.brooklyn.camp.brooklyn;
import static com.google.common.base.Preconditions.checkNotNull;
-
import io.brooklyn.camp.spi.Assembly;
import io.brooklyn.camp.spi.AssemblyTemplate;
import io.brooklyn.camp.spi.PlatformComponent;
@@ -35,6 +34,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.brooklyn.camp.brooklyn.BrooklynCampPlatform;
import org.apache.brooklyn.camp.brooklyn.BrooklynCampPlatformLauncherNoServer;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -55,7 +55,6 @@ import brooklyn.management.Task;
import brooklyn.policy.Policy;
import brooklyn.policy.autoscaling.AutoScalerPolicy;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.ResourceUtils;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.exceptions.Exceptions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/ReloadBrooklynPropertiesTest.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/ReloadBrooklynPropertiesTest.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/ReloadBrooklynPropertiesTest.java
index 23aa759..275aa0a 100644
--- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/ReloadBrooklynPropertiesTest.java
+++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/ReloadBrooklynPropertiesTest.java
@@ -26,6 +26,7 @@ import java.io.Reader;
import org.apache.brooklyn.camp.brooklyn.BrooklynCampConstants;
import org.apache.brooklyn.camp.brooklyn.BrooklynCampPlatformLauncherNoServer;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -37,7 +38,6 @@ import brooklyn.entity.Entity;
import brooklyn.entity.basic.Entities;
import brooklyn.entity.trait.Startable;
import brooklyn.management.ManagementContext;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.ResourceUtils;
import brooklyn.util.exceptions.Exceptions;
import brooklyn.util.stream.Streams;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/VanillaBashNetcatYamlTest.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/VanillaBashNetcatYamlTest.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/VanillaBashNetcatYamlTest.java
index bde5016..5e97099 100644
--- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/VanillaBashNetcatYamlTest.java
+++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/VanillaBashNetcatYamlTest.java
@@ -19,6 +19,7 @@
package org.apache.brooklyn.camp.brooklyn;
import org.apache.brooklyn.camp.brooklyn.BrooklynCampConstants;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -34,7 +35,6 @@ import brooklyn.entity.effector.Effectors;
import brooklyn.event.AttributeSensor;
import brooklyn.event.basic.Sensors;
import brooklyn.management.Task;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.net.Networking;
import brooklyn.util.text.StringPredicates;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/jsgui/src/test/java/org/apache/brooklyn/rest/jsgui/BrooklynJavascriptGuiLauncherTest.java
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/test/java/org/apache/brooklyn/rest/jsgui/BrooklynJavascriptGuiLauncherTest.java b/usage/jsgui/src/test/java/org/apache/brooklyn/rest/jsgui/BrooklynJavascriptGuiLauncherTest.java
index cd538cc..799b181 100644
--- a/usage/jsgui/src/test/java/org/apache/brooklyn/rest/jsgui/BrooklynJavascriptGuiLauncherTest.java
+++ b/usage/jsgui/src/test/java/org/apache/brooklyn/rest/jsgui/BrooklynJavascriptGuiLauncherTest.java
@@ -18,6 +18,7 @@
*/
package org.apache.brooklyn.rest.jsgui;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.testng.annotations.AfterMethod;
@@ -28,7 +29,6 @@ import brooklyn.entity.basic.Entities;
import brooklyn.management.ManagementContext;
import brooklyn.rest.BrooklynRestApiLauncherTestFixture;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
/** Convenience and demo for launching programmatically. */
public class BrooklynJavascriptGuiLauncherTest {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/launcher/src/test/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java
----------------------------------------------------------------------
diff --git a/usage/launcher/src/test/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java b/usage/launcher/src/test/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java
index a523019..a84e1ea 100644
--- a/usage/launcher/src/test/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java
+++ b/usage/launcher/src/test/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java
@@ -21,6 +21,8 @@ package brooklyn.entity.brooklynnode;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
+import org.apache.brooklyn.test.EntityTestUtils;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -38,8 +40,6 @@ import brooklyn.management.ManagementContext;
import brooklyn.management.ha.HighAvailabilityMode;
import brooklyn.rest.filter.BrooklynPropertiesSecurityFilter;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
-import brooklyn.test.HttpTestUtils;
import brooklyn.test.entity.LocalManagementContextForTests;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.exceptions.Exceptions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/launcher/src/test/java/brooklyn/entity/brooklynnode/BrooklynNodeRestTest.java
----------------------------------------------------------------------
diff --git a/usage/launcher/src/test/java/brooklyn/entity/brooklynnode/BrooklynNodeRestTest.java b/usage/launcher/src/test/java/brooklyn/entity/brooklynnode/BrooklynNodeRestTest.java
index 34d7b07..6899aeb 100644
--- a/usage/launcher/src/test/java/brooklyn/entity/brooklynnode/BrooklynNodeRestTest.java
+++ b/usage/launcher/src/test/java/brooklyn/entity/brooklynnode/BrooklynNodeRestTest.java
@@ -21,6 +21,8 @@ package brooklyn.entity.brooklynnode;
import java.net.URI;
import java.util.concurrent.Callable;
+import org.apache.brooklyn.test.EntityTestUtils;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.http.client.HttpClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -38,8 +40,6 @@ import brooklyn.launcher.SimpleYamlLauncherForTests;
import brooklyn.launcher.camp.SimpleYamlLauncher;
import brooklyn.location.Location;
import brooklyn.management.Task;
-import brooklyn.test.EntityTestUtils;
-import brooklyn.test.HttpTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.collections.Jsonya;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/launcher/src/test/java/brooklyn/launcher/BrooklynLauncherTest.java
----------------------------------------------------------------------
diff --git a/usage/launcher/src/test/java/brooklyn/launcher/BrooklynLauncherTest.java b/usage/launcher/src/test/java/brooklyn/launcher/BrooklynLauncherTest.java
index 0886390..6f7d955 100644
--- a/usage/launcher/src/test/java/brooklyn/launcher/BrooklynLauncherTest.java
+++ b/usage/launcher/src/test/java/brooklyn/launcher/BrooklynLauncherTest.java
@@ -32,6 +32,7 @@ import java.net.URI;
import java.nio.charset.Charset;
import java.util.Properties;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
@@ -48,7 +49,6 @@ import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.management.ManagementContext;
import brooklyn.management.internal.LocalManagementContext;
import brooklyn.management.internal.ManagementContextInternal;
-import brooklyn.test.HttpTestUtils;
import brooklyn.test.entity.LocalManagementContextForTests;
import brooklyn.test.entity.TestApplication;
import brooklyn.test.entity.TestApplicationImpl;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/launcher/src/test/java/brooklyn/launcher/WebAppRunnerTest.java
----------------------------------------------------------------------
diff --git a/usage/launcher/src/test/java/brooklyn/launcher/WebAppRunnerTest.java b/usage/launcher/src/test/java/brooklyn/launcher/WebAppRunnerTest.java
index c89b399..6260bba 100644
--- a/usage/launcher/src/test/java/brooklyn/launcher/WebAppRunnerTest.java
+++ b/usage/launcher/src/test/java/brooklyn/launcher/WebAppRunnerTest.java
@@ -24,6 +24,7 @@ import static org.testng.Assert.fail;
import java.util.List;
import java.util.Map;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,7 +35,6 @@ import brooklyn.config.BrooklynProperties;
import brooklyn.entity.basic.Entities;
import brooklyn.management.internal.LocalManagementContext;
import brooklyn.management.internal.ManagementContextInternal;
-import brooklyn.test.HttpTestUtils;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.net.Networking;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/launcher/src/test/java/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
----------------------------------------------------------------------
diff --git a/usage/launcher/src/test/java/brooklyn/launcher/blueprints/AbstractBlueprintTest.java b/usage/launcher/src/test/java/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
index 63a8bfb..d0d5de4 100644
--- a/usage/launcher/src/test/java/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
+++ b/usage/launcher/src/test/java/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
@@ -26,6 +26,7 @@ import java.io.StringReader;
import java.util.Collection;
import org.apache.brooklyn.camp.brooklyn.BrooklynCampPlatformLauncherAbstract;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -46,7 +47,6 @@ import brooklyn.launcher.camp.BrooklynCampPlatformLauncher;
import brooklyn.management.ManagementContext;
import brooklyn.management.internal.LocalManagementContext;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.ResourceUtils;
import brooklyn.util.os.Os;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/qa/src/test/java/org/apache/brooklyn/qa/brooklynnode/SoftlayerObtainPrivateLiveTest.java
----------------------------------------------------------------------
diff --git a/usage/qa/src/test/java/org/apache/brooklyn/qa/brooklynnode/SoftlayerObtainPrivateLiveTest.java b/usage/qa/src/test/java/org/apache/brooklyn/qa/brooklynnode/SoftlayerObtainPrivateLiveTest.java
index 17df429..c550279 100644
--- a/usage/qa/src/test/java/org/apache/brooklyn/qa/brooklynnode/SoftlayerObtainPrivateLiveTest.java
+++ b/usage/qa/src/test/java/org/apache/brooklyn/qa/brooklynnode/SoftlayerObtainPrivateLiveTest.java
@@ -23,6 +23,7 @@ import java.util.Collection;
import java.util.Map;
import java.util.Set;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -42,7 +43,6 @@ import brooklyn.launcher.BrooklynLauncher;
import brooklyn.location.Location;
import brooklyn.location.jclouds.JcloudsLocationConfig;
import brooklyn.management.ManagementContext;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.LocalManagementContextForTests;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.BrooklynMavenArtifacts;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/qa/src/test/java/org/apache/brooklyn/qa/load/LoadTest.java
----------------------------------------------------------------------
diff --git a/usage/qa/src/test/java/org/apache/brooklyn/qa/load/LoadTest.java b/usage/qa/src/test/java/org/apache/brooklyn/qa/load/LoadTest.java
index d6c479c..a642790 100644
--- a/usage/qa/src/test/java/org/apache/brooklyn/qa/load/LoadTest.java
+++ b/usage/qa/src/test/java/org/apache/brooklyn/qa/load/LoadTest.java
@@ -19,6 +19,8 @@
package org.apache.brooklyn.qa.load;
import org.apache.brooklyn.qa.load.SimulatedTheeTierApp;
+import org.apache.brooklyn.test.PerformanceTestUtils;
+
import static org.testng.Assert.assertEquals;
import java.io.File;
@@ -45,7 +47,6 @@ import brooklyn.location.Location;
import brooklyn.management.ManagementContext;
import brooklyn.management.ha.HighAvailabilityMode;
import brooklyn.management.internal.LocalManagementContext;
-import brooklyn.test.PerformanceTestUtils;
import brooklyn.util.os.Os;
import brooklyn.util.time.Duration;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/rest-client/src/test/java/org/apache/brooklyn/rest/client/BrooklynApiRestClientTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-client/src/test/java/org/apache/brooklyn/rest/client/BrooklynApiRestClientTest.java b/usage/rest-client/src/test/java/org/apache/brooklyn/rest/client/BrooklynApiRestClientTest.java
index c36a456..d3586af 100644
--- a/usage/rest-client/src/test/java/org/apache/brooklyn/rest/client/BrooklynApiRestClientTest.java
+++ b/usage/rest-client/src/test/java/org/apache/brooklyn/rest/client/BrooklynApiRestClientTest.java
@@ -23,6 +23,7 @@ import java.util.Map;
import javax.ws.rs.core.Response;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.eclipse.jetty.server.Server;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -42,7 +43,6 @@ import brooklyn.rest.BrooklynRestApiLauncherTest;
import brooklyn.rest.domain.ApplicationSummary;
import brooklyn.rest.domain.CatalogLocationSummary;
import brooklyn.rest.security.provider.TestSecurityProvider;
-import brooklyn.test.HttpTestUtils;
import brooklyn.test.entity.TestEntity;
@Test
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/rest-server/src/test/java/brooklyn/entity/brooklynnode/DeployBlueprintTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/test/java/brooklyn/entity/brooklynnode/DeployBlueprintTest.java b/usage/rest-server/src/test/java/brooklyn/entity/brooklynnode/DeployBlueprintTest.java
index 42f0785..4ee9562 100644
--- a/usage/rest-server/src/test/java/brooklyn/entity/brooklynnode/DeployBlueprintTest.java
+++ b/usage/rest-server/src/test/java/brooklyn/entity/brooklynnode/DeployBlueprintTest.java
@@ -24,6 +24,7 @@ import java.net.URI;
import java.util.List;
import java.util.Map;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.eclipse.jetty.server.Server;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -37,7 +38,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.event.feed.http.JsonFunctions;
import brooklyn.management.EntityManager;
import brooklyn.rest.BrooklynRestApiLauncherTestFixture;
-import brooklyn.test.HttpTestUtils;
import brooklyn.util.guava.Functionals;
import com.google.common.base.Function;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/rest-server/src/test/java/brooklyn/rest/BrooklynRestApiLauncherTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/test/java/brooklyn/rest/BrooklynRestApiLauncherTest.java b/usage/rest-server/src/test/java/brooklyn/rest/BrooklynRestApiLauncherTest.java
index 0412118..1992c90 100644
--- a/usage/rest-server/src/test/java/brooklyn/rest/BrooklynRestApiLauncherTest.java
+++ b/usage/rest-server/src/test/java/brooklyn/rest/BrooklynRestApiLauncherTest.java
@@ -24,6 +24,7 @@ import static brooklyn.rest.BrooklynRestApiLauncher.StartMode.WEB_XML;
import java.util.concurrent.Callable;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.http.HttpStatus;
import org.eclipse.jetty.server.Server;
import org.testng.annotations.Test;
@@ -31,7 +32,6 @@ import org.testng.annotations.Test;
import brooklyn.rest.security.provider.AnyoneSecurityProvider;
import brooklyn.rest.util.BrooklynRestResourceUtilsTest.SampleNoOpApplication;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
public class BrooklynRestApiLauncherTest extends BrooklynRestApiLauncherTestFixture {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/rest-server/src/test/java/brooklyn/rest/resources/ApplicationResourceTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/test/java/brooklyn/rest/resources/ApplicationResourceTest.java b/usage/rest-server/src/test/java/brooklyn/rest/resources/ApplicationResourceTest.java
index 8645e38..95e02ac 100644
--- a/usage/rest-server/src/test/java/brooklyn/rest/resources/ApplicationResourceTest.java
+++ b/usage/rest-server/src/test/java/brooklyn/rest/resources/ApplicationResourceTest.java
@@ -34,6 +34,7 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -82,7 +83,6 @@ import brooklyn.rest.testing.mocks.RestMockApp;
import brooklyn.rest.testing.mocks.RestMockAppBuilder;
import brooklyn.rest.testing.mocks.RestMockSimpleEntity;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
import brooklyn.util.collections.CollectionFunctionals;
import brooklyn.util.exceptions.Exceptions;
import brooklyn.util.time.Duration;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/rest-server/src/test/java/brooklyn/rest/resources/EntityResourceTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/test/java/brooklyn/rest/resources/EntityResourceTest.java b/usage/rest-server/src/test/java/brooklyn/rest/resources/EntityResourceTest.java
index 60932a6..c5d0c57 100644
--- a/usage/rest-server/src/test/java/brooklyn/rest/resources/EntityResourceTest.java
+++ b/usage/rest-server/src/test/java/brooklyn/rest/resources/EntityResourceTest.java
@@ -25,6 +25,7 @@ import java.util.Map;
import javax.annotation.Nullable;
import javax.ws.rs.core.MediaType;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import org.slf4j.Logger;
@@ -42,7 +43,6 @@ import brooklyn.rest.domain.EntitySpec;
import brooklyn.rest.domain.TaskSummary;
import brooklyn.rest.testing.BrooklynRestResourceTest;
import brooklyn.rest.testing.mocks.RestMockSimpleEntity;
-import brooklyn.test.HttpTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.collections.MutableList;
import brooklyn.util.exceptions.Exceptions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/rest-server/src/test/java/brooklyn/rest/resources/SensorResourceIntegrationTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/test/java/brooklyn/rest/resources/SensorResourceIntegrationTest.java b/usage/rest-server/src/test/java/brooklyn/rest/resources/SensorResourceIntegrationTest.java
index e412b6b..0664a89 100644
--- a/usage/rest-server/src/test/java/brooklyn/rest/resources/SensorResourceIntegrationTest.java
+++ b/usage/rest-server/src/test/java/brooklyn/rest/resources/SensorResourceIntegrationTest.java
@@ -20,6 +20,7 @@ package brooklyn.rest.resources;
import java.net.URI;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.http.client.HttpClient;
import org.eclipse.jetty.server.Server;
import org.testng.Assert;
@@ -35,7 +36,6 @@ import brooklyn.management.ManagementContext;
import brooklyn.rest.BrooklynRestApiLauncher;
import brooklyn.rest.BrooklynRestApiLauncherTestFixture;
import brooklyn.rest.testing.mocks.RestMockSimpleEntity;
-import brooklyn.test.HttpTestUtils;
import brooklyn.test.entity.LocalManagementContextForTests;
import brooklyn.util.collections.MutableList;
import brooklyn.util.http.HttpTool;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/rest-server/src/test/java/brooklyn/rest/resources/SensorResourceTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/test/java/brooklyn/rest/resources/SensorResourceTest.java b/usage/rest-server/src/test/java/brooklyn/rest/resources/SensorResourceTest.java
index 6d074c0..e6d9123 100644
--- a/usage/rest-server/src/test/java/brooklyn/rest/resources/SensorResourceTest.java
+++ b/usage/rest-server/src/test/java/brooklyn/rest/resources/SensorResourceTest.java
@@ -25,6 +25,7 @@ import java.util.Map;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@@ -40,7 +41,6 @@ import brooklyn.rest.domain.ApplicationSpec;
import brooklyn.rest.domain.EntitySpec;
import brooklyn.rest.testing.BrooklynRestResourceTest;
import brooklyn.rest.testing.mocks.RestMockSimpleEntity;
-import brooklyn.test.HttpTestUtils;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.stream.Streams;
import brooklyn.util.text.StringFunctions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/rest-server/src/test/java/brooklyn/rest/resources/ServerResourceIntegrationTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/test/java/brooklyn/rest/resources/ServerResourceIntegrationTest.java b/usage/rest-server/src/test/java/brooklyn/rest/resources/ServerResourceIntegrationTest.java
index 311afaf..9818436 100644
--- a/usage/rest-server/src/test/java/brooklyn/rest/resources/ServerResourceIntegrationTest.java
+++ b/usage/rest-server/src/test/java/brooklyn/rest/resources/ServerResourceIntegrationTest.java
@@ -25,6 +25,7 @@ import java.net.URI;
import java.util.Collections;
import java.util.Map;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.http.HttpStatus;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.HttpClient;
@@ -38,7 +39,6 @@ import brooklyn.management.internal.ManagementContextInternal;
import brooklyn.rest.BrooklynRestApiLauncher;
import brooklyn.rest.BrooklynRestApiLauncherTestFixture;
import brooklyn.rest.security.provider.TestSecurityProvider;
-import brooklyn.test.HttpTestUtils;
import brooklyn.util.http.HttpTool;
import brooklyn.util.http.HttpToolResponse;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/rest-server/src/test/java/brooklyn/rest/resources/ServerShutdownTest.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/test/java/brooklyn/rest/resources/ServerShutdownTest.java b/usage/rest-server/src/test/java/brooklyn/rest/resources/ServerShutdownTest.java
index 061599e..83114cd 100644
--- a/usage/rest-server/src/test/java/brooklyn/rest/resources/ServerShutdownTest.java
+++ b/usage/rest-server/src/test/java/brooklyn/rest/resources/ServerShutdownTest.java
@@ -27,6 +27,7 @@ import java.util.concurrent.atomic.AtomicReference;
import javax.ws.rs.core.MultivaluedMap;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterClass;
@@ -51,7 +52,6 @@ import brooklyn.management.Task;
import brooklyn.rest.resources.ServerResourceTest.StopLatchEntity;
import brooklyn.rest.testing.BrooklynRestResourceTest;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.exceptions.Exceptions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/test-support/src/main/java/brooklyn/test/EntityTestUtils.java
----------------------------------------------------------------------
diff --git a/usage/test-support/src/main/java/brooklyn/test/EntityTestUtils.java b/usage/test-support/src/main/java/brooklyn/test/EntityTestUtils.java
deleted file mode 100644
index ae7b269..0000000
--- a/usage/test-support/src/main/java/brooklyn/test/EntityTestUtils.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * 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;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertTrue;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
-
-import brooklyn.config.ConfigKey;
-import brooklyn.entity.Entity;
-import brooklyn.entity.Group;
-import brooklyn.entity.basic.EntityLocal;
-import brooklyn.event.AttributeSensor;
-import brooklyn.event.SensorEvent;
-import brooklyn.event.SensorEventListener;
-import brooklyn.management.SubscriptionHandle;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Objects;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-public class EntityTestUtils {
-
- // TODO would be nice to have this... perhaps moving this class, or perhaps this whole project, to core/src/test ?
-// public static LocalManagementContext newManagementContext() { return new LocalManagementContextForTests(); }
-
- // TODO Delete methods from TestUtils, to just have them here (or switch so TestUtils delegates here,
- // and deprecate methods in TestUtils until deleted).
-
- public static <T> void assertAttributeEquals(Entity entity, AttributeSensor<T> attribute, T expected) {
- assertEquals(entity.getAttribute(attribute), expected, "entity="+entity+"; attribute="+attribute);
- }
-
- public static <T> void assertConfigEquals(Entity entity, ConfigKey<T> configKey, T expected) {
- assertEquals(entity.getConfig(configKey), expected, "entity="+entity+"; configKey="+configKey);
- }
-
- public static <T> void assertAttributeEqualsEventually(final Entity entity, final AttributeSensor<T> attribute, final T expected) {
- assertAttributeEqualsEventually(Maps.newLinkedHashMap(), entity, attribute, expected);
- }
-
- public static <T> void assertAttributeEqualsEventually(Map<?,?> flags, final Entity entity, final AttributeSensor<T> attribute, final T expected) {
- // Not using assertAttributeEventually(predicate) so get nicer error message
- Asserts.succeedsEventually((Map)flags, new Runnable() {
- @Override public void run() {
- assertAttributeEquals(entity, attribute, expected);
- }});
- }
-
- public static <T> T assertAttributeEventuallyNonNull(final Entity entity, final AttributeSensor<T> attribute) {
- return assertAttributeEventuallyNonNull(Maps.newLinkedHashMap(), entity, attribute);
- }
-
- public static <T> T assertAttributeEventuallyNonNull(Map<?,?> flags, final Entity entity, final AttributeSensor<T> attribute) {
- return assertAttributeEventually(flags, entity, attribute, Predicates.notNull());
- }
-
- public static <T> T assertAttributeEventually(final Entity entity, final AttributeSensor<T> attribute, Predicate<? super T> predicate) {
- return assertAttributeEventually(ImmutableMap.of(), entity, attribute, predicate);
- }
-
- public static <T> T assertAttributeEventually(Map<?,?> flags, final Entity entity, final AttributeSensor<T> attribute, final Predicate<? super T> predicate) {
- final AtomicReference<T> result = new AtomicReference<T>();
- Asserts.succeedsEventually((Map)flags, new Runnable() {
- @Override public void run() {
- T val = entity.getAttribute(attribute);
- assertTrue(predicate.apply(val), "val="+val);
- result.set(val);
- }});
- return result.get();
- }
-
- public static <T> T assertAttribute(final Entity entity, final AttributeSensor<T> attribute, final Predicate<? super T> predicate) {
- T val = entity.getAttribute(attribute);
- assertTrue(predicate.apply(val), "val="+val);
- return val;
- }
-
- public static <T extends Entity> void assertPredicateEventuallyTrue(final T entity, final Predicate<? super T> predicate) {
- assertPredicateEventuallyTrue(Maps.newLinkedHashMap(), entity, predicate);
- }
-
- public static <T extends Entity> void assertPredicateEventuallyTrue(Map<?,?> flags, final T entity, final Predicate<? super T> predicate) {
- Asserts.succeedsEventually((Map)flags, new Runnable() {
- @Override public void run() {
- assertTrue(predicate.apply(entity));
- }});
- }
-
- public static <T> void assertAttributeEqualsContinually(final Entity entity, final AttributeSensor<T> attribute, final T expected) {
- assertAttributeEqualsContinually(Maps.newLinkedHashMap(), entity, attribute, expected);
- }
-
- public static <T> void assertAttributeEqualsContinually(Map<?,?> flags, final Entity entity, final AttributeSensor<T> attribute, final T expected) {
- Asserts.succeedsContinually(flags, new Runnable() {
- @Override public void run() {
- assertAttributeEquals(entity, attribute, expected);
- }});
- }
-
- public static void assertGroupSizeEqualsEventually(final Group group, int expected) {
- assertGroupSizeEqualsEventually(ImmutableMap.of(), group, expected);
- }
-
- public static void assertGroupSizeEqualsEventually(Map<?,?> flags, final Group group, final int expected) {
- Asserts.succeedsEventually((Map)flags, new Runnable() {
- @Override public void run() {
- Collection<Entity> members = group.getMembers();
- assertEquals(members.size(), expected, "members="+members);
- }});
- }
-
- /** checks that the entity's value for this attribute changes, by registering a subscription and checking the value */
- public static void assertAttributeChangesEventually(final Entity entity, final AttributeSensor<?> attribute) {
- final Object origValue = entity.getAttribute(attribute);
- final AtomicBoolean changed = new AtomicBoolean();
- SubscriptionHandle handle = ((EntityLocal)entity).subscribe(entity, attribute, new SensorEventListener<Object>() {
- @Override public void onEvent(SensorEvent<Object> event) {
- if (!Objects.equal(origValue, event.getValue())) {
- changed.set(true);
- }
- }});
- try {
- Asserts.succeedsEventually(new Runnable() {
- @Override public void run() {
- assertTrue(changed.get(), entity+" -> "+attribute+" not changed");
- }});
- } finally {
- ((EntityLocal)entity).unsubscribe(entity, handle);
- }
- }
-
- /** alternate version of {@link #assertAttributeChangesEventually(Entity, AttributeSensor)} not using subscriptions and
- * with simpler code, for comparison */
- @Beta
- public static <T> void assertAttributeChangesEventually2(final Entity entity, final AttributeSensor<T> attribute) {
- assertAttributeEventually(entity, attribute,
- Predicates.not(Predicates.equalTo(entity.getAttribute(attribute))));
- }
-
- @Beta
- public static <T> void assertAttributeNever(final Entity entity, final AttributeSensor<T> attribute, T... disallowed) {
- final Set<T> reject = Sets.newHashSet(disallowed);
- Asserts.succeedsContinually(new Runnable() {
- @Override
- public void run() {
- T val = entity.getAttribute(attribute);
- assertFalse(reject.contains(val),
- "Attribute " + attribute + " on " + entity + " has disallowed value " + val);
- }
- });
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/test-support/src/main/java/brooklyn/test/HttpTestUtils.java
----------------------------------------------------------------------
diff --git a/usage/test-support/src/main/java/brooklyn/test/HttpTestUtils.java b/usage/test-support/src/main/java/brooklyn/test/HttpTestUtils.java
deleted file mode 100644
index 71eff35..0000000
--- a/usage/test-support/src/main/java/brooklyn/test/HttpTestUtils.java
+++ /dev/null
@@ -1,391 +0,0 @@
-/*
- * 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;
-
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicReference;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLSession;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-
-import brooklyn.util.collections.MutableMap;
-import brooklyn.util.crypto.SslTrustUtils;
-import brooklyn.util.exceptions.Exceptions;
-import brooklyn.util.stream.Streams;
-import brooklyn.util.time.Time;
-
-import com.google.common.base.Throwables;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-
-/**
- * Utility methods to aid testing HTTP.
- *
- * @author aled
- */
-public class HttpTestUtils {
-
- // TODO Delete methods from TestUtils, to just have them here (or switch so TestUtils delegates here,
- // and deprecate methods in TestUtils until deleted).
-
- private static final Logger LOG = LoggerFactory.getLogger(HttpTestUtils.class);
-
- static final ExecutorService executor = Executors.newCachedThreadPool();
-
- /**
- * Connects to the given url and returns the connection.
- * Caller should {@code connection.getInputStream().close()} the result of this
- * (especially if they are making heavy use of this method).
- */
- public static URLConnection connectToUrl(String u) throws Exception {
- final URL url = new URL(u);
- final AtomicReference<Exception> exception = new AtomicReference<Exception>();
-
- // sometimes openConnection hangs, so run in background
- Future<URLConnection> f = executor.submit(new Callable<URLConnection>() {
- public URLConnection call() {
- try {
- HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
- @Override public boolean verify(String s, SSLSession sslSession) {
- return true;
- }
- });
- URLConnection connection = url.openConnection();
- TrustingSslSocketFactory.configure(connection);
- connection.connect();
-
- connection.getContentLength(); // Make sure the connection is made.
- return connection;
- } catch (Exception e) {
- exception.set(e);
- LOG.debug("Error connecting to url "+url+" (propagating): "+e, e);
- }
- return null;
- }
- });
- try {
- URLConnection result = null;
- try {
- result = f.get(60, TimeUnit.SECONDS);
- } catch (InterruptedException e) {
- throw e;
- } catch (Exception e) {
- LOG.debug("Error connecting to url "+url+", probably timed out (rethrowing): "+e);
- throw new IllegalStateException("Connect to URL not complete within 60 seconds, for url "+url+": "+e);
- }
- if (exception.get() != null) {
- LOG.debug("Error connecting to url "+url+", thread caller of "+exception, new Throwable("source of rethrown error "+exception));
- throw exception.get();
- } else {
- return result;
- }
- } finally {
- f.cancel(true);
- }
- }
-
- public static void assertHealthyStatusCode(int code) {
- if (code>=200 && code<=299) return;
- Assert.fail("Wrong status code: "+code);
- }
-
- public static int getHttpStatusCode(String url) throws Exception {
- URLConnection connection = connectToUrl(url);
- long startTime = System.currentTimeMillis();
- int status = ((HttpURLConnection) connection).getResponseCode();
-
- // read fully if possible, then close everything, trying to prevent cached threads at server
- consumeAndCloseQuietly((HttpURLConnection) connection);
-
- if (LOG.isDebugEnabled())
- LOG.debug("connection to {} ({}ms) gives {}", new Object[] { url, (System.currentTimeMillis()-startTime), status });
- return status;
- }
-
- /**
- * Asserts that gets back any "valid" response - i.e. not an exception. This could be an unauthorized,
- * a redirect, a 404, or anything else that implies there is web-server listening on that port.
- */
- public static void assertUrlReachable(String url) {
- try {
- getHttpStatusCode(url);
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- throw new RuntimeException("Interrupted for "+url+" (in assertion that is reachable)", e);
- } catch (Exception e) {
- throw new IllegalStateException("Server at "+url+" failed to respond (in assertion that is reachable): "+e, e);
- }
- }
-
- public static void assertUrlUnreachable(String url) {
- try {
- int statusCode = getHttpStatusCode(url);
- fail("Expected url "+url+" unreachable, but got status code "+statusCode);
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- throw new RuntimeException("Interrupted for "+url+" (in assertion that unreachable)", e);
- } catch (Exception e) {
- IOException cause = Exceptions.getFirstThrowableOfType(e, IOException.class);
- if (cause != null) {
- // success; clean shutdown transitioning from 400 to error
- } else {
- Throwables.propagate(e);
- }
- }
- }
-
- public static void assertUrlUnreachableEventually(final String url) {
- assertUrlUnreachableEventually(Maps.newLinkedHashMap(), url);
- }
-
- public static void assertUrlUnreachableEventually(Map flags, final String url) {
- Asserts.succeedsEventually(flags, new Runnable() {
- public void run() {
- assertUrlUnreachable(url);
- }
- });
- }
-
- public static void assertHttpStatusCodeEquals(String url, int... acceptableReturnCodes) {
- List<Integer> acceptableCodes = Lists.newArrayList();
- for (int code : acceptableReturnCodes) {
- acceptableCodes.add((Integer)code);
- }
- try {
- int actualCode = getHttpStatusCode(url);
- assertTrue(acceptableCodes.contains(actualCode), "code="+actualCode+"; expected="+acceptableCodes+"; url="+url);
-
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- throw new RuntimeException("Interrupted for "+url+" (in assertion that result code is "+acceptableCodes+")", e);
- } catch (Exception e) {
- throw new IllegalStateException("Server at "+url+" failed to respond (in assertion that result code is "+acceptableCodes+"): "+e, e);
- }
- }
-
- public static void assertHttpStatusCodeEventuallyEquals(final String url, final int expectedCode) {
- assertHttpStatusCodeEventuallyEquals(Maps.newLinkedHashMap(), url, expectedCode);
- }
-
- public static void assertHttpStatusCodeEventuallyEquals(Map flags, final String url, final int expectedCode) {
- Asserts.succeedsEventually(flags, new Runnable() {
- public void run() {
- assertHttpStatusCodeEquals(url, expectedCode);
- }
- });
- }
-
- public static void assertContentContainsText(final String url, final String phrase, final String ...additionalPhrases) {
- try {
- String contents = getContent(url);
- Assert.assertTrue(contents != null && contents.length() > 0);
- for (String text: Lists.asList(phrase, additionalPhrases)) {
- if (!contents.contains(text)) {
- LOG.warn("CONTENTS OF URL "+url+" MISSING TEXT: "+text+"\n"+contents);
- Assert.fail("URL "+url+" does not contain text: "+text);
- }
- }
- } catch (Exception e) {
- throw Throwables.propagate(e);
- }
- }
-
- public static void assertContentNotContainsText(final String url, final String phrase, final String ...additionalPhrases) {
- try {
- String contents = getContent(url);
- Assert.assertTrue(contents != null);
- for (String text: Lists.asList(phrase, additionalPhrases)) {
- if (contents.contains(text)) {
- LOG.warn("CONTENTS OF URL "+url+" HAS TEXT: "+text+"\n"+contents);
- Assert.fail("URL "+url+" contain text: "+text);
- }
- }
- } catch (Exception e) {
- throw Throwables.propagate(e);
- }
- }
-
- public static void assertErrorContentContainsText(final String url, final String phrase, final String ...additionalPhrases) {
- try {
- String contents = getErrorContent(url);
- Assert.assertTrue(contents != null && contents.length() > 0);
- for (String text: Lists.asList(phrase, additionalPhrases)) {
- if (!contents.contains(text)) {
- LOG.warn("CONTENTS OF URL "+url+" MISSING TEXT: "+text+"\n"+contents);
- Assert.fail("URL "+url+" does not contain text: "+text);
- }
- }
- } catch (Exception e) {
- throw Throwables.propagate(e);
- }
- }
-
-
- public static void assertErrorContentNotContainsText(final String url, final String phrase, final String ...additionalPhrases) {
- try {
- String err = getErrorContent(url);
- Assert.assertTrue(err != null);
- for (String text: Lists.asList(phrase, additionalPhrases)) {
- if (err.contains(text)) {
- LOG.warn("CONTENTS OF URL "+url+" HAS TEXT: "+text+"\n"+err);
- Assert.fail("URL "+url+" contain text: "+text);
- }
- }
- } catch (Exception e) {
- throw Throwables.propagate(e);
- }
- }
-
- public static void assertContentEventuallyContainsText(final String url, final String phrase, final String ...additionalPhrases) {
- assertContentEventuallyContainsText(MutableMap.of(), url, phrase, additionalPhrases);
- }
-
- public static void assertContentEventuallyContainsText(Map flags, final String url, final String phrase, final String ...additionalPhrases) {
- Asserts.succeedsEventually(flags, new Runnable() {
- public void run() {
- assertContentContainsText(url, phrase, additionalPhrases);
- }
- });
- }
-
- public static void assertContentMatches(String url, String regex) {
- String contents = getContent(url);
- Assert.assertNotNull(contents);
- Assert.assertTrue(contents.matches(regex), "Contents does not match expected regex ("+regex+"): "+contents);
- }
-
- public static void assertContentEventuallyMatches(final String url, final String regex) {
- Asserts.succeedsEventually(new Runnable() {
- @Override
- public void run() {
- assertContentMatches(url, regex);
- }
- });
- }
-
- public static String getErrorContent(String url) {
- try {
- HttpURLConnection connection = (HttpURLConnection) connectToUrl(url);
- long startTime = System.currentTimeMillis();
-
- String err;
- int status;
- try {
- InputStream errStream = connection.getErrorStream();
- err = Streams.readFullyString(errStream);
- status = connection.getResponseCode();
- } finally {
- closeQuietly(connection);
- }
-
- if (LOG.isDebugEnabled())
- LOG.debug("read of err {} ({}ms) complete; http code {}", new Object[] { url, Time.makeTimeStringRounded(System.currentTimeMillis()-startTime), status});
- return err;
-
- } catch (Exception e) {
- throw Exceptions.propagate(e);
- }
- }
-
- public static String getContent(String url) {
- try {
- return Streams.readFullyString(SslTrustUtils.trustAll(new URL(url).openConnection()).getInputStream());
- } catch (Exception e) {
- throw Throwables.propagate(e);
- }
- }
-
- /**
- * Schedules (with the given executor) a poller that repeatedly accesses the given url, to confirm it always gives
- * back the expected status code.
- *
- * Expected usage is to query the future, such as:
- *
- * <pre>
- * {@code
- * Future<?> future = assertAsyncHttpStatusCodeContinuallyEquals(executor, url, 200);
- * // do other stuff...
- * if (future.isDone()) future.get(); // get exception if it's failed
- * }
- * </pre>
- *
- * For stopping it, you can either do future.cancel(true), or you can just do executor.shutdownNow().
- *
- * TODO Look at difference between this and WebAppMonitor, to decide if this should be kept.
- */
- public static ListenableFuture<?> assertAsyncHttpStatusCodeContinuallyEquals(ListeningExecutorService executor, final String url, final int expectedStatusCode) {
- return executor.submit(new Runnable() {
- @Override public void run() {
- // TODO Need to drop logging; remove sleep when that's done.
- while (!Thread.currentThread().isInterrupted()) {
- assertHttpStatusCodeEquals(url, expectedStatusCode);
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- return; // graceful return
- }
- }
- }
- });
- }
-
- /**
- * Consumes the input stream entirely and then cleanly closes the connection.
- * Ignores all exceptions completely, not even logging them!
- *
- * Consuming the stream fully is useful for preventing idle TCP connections.
- * See {@linkplain http://docs.oracle.com/javase/8/docs/technotes/guides/net/http-keepalive.html}.
- */
- public static void consumeAndCloseQuietly(HttpURLConnection connection) {
- try { Streams.readFully(connection.getInputStream()); } catch (Exception e) {}
- closeQuietly(connection);
- }
-
- /**
- * Closes all streams of the connection, and disconnects it. Ignores all exceptions completely,
- * not even logging them!
- */
- public static void closeQuietly(HttpURLConnection connection) {
- try { connection.disconnect(); } catch (Exception e) {}
- try { connection.getInputStream().close(); } catch (Exception e) {}
- try { connection.getOutputStream().close(); } catch (Exception e) {}
- try { connection.getErrorStream().close(); } catch (Exception e) {}
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/test-support/src/main/java/brooklyn/test/NetworkingTestUtils.java
----------------------------------------------------------------------
diff --git a/usage/test-support/src/main/java/brooklyn/test/NetworkingTestUtils.java b/usage/test-support/src/main/java/brooklyn/test/NetworkingTestUtils.java
deleted file mode 100644
index c55b4d3..0000000
--- a/usage/test-support/src/main/java/brooklyn/test/NetworkingTestUtils.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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;
-
-import static org.testng.Assert.assertTrue;
-
-import java.util.Map;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import brooklyn.util.exceptions.Exceptions;
-import brooklyn.util.net.Networking;
-import brooklyn.util.time.Duration;
-
-import com.google.common.collect.ImmutableMap;
-
-public class NetworkingTestUtils {
-
- private static final Logger LOG = LoggerFactory.getLogger(NetworkingTestUtils.class);
-
- public static void assertPortsAvailableEventually(final Map<String, Integer> ports) {
- // If we get into a TCP TIMED-WAIT state, it could take 4 minutes for the port to come available.
- // Could that be causing our integration tests to fail sometimes when run in the suite?!
- // Let's wait for the required ports in setup, rather than running+failing the test.
- assertPortsAvailableEventually(ports, Duration.minutes(4));
- }
-
- public static void assertPortsAvailableEventually(final Map<String, Integer> ports, final Duration timeout) {
- Asserts.succeedsEventually(ImmutableMap.of("timeout", Duration.minutes(4)), new Runnable() {
- private boolean logged = false;
- public void run() {
- try {
- assertPortsAvailable(ports);
- } catch (Throwable t) {
- if (!logged) {
- LOG.warn("Port(s) not available; waiting for up to "+timeout+" ("+Exceptions.getFirstInteresting(t)+")");
- logged = true;
- }
- throw Exceptions.propagate(t);
- }
- }});
- LOG.debug("Ports are available: "+ports);
- }
-
- public static void assertPortsAvailable(final Map<String, Integer> ports) {
- for (Map.Entry<String, Integer> entry : ports.entrySet()) {
- String errmsg = "port "+entry.getValue()+" not available for "+entry.getKey();
- assertTrue(Networking.isPortAvailable(entry.getValue()), errmsg);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/test-support/src/main/java/brooklyn/test/PerformanceTestUtils.java
----------------------------------------------------------------------
diff --git a/usage/test-support/src/main/java/brooklyn/test/PerformanceTestUtils.java b/usage/test-support/src/main/java/brooklyn/test/PerformanceTestUtils.java
deleted file mode 100644
index 0bf4ba0..0000000
--- a/usage/test-support/src/main/java/brooklyn/test/PerformanceTestUtils.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * 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;
-
-import java.lang.management.ManagementFactory;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.TimeUnit;
-
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import brooklyn.util.time.Duration;
-import brooklyn.util.time.Time;
-
-import com.google.common.base.Stopwatch;
-
-public class PerformanceTestUtils {
-
- private static final Logger LOG = LoggerFactory.getLogger(PerformanceTestUtils.class);
-
- private static boolean hasLoggedProcessCpuTimeUnavailable;
-
- public static long getProcessCpuTime() {
- try {
- MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
- ObjectName osMBeanName = ObjectName.getInstance(ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME);
- return (Long) mbeanServer.getAttribute(osMBeanName, "ProcessCpuTime");
- } catch (Exception e) {
- if (!hasLoggedProcessCpuTimeUnavailable) {
- hasLoggedProcessCpuTimeUnavailable = true;
- LOG.warn("ProcessCPuTime not available in local JVM MXBean "+ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME+" (only available in sun JVM?)");
- }
- return -1;
- }
- }
-
- /**
- * Creates a background thread that will log.info the CPU fraction usage repeatedly, sampling at the given period.
- * Callers <em>must</em> cancel the returned future, e.g. {@code future.cancel(true)}, otherwise it will keep
- * logging until the JVM exits.
- */
- public static Future<?> sampleProcessCpuTime(final Duration period, final String loggingContext) {
- final ExecutorService executor = Executors.newSingleThreadExecutor(new ThreadFactory() {
- @Override public Thread newThread(Runnable r) {
- Thread thread = new Thread(r, "brooklyn-sampleProcessCpuTime-"+loggingContext);
- thread.setDaemon(true); // let the JVM exit
- return thread;
- }});
- Future<?> future = executor.submit(new Runnable() {
- @Override public void run() {
- try {
- long prevCpuTime = getProcessCpuTime();
- if (prevCpuTime == -1) {
- LOG.warn("ProcessCPuTime not available; cannot sample; aborting");
- return;
- }
- while (true) {
- Stopwatch stopwatch = Stopwatch.createStarted();
- Thread.sleep(period.toMilliseconds());
- long currentCpuTime = getProcessCpuTime();
-
- long elapsedTime = stopwatch.elapsed(TimeUnit.MILLISECONDS);
- double fractionCpu = (elapsedTime > 0) ? ((double)currentCpuTime-prevCpuTime) / TimeUnit.MILLISECONDS.toNanos(elapsedTime) : -1;
- prevCpuTime = currentCpuTime;
-
- LOG.info("CPU fraction over last {} was {} ({})", new Object[] {
- Time.makeTimeStringRounded(elapsedTime), fractionCpu, loggingContext});
- }
- } catch (InterruptedException e) {
- return; // graceful termination
- } finally {
- executor.shutdownNow();
- }
- }});
- return future;
- }
-}
[2/6] incubator-brooklyn git commit: [BROOKLYN-162] Update package
name to a.o.b in usage/test-support
Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/test-support/src/main/java/brooklyn/test/TestUtils.groovy
----------------------------------------------------------------------
diff --git a/usage/test-support/src/main/java/brooklyn/test/TestUtils.groovy b/usage/test-support/src/main/java/brooklyn/test/TestUtils.groovy
deleted file mode 100644
index 78fefeb..0000000
--- a/usage/test-support/src/main/java/brooklyn/test/TestUtils.groovy
+++ /dev/null
@@ -1,540 +0,0 @@
-/*
- * 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
-
-import static org.testng.Assert.*
-import groovy.time.TimeDuration
-
-import java.util.concurrent.Callable
-import java.util.concurrent.ExecutionException
-import java.util.concurrent.Executors
-
-import org.codehaus.groovy.runtime.InvokerInvocationException
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
-
-import brooklyn.entity.Entity
-import brooklyn.event.AttributeSensor
-import brooklyn.util.text.StringFunctions;
-import brooklyn.util.time.Duration
-
-import com.google.common.base.Predicate
-import com.google.common.base.Supplier
-import com.google.common.collect.Iterables
-
-/**
- * Helper functions for tests of Tomcat, JBoss and others.
- *
- * Note that methods will migrate from here to {@link Asserts} in future releases.
- */
-public class TestUtils {
- private static final Logger log = LoggerFactory.getLogger(TestUtils.class)
-
- private TestUtils() { }
-
- /**
- * True if two attempts to connect to the port succeed.
- *
- * @deprecated since 0.5; use {@link brooklyn.util.NetworkUtils#isPortAvailable(int)}
- */
- @Deprecated
- public static boolean isPortInUse(int port, long retryAfterMillis=0) {
- try {
- def s = new Socket("localhost", port)
- s.close()
- if (retryAfterMillis>0) {
- log.debug "port {} still open, waiting 1s for it to really close", port
- //give it 1s to close
- Thread.sleep retryAfterMillis
- s = new Socket("localhost", port)
- s.close()
- }
- log.debug "port {} still open (conclusive)", port
- return true
- } catch (ConnectException e) {
- return false
- }
- }
-
- /**
- * Connects to the given HTTP URL and asserts that the response had status code 200.
- * @deprecated Use HttpTestUtils.getHttpStatusCode(url) == 200
- */
- @Deprecated
- public static boolean urlRespondsWithStatusCode200(String url) {
- int status = HttpTestUtils.getHttpStatusCode(url);
- log.debug "connection to {} gives {}", url, status
- if (status == 404)
- throw new Exception("Connection to $url gave 404");
- return status == 200
- }
-
- /**
- * Connects to the given HTTP URL and asserts that the response had status code 200.
- * @deprecated Use HttpTestUtils.getHttpStatusCode(url)
- */
- @Deprecated
- public static int urlRespondsStatusCode(String url) {
- return HttpTestUtils.getHttpStatusCode(url);
- }
-
- /**
- * Connects to the given url and returns the connection.
- * @deprecated Use HttpTestUtils.connectToUrl(url)
- */
- @Deprecated
- public static URLConnection connectToURL(String url) {
- return HttpTestUtils.connectToUrl(url);
- }
-
- // calling groovy from java doesn't cope with generics here; stripping them from here :-(
- // <T> void assertEventually(Map flags=[:], Supplier<? extends T> supplier, Predicate<T> predicate)
- /**
- * @deprecated since 0.5; use {@link Asserts#eventually(Map, Supplier, Predicate)}
- */
- @Deprecated
- public static void assertEventually(Map flags=[:], Supplier supplier, Predicate predicate) {
- Asserts.eventually(flags, supplier, predicate);
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#eventually(Map, Supplier, Predicate, String)}
- */
- @Deprecated
- public static <T> void assertEventually(Map flags=[:], Supplier<? extends T> supplier, Predicate<T> predicate, String errMsg) {
- Asserts.eventually(flags, supplier, predicate, errMsg);
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#succeedsEventually(java.util.Map, Callable)}
- */
- @Deprecated
- public static void assertEventually(Map flags=[:], Callable c) {
- executeUntilSucceeds(flags, c);
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Runnable)}
- */
- @Deprecated
- public static void assertEventually(Map flags=[:], Runnable c) {
- executeUntilSucceeds(flags, c);
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Callable)}
- */
- @Deprecated
- public static void executeUntilSucceeds(Map flags=[:], Closure c) {
- Asserts.succeedsEventually(flags, c);
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Callable)}
- */
- @Deprecated
- public static void executeUntilSucceeds(Map flags=[:], Callable c) {
- Asserts.succeedsEventually(flags, c);
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Runnable)}
- */
- @Deprecated
- public static void executeUntilSucceeds(Map flags=[:], Runnable r) {
- if (r in Callable)
- executeUntilSucceedsWithFinallyBlock(flags, {return ((Callable)r).call();}, { })
- else if (r in Closure) // Closure check probably not necessary, just was trying to fix a server build which had a screwy problem
- executeUntilSucceedsWithFinallyBlock(flags, {return ((Closure)r).call();}, { })
- else
- executeUntilSucceedsWithFinallyBlock(flags, {r.run(); return true}, { })
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Callable)}, and tear-down with {@link AfterMethod}.
- */
- @Deprecated
- public static void executeUntilSucceedsElseShutdown(Map flags=[:], Entity entity, Closure c) {
- try {
- executeUntilSucceedsWithFinallyBlock(flags, c) { }
- } catch (Throwable t) {
- entity.stop()
- throw t
- }
- }
-
- /**
- * convenience for entities to ensure they shutdown afterwards.
- *
- * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Callable)}, and tear-down with {@link AfterMethod}.
- */
- @Deprecated
- public static void executeUntilSucceedsWithShutdown(Map flags=[:], Entity entity, Closure c) {
- executeUntilSucceedsWithFinallyBlock(flags, c) { entity.stop() }
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Callable)}, and tear-down with {@link AfterMethod}.
- */
- @Deprecated
- public static void executeUntilSucceedsWithFinallyBlock(Map flags=[:], Closure c, Closure finallyBlock={}) {
- executeUntilSucceedsWithFinallyBlockInternal(flags, c, finallyBlock)
- }
-
- /**
- * Convenience method for cases where we need to test until something is true.
- *
- * The runnable will be invoked periodically until it succesfully concludes.
- * Additionally, a finally block can be supplied.
- * <p>
- * The following flags are supported:
- * <ul>
- * <li>abortOnError (boolean, default true)
- * <li>abortOnException - (boolean, default false)
- * <li>useGroovyTruth - (defaults to false; any result code apart from 'false' will be treated as success including null; ignored for Runnables which aren't Callables)
- * <li>timeout - (a Duration or an integer in millis, defaults to 30*SECONDS)
- * <li>period - (a Duration or an integer in millis, for fixed retry time; if not set, defaults to exponentially increasing from 1 to 500ms)
- * <li>minPeriod - (a Duration or an integer in millis; only used if period not explicitly set; the minimum period when exponentially increasing; defaults to 1ms)
- * <li>maxPeriod - (a Duration or an integer in millis; only used if period not explicitly set; the maximum period when exponentially increasing; defaults to 500ms)
- * <li>maxAttempts - (integer, Integer.MAX_VALUE)
- * </ul>
- *
- * @param flags, accepts the flags listed above
- * @param r
- * @param finallyBlock
- *
- * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Callable)}, and tear-down with {@link AfterMethod}.
- */
- @Deprecated
- public static void executeUntilSucceedsWithFinallyBlock(Map flags=[:], Callable<?> c, Closure finallyBlock={}) {
- executeUntilSucceedsWithFinallyBlockInternal(flags, c, finallyBlock);
- }
-
- /**
- * the "real" implementation, renamed to allow multiple entry points (depending whether closure cast to callable)
- *
- * @deprecated since 0.5; use {@link Asserts#succeedsEventually(Map, Callable)}, and tear-down with {@link AfterMethod}.
- */
- @Deprecated
- private static void executeUntilSucceedsWithFinallyBlockInternal(Map flags=[:], Callable<?> c, Closure finallyBlock={}) {
-// log.trace "abortOnError = {}", flags.abortOnError
- boolean abortOnException = flags.abortOnException ?: false
- boolean abortOnError = flags.abortOnError ?: false
- boolean useGroovyTruth = flags.useGroovyTruth ?: false
- boolean logException = flags.logException ?: true
-
- // To speed up tests, default is for the period to start small and increase...
- Duration duration = Duration.of(flags.timeout) ?: Duration.THIRTY_SECONDS;
- Duration fixedPeriod = Duration.of(flags.period) ?: null
- Duration minPeriod = fixedPeriod ?: Duration.of(flags.minPeriod) ?: Duration.millis(1)
- Duration maxPeriod = fixedPeriod ?: Duration.of(flags.maxPeriod) ?: Duration.millis(500)
- int maxAttempts = flags.maxAttempts ?: Integer.MAX_VALUE;
- int attempt = 0;
- long startTime = System.currentTimeMillis();
- try {
- Throwable lastException = null;
- Object result;
- long lastAttemptTime = 0;
- long expireTime = startTime+duration.toMilliseconds();
- long sleepTimeBetweenAttempts = minPeriod.toMilliseconds();
-
- while (attempt<maxAttempts && lastAttemptTime<expireTime) {
- try {
- attempt++
- lastAttemptTime = System.currentTimeMillis()
- result = c.call()
- log.trace "Attempt {} after {} ms: {}", attempt, System.currentTimeMillis() - startTime, result
- if (useGroovyTruth) {
- if (result) return;
- } else if (result != false) {
- if (result instanceof BooleanWithMessage)
- log.warn "Test returned an instance of BooleanWithMessage but useGroovyTruth is not set! " +
- "The result of this probably isn't what you intended."
- return;
- }
- lastException = null
- } catch(Throwable e) {
- lastException = e
- log.trace "Attempt {} after {} ms: {}", attempt, System.currentTimeMillis() - startTime, e.message
- if (abortOnException) throw e
- if (abortOnError && e in Error) throw e
- }
- long sleepTime = Math.min(sleepTimeBetweenAttempts, expireTime-System.currentTimeMillis())
- if (sleepTime > 0) Thread.sleep(sleepTime)
- sleepTimeBetweenAttempts = Math.min(sleepTimeBetweenAttempts*2, maxPeriod.toMilliseconds())
- }
-
- log.debug "TestUtils.executeUntilSucceedsWithFinallyBlockInternal exceeded max attempts or timeout - {} attempts lasting {} ms", attempt, System.currentTimeMillis()-startTime
- if (lastException != null)
- throw lastException
- fail "invalid result: $result"
- } catch (Throwable t) {
- if (logException) log.info("failed execute-until-succeeds, "+attempt+" attempts, "+
- (System.currentTimeMillis()-startTime)+"ms elapsed "+
- "(rethrowing): "+t);
- throw t
- } finally {
- finallyBlock.call()
- }
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#succeedsContinually(Map, Runnable)}
- */
- @Deprecated
- public static <T> void assertSucceedsContinually(Map flags=[:], Runnable job) {
- assertSucceedsContinually(flags, Executors.callable(job));
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#succeedsContinually(Map, Callable)}
- */
- @Deprecated
- public static void assertSucceedsContinually(Map flags=[:], Callable<?> job) {
- Duration duration = Duration.of(flags.timeout) ?: Duration.ONE_SECOND
- Duration period = Duration.of(flags.period) ?: Duration.millis(10)
- long periodMs = period.toMilliseconds()
- long startTime = System.currentTimeMillis()
- long expireTime = startTime+duration.toMilliseconds()
-
- boolean first = true;
- while (first || System.currentTimeMillis() <= expireTime) {
- job.call();
- if (periodMs > 0) sleep(periodMs);
- first = false;
- }
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#continually(Map, Supplier, Predicate)}
- */
- @Deprecated
- // FIXME When calling from java, the generics declared in groovy messing things up!
- public static void assertContinuallyFromJava(Map flags=[:], Supplier<?> supplier, Predicate<?> predicate) {
- Asserts.continually(flags, supplier, predicate);
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#continually(Map, Supplier, Predicate)}
- */
- @Deprecated
- public static <T> void assertContinually(Map flags=[:], Supplier<? extends T> supplier, Predicate<T> predicate) {
- Asserts.continually(flags, supplier, predicate, (String)null);
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#continually(Map, Supplier, Predicate, String)}
- */
- @Deprecated
- public static <T> void assertContinually(Map flags=[:], Supplier<? extends T> supplier, Predicate<T> predicate, String errMsg, long durationMs) {
- flags.put("duration", Duration.millis(durationMs));
- Asserts.continually(flags, supplier, predicate, errMsg);
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#continually(Map, Supplier, Predicate, String)}
- */
- @Deprecated
- public static <T> void assertContinually(Map flags=[:], Supplier<? extends T> supplier, Predicate<T> predicate, String errMsg) {
- Asserts.continually(flags, supplier, predicate, errMsg);
- }
-
- public static class BooleanWithMessage {
- boolean value; String message;
- public BooleanWithMessage(boolean value, String message) {
- this.value = value; this.message = message;
- }
- public boolean asBoolean() {
- return value
- }
- public String toString() {
- return message
- }
- }
-
- /**
- * @deprecated since 0.5; use {@link brooklyn.util.ResourceUtils}
- */
- @Deprecated
- public static File getResource(String path, ClassLoader loader) {
- URL resource = loader.getResource(path)
- if (resource==null)
- throw new IllegalArgumentException("cannot find required entity '"+path+"'");
-
- return new File(resource.path)
- }
-
- /**
- * @deprecated since 0.5; use long and {@link TimeUnit}
- */
- @Deprecated
- public static TimeDuration toTimeDuration(Object duration) {
- return toTimeDuration(duration, null);
- }
-
- /**
- * @deprecated since 0.5; use long and {@link TimeUnit}
- */
- @Deprecated
- public static TimeDuration toTimeDuration(Object duration, TimeDuration defaultVal) {
- if (duration == null) {
- return defaultVal;
- } else if (duration instanceof TimeDuration) {
- return (TimeDuration) duration
- } else if (duration instanceof Number) {
- return new TimeDuration(0,0,0,(int)duration)
- // TODO would be nice to have this, but we need to sort out utils / test-utils dependency
-// } else if (duration instanceof String) {
-// return Time.parseTimeString((String)duration);
- } else {
- throw new IllegalArgumentException("Cannot convert $duration of type ${duration.class.name} to a TimeDuration")
- }
- }
-
- public static Throwable unwrapThrowable(Throwable t) {
- if (t.getCause() == null) {
- return t;
- } else if (t instanceof ExecutionException) {
- return unwrapThrowable(t.getCause())
- } else if (t instanceof InvokerInvocationException) {
- return unwrapThrowable(t.getCause())
- } else {
- return t
- }
- }
-
- /**
- * @deprecated since 0.5; use {@link EntityTestUtils#assertAttributeEqualsEventually(Entity, AttributeSensor, Object)}
- */
- @Deprecated
- public static <T> void assertAttributeEventually(Entity entity, AttributeSensor<T> attribute, T expected) {
- executeUntilSucceeds() {
- assertEquals(entity.getAttribute(attribute), expected);
- }
- }
-
- /**
- * @deprecated since 0.5; use {@link EntityTestUtils#assertAttributeEqualsContinually(Entity, AttributeSensor, Object)}
- */
- @Deprecated
- public static <T> void assertAttributeContinually(Entity entity, AttributeSensor<T> attribute, T expected) {
- assertSucceedsContinually() {
- assertEquals(entity.getAttribute(attribute), expected);
- }
- }
-
- /**
- * @deprecated since 0.5; use {@link HttpTestUtils#assertHttpStatusCodeEquals(String, int)}
- */
- @Deprecated
- public static void assertUrlStatusCodeEventually(final String url, final int expected) {
- executeUntilSucceeds() {
- assertEquals(urlRespondsStatusCode(url), expected);
- }
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#assertFails(Runnable)}
- */
- @Deprecated
- public static void assertFails(Runnable c) {
- assertFailsWith(c, (Predicate)null);
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#assertFailsWith(Closure)}
- */
- @Deprecated
- public static void assertFailsWith(Runnable c, Closure exceptionChecker) {
- assertFailsWith(c, exceptionChecker as Predicate);
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#assertFailsWith(Runnable, Class, Class...)}
- */
- @Deprecated
- public static void assertFailsWith(Runnable c, final Class<? extends Throwable> validException, final Class<? extends Throwable> ...otherValidExceptions) {
- assertFailsWith(c, { e ->
- if (validException.isInstance(e)) return true;
- if (otherValidExceptions.find {it.isInstance(e)}) return true;
- List expectedTypes = [validException];
- expectedTypes.addAll(Arrays.asList(otherValidExceptions));
- fail("Test threw exception of unexpected type "+e.getClass()+"; expecting "+expectedTypes);
- });
- }
-
- /**
- * @deprecated since 0.5; use {@link Asserts#assertFailsWith(Runnable, Predicate)}
- */
- @Deprecated
- public static void assertFailsWith(Runnable c, Predicate<Throwable> exceptionChecker) {
- boolean failed = false;
- try {
- c.run();
- } catch (Throwable e) {
- failed = true;
- if (exceptionChecker!=null) {
- if (!exceptionChecker.apply(e)) {
- fail("Test threw invalid exception: "+e);
- }
- }
- log.debug("Test for exception successful ("+e+")");
- }
- if (!failed) fail("Test code should have thrown exception but did not");
- }
-
- public static void assertSetsEqual(Collection c1, Collection c2) {
- Set s = new LinkedHashSet();
- s.addAll(c1); s.removeAll(c2);
- if (!s.isEmpty()) fail("First argument contains additional contents: "+s);
- s.clear(); s.addAll(c2); s.removeAll(c1);
- if (!s.isEmpty()) fail("Second argument contains additional contents: "+s);
- }
-
- /**
- * @deprecated since 0.5; use {@code assertFalse(Iterables.isEmpty(c))}
- */
- @Deprecated
- public static <T> void assertNonEmpty(Iterable<T> c) {
- if (c.iterator().hasNext()) return;
- fail("Expected non-empty set");
- }
-
- /**
- * @deprecated since 0.5; use {@code assertEquals(Iterables.size(c), expectedSize)}
- */
- @Deprecated
- public static <T> void assertSize(Iterable<T> c, int expectedSize) {
- int actualSize = Iterables.size(c);
- if (actualSize==expectedSize) return;
- fail("Expected collection of size "+expectedSize+" but got size "+actualSize+": "+c);
- }
-
- /**
- * @deprecated since 0.7.0; use {@link Asserts#assertThat(Object, Predicate)} with {@link StringFunctions})}
- */
- @Deprecated
- public static void assertStringContainsLiteral(String string, String substring) {
- if (string==null) fail("String is null");
- if (substring==null) fail("Substring is null");
- if (string.indexOf(substring)>=0) return;
- fail("String '"+string+"' does not contain expected pattern '"+substring+"'");
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/test-support/src/main/java/brooklyn/test/TrustingSslSocketFactory.java
----------------------------------------------------------------------
diff --git a/usage/test-support/src/main/java/brooklyn/test/TrustingSslSocketFactory.java b/usage/test-support/src/main/java/brooklyn/test/TrustingSslSocketFactory.java
deleted file mode 100644
index 3cbd94a..0000000
--- a/usage/test-support/src/main/java/brooklyn/test/TrustingSslSocketFactory.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * 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;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.Socket;
-import java.net.URLConnection;
-import java.net.UnknownHostException;
-import java.security.cert.X509Certificate;
-
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSocketFactory;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Throwables;
-
-// FIXME copied from brooklyn-core because core not visible here
-
-public class TrustingSslSocketFactory extends SSLSocketFactory {
-
- private static final Logger logger = LoggerFactory.getLogger(TrustingSslSocketFactory.class);
-
- private static TrustingSslSocketFactory INSTANCE;
- public synchronized static TrustingSslSocketFactory getInstance() {
- if (INSTANCE==null) INSTANCE = new TrustingSslSocketFactory();
- return INSTANCE;
- }
-
- private static SSLContext sslContext;
- static {
- try {
- sslContext = SSLContext.getInstance("TLS");
- } catch (Exception e) {
- logger.error("Unable to set up SSLContext with TLS. Https activity will likely fail.", e);
- }
- }
-
- /** configures a connection to accept all certificates, if it is for https */
- public static <T extends URLConnection> T configure(T connection) {
- if (connection instanceof HttpsURLConnection) {
- ((HttpsURLConnection)connection).setSSLSocketFactory(getInstance());
- }
- return connection;
- }
-
- /** trusts all SSL certificates */
- public static final TrustManager TRUST_ALL = new X509TrustManager() {
- public X509Certificate[] getAcceptedIssuers() {
- return new X509Certificate[0];
- }
- @Override
- public void checkClientTrusted(X509Certificate[] chain, String authType)
- throws java.security.cert.CertificateException {
-
- }
- @Override
- public void checkServerTrusted(X509Certificate[] chain, String authType)
- throws java.security.cert.CertificateException {
- }
- };
-
- // no reason this can't be public, but no reason it should be necessary;
- // just use getInstance to get the shared INSTANCE
- protected TrustingSslSocketFactory() {
- super();
- try {
- sslContext.init(null, new TrustManager[] { TRUST_ALL }, null);
- } catch (Exception e) {
- throw Throwables.propagate(e);
- }
- }
-
- @Override
- public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException {
- return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
- }
-
- @Override
- public Socket createSocket() throws IOException {
- return sslContext.getSocketFactory().createSocket();
- }
-
- @Override
- public String[] getDefaultCipherSuites() {
- return sslContext.getSocketFactory().getDefaultCipherSuites();
- }
-
- @Override
- public String[] getSupportedCipherSuites() {
- return sslContext.getSocketFactory().getSupportedCipherSuites();
- }
-
- @Override
- public Socket createSocket(String arg0, int arg1) throws IOException, UnknownHostException {
- return sslContext.getSocketFactory().createSocket(arg0, arg1);
- }
-
- @Override
- public Socket createSocket(InetAddress arg0, int arg1) throws IOException {
- return sslContext.getSocketFactory().createSocket(arg0, arg1);
- }
-
- @Override
- public Socket createSocket(String arg0, int arg1, InetAddress arg2, int arg3) throws IOException, UnknownHostException {
- return sslContext.getSocketFactory().createSocket(arg0, arg1, arg2, arg3);
- }
-
- @Override
- public Socket createSocket(InetAddress arg0, int arg1, InetAddress arg2, int arg3) throws IOException {
- return sslContext.getSocketFactory().createSocket(arg0, arg1, arg2, arg3);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/test-support/src/main/java/brooklyn/test/WebAppMonitor.java
----------------------------------------------------------------------
diff --git a/usage/test-support/src/main/java/brooklyn/test/WebAppMonitor.java b/usage/test-support/src/main/java/brooklyn/test/WebAppMonitor.java
deleted file mode 100644
index 2d0a457..0000000
--- a/usage/test-support/src/main/java/brooklyn/test/WebAppMonitor.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * 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;
-
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.slf4j.Logger;
-import org.testng.Assert;
-
-import brooklyn.util.collections.MutableMap;
-import brooklyn.util.time.Duration;
-
-/**
- * Repeatedly polls a given URL, to check if it is always available.
- *
- * @author Alex, Aled
- */
-public class WebAppMonitor implements Runnable {
- final AtomicBoolean shouldBeActive = new AtomicBoolean(true);
- final AtomicBoolean isActive = new AtomicBoolean(false);
- final AtomicInteger successes = new AtomicInteger(0);
- final AtomicInteger failures = new AtomicInteger(0);
- final AtomicLong lastTime = new AtomicLong(-1);
- final AtomicReference<Object> lastStatus = new AtomicReference<Object>(null);
- final AtomicReference<Object> lastFailure = new AtomicReference<Object>(null);
- Logger log;
- Object problem = null;
- String url;
- long delayMillis = 500;
- int expectedResponseCode = 200;
-
- public WebAppMonitor(String url) {
- this.url = url;
- }
- public WebAppMonitor() {
- }
- public WebAppMonitor logFailures(Logger log) {
- this.log = log;
- return this;
- }
- public WebAppMonitor delayMillis(long val) {
- this.delayMillis = val;
- return this;
- }
- public WebAppMonitor expectedResponseCode(int val) {
- this.expectedResponseCode = val;
- return this;
- }
- public WebAppMonitor url(String val) {
- this.url = val;
- return this;
- }
-
- public void run() {
- synchronized (isActive) {
- if (isActive.getAndSet(true))
- throw new IllegalStateException("already running");
- }
- while (shouldBeActive.get()) {
- long startTime = System.currentTimeMillis();
- try {
- if (preAttempt()) {
- int code = HttpTestUtils.getHttpStatusCode(url);
- lastTime.set(System.currentTimeMillis() - startTime);
- lastStatus.set(code);
- if (isResponseOkay(code)) {
- successes.incrementAndGet();
- } else {
- lastFailure.set(code);
- failures.incrementAndGet();
- onFailure("return code "+code);
- }
- }
- } catch (Exception e) {
- lastTime.set(System.currentTimeMillis()-startTime);
- lastStatus.set(e);
- lastFailure.set(e);
- failures.incrementAndGet();
- onFailure(e);
- }
- try {
- if (delayMillis > 0) {
- Thread.sleep(delayMillis);
- }
- } catch (InterruptedException e) {
- onFailure(e);
- shouldBeActive.set(false);
- }
- }
- synchronized (isActive) {
- if (!isActive.getAndSet(false))
- throw new IllegalStateException("shouldn't be possible!");
- isActive.notifyAll();
- }
- }
-
- public boolean isResponseOkay(Object code) {
- return code!=null && new Integer(expectedResponseCode).equals(code);
- }
-
- public void setDelayMillis(long delayMillis) {
- this.delayMillis = delayMillis;
- }
- public long getDelayMillis() {
- return delayMillis;
- }
- public void terminate() throws InterruptedException {
- shouldBeActive.set(false);
- synchronized (isActive) {
- while (isActive.get()) isActive.wait();
- }
- }
- public int getFailures() {
- return failures.get();
- }
- public int getSuccesses() {
- return successes.get();
- }
- public void setUrl(String url) {
- this.url = url;
- }
- public String getUrl() {
- return url;
- }
- public Object getProblem() {
- return problem;
- }
- public int getAttempts() {
- return getFailures()+getSuccesses();
- }
- public boolean getLastWasFailed() {
- return isResponseOkay(getLastStatus());
- }
- public Object getLastStatus() {
- return lastStatus.get();
- }
- public long getLastTime() {
- return lastTime.get();
- }
- /** result code (int) or exception */
- public Object getLastFailure() {
- return lastFailure.get();
- }
-
- public void onFailure(Object problem) {
- if (log != null) {
- log.warn("Detected failure in monitor accessing "+getUrl()+": "+problem);
- }
- this.problem = problem;
- }
-
- /** return false to skip a run */
- public boolean preAttempt() {
- return true;
- }
-
- public WebAppMonitor assertNoFailures(String message) {
- return assertSuccessFraction(message, 1.0);
- }
- public WebAppMonitor assertAttemptsMade(int minAttempts, String message) {
- if (getAttempts()<minAttempts) {
- Assert.fail(message+" -- webapp access failures! " +
- "(0 attempts made; probably blocked on server)");
- }
- return this;
- }
- public WebAppMonitor waitForAtLeastOneAttempt() {
- return waitForAtLeastOneAttempt(Asserts.DEFAULT_TIMEOUT);
- }
- public WebAppMonitor waitForAtLeastOneAttempt(Duration timeout) {
- Asserts.succeedsEventually(MutableMap.of("timeout", timeout), new Runnable() {
- @Override public void run() {
- Assert.assertTrue(getAttempts() >= 1);
- }});
- return this;
- }
- public WebAppMonitor assertSuccessFraction(String message, double fraction) {
- int failures = getFailures();
- int attempts = getAttempts();
- if ((failures > (1-fraction) * attempts + 0.0001) || attempts <= 0) {
- Assert.fail(message+" -- webapp access failures! " +
- "("+failures+" failed of "+attempts+" monitoring attempts) against "+getUrl()+"; " +
- "last was "+getLastStatus()+" taking "+getLastTime()+"ms" +
- (getLastFailure() != null ? "; last failure was "+getLastFailure() : ""));
- }
- return this;
- }
- public WebAppMonitor resetCounts() {
- failures.set(0);
- successes.set(0);
- return this;
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/test-support/src/main/java/org/apache/brooklyn/test/EntityTestUtils.java
----------------------------------------------------------------------
diff --git a/usage/test-support/src/main/java/org/apache/brooklyn/test/EntityTestUtils.java b/usage/test-support/src/main/java/org/apache/brooklyn/test/EntityTestUtils.java
new file mode 100644
index 0000000..3bceb78
--- /dev/null
+++ b/usage/test-support/src/main/java/org/apache/brooklyn/test/EntityTestUtils.java
@@ -0,0 +1,181 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.test;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
+
+import brooklyn.config.ConfigKey;
+import brooklyn.entity.Entity;
+import brooklyn.entity.Group;
+import brooklyn.entity.basic.EntityLocal;
+import brooklyn.event.AttributeSensor;
+import brooklyn.event.SensorEvent;
+import brooklyn.event.SensorEventListener;
+import brooklyn.management.SubscriptionHandle;
+import brooklyn.test.Asserts;
+
+import com.google.common.annotations.Beta;
+import com.google.common.base.Objects;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+
+public class EntityTestUtils {
+
+ // TODO would be nice to have this... perhaps moving this class, or perhaps this whole project, to core/src/test ?
+// public static LocalManagementContext newManagementContext() { return new LocalManagementContextForTests(); }
+
+ // TODO Delete methods from TestUtils, to just have them here (or switch so TestUtils delegates here,
+ // and deprecate methods in TestUtils until deleted).
+
+ public static <T> void assertAttributeEquals(Entity entity, AttributeSensor<T> attribute, T expected) {
+ assertEquals(entity.getAttribute(attribute), expected, "entity="+entity+"; attribute="+attribute);
+ }
+
+ public static <T> void assertConfigEquals(Entity entity, ConfigKey<T> configKey, T expected) {
+ assertEquals(entity.getConfig(configKey), expected, "entity="+entity+"; configKey="+configKey);
+ }
+
+ public static <T> void assertAttributeEqualsEventually(final Entity entity, final AttributeSensor<T> attribute, final T expected) {
+ assertAttributeEqualsEventually(Maps.newLinkedHashMap(), entity, attribute, expected);
+ }
+
+ public static <T> void assertAttributeEqualsEventually(Map<?,?> flags, final Entity entity, final AttributeSensor<T> attribute, final T expected) {
+ // Not using assertAttributeEventually(predicate) so get nicer error message
+ Asserts.succeedsEventually((Map)flags, new Runnable() {
+ @Override public void run() {
+ assertAttributeEquals(entity, attribute, expected);
+ }});
+ }
+
+ public static <T> T assertAttributeEventuallyNonNull(final Entity entity, final AttributeSensor<T> attribute) {
+ return assertAttributeEventuallyNonNull(Maps.newLinkedHashMap(), entity, attribute);
+ }
+
+ public static <T> T assertAttributeEventuallyNonNull(Map<?,?> flags, final Entity entity, final AttributeSensor<T> attribute) {
+ return assertAttributeEventually(flags, entity, attribute, Predicates.notNull());
+ }
+
+ public static <T> T assertAttributeEventually(final Entity entity, final AttributeSensor<T> attribute, Predicate<? super T> predicate) {
+ return assertAttributeEventually(ImmutableMap.of(), entity, attribute, predicate);
+ }
+
+ public static <T> T assertAttributeEventually(Map<?,?> flags, final Entity entity, final AttributeSensor<T> attribute, final Predicate<? super T> predicate) {
+ final AtomicReference<T> result = new AtomicReference<T>();
+ Asserts.succeedsEventually((Map)flags, new Runnable() {
+ @Override public void run() {
+ T val = entity.getAttribute(attribute);
+ assertTrue(predicate.apply(val), "val="+val);
+ result.set(val);
+ }});
+ return result.get();
+ }
+
+ public static <T> T assertAttribute(final Entity entity, final AttributeSensor<T> attribute, final Predicate<? super T> predicate) {
+ T val = entity.getAttribute(attribute);
+ assertTrue(predicate.apply(val), "val="+val);
+ return val;
+ }
+
+ public static <T extends Entity> void assertPredicateEventuallyTrue(final T entity, final Predicate<? super T> predicate) {
+ assertPredicateEventuallyTrue(Maps.newLinkedHashMap(), entity, predicate);
+ }
+
+ public static <T extends Entity> void assertPredicateEventuallyTrue(Map<?,?> flags, final T entity, final Predicate<? super T> predicate) {
+ Asserts.succeedsEventually((Map)flags, new Runnable() {
+ @Override public void run() {
+ assertTrue(predicate.apply(entity));
+ }});
+ }
+
+ public static <T> void assertAttributeEqualsContinually(final Entity entity, final AttributeSensor<T> attribute, final T expected) {
+ assertAttributeEqualsContinually(Maps.newLinkedHashMap(), entity, attribute, expected);
+ }
+
+ public static <T> void assertAttributeEqualsContinually(Map<?,?> flags, final Entity entity, final AttributeSensor<T> attribute, final T expected) {
+ Asserts.succeedsContinually(flags, new Runnable() {
+ @Override public void run() {
+ assertAttributeEquals(entity, attribute, expected);
+ }});
+ }
+
+ public static void assertGroupSizeEqualsEventually(final Group group, int expected) {
+ assertGroupSizeEqualsEventually(ImmutableMap.of(), group, expected);
+ }
+
+ public static void assertGroupSizeEqualsEventually(Map<?,?> flags, final Group group, final int expected) {
+ Asserts.succeedsEventually((Map)flags, new Runnable() {
+ @Override public void run() {
+ Collection<Entity> members = group.getMembers();
+ assertEquals(members.size(), expected, "members="+members);
+ }});
+ }
+
+ /** checks that the entity's value for this attribute changes, by registering a subscription and checking the value */
+ public static void assertAttributeChangesEventually(final Entity entity, final AttributeSensor<?> attribute) {
+ final Object origValue = entity.getAttribute(attribute);
+ final AtomicBoolean changed = new AtomicBoolean();
+ SubscriptionHandle handle = ((EntityLocal)entity).subscribe(entity, attribute, new SensorEventListener<Object>() {
+ @Override public void onEvent(SensorEvent<Object> event) {
+ if (!Objects.equal(origValue, event.getValue())) {
+ changed.set(true);
+ }
+ }});
+ try {
+ Asserts.succeedsEventually(new Runnable() {
+ @Override public void run() {
+ assertTrue(changed.get(), entity+" -> "+attribute+" not changed");
+ }});
+ } finally {
+ ((EntityLocal)entity).unsubscribe(entity, handle);
+ }
+ }
+
+ /** alternate version of {@link #assertAttributeChangesEventually(Entity, AttributeSensor)} not using subscriptions and
+ * with simpler code, for comparison */
+ @Beta
+ public static <T> void assertAttributeChangesEventually2(final Entity entity, final AttributeSensor<T> attribute) {
+ assertAttributeEventually(entity, attribute,
+ Predicates.not(Predicates.equalTo(entity.getAttribute(attribute))));
+ }
+
+ @Beta
+ public static <T> void assertAttributeNever(final Entity entity, final AttributeSensor<T> attribute, T... disallowed) {
+ final Set<T> reject = Sets.newHashSet(disallowed);
+ Asserts.succeedsContinually(new Runnable() {
+ @Override
+ public void run() {
+ T val = entity.getAttribute(attribute);
+ assertFalse(reject.contains(val),
+ "Attribute " + attribute + " on " + entity + " has disallowed value " + val);
+ }
+ });
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/test-support/src/main/java/org/apache/brooklyn/test/HttpTestUtils.java
----------------------------------------------------------------------
diff --git a/usage/test-support/src/main/java/org/apache/brooklyn/test/HttpTestUtils.java b/usage/test-support/src/main/java/org/apache/brooklyn/test/HttpTestUtils.java
new file mode 100644
index 0000000..455bc7e
--- /dev/null
+++ b/usage/test-support/src/main/java/org/apache/brooklyn/test/HttpTestUtils.java
@@ -0,0 +1,392 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.test;
+
+import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLSession;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.Assert;
+
+import brooklyn.test.Asserts;
+import brooklyn.util.collections.MutableMap;
+import brooklyn.util.crypto.SslTrustUtils;
+import brooklyn.util.exceptions.Exceptions;
+import brooklyn.util.stream.Streams;
+import brooklyn.util.time.Time;
+
+import com.google.common.base.Throwables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.ListeningExecutorService;
+
+/**
+ * Utility methods to aid testing HTTP.
+ *
+ * @author aled
+ */
+public class HttpTestUtils {
+
+ // TODO Delete methods from TestUtils, to just have them here (or switch so TestUtils delegates here,
+ // and deprecate methods in TestUtils until deleted).
+
+ private static final Logger LOG = LoggerFactory.getLogger(HttpTestUtils.class);
+
+ static final ExecutorService executor = Executors.newCachedThreadPool();
+
+ /**
+ * Connects to the given url and returns the connection.
+ * Caller should {@code connection.getInputStream().close()} the result of this
+ * (especially if they are making heavy use of this method).
+ */
+ public static URLConnection connectToUrl(String u) throws Exception {
+ final URL url = new URL(u);
+ final AtomicReference<Exception> exception = new AtomicReference<Exception>();
+
+ // sometimes openConnection hangs, so run in background
+ Future<URLConnection> f = executor.submit(new Callable<URLConnection>() {
+ public URLConnection call() {
+ try {
+ HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
+ @Override public boolean verify(String s, SSLSession sslSession) {
+ return true;
+ }
+ });
+ URLConnection connection = url.openConnection();
+ TrustingSslSocketFactory.configure(connection);
+ connection.connect();
+
+ connection.getContentLength(); // Make sure the connection is made.
+ return connection;
+ } catch (Exception e) {
+ exception.set(e);
+ LOG.debug("Error connecting to url "+url+" (propagating): "+e, e);
+ }
+ return null;
+ }
+ });
+ try {
+ URLConnection result = null;
+ try {
+ result = f.get(60, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ throw e;
+ } catch (Exception e) {
+ LOG.debug("Error connecting to url "+url+", probably timed out (rethrowing): "+e);
+ throw new IllegalStateException("Connect to URL not complete within 60 seconds, for url "+url+": "+e);
+ }
+ if (exception.get() != null) {
+ LOG.debug("Error connecting to url "+url+", thread caller of "+exception, new Throwable("source of rethrown error "+exception));
+ throw exception.get();
+ } else {
+ return result;
+ }
+ } finally {
+ f.cancel(true);
+ }
+ }
+
+ public static void assertHealthyStatusCode(int code) {
+ if (code>=200 && code<=299) return;
+ Assert.fail("Wrong status code: "+code);
+ }
+
+ public static int getHttpStatusCode(String url) throws Exception {
+ URLConnection connection = connectToUrl(url);
+ long startTime = System.currentTimeMillis();
+ int status = ((HttpURLConnection) connection).getResponseCode();
+
+ // read fully if possible, then close everything, trying to prevent cached threads at server
+ consumeAndCloseQuietly((HttpURLConnection) connection);
+
+ if (LOG.isDebugEnabled())
+ LOG.debug("connection to {} ({}ms) gives {}", new Object[] { url, (System.currentTimeMillis()-startTime), status });
+ return status;
+ }
+
+ /**
+ * Asserts that gets back any "valid" response - i.e. not an exception. This could be an unauthorized,
+ * a redirect, a 404, or anything else that implies there is web-server listening on that port.
+ */
+ public static void assertUrlReachable(String url) {
+ try {
+ getHttpStatusCode(url);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new RuntimeException("Interrupted for "+url+" (in assertion that is reachable)", e);
+ } catch (Exception e) {
+ throw new IllegalStateException("Server at "+url+" failed to respond (in assertion that is reachable): "+e, e);
+ }
+ }
+
+ public static void assertUrlUnreachable(String url) {
+ try {
+ int statusCode = getHttpStatusCode(url);
+ fail("Expected url "+url+" unreachable, but got status code "+statusCode);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new RuntimeException("Interrupted for "+url+" (in assertion that unreachable)", e);
+ } catch (Exception e) {
+ IOException cause = Exceptions.getFirstThrowableOfType(e, IOException.class);
+ if (cause != null) {
+ // success; clean shutdown transitioning from 400 to error
+ } else {
+ Throwables.propagate(e);
+ }
+ }
+ }
+
+ public static void assertUrlUnreachableEventually(final String url) {
+ assertUrlUnreachableEventually(Maps.newLinkedHashMap(), url);
+ }
+
+ public static void assertUrlUnreachableEventually(Map flags, final String url) {
+ Asserts.succeedsEventually(flags, new Runnable() {
+ public void run() {
+ assertUrlUnreachable(url);
+ }
+ });
+ }
+
+ public static void assertHttpStatusCodeEquals(String url, int... acceptableReturnCodes) {
+ List<Integer> acceptableCodes = Lists.newArrayList();
+ for (int code : acceptableReturnCodes) {
+ acceptableCodes.add((Integer)code);
+ }
+ try {
+ int actualCode = getHttpStatusCode(url);
+ assertTrue(acceptableCodes.contains(actualCode), "code="+actualCode+"; expected="+acceptableCodes+"; url="+url);
+
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new RuntimeException("Interrupted for "+url+" (in assertion that result code is "+acceptableCodes+")", e);
+ } catch (Exception e) {
+ throw new IllegalStateException("Server at "+url+" failed to respond (in assertion that result code is "+acceptableCodes+"): "+e, e);
+ }
+ }
+
+ public static void assertHttpStatusCodeEventuallyEquals(final String url, final int expectedCode) {
+ assertHttpStatusCodeEventuallyEquals(Maps.newLinkedHashMap(), url, expectedCode);
+ }
+
+ public static void assertHttpStatusCodeEventuallyEquals(Map flags, final String url, final int expectedCode) {
+ Asserts.succeedsEventually(flags, new Runnable() {
+ public void run() {
+ assertHttpStatusCodeEquals(url, expectedCode);
+ }
+ });
+ }
+
+ public static void assertContentContainsText(final String url, final String phrase, final String ...additionalPhrases) {
+ try {
+ String contents = getContent(url);
+ Assert.assertTrue(contents != null && contents.length() > 0);
+ for (String text: Lists.asList(phrase, additionalPhrases)) {
+ if (!contents.contains(text)) {
+ LOG.warn("CONTENTS OF URL "+url+" MISSING TEXT: "+text+"\n"+contents);
+ Assert.fail("URL "+url+" does not contain text: "+text);
+ }
+ }
+ } catch (Exception e) {
+ throw Throwables.propagate(e);
+ }
+ }
+
+ public static void assertContentNotContainsText(final String url, final String phrase, final String ...additionalPhrases) {
+ try {
+ String contents = getContent(url);
+ Assert.assertTrue(contents != null);
+ for (String text: Lists.asList(phrase, additionalPhrases)) {
+ if (contents.contains(text)) {
+ LOG.warn("CONTENTS OF URL "+url+" HAS TEXT: "+text+"\n"+contents);
+ Assert.fail("URL "+url+" contain text: "+text);
+ }
+ }
+ } catch (Exception e) {
+ throw Throwables.propagate(e);
+ }
+ }
+
+ public static void assertErrorContentContainsText(final String url, final String phrase, final String ...additionalPhrases) {
+ try {
+ String contents = getErrorContent(url);
+ Assert.assertTrue(contents != null && contents.length() > 0);
+ for (String text: Lists.asList(phrase, additionalPhrases)) {
+ if (!contents.contains(text)) {
+ LOG.warn("CONTENTS OF URL "+url+" MISSING TEXT: "+text+"\n"+contents);
+ Assert.fail("URL "+url+" does not contain text: "+text);
+ }
+ }
+ } catch (Exception e) {
+ throw Throwables.propagate(e);
+ }
+ }
+
+
+ public static void assertErrorContentNotContainsText(final String url, final String phrase, final String ...additionalPhrases) {
+ try {
+ String err = getErrorContent(url);
+ Assert.assertTrue(err != null);
+ for (String text: Lists.asList(phrase, additionalPhrases)) {
+ if (err.contains(text)) {
+ LOG.warn("CONTENTS OF URL "+url+" HAS TEXT: "+text+"\n"+err);
+ Assert.fail("URL "+url+" contain text: "+text);
+ }
+ }
+ } catch (Exception e) {
+ throw Throwables.propagate(e);
+ }
+ }
+
+ public static void assertContentEventuallyContainsText(final String url, final String phrase, final String ...additionalPhrases) {
+ assertContentEventuallyContainsText(MutableMap.of(), url, phrase, additionalPhrases);
+ }
+
+ public static void assertContentEventuallyContainsText(Map flags, final String url, final String phrase, final String ...additionalPhrases) {
+ Asserts.succeedsEventually(flags, new Runnable() {
+ public void run() {
+ assertContentContainsText(url, phrase, additionalPhrases);
+ }
+ });
+ }
+
+ public static void assertContentMatches(String url, String regex) {
+ String contents = getContent(url);
+ Assert.assertNotNull(contents);
+ Assert.assertTrue(contents.matches(regex), "Contents does not match expected regex ("+regex+"): "+contents);
+ }
+
+ public static void assertContentEventuallyMatches(final String url, final String regex) {
+ Asserts.succeedsEventually(new Runnable() {
+ @Override
+ public void run() {
+ assertContentMatches(url, regex);
+ }
+ });
+ }
+
+ public static String getErrorContent(String url) {
+ try {
+ HttpURLConnection connection = (HttpURLConnection) connectToUrl(url);
+ long startTime = System.currentTimeMillis();
+
+ String err;
+ int status;
+ try {
+ InputStream errStream = connection.getErrorStream();
+ err = Streams.readFullyString(errStream);
+ status = connection.getResponseCode();
+ } finally {
+ closeQuietly(connection);
+ }
+
+ if (LOG.isDebugEnabled())
+ LOG.debug("read of err {} ({}ms) complete; http code {}", new Object[] { url, Time.makeTimeStringRounded(System.currentTimeMillis()-startTime), status});
+ return err;
+
+ } catch (Exception e) {
+ throw Exceptions.propagate(e);
+ }
+ }
+
+ public static String getContent(String url) {
+ try {
+ return Streams.readFullyString(SslTrustUtils.trustAll(new URL(url).openConnection()).getInputStream());
+ } catch (Exception e) {
+ throw Throwables.propagate(e);
+ }
+ }
+
+ /**
+ * Schedules (with the given executor) a poller that repeatedly accesses the given url, to confirm it always gives
+ * back the expected status code.
+ *
+ * Expected usage is to query the future, such as:
+ *
+ * <pre>
+ * {@code
+ * Future<?> future = assertAsyncHttpStatusCodeContinuallyEquals(executor, url, 200);
+ * // do other stuff...
+ * if (future.isDone()) future.get(); // get exception if it's failed
+ * }
+ * </pre>
+ *
+ * For stopping it, you can either do future.cancel(true), or you can just do executor.shutdownNow().
+ *
+ * TODO Look at difference between this and WebAppMonitor, to decide if this should be kept.
+ */
+ public static ListenableFuture<?> assertAsyncHttpStatusCodeContinuallyEquals(ListeningExecutorService executor, final String url, final int expectedStatusCode) {
+ return executor.submit(new Runnable() {
+ @Override public void run() {
+ // TODO Need to drop logging; remove sleep when that's done.
+ while (!Thread.currentThread().isInterrupted()) {
+ assertHttpStatusCodeEquals(url, expectedStatusCode);
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ return; // graceful return
+ }
+ }
+ }
+ });
+ }
+
+ /**
+ * Consumes the input stream entirely and then cleanly closes the connection.
+ * Ignores all exceptions completely, not even logging them!
+ *
+ * Consuming the stream fully is useful for preventing idle TCP connections.
+ * See {@linkplain http://docs.oracle.com/javase/8/docs/technotes/guides/net/http-keepalive.html}.
+ */
+ public static void consumeAndCloseQuietly(HttpURLConnection connection) {
+ try { Streams.readFully(connection.getInputStream()); } catch (Exception e) {}
+ closeQuietly(connection);
+ }
+
+ /**
+ * Closes all streams of the connection, and disconnects it. Ignores all exceptions completely,
+ * not even logging them!
+ */
+ public static void closeQuietly(HttpURLConnection connection) {
+ try { connection.disconnect(); } catch (Exception e) {}
+ try { connection.getInputStream().close(); } catch (Exception e) {}
+ try { connection.getOutputStream().close(); } catch (Exception e) {}
+ try { connection.getErrorStream().close(); } catch (Exception e) {}
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/test-support/src/main/java/org/apache/brooklyn/test/NetworkingTestUtils.java
----------------------------------------------------------------------
diff --git a/usage/test-support/src/main/java/org/apache/brooklyn/test/NetworkingTestUtils.java b/usage/test-support/src/main/java/org/apache/brooklyn/test/NetworkingTestUtils.java
new file mode 100644
index 0000000..9811776
--- /dev/null
+++ b/usage/test-support/src/main/java/org/apache/brooklyn/test/NetworkingTestUtils.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.test;
+
+import static org.testng.Assert.assertTrue;
+
+import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import brooklyn.test.Asserts;
+import brooklyn.util.exceptions.Exceptions;
+import brooklyn.util.net.Networking;
+import brooklyn.util.time.Duration;
+
+import com.google.common.collect.ImmutableMap;
+
+public class NetworkingTestUtils {
+
+ private static final Logger LOG = LoggerFactory.getLogger(NetworkingTestUtils.class);
+
+ public static void assertPortsAvailableEventually(final Map<String, Integer> ports) {
+ // If we get into a TCP TIMED-WAIT state, it could take 4 minutes for the port to come available.
+ // Could that be causing our integration tests to fail sometimes when run in the suite?!
+ // Let's wait for the required ports in setup, rather than running+failing the test.
+ assertPortsAvailableEventually(ports, Duration.minutes(4));
+ }
+
+ public static void assertPortsAvailableEventually(final Map<String, Integer> ports, final Duration timeout) {
+ Asserts.succeedsEventually(ImmutableMap.of("timeout", Duration.minutes(4)), new Runnable() {
+ private boolean logged = false;
+ public void run() {
+ try {
+ assertPortsAvailable(ports);
+ } catch (Throwable t) {
+ if (!logged) {
+ LOG.warn("Port(s) not available; waiting for up to "+timeout+" ("+Exceptions.getFirstInteresting(t)+")");
+ logged = true;
+ }
+ throw Exceptions.propagate(t);
+ }
+ }});
+ LOG.debug("Ports are available: "+ports);
+ }
+
+ public static void assertPortsAvailable(final Map<String, Integer> ports) {
+ for (Map.Entry<String, Integer> entry : ports.entrySet()) {
+ String errmsg = "port "+entry.getValue()+" not available for "+entry.getKey();
+ assertTrue(Networking.isPortAvailable(entry.getValue()), errmsg);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/usage/test-support/src/main/java/org/apache/brooklyn/test/PerformanceTestUtils.java
----------------------------------------------------------------------
diff --git a/usage/test-support/src/main/java/org/apache/brooklyn/test/PerformanceTestUtils.java b/usage/test-support/src/main/java/org/apache/brooklyn/test/PerformanceTestUtils.java
new file mode 100644
index 0000000..2b765cd
--- /dev/null
+++ b/usage/test-support/src/main/java/org/apache/brooklyn/test/PerformanceTestUtils.java
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.test;
+
+import java.lang.management.ManagementFactory;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.TimeUnit;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import brooklyn.util.time.Duration;
+import brooklyn.util.time.Time;
+
+import com.google.common.base.Stopwatch;
+
+public class PerformanceTestUtils {
+
+ private static final Logger LOG = LoggerFactory.getLogger(PerformanceTestUtils.class);
+
+ private static boolean hasLoggedProcessCpuTimeUnavailable;
+
+ public static long getProcessCpuTime() {
+ try {
+ MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
+ ObjectName osMBeanName = ObjectName.getInstance(ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME);
+ return (Long) mbeanServer.getAttribute(osMBeanName, "ProcessCpuTime");
+ } catch (Exception e) {
+ if (!hasLoggedProcessCpuTimeUnavailable) {
+ hasLoggedProcessCpuTimeUnavailable = true;
+ LOG.warn("ProcessCPuTime not available in local JVM MXBean "+ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME+" (only available in sun JVM?)");
+ }
+ return -1;
+ }
+ }
+
+ /**
+ * Creates a background thread that will log.info the CPU fraction usage repeatedly, sampling at the given period.
+ * Callers <em>must</em> cancel the returned future, e.g. {@code future.cancel(true)}, otherwise it will keep
+ * logging until the JVM exits.
+ */
+ public static Future<?> sampleProcessCpuTime(final Duration period, final String loggingContext) {
+ final ExecutorService executor = Executors.newSingleThreadExecutor(new ThreadFactory() {
+ @Override public Thread newThread(Runnable r) {
+ Thread thread = new Thread(r, "brooklyn-sampleProcessCpuTime-"+loggingContext);
+ thread.setDaemon(true); // let the JVM exit
+ return thread;
+ }});
+ Future<?> future = executor.submit(new Runnable() {
+ @Override public void run() {
+ try {
+ long prevCpuTime = getProcessCpuTime();
+ if (prevCpuTime == -1) {
+ LOG.warn("ProcessCPuTime not available; cannot sample; aborting");
+ return;
+ }
+ while (true) {
+ Stopwatch stopwatch = Stopwatch.createStarted();
+ Thread.sleep(period.toMilliseconds());
+ long currentCpuTime = getProcessCpuTime();
+
+ long elapsedTime = stopwatch.elapsed(TimeUnit.MILLISECONDS);
+ double fractionCpu = (elapsedTime > 0) ? ((double)currentCpuTime-prevCpuTime) / TimeUnit.MILLISECONDS.toNanos(elapsedTime) : -1;
+ prevCpuTime = currentCpuTime;
+
+ LOG.info("CPU fraction over last {} was {} ({})", new Object[] {
+ Time.makeTimeStringRounded(elapsedTime), fractionCpu, loggingContext});
+ }
+ } catch (InterruptedException e) {
+ return; // graceful termination
+ } finally {
+ executor.shutdownNow();
+ }
+ }});
+ return future;
+ }
+}
[4/6] incubator-brooklyn git commit: [BROOKLYN-162] Update package
name to a.o.b in usage/test-support
Posted by ha...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/messaging/src/test/java/brooklyn/entity/messaging/kafka/KafkaIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/test/java/brooklyn/entity/messaging/kafka/KafkaIntegrationTest.java b/software/messaging/src/test/java/brooklyn/entity/messaging/kafka/KafkaIntegrationTest.java
index c6487e5..83be0e5 100644
--- a/software/messaging/src/test/java/brooklyn/entity/messaging/kafka/KafkaIntegrationTest.java
+++ b/software/messaging/src/test/java/brooklyn/entity/messaging/kafka/KafkaIntegrationTest.java
@@ -24,6 +24,7 @@ import static org.testng.Assert.assertTrue;
import java.util.concurrent.Callable;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -37,7 +38,6 @@ import brooklyn.location.Location;
import brooklyn.location.LocationSpec;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.time.Duration;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/messaging/src/test/java/brooklyn/entity/messaging/qpid/QpidEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/test/java/brooklyn/entity/messaging/qpid/QpidEc2LiveTest.java b/software/messaging/src/test/java/brooklyn/entity/messaging/qpid/QpidEc2LiveTest.java
index 2f81169..45a3c60 100644
--- a/software/messaging/src/test/java/brooklyn/entity/messaging/qpid/QpidEc2LiveTest.java
+++ b/software/messaging/src/test/java/brooklyn/entity/messaging/qpid/QpidEc2LiveTest.java
@@ -18,12 +18,12 @@
*/
package brooklyn.entity.messaging.qpid;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.Test;
import brooklyn.entity.AbstractEc2LiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/messaging/src/test/java/brooklyn/entity/messaging/qpid/QpidIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/test/java/brooklyn/entity/messaging/qpid/QpidIntegrationTest.java b/software/messaging/src/test/java/brooklyn/entity/messaging/qpid/QpidIntegrationTest.java
index ddce412..87a0460 100644
--- a/software/messaging/src/test/java/brooklyn/entity/messaging/qpid/QpidIntegrationTest.java
+++ b/software/messaging/src/test/java/brooklyn/entity/messaging/qpid/QpidIntegrationTest.java
@@ -33,6 +33,8 @@ import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
+import org.apache.brooklyn.test.EntityTestUtils;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.qpid.client.AMQConnectionFactory;
import org.apache.qpid.configuration.ClientProperties;
import org.slf4j.Logger;
@@ -49,8 +51,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
-import brooklyn.test.HttpTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.exceptions.Exceptions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/messaging/src/test/java/brooklyn/entity/messaging/rabbit/RabbitEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/test/java/brooklyn/entity/messaging/rabbit/RabbitEc2LiveTest.java b/software/messaging/src/test/java/brooklyn/entity/messaging/rabbit/RabbitEc2LiveTest.java
index 4f37448..9929288 100644
--- a/software/messaging/src/test/java/brooklyn/entity/messaging/rabbit/RabbitEc2LiveTest.java
+++ b/software/messaging/src/test/java/brooklyn/entity/messaging/rabbit/RabbitEc2LiveTest.java
@@ -20,6 +20,7 @@ package brooklyn.entity.messaging.rabbit;
import static org.testng.Assert.assertEquals;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.SkipException;
@@ -30,7 +31,6 @@ import brooklyn.entity.messaging.MessageBroker;
import brooklyn.entity.messaging.amqp.AmqpExchange;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import com.google.common.base.Charsets;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/messaging/src/test/java/brooklyn/entity/messaging/rabbit/RabbitIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/test/java/brooklyn/entity/messaging/rabbit/RabbitIntegrationTest.java b/software/messaging/src/test/java/brooklyn/entity/messaging/rabbit/RabbitIntegrationTest.java
index 0d5c2d4..a54b89d 100644
--- a/software/messaging/src/test/java/brooklyn/entity/messaging/rabbit/RabbitIntegrationTest.java
+++ b/software/messaging/src/test/java/brooklyn/entity/messaging/rabbit/RabbitIntegrationTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertFalse;
import java.io.IOException;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -37,7 +38,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import com.google.common.base.Charsets;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/messaging/src/test/java/brooklyn/entity/messaging/storm/StormAbstractCloudLiveTest.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/test/java/brooklyn/entity/messaging/storm/StormAbstractCloudLiveTest.java b/software/messaging/src/test/java/brooklyn/entity/messaging/storm/StormAbstractCloudLiveTest.java
index e8cbcd6..9c2d67f 100644
--- a/software/messaging/src/test/java/brooklyn/entity/messaging/storm/StormAbstractCloudLiveTest.java
+++ b/software/messaging/src/test/java/brooklyn/entity/messaging/storm/StormAbstractCloudLiveTest.java
@@ -28,6 +28,7 @@ import static brooklyn.event.basic.DependentConfiguration.attributeWhenReady;
import java.io.File;
import java.util.Map;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -51,7 +52,6 @@ import brooklyn.entity.trait.Startable;
import brooklyn.entity.zookeeper.ZooKeeperEnsemble;
import brooklyn.location.Location;
import brooklyn.management.internal.LocalManagementContext;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.ResourceUtils;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.file.ArchiveBuilder;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/messaging/src/test/java/brooklyn/entity/messaging/storm/StormEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/test/java/brooklyn/entity/messaging/storm/StormEc2LiveTest.java b/software/messaging/src/test/java/brooklyn/entity/messaging/storm/StormEc2LiveTest.java
index b3bc9d5..7b55069 100644
--- a/software/messaging/src/test/java/brooklyn/entity/messaging/storm/StormEc2LiveTest.java
+++ b/software/messaging/src/test/java/brooklyn/entity/messaging/storm/StormEc2LiveTest.java
@@ -18,6 +18,7 @@
*/
package brooklyn.entity.messaging.storm;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.Test;
import brooklyn.entity.AbstractEc2LiveTest;
@@ -26,7 +27,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.entity.zookeeper.ZooKeeperNode;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/messaging/src/test/java/brooklyn/entity/messaging/zookeeper/ZooKeeperEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/test/java/brooklyn/entity/messaging/zookeeper/ZooKeeperEc2LiveTest.java b/software/messaging/src/test/java/brooklyn/entity/messaging/zookeeper/ZooKeeperEc2LiveTest.java
index 70ab6f9..a8d21d1 100644
--- a/software/messaging/src/test/java/brooklyn/entity/messaging/zookeeper/ZooKeeperEc2LiveTest.java
+++ b/software/messaging/src/test/java/brooklyn/entity/messaging/zookeeper/ZooKeeperEc2LiveTest.java
@@ -18,6 +18,7 @@
*/
package brooklyn.entity.messaging.zookeeper;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.Test;
import brooklyn.entity.AbstractEc2LiveTest;
@@ -26,7 +27,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.entity.zookeeper.ZooKeeperNode;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/messaging/src/test/java/brooklyn/entity/messaging/zookeeper/ZooKeeperEnsembleLiveTest.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/test/java/brooklyn/entity/messaging/zookeeper/ZooKeeperEnsembleLiveTest.java b/software/messaging/src/test/java/brooklyn/entity/messaging/zookeeper/ZooKeeperEnsembleLiveTest.java
index 080ea11..a612140 100644
--- a/software/messaging/src/test/java/brooklyn/entity/messaging/zookeeper/ZooKeeperEnsembleLiveTest.java
+++ b/software/messaging/src/test/java/brooklyn/entity/messaging/zookeeper/ZooKeeperEnsembleLiveTest.java
@@ -27,11 +27,13 @@ import brooklyn.entity.trait.Startable;
import brooklyn.entity.zookeeper.ZooKeeperEnsemble;
import brooklyn.entity.zookeeper.ZooKeeperNode;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
+
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableList;
import com.google.common.util.concurrent.Uninterruptibles;
+
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/monitoring/src/test/java/brooklyn/entity/monitoring/monit/MonitIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/monitoring/src/test/java/brooklyn/entity/monitoring/monit/MonitIntegrationTest.java b/software/monitoring/src/test/java/brooklyn/entity/monitoring/monit/MonitIntegrationTest.java
index 94406a7..a8f03bb 100644
--- a/software/monitoring/src/test/java/brooklyn/entity/monitoring/monit/MonitIntegrationTest.java
+++ b/software/monitoring/src/test/java/brooklyn/entity/monitoring/monit/MonitIntegrationTest.java
@@ -28,6 +28,7 @@ import java.nio.charset.Charset;
import java.util.Map;
import java.util.concurrent.Callable;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -44,7 +45,6 @@ import brooklyn.event.basic.DependentConfiguration;
import brooklyn.location.MachineDetails;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/network/src/test/java/brooklyn/entity/network/bind/BindDnsServerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/network/src/test/java/brooklyn/entity/network/bind/BindDnsServerIntegrationTest.java b/software/network/src/test/java/brooklyn/entity/network/bind/BindDnsServerIntegrationTest.java
index 8aaf9f5..66d3be0 100644
--- a/software/network/src/test/java/brooklyn/entity/network/bind/BindDnsServerIntegrationTest.java
+++ b/software/network/src/test/java/brooklyn/entity/network/bind/BindDnsServerIntegrationTest.java
@@ -20,6 +20,7 @@ package brooklyn.entity.network.bind;
import static org.testng.Assert.assertEquals;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
@@ -46,7 +47,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.rebind.RebindOptions;
import brooklyn.entity.rebind.RebindTestFixture;
import brooklyn.policy.EnricherSpec;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
public class BindDnsServerIntegrationTest extends RebindTestFixture<TestApplication> {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/network/src/test/java/brooklyn/entity/network/bind/BindDnsServerLiveTest.java
----------------------------------------------------------------------
diff --git a/software/network/src/test/java/brooklyn/entity/network/bind/BindDnsServerLiveTest.java b/software/network/src/test/java/brooklyn/entity/network/bind/BindDnsServerLiveTest.java
index 86725fe..2dfc177 100644
--- a/software/network/src/test/java/brooklyn/entity/network/bind/BindDnsServerLiveTest.java
+++ b/software/network/src/test/java/brooklyn/entity/network/bind/BindDnsServerLiveTest.java
@@ -18,7 +18,7 @@
*/
package brooklyn.entity.network.bind;
-import static brooklyn.test.EntityTestUtils.assertAttributeEqualsEventually;
+import static org.apache.brooklyn.test.EntityTestUtils.assertAttributeEqualsEventually;
import static org.testng.Assert.assertEquals;
import org.slf4j.Logger;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterIntegrationTest.java
index ddd6243..e2507cd 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterIntegrationTest.java
@@ -27,6 +27,7 @@ import java.math.BigInteger;
import org.apache.brooklyn.entity.nosql.cassandra.CassandraDatacenter;
import org.apache.brooklyn.entity.nosql.cassandra.CassandraNode;
import org.apache.brooklyn.entity.nosql.cassandra.TokenGenerators.PosNeg63TokenGenerator;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -39,7 +40,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.collections.MutableMap;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterLiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterLiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterLiveTest.java
index d29bc1a..aa1d7e1 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterLiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterLiveTest.java
@@ -32,6 +32,7 @@ import java.util.Set;
import org.apache.brooklyn.entity.nosql.cassandra.CassandraDatacenter;
import org.apache.brooklyn.entity.nosql.cassandra.CassandraNode;
import org.apache.brooklyn.entity.nosql.cassandra.AstyanaxSupport.AstyanaxSample;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -47,7 +48,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.text.Identifiers;
import brooklyn.util.time.Duration;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterRebindIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterRebindIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterRebindIntegrationTest.java
index 4c2a248..5c45153 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterRebindIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterRebindIntegrationTest.java
@@ -25,6 +25,7 @@ import java.util.Set;
import org.apache.brooklyn.entity.nosql.cassandra.CassandraDatacenter;
import org.apache.brooklyn.entity.nosql.cassandra.CassandraNode;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -37,7 +38,6 @@ import brooklyn.entity.rebind.RebindOptions;
import brooklyn.entity.rebind.RebindTestFixtureWithApp;
import brooklyn.entity.trait.Startable;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterTest.java
index 3a1d202..dee3834 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraDatacenterTest.java
@@ -26,6 +26,7 @@ import java.util.Set;
import org.apache.brooklyn.entity.nosql.cassandra.CassandraDatacenter;
import org.apache.brooklyn.entity.nosql.cassandra.CassandraNode;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -41,7 +42,6 @@ import brooklyn.entity.basic.EntityInternal;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.LocationSpec;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.ResourceUtils;
import brooklyn.util.javalang.JavaClassNames;
import brooklyn.util.text.TemplateProcessor;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraFabricTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraFabricTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraFabricTest.java
index cbf55ed..56afd0b 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraFabricTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraFabricTest.java
@@ -25,6 +25,7 @@ import java.util.Set;
import org.apache.brooklyn.entity.nosql.cassandra.CassandraDatacenter;
import org.apache.brooklyn.entity.nosql.cassandra.CassandraFabric;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.BeforeMethod;
@@ -45,7 +46,6 @@ import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
import brooklyn.location.LocationSpec;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.time.Duration;
import com.google.common.base.Predicate;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeEc2LiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeEc2LiveTest.java
index 495843f..ee9677e 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeEc2LiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeEc2LiveTest.java
@@ -20,13 +20,13 @@ package org.apache.brooklyn.entity.nosql.cassandra;
import org.apache.brooklyn.entity.nosql.cassandra.CassandraNode;
import org.apache.brooklyn.entity.nosql.cassandra.AstyanaxSupport.AstyanaxSample;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import brooklyn.entity.AbstractEc2LiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeIntegrationTest.java
index b5a657f..617a0a5 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeIntegrationTest.java
@@ -27,6 +27,8 @@ import java.util.Map;
import org.apache.brooklyn.entity.nosql.cassandra.CassandraNode;
import org.apache.brooklyn.entity.nosql.cassandra.AstyanaxSupport.AstyanaxSample;
+import org.apache.brooklyn.test.EntityTestUtils;
+import org.apache.brooklyn.test.NetworkingTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -38,8 +40,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.event.basic.PortAttributeSensorAndConfigKey;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
-import brooklyn.test.NetworkingTestUtils;
import brooklyn.util.math.MathPredicates;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeLiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeLiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeLiveTest.java
index c098d13..7a9b989 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeLiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/cassandra/CassandraNodeLiveTest.java
@@ -22,13 +22,13 @@ import java.util.Map;
import org.apache.brooklyn.entity.nosql.cassandra.CassandraNode;
import org.apache.brooklyn.entity.nosql.cassandra.AstyanaxSupport.AstyanaxSample;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import brooklyn.entity.proxying.EntitySpec;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.text.Strings;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseSyncGatewayEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseSyncGatewayEc2LiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseSyncGatewayEc2LiveTest.java
index 89297be..988d151 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseSyncGatewayEc2LiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseSyncGatewayEc2LiveTest.java
@@ -24,6 +24,7 @@ import java.util.Map;
import org.apache.brooklyn.entity.nosql.couchbase.CouchbaseCluster;
import org.apache.brooklyn.entity.nosql.couchbase.CouchbaseNode;
import org.apache.brooklyn.entity.nosql.couchbase.CouchbaseSyncGateway;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.Test;
import brooklyn.entity.AbstractEc2LiveTest;
@@ -31,7 +32,6 @@ import brooklyn.entity.group.DynamicCluster;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBClusterLiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBClusterLiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBClusterLiveTest.java
index 0fd7796..65e452d 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBClusterLiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBClusterLiveTest.java
@@ -22,6 +22,7 @@ import static org.testng.Assert.assertEquals;
import org.apache.brooklyn.entity.nosql.couchdb.CouchDBCluster;
import org.apache.brooklyn.entity.nosql.couchdb.CouchDBNode;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -31,7 +32,6 @@ import brooklyn.entity.basic.Entities;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeEc2LiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeEc2LiveTest.java
index 1838354..7c6a539 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeEc2LiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeEc2LiveTest.java
@@ -19,6 +19,7 @@
package org.apache.brooklyn.entity.nosql.couchdb;
import org.apache.brooklyn.entity.nosql.couchdb.CouchDBNode;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -26,7 +27,6 @@ import brooklyn.entity.AbstractEc2LiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeIntegrationTest.java
index 0f8cbd2..5992b82 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeIntegrationTest.java
@@ -19,11 +19,11 @@
package org.apache.brooklyn.entity.nosql.couchdb;
import org.apache.brooklyn.entity.nosql.couchdb.CouchDBNode;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.Test;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
-import brooklyn.test.EntityTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeLiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeLiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeLiveTest.java
index 05ce053..aa2f7d1 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeLiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/couchdb/CouchDBNodeLiveTest.java
@@ -21,6 +21,7 @@ package org.apache.brooklyn.entity.nosql.couchdb;
import java.util.Map;
import org.apache.brooklyn.entity.nosql.couchdb.CouchDBNode;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.DataProvider;
@@ -28,7 +29,6 @@ import org.testng.annotations.Test;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.text.Strings;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterIntegrationTest.java
index 9f794a1..3bd27d2 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/elasticsearch/ElasticSearchClusterIntegrationTest.java
@@ -26,6 +26,7 @@ import java.net.URISyntaxException;
import org.apache.brooklyn.entity.nosql.elasticsearch.ElasticSearchCluster;
import org.apache.brooklyn.entity.nosql.elasticsearch.ElasticSearchNode;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.apache.http.client.methods.HttpGet;
import org.bouncycastle.util.Strings;
import org.slf4j.Logger;
@@ -42,7 +43,6 @@ import brooklyn.entity.trait.Startable;
import brooklyn.event.feed.http.HttpValueFunctions;
import brooklyn.location.Location;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.http.HttpTool;
import brooklyn.util.http.HttpToolResponse;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeIntegrationTest.java
index c0c140d..9c5bda1 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeIntegrationTest.java
@@ -24,6 +24,7 @@ import java.net.URI;
import java.net.URISyntaxException;
import org.apache.brooklyn.entity.nosql.elasticsearch.ElasticSearchNode;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.apache.http.client.methods.HttpGet;
import org.bouncycastle.util.Strings;
import org.testng.annotations.AfterMethod;
@@ -38,7 +39,6 @@ import brooklyn.entity.trait.Startable;
import brooklyn.event.feed.http.HttpValueFunctions;
import brooklyn.location.Location;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.http.HttpTool;
import brooklyn.util.http.HttpToolResponse;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBEc2LiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBEc2LiveTest.java
index 413f0c9..7949a88 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBEc2LiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBEc2LiveTest.java
@@ -21,9 +21,10 @@ package org.apache.brooklyn.entity.nosql.mongodb;
import brooklyn.entity.AbstractEc2LiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
+
import com.google.common.collect.ImmutableList;
import com.mongodb.DBObject;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
@@ -31,6 +32,7 @@ import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
import org.apache.brooklyn.entity.nosql.mongodb.MongoDBServer;
+import org.apache.brooklyn.test.EntityTestUtils;
public class MongoDBEc2LiveTest extends AbstractEc2LiveTest {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBIntegrationTest.java
index eb9c362..28c82c4 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBIntegrationTest.java
@@ -22,6 +22,7 @@ import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import org.apache.brooklyn.entity.nosql.mongodb.MongoDBServer;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -31,7 +32,6 @@ import brooklyn.entity.basic.Entities;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBRebindIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBRebindIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBRebindIntegrationTest.java
index b7c7739..e8f59e2 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBRebindIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBRebindIntegrationTest.java
@@ -19,13 +19,13 @@
package org.apache.brooklyn.entity.nosql.mongodb;
import org.apache.brooklyn.entity.nosql.mongodb.MongoDBServer;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.rebind.RebindTestFixtureWithApp;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBSoftLayerLiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBSoftLayerLiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBSoftLayerLiveTest.java
index de6e597..dd6c42f 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBSoftLayerLiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBSoftLayerLiveTest.java
@@ -21,6 +21,7 @@ package org.apache.brooklyn.entity.nosql.mongodb;
import static org.testng.Assert.assertEquals;
import org.apache.brooklyn.entity.nosql.mongodb.MongoDBServer;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
@@ -31,7 +32,6 @@ import com.mongodb.DBObject;
import brooklyn.entity.AbstractSoftlayerLiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
public class MongoDBSoftLayerLiveTest extends AbstractSoftlayerLiveTest {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBConfigServerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBConfigServerIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBConfigServerIntegrationTest.java
index fb748e4..f915e19 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBConfigServerIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBConfigServerIntegrationTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertFalse;
import org.apache.brooklyn.entity.nosql.mongodb.MongoDBServer;
import org.apache.brooklyn.entity.nosql.mongodb.MongoDBTestHelper;
import org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBConfigServer;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -33,7 +34,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentIntegrationTest.java
index e4947d3..b8211b4 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/mongodb/sharding/MongoDBShardedDeploymentIntegrationTest.java
@@ -28,6 +28,7 @@ import org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBRouter;
import org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBRouterCluster;
import org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBShardCluster;
import org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBShardedDeployment;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -37,7 +38,6 @@ import brooklyn.entity.Entity;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/redis/RedisClusterIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/redis/RedisClusterIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/redis/RedisClusterIntegrationTest.java
index 6331662..aabd2a2 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/redis/RedisClusterIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/redis/RedisClusterIntegrationTest.java
@@ -27,6 +27,7 @@ import java.util.concurrent.Callable;
import org.apache.brooklyn.entity.nosql.redis.RedisCluster;
import org.apache.brooklyn.entity.nosql.redis.RedisSlave;
import org.apache.brooklyn.entity.nosql.redis.RedisStore;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -39,7 +40,6 @@ import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java
index 3d0b421..2a42333 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/redis/RedisEc2LiveTest.java
@@ -21,6 +21,7 @@ package org.apache.brooklyn.entity.nosql.redis;
import javax.annotation.Nullable;
import org.apache.brooklyn.entity.nosql.redis.RedisStore;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
@@ -28,7 +29,6 @@ import org.testng.annotations.Test;
import brooklyn.entity.AbstractEc2LiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/redis/RedisIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/redis/RedisIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/redis/RedisIntegrationTest.java
index 8af953f..6cca4c9 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/redis/RedisIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/redis/RedisIntegrationTest.java
@@ -21,6 +21,7 @@ package org.apache.brooklyn.entity.nosql.redis;
import javax.annotation.Nullable;
import org.apache.brooklyn.entity.nosql.redis.RedisStore;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -30,7 +31,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
import brooklyn.location.basic.PortRanges;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.time.Duration;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakClusterEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakClusterEc2LiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakClusterEc2LiveTest.java
index 883299f..a8ade53 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakClusterEc2LiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakClusterEc2LiveTest.java
@@ -20,6 +20,7 @@ package org.apache.brooklyn.entity.nosql.riak;
import org.apache.brooklyn.entity.nosql.riak.RiakCluster;
import org.apache.brooklyn.entity.nosql.riak.RiakNode;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
@@ -28,7 +29,6 @@ import brooklyn.entity.AbstractEc2LiveTest;
import brooklyn.entity.basic.Attributes;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeEc2LiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeEc2LiveTest.java
index 1d69103..051d583 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeEc2LiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeEc2LiveTest.java
@@ -19,6 +19,7 @@
package org.apache.brooklyn.entity.nosql.riak;
import org.apache.brooklyn.entity.nosql.riak.RiakNode;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
@@ -28,7 +29,6 @@ import com.google.common.collect.ImmutableList;
import brooklyn.entity.AbstractEc2LiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
public class RiakNodeEc2LiveTest extends AbstractEc2LiveTest {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeGoogleComputeLiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeGoogleComputeLiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeGoogleComputeLiveTest.java
index a5877c4..492a14c 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeGoogleComputeLiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeGoogleComputeLiveTest.java
@@ -20,6 +20,7 @@ package org.apache.brooklyn.entity.nosql.riak;
import org.apache.brooklyn.entity.nosql.riak.RiakCluster;
import org.apache.brooklyn.entity.nosql.riak.RiakNode;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableList;
@@ -28,7 +29,6 @@ import com.google.common.collect.Iterables;
import brooklyn.entity.AbstractGoogleComputeLiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
public class RiakNodeGoogleComputeLiveTest extends AbstractGoogleComputeLiveTest {
@Override
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeIntegrationTest.java
index 50c946f..9722154 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeIntegrationTest.java
@@ -21,6 +21,7 @@ package org.apache.brooklyn.entity.nosql.riak;
import static org.testng.Assert.assertFalse;
import org.apache.brooklyn.entity.nosql.riak.RiakNode;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -31,7 +32,6 @@ import brooklyn.entity.basic.Entities;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
public class RiakNodeIntegrationTest {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeSoftlayerLiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeSoftlayerLiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeSoftlayerLiveTest.java
index 069a920..adc23f0 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeSoftlayerLiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/riak/RiakNodeSoftlayerLiveTest.java
@@ -19,6 +19,7 @@
package org.apache.brooklyn.entity.nosql.riak;
import org.apache.brooklyn.entity.nosql.riak.RiakNode;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.BeforeMethod;
import com.google.common.collect.ImmutableList;
@@ -26,7 +27,6 @@ import com.google.common.collect.ImmutableList;
import brooklyn.entity.AbstractSoftlayerLiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
public class RiakNodeSoftlayerLiveTest extends AbstractSoftlayerLiveTest {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/solr/SolrServerEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/solr/SolrServerEc2LiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/solr/SolrServerEc2LiveTest.java
index ef2f166..8b7b6a2 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/solr/SolrServerEc2LiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/solr/SolrServerEc2LiveTest.java
@@ -22,6 +22,7 @@ import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
import org.apache.brooklyn.entity.nosql.solr.SolrServer;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.apache.solr.common.SolrDocument;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -30,7 +31,6 @@ import brooklyn.entity.AbstractEc2LiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.collections.MutableMap;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/solr/SolrServerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/solr/SolrServerIntegrationTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/solr/SolrServerIntegrationTest.java
index 23ca974..0edf9a9 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/solr/SolrServerIntegrationTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/solr/SolrServerIntegrationTest.java
@@ -22,13 +22,13 @@ import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
import org.apache.brooklyn.entity.nosql.solr.SolrServer;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.apache.solr.common.SolrDocument;
import org.testng.annotations.Test;
import brooklyn.entity.basic.Entities;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.collections.MutableMap;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/solr/SolrServerLiveTest.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/solr/SolrServerLiveTest.java b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/solr/SolrServerLiveTest.java
index d9fc27f..80faddb 100644
--- a/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/solr/SolrServerLiveTest.java
+++ b/software/nosql/src/test/java/org/apache/brooklyn/entity/nosql/solr/SolrServerLiveTest.java
@@ -24,6 +24,7 @@ import static org.testng.Assert.assertTrue;
import java.util.Map;
import org.apache.brooklyn.entity.nosql.solr.SolrServer;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.apache.solr.common.SolrDocument;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -32,7 +33,6 @@ import org.testng.annotations.Test;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.text.Strings;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/osgi/src/test/java/brooklyn/entity/osgi/karaf/KarafContainerEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/osgi/src/test/java/brooklyn/entity/osgi/karaf/KarafContainerEc2LiveTest.java b/software/osgi/src/test/java/brooklyn/entity/osgi/karaf/KarafContainerEc2LiveTest.java
index e0f332a..9c2bd89 100644
--- a/software/osgi/src/test/java/brooklyn/entity/osgi/karaf/KarafContainerEc2LiveTest.java
+++ b/software/osgi/src/test/java/brooklyn/entity/osgi/karaf/KarafContainerEc2LiveTest.java
@@ -18,6 +18,7 @@
*/
package brooklyn.entity.osgi.karaf;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
@@ -25,7 +26,6 @@ import org.testng.annotations.Test;
import brooklyn.entity.AbstractEc2LiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.text.Identifiers;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/osgi/src/test/java/brooklyn/entity/osgi/karaf/KarafContainerTest.java
----------------------------------------------------------------------
diff --git a/software/osgi/src/test/java/brooklyn/entity/osgi/karaf/KarafContainerTest.java b/software/osgi/src/test/java/brooklyn/entity/osgi/karaf/KarafContainerTest.java
index c6c76ba..eb5c561 100644
--- a/software/osgi/src/test/java/brooklyn/entity/osgi/karaf/KarafContainerTest.java
+++ b/software/osgi/src/test/java/brooklyn/entity/osgi/karaf/KarafContainerTest.java
@@ -24,6 +24,7 @@ import static org.testng.Assert.assertNull;
import java.net.URL;
import java.util.Map;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
@@ -37,7 +38,6 @@ import brooklyn.entity.software.SshEffectorTasks;
import brooklyn.location.NoMachinesAvailableException;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.exceptions.Exceptions;
import brooklyn.util.text.Identifiers;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/dns/AbstractGeoDnsServiceTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/dns/AbstractGeoDnsServiceTest.java b/software/webapp/src/test/java/brooklyn/entity/dns/AbstractGeoDnsServiceTest.java
index 0984071..417dec1 100644
--- a/software/webapp/src/test/java/brooklyn/entity/dns/AbstractGeoDnsServiceTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/dns/AbstractGeoDnsServiceTest.java
@@ -24,6 +24,7 @@ import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -56,7 +57,6 @@ import brooklyn.location.basic.SshMachineLocation;
import brooklyn.location.geo.HostGeoInfo;
import brooklyn.management.ManagementContext;
import brooklyn.management.internal.LocalManagementContext;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.collections.CollectionFunctionals;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxClusterIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxClusterIntegrationTest.java b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxClusterIntegrationTest.java
index bf76568..1fed57c 100644
--- a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxClusterIntegrationTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxClusterIntegrationTest.java
@@ -24,6 +24,8 @@ import static org.testng.Assert.assertTrue;
import java.util.Collections;
import java.util.List;
+import org.apache.brooklyn.test.EntityTestUtils;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,8 +46,6 @@ import brooklyn.location.Location;
import brooklyn.location.basic.PortRanges;
import brooklyn.management.EntityManager;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
-import brooklyn.test.HttpTestUtils;
import brooklyn.util.collections.MutableMap;
import com.google.common.base.Predicates;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxEc2LiveTest.java b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxEc2LiveTest.java
index 0cd493b..017415b 100644
--- a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxEc2LiveTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxEc2LiveTest.java
@@ -18,6 +18,8 @@
*/
package brooklyn.entity.proxy.nginx;
+import org.apache.brooklyn.test.EntityTestUtils;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
@@ -27,8 +29,6 @@ import brooklyn.entity.basic.SoftwareProcess;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.webapp.WebAppService;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
-import brooklyn.test.HttpTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxHttpsSslIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxHttpsSslIntegrationTest.java b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxHttpsSslIntegrationTest.java
index d7d9f41..faed95c 100644
--- a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxHttpsSslIntegrationTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxHttpsSslIntegrationTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertTrue;
import java.io.File;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,7 +46,6 @@ import brooklyn.event.basic.PortAttributeSensorAndConfigKey;
import brooklyn.location.Location;
import brooklyn.location.basic.PortRanges;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
import brooklyn.util.exceptions.Exceptions;
import com.google.common.base.Preconditions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxIntegrationTest.java b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxIntegrationTest.java
index 80eaa2d..1cf0920 100644
--- a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxIntegrationTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxIntegrationTest.java
@@ -18,16 +18,18 @@
*/
package brooklyn.entity.proxy.nginx;
-import static brooklyn.test.EntityTestUtils.assertAttributeEqualsEventually;
-import static brooklyn.test.HttpTestUtils.assertHttpStatusCodeEquals;
-import static brooklyn.test.HttpTestUtils.assertHttpStatusCodeEventuallyEquals;
+import static org.apache.brooklyn.test.EntityTestUtils.assertAttributeEqualsEventually;
+import static org.apache.brooklyn.test.HttpTestUtils.assertHttpStatusCodeEquals;
+import static org.apache.brooklyn.test.HttpTestUtils.assertHttpStatusCodeEventuallyEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotEquals;
import static org.testng.Assert.assertTrue;
import java.util.Map;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
+import org.apache.brooklyn.test.WebAppMonitor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.BeforeMethod;
@@ -44,8 +46,6 @@ import brooklyn.entity.webapp.WebAppService;
import brooklyn.entity.webapp.jboss.JBoss7Server;
import brooklyn.location.Location;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
-import brooklyn.test.WebAppMonitor;
import brooklyn.util.time.Duration;
import brooklyn.util.time.Time;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxRebindIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxRebindIntegrationTest.java b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxRebindIntegrationTest.java
index dcbf35e..0d15299 100644
--- a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxRebindIntegrationTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxRebindIntegrationTest.java
@@ -18,9 +18,9 @@
*/
package brooklyn.entity.proxy.nginx;
-import static brooklyn.test.EntityTestUtils.assertAttributeEqualsEventually;
-import static brooklyn.test.HttpTestUtils.assertHttpStatusCodeEquals;
-import static brooklyn.test.HttpTestUtils.assertHttpStatusCodeEventuallyEquals;
+import static org.apache.brooklyn.test.EntityTestUtils.assertAttributeEqualsEventually;
+import static org.apache.brooklyn.test.HttpTestUtils.assertHttpStatusCodeEquals;
+import static org.apache.brooklyn.test.HttpTestUtils.assertHttpStatusCodeEventuallyEquals;
import static org.testng.Assert.assertEquals;
import java.util.List;
@@ -29,8 +29,9 @@ import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
-
+import org.apache.brooklyn.test.WebAppMonitor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -52,8 +53,6 @@ import brooklyn.location.LocationSpec;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.management.ManagementContext;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
-import brooklyn.test.WebAppMonitor;
import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxRebindWithHaIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxRebindWithHaIntegrationTest.java b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxRebindWithHaIntegrationTest.java
index 3f4fc78..af3718e 100644
--- a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxRebindWithHaIntegrationTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxRebindWithHaIntegrationTest.java
@@ -26,7 +26,9 @@ import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
+import org.apache.brooklyn.test.WebAppMonitor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -51,8 +53,6 @@ import brooklyn.location.basic.SshMachineLocationReuseIntegrationTest.RecordingS
import brooklyn.management.Task;
import brooklyn.management.ha.HighAvailabilityMode;
import brooklyn.management.internal.LocalManagementContext;
-import brooklyn.test.EntityTestUtils;
-import brooklyn.test.WebAppMonitor;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.internal.ssh.SshTool;
import brooklyn.util.net.Networking;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxUrlMappingIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxUrlMappingIntegrationTest.java b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxUrlMappingIntegrationTest.java
index f705466..db4af61 100644
--- a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxUrlMappingIntegrationTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxUrlMappingIntegrationTest.java
@@ -30,8 +30,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.BeforeMethod;
@@ -54,7 +54,6 @@ import brooklyn.entity.webapp.tomcat.Tomcat8ServerImpl;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.management.EntityManager;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxWebClusterEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxWebClusterEc2LiveTest.java b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxWebClusterEc2LiveTest.java
index 7a78777..12d157d 100644
--- a/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxWebClusterEc2LiveTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/proxy/nginx/NginxWebClusterEc2LiveTest.java
@@ -22,6 +22,7 @@ import static org.testng.Assert.assertNotNull;
import java.net.URL;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -42,7 +43,6 @@ import brooklyn.location.MachineLocation;
import brooklyn.location.basic.Machines;
import brooklyn.management.ManagementContext;
import brooklyn.test.Asserts;
-import brooklyn.test.HttpTestUtils;
import brooklyn.test.entity.TestApplication;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/AbstractWebAppFixtureIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/AbstractWebAppFixtureIntegrationTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/AbstractWebAppFixtureIntegrationTest.java
index 9e6e2a8..d409dae 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/AbstractWebAppFixtureIntegrationTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/AbstractWebAppFixtureIntegrationTest.java
@@ -18,7 +18,7 @@
*/
package brooklyn.entity.webapp;
-import static brooklyn.test.HttpTestUtils.connectToUrl;
+import static org.apache.brooklyn.test.HttpTestUtils.connectToUrl;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotNull;
@@ -38,6 +38,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import brooklyn.entity.basic.SoftwareProcessDriver;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterClass;
@@ -64,9 +65,11 @@ import brooklyn.management.ManagementContext;
import brooklyn.management.SubscriptionContext;
import brooklyn.management.SubscriptionHandle;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
-import brooklyn.test.HttpTestUtils;
+
+import org.apache.brooklyn.test.EntityTestUtils;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
+
import brooklyn.test.entity.LocalManagementContextForTests;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/ControlledDynamicWebAppClusterIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/ControlledDynamicWebAppClusterIntegrationTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/ControlledDynamicWebAppClusterIntegrationTest.java
index 7f9a18f..4d847fc 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/ControlledDynamicWebAppClusterIntegrationTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/ControlledDynamicWebAppClusterIntegrationTest.java
@@ -24,9 +24,10 @@ import static org.testng.Assert.assertNotNull;
import java.util.List;
import java.util.concurrent.Callable;
+import org.apache.brooklyn.test.EntityTestUtils;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import org.apache.brooklyn.entity.basic.RecordingSensorEventListener;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.BeforeMethod;
@@ -43,8 +44,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.webapp.tomcat.TomcatServer;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
-import brooklyn.test.HttpTestUtils;
import brooklyn.test.entity.TestJavaWebAppEntity;
import brooklyn.util.collections.CollectionFunctionals;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/ControlledDynamicWebAppClusterTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/ControlledDynamicWebAppClusterTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/ControlledDynamicWebAppClusterTest.java
index 7a361f2..e98d094 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/ControlledDynamicWebAppClusterTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/ControlledDynamicWebAppClusterTest.java
@@ -22,6 +22,7 @@ import static org.testng.Assert.assertEquals;
import java.util.List;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,7 +40,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.webapp.jboss.JBoss7Server;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestJavaWebAppEntity;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/DynamicWebAppClusterTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/DynamicWebAppClusterTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/DynamicWebAppClusterTest.java
index 6db67ea..df5a582 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/DynamicWebAppClusterTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/DynamicWebAppClusterTest.java
@@ -20,6 +20,7 @@ package brooklyn.entity.webapp;
import static org.testng.Assert.assertEquals;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -31,7 +32,6 @@ import brooklyn.entity.basic.EntityLocal;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.basic.SimulatedLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.test.entity.TestJavaWebAppEntity;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/DynamicWebAppFabricTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/DynamicWebAppFabricTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/DynamicWebAppFabricTest.java
index 5a805cc..b47bfdd 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/DynamicWebAppFabricTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/DynamicWebAppFabricTest.java
@@ -20,6 +20,7 @@ package brooklyn.entity.webapp;
import java.util.List;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -34,7 +35,6 @@ import brooklyn.entity.basic.EntityLocal;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Changeable;
import brooklyn.location.basic.SimulatedLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.test.entity.TestJavaWebAppEntity;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/ElasticJavaWebAppServiceIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/ElasticJavaWebAppServiceIntegrationTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/ElasticJavaWebAppServiceIntegrationTest.java
index 1c2e7aa..69711c5 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/ElasticJavaWebAppServiceIntegrationTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/ElasticJavaWebAppServiceIntegrationTest.java
@@ -18,6 +18,7 @@
*/
package brooklyn.entity.webapp;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
@@ -26,7 +27,6 @@ import org.testng.annotations.Test;
import brooklyn.entity.basic.Entities;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.HttpTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/TomcatAutoScalerPolicyTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/TomcatAutoScalerPolicyTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/TomcatAutoScalerPolicyTest.java
index 7e41d75..434d2b4 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/TomcatAutoScalerPolicyTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/TomcatAutoScalerPolicyTest.java
@@ -18,7 +18,7 @@
*/
package brooklyn.entity.webapp;
-import static brooklyn.test.HttpTestUtils.connectToUrl;
+import static org.apache.brooklyn.test.HttpTestUtils.connectToUrl;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/WebAppConcurrentDeployTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/WebAppConcurrentDeployTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/WebAppConcurrentDeployTest.java
index 18b074e..0a06c3c 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/WebAppConcurrentDeployTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/WebAppConcurrentDeployTest.java
@@ -39,8 +39,10 @@ import brooklyn.location.LocationSpec;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.management.Task;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
+
+import org.apache.brooklyn.test.EntityTestUtils;
import org.apache.brooklyn.test.TestResourceUnavailableException;
+
import brooklyn.util.collections.MutableList;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.http.HttpTool;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/WebAppLiveIntegrationTest.groovy
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/WebAppLiveIntegrationTest.groovy b/software/webapp/src/test/java/brooklyn/entity/webapp/WebAppLiveIntegrationTest.groovy
index 6fee150..a3e7cd2 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/WebAppLiveIntegrationTest.groovy
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/WebAppLiveIntegrationTest.groovy
@@ -20,7 +20,7 @@ package brooklyn.entity.webapp
import static brooklyn.entity.basic.ConfigKeys.*
import static brooklyn.entity.webapp.jboss.JBoss6Server.*
-import static brooklyn.test.TestUtils.*
+import static org.apache.brooklyn.test.TestUtils.*
import static java.util.concurrent.TimeUnit.*
import static org.testng.Assert.*
@@ -46,7 +46,7 @@ import brooklyn.entity.webapp.tomcat.TomcatServer
import brooklyn.entity.webapp.tomcat.TomcatServerImpl
import brooklyn.location.Location
import brooklyn.location.basic.BasicLocationRegistry
-import brooklyn.test.TestUtils
+import org.apache.brooklyn.test.TestUtils
import brooklyn.test.entity.TestApplicationImpl
import brooklyn.util.internal.TimeExtras
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/ControlledDynamicWebAppClusterRebindIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/ControlledDynamicWebAppClusterRebindIntegrationTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/ControlledDynamicWebAppClusterRebindIntegrationTest.java
index ed1580f..fb19a7e 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/ControlledDynamicWebAppClusterRebindIntegrationTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/ControlledDynamicWebAppClusterRebindIntegrationTest.java
@@ -18,9 +18,9 @@
*/
package brooklyn.entity.webapp.jboss;
-import static brooklyn.test.EntityTestUtils.assertAttributeEqualsEventually;
-import static brooklyn.test.HttpTestUtils.assertHttpStatusCodeEquals;
-import static brooklyn.test.HttpTestUtils.assertHttpStatusCodeEventuallyEquals;
+import static org.apache.brooklyn.test.EntityTestUtils.assertAttributeEqualsEventually;
+import static org.apache.brooklyn.test.HttpTestUtils.assertHttpStatusCodeEquals;
+import static org.apache.brooklyn.test.HttpTestUtils.assertHttpStatusCodeEventuallyEquals;
import static org.testng.Assert.assertEquals;
import java.io.File;
@@ -30,6 +30,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.brooklyn.test.TestResourceUnavailableException;
+import org.apache.brooklyn.test.WebAppMonitor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -46,7 +47,6 @@ import brooklyn.entity.rebind.RebindTestUtils;
import brooklyn.entity.webapp.ControlledDynamicWebAppCluster;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.management.internal.LocalManagementContext;
-import brooklyn.test.WebAppMonitor;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.internal.TimeExtras;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/DynamicWebAppClusterRebindIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/DynamicWebAppClusterRebindIntegrationTest.java b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/DynamicWebAppClusterRebindIntegrationTest.java
index 9634d24..25c17a6 100644
--- a/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/DynamicWebAppClusterRebindIntegrationTest.java
+++ b/software/webapp/src/test/java/brooklyn/entity/webapp/jboss/DynamicWebAppClusterRebindIntegrationTest.java
@@ -18,9 +18,9 @@
*/
package brooklyn.entity.webapp.jboss;
-import static brooklyn.test.HttpTestUtils.assertHttpStatusCodeEquals;
-import static brooklyn.test.HttpTestUtils.assertHttpStatusCodeEventuallyEquals;
-import static brooklyn.test.HttpTestUtils.assertUrlUnreachableEventually;
+import static org.apache.brooklyn.test.HttpTestUtils.assertHttpStatusCodeEquals;
+import static org.apache.brooklyn.test.HttpTestUtils.assertHttpStatusCodeEventuallyEquals;
+import static org.apache.brooklyn.test.HttpTestUtils.assertUrlUnreachableEventually;
import static org.testng.Assert.assertEquals;
import java.io.File;
@@ -31,6 +31,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.brooklyn.test.TestResourceUnavailableException;
+import org.apache.brooklyn.test.WebAppMonitor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -45,7 +46,6 @@ import brooklyn.entity.rebind.RebindTestUtils;
import brooklyn.entity.webapp.DynamicWebAppCluster;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.management.internal.LocalManagementContext;
-import brooklyn.test.WebAppMonitor;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.collections.MutableMap;
[6/6] incubator-brooklyn git commit: This closes #803
Posted by ha...@apache.org.
This closes #803
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/2ed62d61
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/2ed62d61
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/2ed62d61
Branch: refs/heads/master
Commit: 2ed62d61bac4b704842064ad2d6956e2a9fecf4f
Parents: 83acab2 9e04407
Author: Hadrian Zbarcea <ha...@apache.org>
Authored: Fri Aug 7 21:32:39 2015 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Fri Aug 7 21:32:39 2015 -0400
----------------------------------------------------------------------
...stomAggregatingEnricherDeprecatedTest.groovy | 2 +-
.../enricher/CustomAggregatingEnricherTest.java | 2 +-
.../java/brooklyn/enricher/EnrichersTest.java | 4 +-
...SensorPropagatingEnricherDeprecatedTest.java | 2 +-
.../enricher/SensorPropagatingEnricherTest.java | 2 +-
.../TransformingEnricherDeprecatedTest.groovy | 2 +-
.../enricher/TransformingEnricherTest.java | 2 +-
.../entity/EntityPreManagementTest.java | 2 +-
.../brooklyn/entity/basic/DataEntityTest.java | 2 +-
.../basic/DependentConfigurationTest.java | 2 +-
.../entity/basic/PolicyRegistrationTest.java | 2 +-
.../entity/basic/ServiceStateLogicTest.java | 2 +-
.../entity/effector/EffectorBasicTest.java | 2 +-
.../entity/group/DynamicClusterTest.java | 4 +-
.../entity/group/DynamicFabricTest.java | 2 +-
.../entity/group/GroupPickUpEntitiesTest.java | 2 +-
.../entity/rebind/RebindEnricherTest.java | 2 +-
.../entity/rebind/RebindEntityTest.java | 4 +-
.../brooklyn/entity/rebind/RebindFeedTest.java | 2 +-
.../entity/rebind/RebindFeedWithHaTest.java | 2 +-
.../event/feed/function/FunctionFeedTest.java | 2 +-
.../feed/http/HttpFeedIntegrationTest.java | 2 +-
.../feed/shell/ShellFeedIntegrationTest.java | 2 +-
.../event/feed/ssh/SshFeedIntegrationTest.java | 2 +-
.../WindowsPerformanceCounterFeedLiveTest.java | 2 +-
.../WindowsPerformanceCounterFeedTest.java | 2 +-
.../SshMachineLocationPerformanceTest.java | 2 +-
.../brooklyn/management/ha/HotStandbyTest.java | 2 +-
.../EntityPersistencePerformanceTest.java | 2 +-
...lusterDatabaseExampleAppIntegrationTest.java | 7 +-
.../os/AdvertiseWinrmLoginPolicyTest.java | 2 +-
.../policy/os/CreateUserPolicyLiveTest.java | 2 +-
.../policy/os/CreateUserPolicyTest.java | 2 +-
.../enricher/HttpLatencyDetectorTest.java | 2 +-
.../brooklyn/enricher/RebindEnricherTest.java | 2 +-
.../autoscaling/AutoScalerPolicyRebindTest.java | 2 +-
.../policy/ha/ServiceFailureDetectorTest.java | 2 +-
.../brooklyn/policy/ha/ServiceReplacerTest.java | 2 +-
...ctSoftwareProcessRestartIntegrationTest.java | 2 +-
.../basic/SoftwareProcessEntityRebindTest.java | 2 +-
.../entity/basic/SoftwareProcessEntityTest.java | 2 +-
...ftwareProcessAndChildrenIntegrationTest.java | 2 +-
.../basic/lifecycle/ScriptHelperTest.java | 2 +-
.../BrooklynClusterIntegrationTest.java | 2 +-
.../BrooklynNodeIntegrationTest.java | 4 +-
.../brooklynnode/SelectMasterEffectorTest.java | 2 +-
.../brooklyn/entity/java/EntityPollingTest.java | 2 +-
.../entity/java/VanillaJavaAppRebindTest.java | 2 +-
.../entity/machine/MachineEntityRebindTest.java | 2 +-
.../entity/pool/AbstractServerPoolTest.java | 2 +-
.../brooklyn/entity/pool/ServerPoolTest.java | 2 +-
.../entity/software/StaticSensorTest.java | 2 +-
.../software/http/HttpRequestSensorTest.java | 2 +-
.../mysql/AbstractToyMySqlEntityTest.java | 2 +-
.../software/ssh/SshCommandIntegrationTest.java | 2 +-
.../brooklyn/event/feed/jmx/JmxFeedTest.java | 4 +-
.../brooklyn/event/feed/jmx/JmxHelperTest.java | 2 +-
.../event/feed/jmx/RebindJmxFeedTest.java | 2 +-
.../basic/MachineDetailsEc2LiveTest.java | 2 +-
.../MachineDetailsGoogleComputeLiveTest.java | 2 +-
.../crate/CrateNodeIntegrationTest.java | 2 +-
.../PostgreSqlRebindIntegrationTest.java | 2 +-
.../messaging/activemq/ActiveMQEc2LiveTest.java | 2 +-
.../activemq/ActiveMQGoogleComputeLiveTest.java | 4 +-
.../activemq/ActiveMQIntegrationTest.java | 2 +-
.../messaging/kafka/KafkaIntegrationTest.java | 2 +-
.../entity/messaging/qpid/QpidEc2LiveTest.java | 2 +-
.../messaging/qpid/QpidIntegrationTest.java | 4 +-
.../messaging/rabbit/RabbitEc2LiveTest.java | 2 +-
.../messaging/rabbit/RabbitIntegrationTest.java | 2 +-
.../storm/StormAbstractCloudLiveTest.java | 2 +-
.../messaging/storm/StormEc2LiveTest.java | 2 +-
.../zookeeper/ZooKeeperEc2LiveTest.java | 2 +-
.../zookeeper/ZooKeeperEnsembleLiveTest.java | 4 +-
.../monitoring/monit/MonitIntegrationTest.java | 2 +-
.../bind/BindDnsServerIntegrationTest.java | 2 +-
.../network/bind/BindDnsServerLiveTest.java | 2 +-
.../CassandraDatacenterIntegrationTest.java | 2 +-
.../cassandra/CassandraDatacenterLiveTest.java | 2 +-
...assandraDatacenterRebindIntegrationTest.java | 2 +-
.../cassandra/CassandraDatacenterTest.java | 2 +-
.../nosql/cassandra/CassandraFabricTest.java | 2 +-
.../cassandra/CassandraNodeEc2LiveTest.java | 2 +-
.../cassandra/CassandraNodeIntegrationTest.java | 4 +-
.../nosql/cassandra/CassandraNodeLiveTest.java | 2 +-
.../CouchbaseSyncGatewayEc2LiveTest.java | 2 +-
.../nosql/couchdb/CouchDBClusterLiveTest.java | 2 +-
.../nosql/couchdb/CouchDBNodeEc2LiveTest.java | 2 +-
.../couchdb/CouchDBNodeIntegrationTest.java | 2 +-
.../nosql/couchdb/CouchDBNodeLiveTest.java | 2 +-
.../ElasticSearchClusterIntegrationTest.java | 2 +-
.../ElasticSearchNodeIntegrationTest.java | 2 +-
.../nosql/mongodb/MongoDBEc2LiveTest.java | 4 +-
.../nosql/mongodb/MongoDBIntegrationTest.java | 2 +-
.../mongodb/MongoDBRebindIntegrationTest.java | 2 +-
.../nosql/mongodb/MongoDBSoftLayerLiveTest.java | 2 +-
.../MongoDBConfigServerIntegrationTest.java | 2 +-
...MongoDBShardedDeploymentIntegrationTest.java | 2 +-
.../redis/RedisClusterIntegrationTest.java | 2 +-
.../entity/nosql/redis/RedisEc2LiveTest.java | 2 +-
.../nosql/redis/RedisIntegrationTest.java | 2 +-
.../nosql/riak/RiakClusterEc2LiveTest.java | 2 +-
.../entity/nosql/riak/RiakNodeEc2LiveTest.java | 2 +-
.../riak/RiakNodeGoogleComputeLiveTest.java | 2 +-
.../nosql/riak/RiakNodeIntegrationTest.java | 2 +-
.../nosql/riak/RiakNodeSoftlayerLiveTest.java | 2 +-
.../nosql/solr/SolrServerEc2LiveTest.java | 2 +-
.../nosql/solr/SolrServerIntegrationTest.java | 2 +-
.../entity/nosql/solr/SolrServerLiveTest.java | 2 +-
.../osgi/karaf/KarafContainerEc2LiveTest.java | 2 +-
.../entity/osgi/karaf/KarafContainerTest.java | 2 +-
.../entity/dns/AbstractGeoDnsServiceTest.java | 2 +-
.../nginx/NginxClusterIntegrationTest.java | 4 +-
.../entity/proxy/nginx/NginxEc2LiveTest.java | 4 +-
.../nginx/NginxHttpsSslIntegrationTest.java | 2 +-
.../proxy/nginx/NginxIntegrationTest.java | 10 +-
.../proxy/nginx/NginxRebindIntegrationTest.java | 11 +-
.../nginx/NginxRebindWithHaIntegrationTest.java | 4 +-
.../nginx/NginxUrlMappingIntegrationTest.java | 3 +-
.../proxy/nginx/NginxWebClusterEc2LiveTest.java | 2 +-
.../AbstractWebAppFixtureIntegrationTest.java | 9 +-
...lledDynamicWebAppClusterIntegrationTest.java | 5 +-
.../ControlledDynamicWebAppClusterTest.java | 2 +-
.../entity/webapp/DynamicWebAppClusterTest.java | 2 +-
.../entity/webapp/DynamicWebAppFabricTest.java | 2 +-
...ElasticJavaWebAppServiceIntegrationTest.java | 2 +-
.../webapp/TomcatAutoScalerPolicyTest.java | 2 +-
.../webapp/WebAppConcurrentDeployTest.java | 4 +-
.../webapp/WebAppLiveIntegrationTest.groovy | 4 +-
...namicWebAppClusterRebindIntegrationTest.java | 8 +-
...namicWebAppClusterRebindIntegrationTest.java | 8 +-
.../jboss/JBoss6ServerAwsEc2LiveTest.java | 2 +-
...Boss6ServerNonInheritingIntegrationTest.java | 2 +-
.../jboss/JBoss7ServerAwsEc2LiveTest.java | 2 +-
.../jboss/JBoss7ServerDockerLiveTest.java | 5 +-
...Boss7ServerNonInheritingIntegrationTest.java | 4 +-
.../JBoss7ServerRebindingIntegrationTest.java | 6 +-
.../Jboss7ServerGoogleComputeLiveTest.java | 2 +-
.../webapp/nodejs/NodeJsWebAppEc2LiveTest.java | 2 +-
.../NodeJsWebAppFixtureIntegrationTest.java | 6 +-
.../nodejs/NodeJsWebAppSoftlayerLiveTest.java | 2 +-
.../webapp/tomcat/Tomcat8ServerEc2LiveTest.java | 3 +-
.../tomcat/Tomcat8ServerSoftlayerLiveTest.java | 3 +-
.../webapp/tomcat/TomcatServerEc2LiveTest.java | 2 +-
.../tomcat/TomcatServerSoftlayerLiveTest.java | 2 +-
.../EnrichersSlightlySimplerYamlTest.java | 2 +-
.../brooklyn/JavaWebAppsIntegrationTest.java | 3 +-
.../brooklyn/ReloadBrooklynPropertiesTest.java | 2 +-
.../brooklyn/VanillaBashNetcatYamlTest.java | 2 +-
.../BrooklynJavascriptGuiLauncherTest.java | 2 +-
.../BrooklynEntityMirrorIntegrationTest.java | 4 +-
.../brooklynnode/BrooklynNodeRestTest.java | 4 +-
.../brooklyn/launcher/BrooklynLauncherTest.java | 2 +-
.../brooklyn/launcher/WebAppRunnerTest.java | 2 +-
.../blueprints/AbstractBlueprintTest.java | 2 +-
.../SoftlayerObtainPrivateLiveTest.java | 2 +-
.../org/apache/brooklyn/qa/load/LoadTest.java | 3 +-
.../rest/client/BrooklynApiRestClientTest.java | 2 +-
.../brooklynnode/DeployBlueprintTest.java | 2 +-
.../rest/BrooklynRestApiLauncherTest.java | 2 +-
.../rest/resources/ApplicationResourceTest.java | 2 +-
.../rest/resources/EntityResourceTest.java | 2 +-
.../SensorResourceIntegrationTest.java | 2 +-
.../rest/resources/SensorResourceTest.java | 2 +-
.../ServerResourceIntegrationTest.java | 2 +-
.../rest/resources/ServerShutdownTest.java | 2 +-
.../java/brooklyn/test/EntityTestUtils.java | 180 ------
.../main/java/brooklyn/test/HttpTestUtils.java | 391 --------------
.../java/brooklyn/test/NetworkingTestUtils.java | 68 ---
.../brooklyn/test/PerformanceTestUtils.java | 99 ----
.../main/java/brooklyn/test/TestUtils.groovy | 540 ------------------
.../brooklyn/test/TrustingSslSocketFactory.java | 134 -----
.../main/java/brooklyn/test/WebAppMonitor.java | 213 --------
.../apache/brooklyn/test/EntityTestUtils.java | 181 +++++++
.../org/apache/brooklyn/test/HttpTestUtils.java | 392 ++++++++++++++
.../brooklyn/test/NetworkingTestUtils.java | 69 +++
.../brooklyn/test/PerformanceTestUtils.java | 99 ++++
.../org/apache/brooklyn/test/TestUtils.groovy | 541 +++++++++++++++++++
.../brooklyn/test/TrustingSslSocketFactory.java | 134 +++++
.../org/apache/brooklyn/test/WebAppMonitor.java | 214 ++++++++
180 files changed, 1855 insertions(+), 1828 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2ed62d61/usage/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java
----------------------------------------------------------------------
diff --cc usage/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java
index f42c574,0000000..d66dc53
mode 100644,000000..100644
--- a/usage/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java
+++ b/usage/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java
@@@ -1,180 -1,0 +1,180 @@@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.entity.brooklynnode;
+
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
++import org.apache.brooklyn.test.EntityTestUtils;
++import org.apache.brooklyn.test.HttpTestUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import brooklyn.entity.Entity;
+import brooklyn.entity.basic.ApplicationBuilder;
+import brooklyn.entity.basic.Entities;
+import brooklyn.entity.basic.EntityInternal;
+import brooklyn.entity.brooklynnode.BrooklynEntityMirror;
+import brooklyn.entity.proxying.EntitySpec;
+import org.apache.brooklyn.launcher.BrooklynWebServer;
+import brooklyn.management.ManagementContext;
+import brooklyn.management.ha.HighAvailabilityMode;
+import brooklyn.rest.filter.BrooklynPropertiesSecurityFilter;
+import brooklyn.test.Asserts;
- import brooklyn.test.EntityTestUtils;
- import brooklyn.test.HttpTestUtils;
+import brooklyn.test.entity.LocalManagementContextForTests;
+import brooklyn.test.entity.TestApplication;
+import brooklyn.util.exceptions.Exceptions;
+import brooklyn.util.time.Duration;
+
+/**
+ * Test for EntityMirror, launching an in-memory server and ensuring we can mirror.
+ * Here so that we can access the REST server.
+ * <p>
+ * May require <code>-Dbrooklyn.localhost.address=127.0.0.1</code> so that the console which binds to localhost is addressible.
+ * (That and the time it takes to run are the only reasons this is Integration.)
+ */
+@Test
+public class BrooklynEntityMirrorIntegrationTest {
+
+ private static final Logger log = LoggerFactory.getLogger(BrooklynEntityMirrorIntegrationTest.class);
+
+ private BrooklynWebServer server;
+ private TestApplication serverApp;
+ private ManagementContext serverMgmt;
+
+ private TestApplication localApp;
+ private ManagementContext localMgmt;
+
+ @BeforeMethod(alwaysRun=true)
+ public void setUp() throws Exception {
+ localApp = TestApplication.Factory.newManagedInstanceForTests();
+ localMgmt = localApp.getManagementContext();
+ }
+
+ @AfterMethod(alwaysRun=true)
+ public void tearDown() throws Exception {
+ if (serverMgmt!=null) Entities.destroyAll(serverMgmt);
+ if (server!=null) server.stop();
+ if (localMgmt!=null) Entities.destroyAll(localMgmt);
+
+ serverMgmt = null;
+ }
+
+
+ protected void setUpServer() {
+ setUpServer(new LocalManagementContextForTests(), false);
+ }
+ protected void setUpServer(ManagementContext mgmt, boolean useSecurityFilter) {
+ try {
+ if (serverMgmt!=null) throw new IllegalStateException("server already set up");
+
+ serverMgmt = mgmt;
+ server = new BrooklynWebServer(mgmt);
+ if (useSecurityFilter) server.setSecurityFilter(BrooklynPropertiesSecurityFilter.class);
+ server.start();
+
+ serverMgmt.getHighAvailabilityManager().disabled();
+ serverApp = ApplicationBuilder.newManagedApp(TestApplication.class, serverMgmt);
+
+ ((LocalManagementContextForTests)serverMgmt).noteStartupComplete();
+ } catch (Exception e) {
+ throw Exceptions.propagate(e);
+ }
+ }
+
+ protected String getBaseUri() {
+ return server.getRootUrl();
+ }
+
+ @Test(groups="Integration")
+ public void testServiceMirroring() throws Exception {
+ setUpServer();
+
+ String catalogItemId = "test-catalog-item:1.0";
+ String catalogItemIdGA = "test-catalog-item:1.0-GA";
+ serverApp.setAttribute(TestApplication.MY_ATTRIBUTE, "austria");
+ serverApp.setCatalogItemId(catalogItemId);
+
+ String serviceId = serverApp.getId();
+ Entity mirror = localApp.addChild(EntitySpec.create(BrooklynEntityMirror.class)
+ .configure(BrooklynEntityMirror.POLL_PERIOD, Duration.millis(100))
+ .configure(BrooklynEntityMirror.MIRRORED_ENTITY_ID, serviceId)
+ .configure(BrooklynEntityMirror.MIRRORED_ENTITY_URL,
+ getBaseUri()+"/v1/applications/"+serviceId+"/entities/"+serviceId)
+ );
+
+ EntityTestUtils.assertAttributeEqualsEventually(mirror, TestApplication.MY_ATTRIBUTE, "austria");
+ EntityTestUtils.assertAttributeEqualsEventually(mirror, BrooklynEntityMirror.MIRROR_CATALOG_ITEM_ID, catalogItemId);
+ assertTrue(mirror.getAttribute(BrooklynEntityMirror.MIRROR_SUMMARY) != null, "entity summary is null");
+ log.info("Sensors mirrored are: "+((EntityInternal)mirror).getAllAttributes());
+
+ serverApp.setAttribute(TestApplication.MY_ATTRIBUTE, "bermuda");
+ serverApp.setCatalogItemId(catalogItemIdGA);
+ EntityTestUtils.assertAttributeEqualsEventually(mirror, TestApplication.MY_ATTRIBUTE, "bermuda");
+ EntityTestUtils.assertAttributeEqualsEventually(mirror, BrooklynEntityMirror.MIRROR_CATALOG_ITEM_ID, catalogItemIdGA);
+
+ serverApp.stop();
+ assertUnmanagedEventually(mirror);
+ }
+
+ @Test(groups="Integration")
+ public void testServiceMirroringHttps() throws Exception {
+ LocalManagementContextForTests mgmtHttps = new LocalManagementContextForTests();
+ mgmtHttps.getBrooklynProperties().put("brooklyn.webconsole.security.https.required", true);
+ mgmtHttps.getBrooklynProperties().put("brooklyn.webconsole.security.users", "admin");
+ mgmtHttps.getBrooklynProperties().put("brooklyn.webconsole.security.user.admin.password", "P5ssW0rd");
+
+ setUpServer(mgmtHttps, true);
+ Assert.assertTrue(getBaseUri().startsWith("https:"), "URL is not https: "+getBaseUri());
+ // check auth is required
+ HttpTestUtils.assertHttpStatusCodeEquals(getBaseUri(), 401);
+
+ serverApp.setAttribute(TestApplication.MY_ATTRIBUTE, "austria");
+
+ String serviceId = serverApp.getId();
+ Entity mirror = localApp.addChild(EntitySpec.create(BrooklynEntityMirror.class)
+ .configure(BrooklynEntityMirror.POLL_PERIOD, Duration.millis(100))
+ .configure(BrooklynEntityMirror.MANAGEMENT_USER, "admin")
+ .configure(BrooklynEntityMirror.MANAGEMENT_PASSWORD, "P5ssW0rd")
+ .configure(BrooklynEntityMirror.MIRRORED_ENTITY_ID, serviceId)
+ .configure(BrooklynEntityMirror.MIRRORED_ENTITY_URL,
+ getBaseUri()+"/v1/applications/"+serviceId+"/entities/"+serviceId)
+ );
+
+ EntityTestUtils.assertAttributeEqualsEventually(mirror, TestApplication.MY_ATTRIBUTE, "austria");
+ log.info("Sensors mirrored are: "+((EntityInternal)mirror).getAllAttributes());
+
+ serverApp.setAttribute(TestApplication.MY_ATTRIBUTE, "bermuda");
+ EntityTestUtils.assertAttributeEqualsEventually(mirror, TestApplication.MY_ATTRIBUTE, "bermuda");
+
+ serverApp.stop();
+ assertUnmanagedEventually(mirror);
+ }
+
+ private static void assertUnmanagedEventually(final Entity entity) {
+ Asserts.succeedsEventually(new Runnable() {
+ @Override public void run() {
+ assertFalse(Entities.isManaged(entity));
+ }});
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2ed62d61/usage/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeRestTest.java
----------------------------------------------------------------------
diff --cc usage/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeRestTest.java
index 4a630de,0000000..8ffd465
mode 100644,000000..100644
--- a/usage/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeRestTest.java
+++ b/usage/launcher/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeRestTest.java
@@@ -1,149 -1,0 +1,149 @@@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.entity.brooklynnode;
+
+import java.net.URI;
+import java.util.concurrent.Callable;
+
++import org.apache.brooklyn.test.EntityTestUtils;
++import org.apache.brooklyn.test.HttpTestUtils;
+import org.apache.http.client.HttpClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import brooklyn.entity.Application;
+import brooklyn.entity.basic.ApplicationBuilder;
+import brooklyn.entity.basic.Attributes;
+import brooklyn.entity.basic.Entities;
+import brooklyn.entity.basic.EntityInternal;
+import brooklyn.entity.brooklynnode.BrooklynEntityMirror;
+import brooklyn.entity.brooklynnode.BrooklynNode;
+import brooklyn.entity.brooklynnode.SameBrooklynNodeImpl;
+import brooklyn.entity.proxying.EntitySpec;
+import brooklyn.event.basic.BasicConfigKey;
+import org.apache.brooklyn.launcher.SimpleYamlLauncherForTests;
+import org.apache.brooklyn.launcher.camp.SimpleYamlLauncher;
+import brooklyn.location.Location;
+import brooklyn.management.Task;
- import brooklyn.test.EntityTestUtils;
- import brooklyn.test.HttpTestUtils;
+import brooklyn.test.entity.TestApplication;
+import brooklyn.test.entity.TestEntity;
+import brooklyn.util.collections.Jsonya;
+import brooklyn.util.collections.MutableMap;
+import brooklyn.util.collections.MutableSet;
+import brooklyn.util.config.ConfigBag;
+import brooklyn.util.http.HttpTool;
+import brooklyn.util.http.HttpToolResponse;
+import brooklyn.util.net.Urls;
+import brooklyn.util.repeat.Repeater;
+import brooklyn.util.time.Duration;
+
+import com.google.common.collect.Iterables;
+
+/** REST-accessible extension of {@link BrooklynNodeTest} */
+public class BrooklynNodeRestTest {
+
+ private static final Logger log = LoggerFactory.getLogger(BrooklynNodeRestTest.class);
+
+ // takes a while when run on its own, because initializing war and making some requests;
+ // but there are no waits (beyond 10ms), the delay is all classloading;
+ // and this tests a lot of things, REST API, Brooklyn Node, yaml deployment,
+ // so feels worth it to have as a unit test
+ // FIXME[BROOKLYN-43]: Test fails if security is configured in brooklyn.properties.
+ @Test(groups = "WIP")
+ public void testBrooklynNodeRestDeployAndMirror() {
+ final SimpleYamlLauncher l = new SimpleYamlLauncherForTests();
+ try {
+ TestApplication app = ApplicationBuilder.newManagedApp(TestApplication.class, l.getManagementContext());
+
+ BrooklynNode bn = app.createAndManageChild(EntitySpec.create(BrooklynNode.class, SameBrooklynNodeImpl.class));
+ bn.start(MutableSet.<Location>of());
+
+ URI uri = bn.getAttribute(BrooklynNode.WEB_CONSOLE_URI);
+ Assert.assertNotNull(uri);
+ EntityTestUtils.assertAttributeEqualsEventually(bn, Attributes.SERVICE_UP, true);
+ log.info("Created BrooklynNode: "+bn);
+
+ // deploy
+ Task<?> t = bn.invoke(BrooklynNode.DEPLOY_BLUEPRINT, ConfigBag.newInstance()
+ .configure(BrooklynNode.DeployBlueprintEffector.BLUEPRINT_TYPE, TestApplication.class.getName())
+ .configure(BrooklynNode.DeployBlueprintEffector.BLUEPRINT_CONFIG, MutableMap.<String,Object>of("x", 1, "y", "Y"))
+ .getAllConfig());
+ log.info("Deployment result: "+t.getUnchecked());
+
+ MutableSet<Application> apps = MutableSet.copyOf( l.getManagementContext().getApplications() );
+ Assert.assertEquals(apps.size(), 2);
+ apps.remove(app);
+
+ Application newApp = Iterables.getOnlyElement(apps);
+ Entities.dumpInfo(newApp);
+
+ Assert.assertEquals(newApp.getConfig(new BasicConfigKey<Integer>(Integer.class, "x")), (Integer)1);
+
+ // check mirror
+ String newAppId = newApp.getId();
+ BrooklynEntityMirror mirror = app.createAndManageChild(EntitySpec.create(BrooklynEntityMirror.class)
+ .configure(BrooklynEntityMirror.MIRRORED_ENTITY_URL,
+ Urls.mergePaths(uri.toString(), "/v1/applications/"+newAppId+"/entities/"+newAppId))
+ .configure(BrooklynEntityMirror.MIRRORED_ENTITY_ID, newAppId)
+ .configure(BrooklynEntityMirror.POLL_PERIOD, Duration.millis(10)));
+
+ Entities.dumpInfo(mirror);
+
+ EntityTestUtils.assertAttributeEqualsEventually(mirror, Attributes.SERVICE_UP, true);
+
+ ((EntityInternal)newApp).setAttribute(TestEntity.NAME, "foo");
+ EntityTestUtils.assertAttributeEqualsEventually(mirror, TestEntity.NAME, "foo");
+ log.info("Mirror successfully validated");
+
+ // also try deploying by invoking deploy through json
+ // (catch issues when effector params are map)
+ HttpClient client = HttpTool.httpClientBuilder().build();
+ HttpToolResponse result = HttpTool.httpPost(client, URI.create(Urls.mergePaths(uri.toString(), "/v1/applications/"+app.getId()+"/entities/"+bn.getId()
+ +"/effectors/deployBlueprint")),
+ MutableMap.of(com.google.common.net.HttpHeaders.CONTENT_TYPE, "application/json"),
+ Jsonya.newInstance()
+ .put("blueprintType", TestApplication.class.getName())
+ .put("blueprintConfig", MutableMap.of(TestEntity.CONF_NAME.getName(), "foo"))
+ .toString().getBytes());
+ log.info("Deploy effector invoked, result: "+result);
+ HttpTestUtils.assertHealthyStatusCode( result.getResponseCode() );
+
+ Repeater.create().every(Duration.millis(10)).until(new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ return l.getManagementContext().getApplications().size() == 3;
+ }
+ }).limitTimeTo(Duration.TEN_SECONDS).runRequiringTrue();
+
+ apps = MutableSet.copyOf( l.getManagementContext().getApplications() );
+ apps.removeAll( MutableSet.of(app, newApp) );
+ Application newApp2 = Iterables.getOnlyElement(apps);
+ Entities.dumpInfo(newApp2);
+
+ EntityTestUtils.assertAttributeEqualsEventually(newApp2, Attributes.SERVICE_UP, true);
+ Assert.assertEquals(newApp2.getConfig(TestEntity.CONF_NAME), "foo");
+
+ } finally {
+ l.destroyAll();
+ }
+ log.info("DONE");
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2ed62d61/usage/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherTest.java
----------------------------------------------------------------------
diff --cc usage/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherTest.java
index df295d8,0000000..63ba561
mode 100644,000000..100644
--- a/usage/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherTest.java
+++ b/usage/launcher/src/test/java/org/apache/brooklyn/launcher/BrooklynLauncherTest.java
@@@ -1,368 -1,0 +1,368 @@@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.launcher;
+
+import org.apache.brooklyn.launcher.BrooklynLauncher;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertSame;
+import static org.testng.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.net.URI;
+import java.nio.charset.Charset;
+import java.util.Properties;
+
++import org.apache.brooklyn.test.HttpTestUtils;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.Test;
+
+import brooklyn.catalog.internal.CatalogInitialization;
+import brooklyn.config.BrooklynProperties;
+import brooklyn.config.BrooklynServerConfig;
+import brooklyn.entity.Application;
+import brooklyn.entity.basic.ApplicationBuilder;
+import brooklyn.entity.proxying.EntitySpec;
+import brooklyn.entity.rebind.RebindTestUtils;
+import brooklyn.location.Location;
+import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
+import brooklyn.management.ManagementContext;
+import brooklyn.management.internal.LocalManagementContext;
+import brooklyn.management.internal.ManagementContextInternal;
- import brooklyn.test.HttpTestUtils;
+import brooklyn.test.entity.LocalManagementContextForTests;
+import brooklyn.test.entity.TestApplication;
+import brooklyn.test.entity.TestApplicationImpl;
+import brooklyn.test.entity.TestEntity;
+import brooklyn.util.exceptions.FatalRuntimeException;
+import brooklyn.util.io.FileUtil;
+import brooklyn.util.net.Urls;
+import brooklyn.util.os.Os;
+import brooklyn.util.text.StringFunctions;
+import brooklyn.util.text.Strings;
+
+import com.google.api.client.util.Preconditions;
+import com.google.common.base.Charsets;
+import com.google.common.base.Function;
+import com.google.common.base.Predicates;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Maps;
+import com.google.common.io.Files;
+
+public class BrooklynLauncherTest {
+
+ private BrooklynLauncher launcher;
+ private File persistenceDir;
+
+ @AfterMethod(alwaysRun=true)
+ public void tearDown() throws Exception {
+ if (launcher != null) launcher.terminate();
+ if (persistenceDir != null) RebindTestUtils.deleteMementoDir(persistenceDir);
+ launcher = null;
+ }
+
+ // Integration because takes a few seconds to start web-console
+ @Test(groups="Integration")
+ public void testStartsWebServerOnExpectectedPort() throws Exception {
+ launcher = newLauncherForTests(true)
+ .webconsolePort("10000+")
+ .start();
+
+ String webServerUrlStr = launcher.getServerDetails().getWebServerUrl();
+ URI webServerUri = new URI(webServerUrlStr);
+
+ assertEquals(launcher.getApplications(), ImmutableList.of());
+ assertTrue(webServerUri.getPort() >= 10000 && webServerUri.getPort() < 10100, "port="+webServerUri.getPort()+"; uri="+webServerUri);
+ HttpTestUtils.assertUrlReachable(webServerUrlStr);
+ }
+
+ // Integration because takes a few seconds to start web-console
+ @Test(groups="Integration")
+ public void testWebServerTempDirRespectsDataDirConfig() throws Exception {
+ String dataDirName = ".brooklyn-foo"+Strings.makeRandomId(4);
+ String dataDir = "~/"+dataDirName;
+
+ launcher = newLauncherForTests(true)
+ .brooklynProperties(BrooklynServerConfig.MGMT_BASE_DIR, dataDir)
+ .start();
+
+ ManagementContext managementContext = launcher.getServerDetails().getManagementContext();
+ String expectedTempDir = Os.mergePaths(Os.home(), dataDirName, "planes", managementContext.getManagementPlaneId(), managementContext.getManagementNodeId(), "jetty");
+
+ File webappTempDir = launcher.getServerDetails().getWebServer().getWebappTempDir();
+ assertEquals(webappTempDir.getAbsolutePath(), expectedTempDir);
+ }
+
+ @Test
+ public void testCanDisableWebServerStartup() throws Exception {
+ launcher = newLauncherForTests(true)
+ .webconsole(false)
+ .start();
+
+ assertNull(launcher.getServerDetails().getWebServer());
+ assertNull(launcher.getServerDetails().getWebServerUrl());
+ Assert.assertTrue( ((ManagementContextInternal)launcher.getServerDetails().getManagementContext()).errors().isEmpty() );
+ }
+
+ @Test
+ public void testStartsAppInstance() throws Exception {
+ launcher = newLauncherForTests(true)
+ .webconsole(false)
+ .application(new TestApplicationImpl())
+ .start();
+
+ assertOnlyApp(launcher, TestApplication.class);
+ }
+
+ @Test
+ public void testStartsAppFromSpec() throws Exception {
+ launcher = newLauncherForTests(true)
+ .webconsole(false)
+ .application(EntitySpec.create(TestApplication.class))
+ .start();
+
+ assertOnlyApp(launcher, TestApplication.class);
+ }
+
+ @Test
+ public void testStartsAppFromBuilder() throws Exception {
+ launcher = newLauncherForTests(true)
+ .webconsole(false)
+ .application(new ApplicationBuilder(EntitySpec.create(TestApplication.class)) {
+ @Override protected void doBuild() {
+ }})
+ .start();
+
+ assertOnlyApp(launcher, TestApplication.class);
+ }
+
+ @Test
+ public void testStartsAppFromYAML() throws Exception {
+ String yaml = "name: example-app\n" +
+ "services:\n" +
+ "- serviceType: brooklyn.test.entity.TestEntity\n" +
+ " name: test-app";
+ launcher = newLauncherForTests(true)
+ .webconsole(false)
+ .application(yaml)
+ .start();
+
+ assertEquals(launcher.getApplications().size(), 1, "apps="+launcher.getApplications());
+ Application app = Iterables.getOnlyElement(launcher.getApplications());
+ assertEquals(app.getChildren().size(), 1, "children=" + app.getChildren());
+ assertTrue(Iterables.getOnlyElement(app.getChildren()) instanceof TestEntity);
+ }
+
+ @Test // may take 2s initializing location if running this test case alone, but noise if running suite
+ public void testStartsAppInSuppliedLocations() throws Exception {
+ launcher = newLauncherForTests(true)
+ .webconsole(false)
+ .location("localhost")
+ .application(new ApplicationBuilder(EntitySpec.create(TestApplication.class)) {
+ @Override protected void doBuild() {
+ }})
+ .start();
+
+ Application app = Iterables.find(launcher.getApplications(), Predicates.instanceOf(TestApplication.class));
+ assertOnlyLocation(app, LocalhostMachineProvisioningLocation.class);
+ }
+
+ @Test
+ public void testUsesSuppliedManagementContext() throws Exception {
+ LocalManagementContext myManagementContext = LocalManagementContextForTests.newInstance();
+ launcher = newLauncherForTests(false)
+ .webconsole(false)
+ .managementContext(myManagementContext)
+ .start();
+
+ assertSame(launcher.getServerDetails().getManagementContext(), myManagementContext);
+ }
+
+ @Test
+ public void testUsesSuppliedBrooklynProperties() throws Exception {
+ BrooklynProperties props = LocalManagementContextForTests.builder(true).buildProperties();
+ props.put("mykey", "myval");
+ launcher = newLauncherForTests(false)
+ .webconsole(false)
+ .brooklynProperties(props)
+ .start();
+
+ assertEquals(launcher.getServerDetails().getManagementContext().getConfig().getFirst("mykey"), "myval");
+ }
+
+ @Test
+ public void testUsesSupplementaryBrooklynProperties() throws Exception {
+ launcher = newLauncherForTests(true)
+ .webconsole(false)
+ .brooklynProperties("mykey", "myval")
+ .start();
+
+ assertEquals(launcher.getServerDetails().getManagementContext().getConfig().getFirst("mykey"), "myval");
+ }
+
+ @Test
+ public void testReloadBrooklynPropertiesRestoresProgrammaticProperties() throws Exception {
+ launcher = newLauncherForTests(true)
+ .webconsole(false)
+ .brooklynProperties("mykey", "myval")
+ .start();
+ LocalManagementContext managementContext = (LocalManagementContext)launcher.getServerDetails().getManagementContext();
+ assertEquals(managementContext.getConfig().getFirst("mykey"), "myval");
+ managementContext.getBrooklynProperties().put("mykey", "newval");
+ assertEquals(managementContext.getConfig().getFirst("mykey"), "newval");
+ managementContext.reloadBrooklynProperties();
+ assertEquals(managementContext.getConfig().getFirst("mykey"), "myval");
+ }
+
+ @Test
+ public void testReloadBrooklynPropertiesFromFile() throws Exception {
+ File globalPropertiesFile = File.createTempFile("local-brooklyn-properties-test", ".properties");
+ FileUtil.setFilePermissionsTo600(globalPropertiesFile);
+ try {
+ String property = "mykey=myval";
+ Files.append(getMinimalLauncherPropertiesString()+property, globalPropertiesFile, Charsets.UTF_8);
+ launcher = newLauncherForTests(false)
+ .webconsole(false)
+ .globalBrooklynPropertiesFile(globalPropertiesFile.getAbsolutePath())
+ .start();
+ LocalManagementContext managementContext = (LocalManagementContext)launcher.getServerDetails().getManagementContext();
+ assertEquals(managementContext.getConfig().getFirst("mykey"), "myval");
+ property = "mykey=newval";
+ Files.write(getMinimalLauncherPropertiesString()+property, globalPropertiesFile, Charsets.UTF_8);
+ managementContext.reloadBrooklynProperties();
+ assertEquals(managementContext.getConfig().getFirst("mykey"), "newval");
+ } finally {
+ globalPropertiesFile.delete();
+ }
+ }
+
+ @Test(groups="Integration")
+ public void testChecksGlobalBrooklynPropertiesPermissionsX00() throws Exception {
+ File propsFile = File.createTempFile("testChecksGlobalBrooklynPropertiesPermissionsX00", ".properties");
+ propsFile.setReadable(true, false);
+ try {
+ launcher = newLauncherForTests(false)
+ .webconsole(false)
+ .globalBrooklynPropertiesFile(propsFile.getAbsolutePath())
+ .start();
+
+ Assert.fail("Should have thrown");
+ } catch (FatalRuntimeException e) {
+ if (!e.toString().contains("Invalid permissions for file")) throw e;
+ } finally {
+ propsFile.delete();
+ }
+ }
+
+ @Test(groups="Integration")
+ public void testChecksLocalBrooklynPropertiesPermissionsX00() throws Exception {
+ File propsFile = File.createTempFile("testChecksLocalBrooklynPropertiesPermissionsX00", ".properties");
+ propsFile.setReadable(true, false);
+ try {
+ launcher = newLauncherForTests(false)
+ .webconsole(false)
+ .localBrooklynPropertiesFile(propsFile.getAbsolutePath())
+ .start();
+
+ Assert.fail("Should have thrown");
+ } catch (FatalRuntimeException e) {
+ if (!e.toString().contains("Invalid permissions for file")) throw e;
+ } finally {
+ propsFile.delete();
+ }
+ }
+
+ @Test(groups="Integration")
+ public void testStartsWithBrooklynPropertiesPermissionsX00() throws Exception {
+ File globalPropsFile = File.createTempFile("testChecksLocalBrooklynPropertiesPermissionsX00_global", ".properties");
+ Files.write(getMinimalLauncherPropertiesString()+"key_in_global=1", globalPropsFile, Charset.defaultCharset());
+ File localPropsFile = File.createTempFile("testChecksLocalBrooklynPropertiesPermissionsX00_local", ".properties");
+ Files.write("key_in_local=2", localPropsFile, Charset.defaultCharset());
+ FileUtil.setFilePermissionsTo600(globalPropsFile);
+ FileUtil.setFilePermissionsTo600(localPropsFile);
+ try {
+ launcher = newLauncherForTests(false)
+ .webconsole(false)
+ .localBrooklynPropertiesFile(localPropsFile.getAbsolutePath())
+ .globalBrooklynPropertiesFile(globalPropsFile.getAbsolutePath())
+ .start();
+ assertEquals(launcher.getServerDetails().getManagementContext().getConfig().getFirst("key_in_global"), "1");
+ assertEquals(launcher.getServerDetails().getManagementContext().getConfig().getFirst("key_in_local"), "2");
+ } finally {
+ globalPropsFile.delete();
+ localPropsFile.delete();
+ }
+ }
+
+ @Test // takes a bit of time because starts webapp, but also tests rest api so useful
+ public void testErrorsCaughtByApiAndRestApiWorks() throws Exception {
+ launcher = newLauncherForTests(true)
+ .catalogInitialization(new CatalogInitialization(null, false, null, false).addPopulationCallback(new Function<CatalogInitialization, Void>() {
+ @Override
+ public Void apply(CatalogInitialization input) {
+ throw new RuntimeException("deliberate-exception-for-testing");
+ }
+ }))
+ .start();
+ // such an error should be thrown, then caught in this calling thread
+ ManagementContext mgmt = launcher.getServerDetails().getManagementContext();
+ Assert.assertFalse( ((ManagementContextInternal)mgmt).errors().isEmpty() );
+ Assert.assertTrue( ((ManagementContextInternal)mgmt).errors().get(0).toString().contains("deliberate"), ""+((ManagementContextInternal)mgmt).errors() );
+ HttpTestUtils.assertContentMatches(
+ Urls.mergePaths(launcher.getServerDetails().getWebServerUrl(), "v1/server/up"),
+ "true");
+ HttpTestUtils.assertContentMatches(
+ Urls.mergePaths(launcher.getServerDetails().getWebServerUrl(), "v1/server/healthy"),
+ "false");
+ // TODO test errors api?
+ }
+
+ private BrooklynLauncher newLauncherForTests(boolean minimal) {
+ Preconditions.checkArgument(launcher==null, "can only be used if no launcher yet");
+ BrooklynLauncher launcher = BrooklynLauncher.newInstance();
+ if (minimal)
+ launcher.brooklynProperties(LocalManagementContextForTests.builder(true).buildProperties());
+ return launcher;
+ }
+
+ private String getMinimalLauncherPropertiesString() throws IOException {
+ BrooklynProperties p1 = LocalManagementContextForTests.builder(true).buildProperties();
+ Properties p = new Properties();
+ p.putAll(Maps.transformValues(p1.asMapWithStringKeys(), StringFunctions.toStringFunction()));
+ Writer w = new StringWriter();
+ p.store(w, "test");
+ w.close();
+ return w.toString()+"\n";
+ }
+
+ private void assertOnlyApp(BrooklynLauncher launcher, Class<? extends Application> expectedType) {
+ assertEquals(launcher.getApplications().size(), 1, "apps="+launcher.getApplications());
+ assertNotNull(Iterables.find(launcher.getApplications(), Predicates.instanceOf(TestApplication.class), null), "apps="+launcher.getApplications());
+ }
+
+ private void assertOnlyLocation(Application app, Class<? extends Location> expectedType) {
+ assertEquals(app.getLocations().size(), 1, "locs="+app.getLocations());
+ assertNotNull(Iterables.find(app.getLocations(), Predicates.instanceOf(LocalhostMachineProvisioningLocation.class), null), "locs="+app.getLocations());
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2ed62d61/usage/launcher/src/test/java/org/apache/brooklyn/launcher/WebAppRunnerTest.java
----------------------------------------------------------------------
diff --cc usage/launcher/src/test/java/org/apache/brooklyn/launcher/WebAppRunnerTest.java
index 3aa6334,0000000..f347600
mode 100644,000000..100644
--- a/usage/launcher/src/test/java/org/apache/brooklyn/launcher/WebAppRunnerTest.java
+++ b/usage/launcher/src/test/java/org/apache/brooklyn/launcher/WebAppRunnerTest.java
@@@ -1,171 -1,0 +1,171 @@@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.launcher;
+
+import org.apache.brooklyn.launcher.BrooklynWebServer;
+import org.apache.brooklyn.launcher.BrooklynLauncher;
+import org.apache.brooklyn.launcher.BrooklynServerDetails;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.fail;
+
+import java.util.List;
+import java.util.Map;
+
++import org.apache.brooklyn.test.HttpTestUtils;
+import org.apache.brooklyn.test.TestResourceUnavailableException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.Test;
+
+import brooklyn.config.BrooklynProperties;
+import brooklyn.entity.basic.Entities;
+import brooklyn.management.internal.LocalManagementContext;
+import brooklyn.management.internal.ManagementContextInternal;
- import brooklyn.test.HttpTestUtils;
+import brooklyn.util.collections.MutableMap;
+import brooklyn.util.net.Networking;
+
+import com.google.common.collect.Lists;
+
+
+/**
+ * These tests require the brooklyn.war to work. (Should be placed by maven build.)
+ */
+public class WebAppRunnerTest {
+
+ public static final Logger log = LoggerFactory.getLogger(WebAppRunnerTest.class);
+
+ List<LocalManagementContext> managementContexts = Lists.newCopyOnWriteArrayList();
+
+ @AfterMethod(alwaysRun=true)
+ public void tearDown() throws Exception {
+ for (LocalManagementContext managementContext : managementContexts) {
+ Entities.destroyAll(managementContext);
+ }
+ managementContexts.clear();
+ }
+
+ LocalManagementContext newManagementContext(BrooklynProperties brooklynProperties) {
+ LocalManagementContext result = new LocalManagementContext(brooklynProperties);
+ managementContexts.add(result);
+ return result;
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ BrooklynWebServer createWebServer(Map properties) {
+ Map bigProps = MutableMap.copyOf(properties);
+ Map attributes = MutableMap.copyOf( (Map) bigProps.get("attributes") );
+ bigProps.put("attributes", attributes);
+
+ BrooklynProperties brooklynProperties = BrooklynProperties.Factory.newEmpty();
+ brooklynProperties.putAll(bigProps);
+ brooklynProperties.put("brooklyn.webconsole.security.provider","brooklyn.rest.security.provider.AnyoneSecurityProvider");
+ brooklynProperties.put("brooklyn.webconsole.security.https.required","false");
+ return new BrooklynWebServer(bigProps, newManagementContext(brooklynProperties));
+ }
+
+ @Test
+ public void testStartWar1() throws Exception {
+ if (!Networking.isPortAvailable(8090))
+ fail("Another process is using port 8090 which is required for this test.");
+ BrooklynWebServer server = createWebServer(MutableMap.of("port", 8090));
+ assertNotNull(server);
+
+ try {
+ server.start();
+ assertBrooklynEventuallyAt("http://localhost:8090/");
+ } finally {
+ server.stop();
+ }
+ }
+
+ public static void assertBrooklynEventuallyAt(String url) {
+ HttpTestUtils.assertContentEventuallyContainsText(url, "Brooklyn Web Console");
+ }
+
+ @Test
+ public void testStartSecondaryWar() throws Exception {
+ TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), "/hello-world.war");
+
+ if (!Networking.isPortAvailable(8090))
+ fail("Another process is using port 8090 which is required for this test.");
+ BrooklynWebServer server = createWebServer(
+ MutableMap.of("port", 8090, "war", "brooklyn.war", "wars", MutableMap.of("hello", "hello-world.war")) );
+ assertNotNull(server);
+
+ try {
+ server.start();
+
+ assertBrooklynEventuallyAt("http://localhost:8090/");
+ HttpTestUtils.assertContentEventuallyContainsText("http://localhost:8090/hello",
+ "This is the home page for a sample application");
+
+ } finally {
+ server.stop();
+ }
+ }
+
+ @Test
+ public void testStartSecondaryWarAfter() throws Exception {
+ TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), "/hello-world.war");
+
+ if (!Networking.isPortAvailable(8090))
+ fail("Another process is using port 8090 which is required for this test.");
+ BrooklynWebServer server = createWebServer(MutableMap.of("port", 8090, "war", "brooklyn.war"));
+ assertNotNull(server);
+
+ try {
+ server.start();
+ server.deploy("/hello", "hello-world.war");
+
+ assertBrooklynEventuallyAt("http://localhost:8090/");
+ HttpTestUtils.assertContentEventuallyContainsText("http://localhost:8090/hello",
+ "This is the home page for a sample application");
+
+ } finally {
+ server.stop();
+ }
+ }
+
+ @Test
+ public void testStartWithLauncher() throws Exception {
+ TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), "/hello-world.war");
+
+ BrooklynLauncher launcher = BrooklynLauncher.newInstance()
+ .brooklynProperties(BrooklynProperties.Factory.newEmpty())
+ .brooklynProperties("brooklyn.webconsole.security.provider","brooklyn.rest.security.provider.AnyoneSecurityProvider")
+ .webapp("/hello", "hello-world.war")
+ .start();
+ BrooklynServerDetails details = launcher.getServerDetails();
+
+ try {
+ details.getWebServer().deploy("/hello2", "hello-world.war");
+
+ assertBrooklynEventuallyAt(details.getWebServerUrl());
+ HttpTestUtils.assertContentEventuallyContainsText(details.getWebServerUrl()+"hello", "This is the home page for a sample application");
+ HttpTestUtils.assertContentEventuallyContainsText(details.getWebServerUrl()+"hello2", "This is the home page for a sample application");
+ HttpTestUtils.assertHttpStatusCodeEventuallyEquals(details.getWebServerUrl()+"hello0", 404);
+
+ } finally {
+ details.getWebServer().stop();
+ ((ManagementContextInternal)details.getManagementContext()).terminate();
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2ed62d61/usage/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
----------------------------------------------------------------------
diff --cc usage/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
index ab73cbf,0000000..3f39f91
mode 100644,000000..100644
--- a/usage/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
+++ b/usage/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
@@@ -1,202 -1,0 +1,202 @@@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.launcher.blueprints;
+
+import static org.testng.Assert.assertNotEquals;
+
+import java.io.File;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.Collection;
+
+import org.apache.brooklyn.camp.brooklyn.BrooklynCampPlatformLauncherAbstract;
++import org.apache.brooklyn.test.EntityTestUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+
+import brooklyn.entity.Application;
+import brooklyn.entity.Entity;
+import brooklyn.entity.basic.Attributes;
+import brooklyn.entity.basic.Entities;
+import brooklyn.entity.basic.Lifecycle;
+import brooklyn.entity.basic.SoftwareProcess;
+import brooklyn.entity.rebind.RebindOptions;
+import brooklyn.entity.rebind.RebindTestUtils;
+import brooklyn.entity.rebind.persister.FileBasedObjectStore;
+import org.apache.brooklyn.launcher.BrooklynLauncher;
+import org.apache.brooklyn.launcher.SimpleYamlLauncherForTests;
+import org.apache.brooklyn.launcher.camp.BrooklynCampPlatformLauncher;
+import brooklyn.management.ManagementContext;
+import brooklyn.management.internal.LocalManagementContext;
+import brooklyn.test.Asserts;
- import brooklyn.test.EntityTestUtils;
+import brooklyn.util.ResourceUtils;
+import brooklyn.util.os.Os;
+
+public abstract class AbstractBlueprintTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(AbstractBlueprintTest.class);
+
+ protected File mementoDir;
+ protected ClassLoader classLoader = AbstractBlueprintTest.class.getClassLoader();
+
+ protected ManagementContext mgmt;
+ protected SimpleYamlLauncherForTests launcher;
+ protected BrooklynLauncher viewer;
+
+ @BeforeMethod(alwaysRun=true)
+ public void setUp() throws Exception {
+ mementoDir = Os.newTempDir(getClass());
+ mgmt = createOrigManagementContext();
+ LOG.info("Test "+getClass()+" persisting to "+mementoDir);
+
+ launcher = new SimpleYamlLauncherForTests() {
+ @Override
+ protected BrooklynCampPlatformLauncherAbstract newPlatformLauncher() {
+ return new BrooklynCampPlatformLauncher() {
+ protected ManagementContext newManagementContext() {
+ return AbstractBlueprintTest.this.mgmt;
+ }
+ };
+ }
+ };
+ viewer = BrooklynLauncher.newInstance()
+ .managementContext(mgmt)
+ .start();
+ }
+
+ @AfterMethod(alwaysRun=true)
+ public void tearDown() throws Exception {
+ try {
+ if (mgmt != null) {
+ for (Application app: mgmt.getApplications()) {
+ LOG.debug("destroying app "+app+" (managed? "+Entities.isManaged(app)+"; mgmt is "+mgmt+")");
+ try {
+ Entities.destroy(app);
+ LOG.debug("destroyed app "+app+"; mgmt now "+mgmt);
+ } catch (Exception e) {
+ LOG.error("problems destroying app "+app, e);
+ }
+ }
+ }
+ if (launcher != null) launcher.destroyAll();
+ if (viewer != null) viewer.terminate();
+ if (mgmt != null) Entities.destroyAll(mgmt);
+ if (mementoDir != null) FileBasedObjectStore.deleteCompletely(mementoDir);
+ } catch (Throwable t) {
+ LOG.error("Caught exception in tearDown method", t);
+ } finally {
+ mgmt = null;
+ launcher = null;
+ }
+ }
+
+ protected void runTest(String yamlFile) throws Exception {
+ final Application app = launcher.launchAppYaml(yamlFile);
+
+ assertNoFires(app);
+
+ Application newApp = rebind();
+ assertNoFires(newApp);
+ }
+
+ protected void runTest(Reader yaml) throws Exception {
+ final Application app = launcher.launchAppYaml(yaml);
+
+ assertNoFires(app);
+
+ Application newApp = rebind();
+ assertNoFires(newApp);
+ }
+
+ protected void assertNoFires(final Entity app) {
+ EntityTestUtils.assertAttributeEqualsEventually(app, Attributes.SERVICE_UP, true);
+ EntityTestUtils.assertAttributeEqualsEventually(app, Attributes.SERVICE_STATE_ACTUAL, Lifecycle.RUNNING);
+
+ Asserts.succeedsEventually(new Runnable() {
+ public void run() {
+ for (Entity entity : Entities.descendants(app)) {
+ assertNotEquals(entity.getAttribute(Attributes.SERVICE_STATE_ACTUAL), Lifecycle.ON_FIRE);
+ assertNotEquals(entity.getAttribute(Attributes.SERVICE_UP), false);
+
+ if (entity instanceof SoftwareProcess) {
+ EntityTestUtils.assertAttributeEquals(entity, Attributes.SERVICE_STATE_ACTUAL, Lifecycle.RUNNING);
+ EntityTestUtils.assertAttributeEquals(entity, Attributes.SERVICE_UP, Boolean.TRUE);
+ }
+ }
+ }});
+ }
+
+ protected Reader loadYaml(String url, String location) {
+ String yaml =
+ "location: "+location+"\n"+
+ new ResourceUtils(this).getResourceAsString(url);
+ return new StringReader(yaml);
+ }
+
+
+ //////////////////////////////////////////////////////////////////
+ // FOR REBIND //
+ // See brooklyn.entity.rebind.RebindTestFixture in core's tests //
+ //////////////////////////////////////////////////////////////////
+
+ /** rebinds, and sets newApp */
+ protected Application rebind() throws Exception {
+ return rebind(RebindOptions.create());
+ }
+
+ protected Application rebind(RebindOptions options) throws Exception {
+ ManagementContext origMgmt = mgmt;
+ ManagementContext newMgmt = createNewManagementContext();
+ Collection<Application> origApps = origMgmt.getApplications();
+
+ options = RebindOptions.create(options);
+ if (options.classLoader == null) options.classLoader(classLoader);
+ if (options.mementoDir == null) options.mementoDir(mementoDir);
+ if (options.origManagementContext == null) options.origManagementContext(origMgmt);
+ if (options.newManagementContext == null) options.newManagementContext(newMgmt);
+
+ for (Application origApp : origApps) {
+ RebindTestUtils.waitForPersisted(origApp);
+ }
+
+ mgmt = options.newManagementContext;
+ Application newApp = RebindTestUtils.rebind(options);
+ return newApp;
+ }
+
+ /** @return A started management context */
+ protected LocalManagementContext createOrigManagementContext() {
+ return RebindTestUtils.managementContextBuilder(mementoDir, classLoader)
+ .persistPeriodMillis(1)
+ .forLive(true)
+ .emptyCatalog(true)
+ .buildStarted();
+ }
+
+ /** @return An unstarted management context */
+ protected LocalManagementContext createNewManagementContext() {
+ return RebindTestUtils.managementContextBuilder(mementoDir, classLoader)
+ .persistPeriodMillis(1)
+ .forLive(true)
+ .emptyCatalog(true)
+ .buildUnstarted();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2ed62d61/usage/qa/src/test/java/org/apache/brooklyn/qa/brooklynnode/SoftlayerObtainPrivateLiveTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2ed62d61/usage/qa/src/test/java/org/apache/brooklyn/qa/load/LoadTest.java
----------------------------------------------------------------------
[5/6] incubator-brooklyn git commit: [BROOKLYN-162] Update package
name to a.o.b in usage/test-support
Posted by ha...@apache.org.
[BROOKLYN-162] Update package name to a.o.b in usage/test-support
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/9e04407d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/9e04407d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/9e04407d
Branch: refs/heads/master
Commit: 9e04407d1d3618deb720d915817da8745e9247fb
Parents: fc42b17
Author: Hadrian Zbarcea <ha...@apache.org>
Authored: Thu Aug 6 19:34:12 2015 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Thu Aug 6 19:34:12 2015 -0400
----------------------------------------------------------------------
...stomAggregatingEnricherDeprecatedTest.groovy | 2 +-
.../enricher/CustomAggregatingEnricherTest.java | 2 +-
.../java/brooklyn/enricher/EnrichersTest.java | 4 +-
...SensorPropagatingEnricherDeprecatedTest.java | 2 +-
.../enricher/SensorPropagatingEnricherTest.java | 2 +-
.../TransformingEnricherDeprecatedTest.groovy | 2 +-
.../enricher/TransformingEnricherTest.java | 2 +-
.../entity/EntityPreManagementTest.java | 2 +-
.../brooklyn/entity/basic/DataEntityTest.java | 2 +-
.../basic/DependentConfigurationTest.java | 2 +-
.../entity/basic/PolicyRegistrationTest.java | 2 +-
.../entity/basic/ServiceStateLogicTest.java | 2 +-
.../entity/effector/EffectorBasicTest.java | 2 +-
.../entity/group/DynamicClusterTest.java | 4 +-
.../entity/group/DynamicFabricTest.java | 2 +-
.../entity/group/GroupPickUpEntitiesTest.java | 2 +-
.../entity/rebind/RebindEnricherTest.java | 2 +-
.../entity/rebind/RebindEntityTest.java | 4 +-
.../brooklyn/entity/rebind/RebindFeedTest.java | 2 +-
.../entity/rebind/RebindFeedWithHaTest.java | 2 +-
.../event/feed/function/FunctionFeedTest.java | 2 +-
.../feed/http/HttpFeedIntegrationTest.java | 2 +-
.../feed/shell/ShellFeedIntegrationTest.java | 2 +-
.../event/feed/ssh/SshFeedIntegrationTest.java | 2 +-
.../WindowsPerformanceCounterFeedLiveTest.java | 2 +-
.../WindowsPerformanceCounterFeedTest.java | 2 +-
.../SshMachineLocationPerformanceTest.java | 2 +-
.../brooklyn/management/ha/HotStandbyTest.java | 2 +-
.../EntityPersistencePerformanceTest.java | 2 +-
...lusterDatabaseExampleAppIntegrationTest.java | 7 +-
.../os/AdvertiseWinrmLoginPolicyTest.java | 2 +-
.../policy/os/CreateUserPolicyLiveTest.java | 2 +-
.../policy/os/CreateUserPolicyTest.java | 2 +-
.../enricher/HttpLatencyDetectorTest.java | 2 +-
.../brooklyn/enricher/RebindEnricherTest.java | 2 +-
.../autoscaling/AutoScalerPolicyRebindTest.java | 2 +-
.../policy/ha/ServiceFailureDetectorTest.java | 2 +-
.../brooklyn/policy/ha/ServiceReplacerTest.java | 2 +-
...ctSoftwareProcessRestartIntegrationTest.java | 2 +-
.../basic/SoftwareProcessEntityRebindTest.java | 2 +-
.../entity/basic/SoftwareProcessEntityTest.java | 2 +-
...ftwareProcessAndChildrenIntegrationTest.java | 2 +-
.../basic/lifecycle/ScriptHelperTest.java | 2 +-
.../BrooklynClusterIntegrationTest.java | 2 +-
.../BrooklynNodeIntegrationTest.java | 4 +-
.../brooklynnode/SelectMasterEffectorTest.java | 2 +-
.../brooklyn/entity/java/EntityPollingTest.java | 2 +-
.../entity/java/VanillaJavaAppRebindTest.java | 2 +-
.../entity/machine/MachineEntityRebindTest.java | 2 +-
.../entity/pool/AbstractServerPoolTest.java | 2 +-
.../brooklyn/entity/pool/ServerPoolTest.java | 2 +-
.../entity/software/StaticSensorTest.java | 2 +-
.../software/http/HttpRequestSensorTest.java | 2 +-
.../mysql/AbstractToyMySqlEntityTest.java | 2 +-
.../software/ssh/SshCommandIntegrationTest.java | 2 +-
.../brooklyn/event/feed/jmx/JmxFeedTest.java | 4 +-
.../brooklyn/event/feed/jmx/JmxHelperTest.java | 2 +-
.../event/feed/jmx/RebindJmxFeedTest.java | 2 +-
.../basic/MachineDetailsEc2LiveTest.java | 2 +-
.../MachineDetailsGoogleComputeLiveTest.java | 2 +-
.../crate/CrateNodeIntegrationTest.java | 2 +-
.../PostgreSqlRebindIntegrationTest.java | 2 +-
.../messaging/activemq/ActiveMQEc2LiveTest.java | 2 +-
.../activemq/ActiveMQGoogleComputeLiveTest.java | 4 +-
.../activemq/ActiveMQIntegrationTest.java | 2 +-
.../messaging/kafka/KafkaIntegrationTest.java | 2 +-
.../entity/messaging/qpid/QpidEc2LiveTest.java | 2 +-
.../messaging/qpid/QpidIntegrationTest.java | 4 +-
.../messaging/rabbit/RabbitEc2LiveTest.java | 2 +-
.../messaging/rabbit/RabbitIntegrationTest.java | 2 +-
.../storm/StormAbstractCloudLiveTest.java | 2 +-
.../messaging/storm/StormEc2LiveTest.java | 2 +-
.../zookeeper/ZooKeeperEc2LiveTest.java | 2 +-
.../zookeeper/ZooKeeperEnsembleLiveTest.java | 4 +-
.../monitoring/monit/MonitIntegrationTest.java | 2 +-
.../bind/BindDnsServerIntegrationTest.java | 2 +-
.../network/bind/BindDnsServerLiveTest.java | 2 +-
.../CassandraDatacenterIntegrationTest.java | 2 +-
.../cassandra/CassandraDatacenterLiveTest.java | 2 +-
...assandraDatacenterRebindIntegrationTest.java | 2 +-
.../cassandra/CassandraDatacenterTest.java | 2 +-
.../nosql/cassandra/CassandraFabricTest.java | 2 +-
.../cassandra/CassandraNodeEc2LiveTest.java | 2 +-
.../cassandra/CassandraNodeIntegrationTest.java | 4 +-
.../nosql/cassandra/CassandraNodeLiveTest.java | 2 +-
.../CouchbaseSyncGatewayEc2LiveTest.java | 2 +-
.../nosql/couchdb/CouchDBClusterLiveTest.java | 2 +-
.../nosql/couchdb/CouchDBNodeEc2LiveTest.java | 2 +-
.../couchdb/CouchDBNodeIntegrationTest.java | 2 +-
.../nosql/couchdb/CouchDBNodeLiveTest.java | 2 +-
.../ElasticSearchClusterIntegrationTest.java | 2 +-
.../ElasticSearchNodeIntegrationTest.java | 2 +-
.../nosql/mongodb/MongoDBEc2LiveTest.java | 4 +-
.../nosql/mongodb/MongoDBIntegrationTest.java | 2 +-
.../mongodb/MongoDBRebindIntegrationTest.java | 2 +-
.../nosql/mongodb/MongoDBSoftLayerLiveTest.java | 2 +-
.../MongoDBConfigServerIntegrationTest.java | 2 +-
...MongoDBShardedDeploymentIntegrationTest.java | 2 +-
.../redis/RedisClusterIntegrationTest.java | 2 +-
.../entity/nosql/redis/RedisEc2LiveTest.java | 2 +-
.../nosql/redis/RedisIntegrationTest.java | 2 +-
.../nosql/riak/RiakClusterEc2LiveTest.java | 2 +-
.../entity/nosql/riak/RiakNodeEc2LiveTest.java | 2 +-
.../riak/RiakNodeGoogleComputeLiveTest.java | 2 +-
.../nosql/riak/RiakNodeIntegrationTest.java | 2 +-
.../nosql/riak/RiakNodeSoftlayerLiveTest.java | 2 +-
.../nosql/solr/SolrServerEc2LiveTest.java | 2 +-
.../nosql/solr/SolrServerIntegrationTest.java | 2 +-
.../entity/nosql/solr/SolrServerLiveTest.java | 2 +-
.../osgi/karaf/KarafContainerEc2LiveTest.java | 2 +-
.../entity/osgi/karaf/KarafContainerTest.java | 2 +-
.../entity/dns/AbstractGeoDnsServiceTest.java | 2 +-
.../nginx/NginxClusterIntegrationTest.java | 4 +-
.../entity/proxy/nginx/NginxEc2LiveTest.java | 4 +-
.../nginx/NginxHttpsSslIntegrationTest.java | 2 +-
.../proxy/nginx/NginxIntegrationTest.java | 10 +-
.../proxy/nginx/NginxRebindIntegrationTest.java | 11 +-
.../nginx/NginxRebindWithHaIntegrationTest.java | 4 +-
.../nginx/NginxUrlMappingIntegrationTest.java | 3 +-
.../proxy/nginx/NginxWebClusterEc2LiveTest.java | 2 +-
.../AbstractWebAppFixtureIntegrationTest.java | 9 +-
...lledDynamicWebAppClusterIntegrationTest.java | 5 +-
.../ControlledDynamicWebAppClusterTest.java | 2 +-
.../entity/webapp/DynamicWebAppClusterTest.java | 2 +-
.../entity/webapp/DynamicWebAppFabricTest.java | 2 +-
...ElasticJavaWebAppServiceIntegrationTest.java | 2 +-
.../webapp/TomcatAutoScalerPolicyTest.java | 2 +-
.../webapp/WebAppConcurrentDeployTest.java | 4 +-
.../webapp/WebAppLiveIntegrationTest.groovy | 4 +-
...namicWebAppClusterRebindIntegrationTest.java | 8 +-
...namicWebAppClusterRebindIntegrationTest.java | 8 +-
.../jboss/JBoss6ServerAwsEc2LiveTest.java | 2 +-
...Boss6ServerNonInheritingIntegrationTest.java | 2 +-
.../jboss/JBoss7ServerAwsEc2LiveTest.java | 2 +-
.../jboss/JBoss7ServerDockerLiveTest.java | 5 +-
...Boss7ServerNonInheritingIntegrationTest.java | 4 +-
.../JBoss7ServerRebindingIntegrationTest.java | 6 +-
.../Jboss7ServerGoogleComputeLiveTest.java | 2 +-
.../webapp/nodejs/NodeJsWebAppEc2LiveTest.java | 2 +-
.../NodeJsWebAppFixtureIntegrationTest.java | 6 +-
.../nodejs/NodeJsWebAppSoftlayerLiveTest.java | 2 +-
.../webapp/tomcat/Tomcat8ServerEc2LiveTest.java | 3 +-
.../tomcat/Tomcat8ServerSoftlayerLiveTest.java | 3 +-
.../webapp/tomcat/TomcatServerEc2LiveTest.java | 2 +-
.../tomcat/TomcatServerSoftlayerLiveTest.java | 2 +-
.../EnrichersSlightlySimplerYamlTest.java | 2 +-
.../brooklyn/JavaWebAppsIntegrationTest.java | 3 +-
.../brooklyn/ReloadBrooklynPropertiesTest.java | 2 +-
.../brooklyn/VanillaBashNetcatYamlTest.java | 2 +-
.../BrooklynJavascriptGuiLauncherTest.java | 2 +-
.../BrooklynEntityMirrorIntegrationTest.java | 4 +-
.../brooklynnode/BrooklynNodeRestTest.java | 4 +-
.../brooklyn/launcher/BrooklynLauncherTest.java | 2 +-
.../brooklyn/launcher/WebAppRunnerTest.java | 2 +-
.../blueprints/AbstractBlueprintTest.java | 2 +-
.../SoftlayerObtainPrivateLiveTest.java | 2 +-
.../org/apache/brooklyn/qa/load/LoadTest.java | 3 +-
.../rest/client/BrooklynApiRestClientTest.java | 2 +-
.../brooklynnode/DeployBlueprintTest.java | 2 +-
.../rest/BrooklynRestApiLauncherTest.java | 2 +-
.../rest/resources/ApplicationResourceTest.java | 2 +-
.../rest/resources/EntityResourceTest.java | 2 +-
.../SensorResourceIntegrationTest.java | 2 +-
.../rest/resources/SensorResourceTest.java | 2 +-
.../ServerResourceIntegrationTest.java | 2 +-
.../rest/resources/ServerShutdownTest.java | 2 +-
.../java/brooklyn/test/EntityTestUtils.java | 180 ------
.../main/java/brooklyn/test/HttpTestUtils.java | 391 --------------
.../java/brooklyn/test/NetworkingTestUtils.java | 68 ---
.../brooklyn/test/PerformanceTestUtils.java | 99 ----
.../main/java/brooklyn/test/TestUtils.groovy | 540 ------------------
.../brooklyn/test/TrustingSslSocketFactory.java | 134 -----
.../main/java/brooklyn/test/WebAppMonitor.java | 213 --------
.../apache/brooklyn/test/EntityTestUtils.java | 181 +++++++
.../org/apache/brooklyn/test/HttpTestUtils.java | 392 ++++++++++++++
.../brooklyn/test/NetworkingTestUtils.java | 69 +++
.../brooklyn/test/PerformanceTestUtils.java | 99 ++++
.../org/apache/brooklyn/test/TestUtils.groovy | 541 +++++++++++++++++++
.../brooklyn/test/TrustingSslSocketFactory.java | 134 +++++
.../org/apache/brooklyn/test/WebAppMonitor.java | 214 ++++++++
180 files changed, 1855 insertions(+), 1828 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/enricher/CustomAggregatingEnricherDeprecatedTest.groovy
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/enricher/CustomAggregatingEnricherDeprecatedTest.groovy b/core/src/test/java/brooklyn/enricher/CustomAggregatingEnricherDeprecatedTest.groovy
index adba709..234db70 100644
--- a/core/src/test/java/brooklyn/enricher/CustomAggregatingEnricherDeprecatedTest.groovy
+++ b/core/src/test/java/brooklyn/enricher/CustomAggregatingEnricherDeprecatedTest.groovy
@@ -33,7 +33,7 @@ import brooklyn.entity.proxying.EntitySpec
import brooklyn.event.AttributeSensor
import brooklyn.event.basic.BasicAttributeSensor
import brooklyn.location.basic.SimulatedLocation
-import brooklyn.test.TestUtils
+import org.apache.brooklyn.test.TestUtils
import brooklyn.test.entity.LocalManagementContextForTests;
import brooklyn.test.entity.TestApplication
import brooklyn.test.entity.TestEntity
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/enricher/CustomAggregatingEnricherTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/enricher/CustomAggregatingEnricherTest.java b/core/src/test/java/brooklyn/enricher/CustomAggregatingEnricherTest.java
index 70d0c10..280f11b 100644
--- a/core/src/test/java/brooklyn/enricher/CustomAggregatingEnricherTest.java
+++ b/core/src/test/java/brooklyn/enricher/CustomAggregatingEnricherTest.java
@@ -20,6 +20,7 @@ package brooklyn.enricher;
import java.util.Collection;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.BeforeMethod;
@@ -34,7 +35,6 @@ import brooklyn.event.AttributeSensor;
import brooklyn.event.basic.BasicAttributeSensor;
import brooklyn.location.LocationSpec;
import brooklyn.location.basic.SimulatedLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/enricher/EnrichersTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/enricher/EnrichersTest.java b/core/src/test/java/brooklyn/enricher/EnrichersTest.java
index b20f722..dbf544f 100644
--- a/core/src/test/java/brooklyn/enricher/EnrichersTest.java
+++ b/core/src/test/java/brooklyn/enricher/EnrichersTest.java
@@ -30,14 +30,16 @@ import brooklyn.entity.BrooklynAppUnitTestSupport;
import brooklyn.entity.basic.BasicGroup;
import brooklyn.entity.basic.Entities;
import brooklyn.entity.basic.EntityAdjuncts;
+
import org.apache.brooklyn.entity.basic.RecordingSensorEventListener;
+import org.apache.brooklyn.test.EntityTestUtils;
+
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.event.AttributeSensor;
import brooklyn.event.SensorEvent;
import brooklyn.event.basic.Sensors;
import brooklyn.policy.Enricher;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.collections.CollectionFunctionals;
import brooklyn.util.collections.MutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/enricher/SensorPropagatingEnricherDeprecatedTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/enricher/SensorPropagatingEnricherDeprecatedTest.java b/core/src/test/java/brooklyn/enricher/SensorPropagatingEnricherDeprecatedTest.java
index 4941273..ff8a80c 100644
--- a/core/src/test/java/brooklyn/enricher/SensorPropagatingEnricherDeprecatedTest.java
+++ b/core/src/test/java/brooklyn/enricher/SensorPropagatingEnricherDeprecatedTest.java
@@ -20,6 +20,7 @@ package brooklyn.enricher;
import java.util.concurrent.atomic.AtomicReference;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -31,7 +32,6 @@ import brooklyn.event.SensorEvent;
import brooklyn.event.SensorEventListener;
import brooklyn.event.basic.Sensors;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.javalang.AtomicReferences;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/enricher/SensorPropagatingEnricherTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/enricher/SensorPropagatingEnricherTest.java b/core/src/test/java/brooklyn/enricher/SensorPropagatingEnricherTest.java
index 38c72c6..5bca552 100644
--- a/core/src/test/java/brooklyn/enricher/SensorPropagatingEnricherTest.java
+++ b/core/src/test/java/brooklyn/enricher/SensorPropagatingEnricherTest.java
@@ -20,6 +20,7 @@ package brooklyn.enricher;
import java.util.concurrent.atomic.AtomicReference;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -33,7 +34,6 @@ import brooklyn.event.basic.BasicNotificationSensor;
import brooklyn.event.basic.Sensors;
import brooklyn.policy.EnricherSpec;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.exceptions.Exceptions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/enricher/TransformingEnricherDeprecatedTest.groovy
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/enricher/TransformingEnricherDeprecatedTest.groovy b/core/src/test/java/brooklyn/enricher/TransformingEnricherDeprecatedTest.groovy
index f880232..3a9b0ce 100644
--- a/core/src/test/java/brooklyn/enricher/TransformingEnricherDeprecatedTest.groovy
+++ b/core/src/test/java/brooklyn/enricher/TransformingEnricherDeprecatedTest.groovy
@@ -34,7 +34,7 @@ import brooklyn.entity.proxying.EntitySpec
import brooklyn.event.AttributeSensor
import brooklyn.event.basic.BasicAttributeSensor
import brooklyn.location.basic.SimulatedLocation
-import brooklyn.test.TestUtils
+import org.apache.brooklyn.test.TestUtils
import brooklyn.test.entity.TestApplication
import brooklyn.test.entity.TestEntity
import brooklyn.util.collections.MutableMap
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/enricher/TransformingEnricherTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/enricher/TransformingEnricherTest.java b/core/src/test/java/brooklyn/enricher/TransformingEnricherTest.java
index 1f14da9..adf7c0d 100644
--- a/core/src/test/java/brooklyn/enricher/TransformingEnricherTest.java
+++ b/core/src/test/java/brooklyn/enricher/TransformingEnricherTest.java
@@ -18,6 +18,7 @@
*/
package brooklyn.enricher;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.BeforeMethod;
@@ -28,7 +29,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.event.AttributeSensor;
import brooklyn.event.basic.BasicAttributeSensor;
import brooklyn.location.basic.SimulatedLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.math.MathFunctions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/entity/EntityPreManagementTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/EntityPreManagementTest.java b/core/src/test/java/brooklyn/entity/EntityPreManagementTest.java
index 8e5d466..9bbad13 100644
--- a/core/src/test/java/brooklyn/entity/EntityPreManagementTest.java
+++ b/core/src/test/java/brooklyn/entity/EntityPreManagementTest.java
@@ -21,6 +21,7 @@ package brooklyn.entity;
import java.util.ArrayList;
import java.util.List;
+import org.apache.brooklyn.test.TestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -38,7 +39,6 @@ import brooklyn.event.SensorEventListener;
import brooklyn.management.EntityManager;
import brooklyn.management.ManagementContext;
import brooklyn.policy.basic.AbstractPolicy;
-import brooklyn.test.TestUtils;
import brooklyn.test.entity.LocalManagementContextForTests;
import brooklyn.test.entity.TestApplication;
import brooklyn.test.entity.TestEntity;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/entity/basic/DataEntityTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/basic/DataEntityTest.java b/core/src/test/java/brooklyn/entity/basic/DataEntityTest.java
index 008b1df..ff009fe 100644
--- a/core/src/test/java/brooklyn/entity/basic/DataEntityTest.java
+++ b/core/src/test/java/brooklyn/entity/basic/DataEntityTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertTrue;
import java.util.concurrent.atomic.AtomicReference;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -34,7 +35,6 @@ import brooklyn.location.LocationSpec;
import brooklyn.location.basic.SimulatedLocation;
import brooklyn.management.ManagementContext;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.LocalManagementContextForTests;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/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 709ed8d..bc1d712 100644
--- a/core/src/test/java/brooklyn/entity/basic/DependentConfigurationTest.java
+++ b/core/src/test/java/brooklyn/entity/basic/DependentConfigurationTest.java
@@ -29,6 +29,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicReference;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -40,7 +41,6 @@ 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;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/entity/basic/PolicyRegistrationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/basic/PolicyRegistrationTest.java b/core/src/test/java/brooklyn/entity/basic/PolicyRegistrationTest.java
index 168f72c..279c2c7 100644
--- a/core/src/test/java/brooklyn/entity/basic/PolicyRegistrationTest.java
+++ b/core/src/test/java/brooklyn/entity/basic/PolicyRegistrationTest.java
@@ -25,6 +25,7 @@ import static org.testng.Assert.fail;
import java.util.Collection;
import java.util.List;
+import org.apache.brooklyn.test.TestUtils;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -36,7 +37,6 @@ import brooklyn.policy.EnricherSpec;
import brooklyn.policy.Policy;
import brooklyn.policy.PolicySpec;
import brooklyn.policy.basic.AbstractPolicy;
-import brooklyn.test.TestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.test.entity.TestEntityNoEnrichersImpl;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/entity/basic/ServiceStateLogicTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/basic/ServiceStateLogicTest.java b/core/src/test/java/brooklyn/entity/basic/ServiceStateLogicTest.java
index ae1e1a0..256cd99 100644
--- a/core/src/test/java/brooklyn/entity/basic/ServiceStateLogicTest.java
+++ b/core/src/test/java/brooklyn/entity/basic/ServiceStateLogicTest.java
@@ -18,6 +18,7 @@
*/
package brooklyn.entity.basic;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
@@ -33,7 +34,6 @@ import brooklyn.event.AttributeSensor;
import brooklyn.event.basic.Sensors;
import brooklyn.location.Location;
import brooklyn.policy.Enricher;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.test.entity.TestEntityImpl.TestEntityWithoutEnrichers;
import brooklyn.util.collections.QuorumCheck.QuorumChecks;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/entity/effector/EffectorBasicTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/effector/EffectorBasicTest.java b/core/src/test/java/brooklyn/entity/effector/EffectorBasicTest.java
index 66618f8..58f0bb5 100644
--- a/core/src/test/java/brooklyn/entity/effector/EffectorBasicTest.java
+++ b/core/src/test/java/brooklyn/entity/effector/EffectorBasicTest.java
@@ -21,6 +21,7 @@ package brooklyn.entity.effector;
import java.util.List;
import java.util.concurrent.Callable;
+import org.apache.brooklyn.test.TestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -37,7 +38,6 @@ import brooklyn.location.basic.SimulatedLocation;
import brooklyn.management.HasTaskChildren;
import brooklyn.management.Task;
import brooklyn.management.internal.ManagementContextInternal;
-import brooklyn.test.TestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.exceptions.Exceptions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/entity/group/DynamicClusterTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/group/DynamicClusterTest.java b/core/src/test/java/brooklyn/entity/group/DynamicClusterTest.java
index b8a1839..a7b0bec 100644
--- a/core/src/test/java/brooklyn/entity/group/DynamicClusterTest.java
+++ b/core/src/test/java/brooklyn/entity/group/DynamicClusterTest.java
@@ -51,7 +51,10 @@ import brooklyn.entity.basic.BrooklynTaskTags;
import brooklyn.entity.basic.Entities;
import brooklyn.entity.basic.EntityFactory;
import brooklyn.entity.basic.Lifecycle;
+
import org.apache.brooklyn.entity.basic.RecordingSensorEventListener;
+import org.apache.brooklyn.test.EntityTestUtils;
+
import brooklyn.entity.basic.ServiceStateLogic;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Changeable;
@@ -61,7 +64,6 @@ import brooklyn.location.Location;
import brooklyn.location.basic.SimulatedLocation;
import brooklyn.management.Task;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.test.entity.TestEntityImpl;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/entity/group/DynamicFabricTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/group/DynamicFabricTest.java b/core/src/test/java/brooklyn/entity/group/DynamicFabricTest.java
index 40131ab..a52b84f 100644
--- a/core/src/test/java/brooklyn/entity/group/DynamicFabricTest.java
+++ b/core/src/test/java/brooklyn/entity/group/DynamicFabricTest.java
@@ -31,6 +31,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.brooklyn.test.TestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.BeforeMethod;
@@ -50,7 +51,6 @@ import brooklyn.location.basic.PortRanges;
import brooklyn.location.basic.SimulatedLocation;
import brooklyn.management.Task;
import brooklyn.test.Asserts;
-import brooklyn.test.TestUtils;
import brooklyn.test.entity.BlockingEntity;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.collections.MutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/entity/group/GroupPickUpEntitiesTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/group/GroupPickUpEntitiesTest.java b/core/src/test/java/brooklyn/entity/group/GroupPickUpEntitiesTest.java
index afdb528..b1a51a0 100644
--- a/core/src/test/java/brooklyn/entity/group/GroupPickUpEntitiesTest.java
+++ b/core/src/test/java/brooklyn/entity/group/GroupPickUpEntitiesTest.java
@@ -18,6 +18,7 @@
*/
package brooklyn.entity.group;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -36,7 +37,6 @@ import brooklyn.event.SensorEventListener;
import brooklyn.policy.PolicySpec;
import brooklyn.policy.basic.AbstractPolicy;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.javalang.Boxing;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/entity/rebind/RebindEnricherTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/RebindEnricherTest.java b/core/src/test/java/brooklyn/entity/rebind/RebindEnricherTest.java
index f2fc6da..cf30366 100644
--- a/core/src/test/java/brooklyn/entity/rebind/RebindEnricherTest.java
+++ b/core/src/test/java/brooklyn/entity/rebind/RebindEnricherTest.java
@@ -26,6 +26,7 @@ import static org.testng.Assert.assertTrue;
import java.util.Collection;
import java.util.Map;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.BeforeMethod;
@@ -48,7 +49,6 @@ import brooklyn.location.basic.SimulatedLocation;
import brooklyn.policy.Enricher;
import brooklyn.policy.EnricherSpec;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.test.entity.TestEntity;
import brooklyn.test.entity.TestEntityImpl;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/entity/rebind/RebindEntityTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/RebindEntityTest.java b/core/src/test/java/brooklyn/entity/rebind/RebindEntityTest.java
index 9b1e05d..280d06f 100644
--- a/core/src/test/java/brooklyn/entity/rebind/RebindEntityTest.java
+++ b/core/src/test/java/brooklyn/entity/rebind/RebindEntityTest.java
@@ -18,8 +18,8 @@
*/
package brooklyn.entity.rebind;
-import static brooklyn.test.EntityTestUtils.assertAttributeEquals;
-import static brooklyn.test.EntityTestUtils.assertConfigEquals;
+import static org.apache.brooklyn.test.EntityTestUtils.assertAttributeEquals;
+import static org.apache.brooklyn.test.EntityTestUtils.assertConfigEquals;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotNull;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/entity/rebind/RebindFeedTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/RebindFeedTest.java b/core/src/test/java/brooklyn/entity/rebind/RebindFeedTest.java
index 4f5acd1..9459e89 100644
--- a/core/src/test/java/brooklyn/entity/rebind/RebindFeedTest.java
+++ b/core/src/test/java/brooklyn/entity/rebind/RebindFeedTest.java
@@ -24,6 +24,7 @@ import java.net.URL;
import java.util.Collection;
import java.util.List;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -51,7 +52,6 @@ import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.location.basic.SshMachineLocation;
import brooklyn.management.internal.BrooklynGarbageCollector;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.test.entity.TestEntityImpl.TestEntityWithoutEnrichers;
import brooklyn.util.collections.MutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/entity/rebind/RebindFeedWithHaTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/entity/rebind/RebindFeedWithHaTest.java b/core/src/test/java/brooklyn/entity/rebind/RebindFeedWithHaTest.java
index 2c9c69b..25ea808 100644
--- a/core/src/test/java/brooklyn/entity/rebind/RebindFeedWithHaTest.java
+++ b/core/src/test/java/brooklyn/entity/rebind/RebindFeedWithHaTest.java
@@ -25,6 +25,7 @@ import java.util.Collection;
import java.util.List;
import java.util.concurrent.Callable;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -38,7 +39,6 @@ import brooklyn.event.AttributeSensor;
import brooklyn.management.Task;
import brooklyn.management.ha.HighAvailabilityMode;
import brooklyn.management.internal.LocalManagementContext;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.http.BetterMockWebServer;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/event/feed/function/FunctionFeedTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/event/feed/function/FunctionFeedTest.java b/core/src/test/java/brooklyn/event/feed/function/FunctionFeedTest.java
index 468239b..7e98acd 100644
--- a/core/src/test/java/brooklyn/event/feed/function/FunctionFeedTest.java
+++ b/core/src/test/java/brooklyn/event/feed/function/FunctionFeedTest.java
@@ -29,6 +29,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import javax.annotation.Nullable;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -49,7 +50,6 @@ import brooklyn.event.basic.Sensors;
import brooklyn.location.Location;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import com.google.common.base.Function;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/event/feed/http/HttpFeedIntegrationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/event/feed/http/HttpFeedIntegrationTest.java b/core/src/test/java/brooklyn/event/feed/http/HttpFeedIntegrationTest.java
index 2675837..6252e77 100644
--- a/core/src/test/java/brooklyn/event/feed/http/HttpFeedIntegrationTest.java
+++ b/core/src/test/java/brooklyn/event/feed/http/HttpFeedIntegrationTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertTrue;
import java.net.URI;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -36,7 +37,6 @@ import brooklyn.location.Location;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.location.basic.PortRanges;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.HttpService;
import brooklyn.test.entity.TestEntity;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/event/feed/shell/ShellFeedIntegrationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/event/feed/shell/ShellFeedIntegrationTest.java b/core/src/test/java/brooklyn/event/feed/shell/ShellFeedIntegrationTest.java
index 4d2ed42..03ffa59 100644
--- a/core/src/test/java/brooklyn/event/feed/shell/ShellFeedIntegrationTest.java
+++ b/core/src/test/java/brooklyn/event/feed/shell/ShellFeedIntegrationTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertTrue;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -42,7 +43,6 @@ import brooklyn.event.feed.ssh.SshPollValue;
import brooklyn.event.feed.ssh.SshValueFunctions;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.stream.Streams;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/event/feed/ssh/SshFeedIntegrationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/event/feed/ssh/SshFeedIntegrationTest.java b/core/src/test/java/brooklyn/event/feed/ssh/SshFeedIntegrationTest.java
index 16bab62..fc9207e 100644
--- a/core/src/test/java/brooklyn/event/feed/ssh/SshFeedIntegrationTest.java
+++ b/core/src/test/java/brooklyn/event/feed/ssh/SshFeedIntegrationTest.java
@@ -21,6 +21,7 @@ package brooklyn.event.feed.ssh;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -40,7 +41,6 @@ import brooklyn.event.AttributeSensor;
import brooklyn.event.basic.Sensors;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.location.basic.SshMachineLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.exceptions.Exceptions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/event/feed/windows/WindowsPerformanceCounterFeedLiveTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/event/feed/windows/WindowsPerformanceCounterFeedLiveTest.java b/core/src/test/java/brooklyn/event/feed/windows/WindowsPerformanceCounterFeedLiveTest.java
index 9a9210f..2d313f8 100644
--- a/core/src/test/java/brooklyn/event/feed/windows/WindowsPerformanceCounterFeedLiveTest.java
+++ b/core/src/test/java/brooklyn/event/feed/windows/WindowsPerformanceCounterFeedLiveTest.java
@@ -20,6 +20,7 @@ package brooklyn.event.feed.windows;
import java.util.Map;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -31,7 +32,6 @@ import brooklyn.event.basic.Sensors;
import brooklyn.location.Location;
import brooklyn.location.MachineLocation;
import brooklyn.location.MachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/event/feed/windows/WindowsPerformanceCounterFeedTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/event/feed/windows/WindowsPerformanceCounterFeedTest.java b/core/src/test/java/brooklyn/event/feed/windows/WindowsPerformanceCounterFeedTest.java
index f4ba43b..7a38659 100644
--- a/core/src/test/java/brooklyn/event/feed/windows/WindowsPerformanceCounterFeedTest.java
+++ b/core/src/test/java/brooklyn/event/feed/windows/WindowsPerformanceCounterFeedTest.java
@@ -26,6 +26,7 @@ import static org.testng.Assert.assertTrue;
import java.util.Collection;
import java.util.Iterator;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -39,7 +40,6 @@ import brooklyn.event.AttributeSensor;
import brooklyn.event.basic.Sensors;
import brooklyn.location.Location;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.text.Strings;
import io.cloudsoft.winrm4j.winrm.WinRmToolResponse;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/location/basic/SshMachineLocationPerformanceTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/location/basic/SshMachineLocationPerformanceTest.java b/core/src/test/java/brooklyn/location/basic/SshMachineLocationPerformanceTest.java
index 0143e66..5f265ee 100644
--- a/core/src/test/java/brooklyn/location/basic/SshMachineLocationPerformanceTest.java
+++ b/core/src/test/java/brooklyn/location/basic/SshMachineLocationPerformanceTest.java
@@ -25,13 +25,13 @@ import java.util.Map;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
+import org.apache.brooklyn.test.PerformanceTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-import brooklyn.test.PerformanceTestUtils;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.internal.ssh.SshTool;
import brooklyn.util.net.Networking;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/management/ha/HotStandbyTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/management/ha/HotStandbyTest.java b/core/src/test/java/brooklyn/management/ha/HotStandbyTest.java
index f33f716..2259db4 100644
--- a/core/src/test/java/brooklyn/management/ha/HotStandbyTest.java
+++ b/core/src/test/java/brooklyn/management/ha/HotStandbyTest.java
@@ -29,6 +29,7 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -56,7 +57,6 @@ import brooklyn.location.LocationSpec;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation.LocalhostMachine;
import brooklyn.management.internal.AbstractManagementContext;
import brooklyn.management.internal.ManagementContextInternal;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.LocalManagementContextForTests;
import brooklyn.test.entity.TestApplication;
import brooklyn.test.entity.TestEntity;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/core/src/test/java/brooklyn/qa/performance/EntityPersistencePerformanceTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/qa/performance/EntityPersistencePerformanceTest.java b/core/src/test/java/brooklyn/qa/performance/EntityPersistencePerformanceTest.java
index 3baeb60..1d54bc8 100644
--- a/core/src/test/java/brooklyn/qa/performance/EntityPersistencePerformanceTest.java
+++ b/core/src/test/java/brooklyn/qa/performance/EntityPersistencePerformanceTest.java
@@ -22,6 +22,7 @@ import java.util.List;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
+import org.apache.brooklyn.test.PerformanceTestUtils;
import org.testng.annotations.Test;
import brooklyn.entity.proxying.EntitySpec;
@@ -30,7 +31,6 @@ import brooklyn.location.LocationSpec;
import brooklyn.location.basic.SimulatedLocation;
import brooklyn.policy.Policy;
import brooklyn.policy.PolicySpec;
-import brooklyn.test.PerformanceTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.test.policy.TestPolicy;
import brooklyn.util.repeat.Repeater;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/examples/simple-web-cluster/src/test/java/org/apache/brooklyn/demo/RebindWebClusterDatabaseExampleAppIntegrationTest.java
----------------------------------------------------------------------
diff --git a/examples/simple-web-cluster/src/test/java/org/apache/brooklyn/demo/RebindWebClusterDatabaseExampleAppIntegrationTest.java b/examples/simple-web-cluster/src/test/java/org/apache/brooklyn/demo/RebindWebClusterDatabaseExampleAppIntegrationTest.java
index f032d95..726d36e 100644
--- a/examples/simple-web-cluster/src/test/java/org/apache/brooklyn/demo/RebindWebClusterDatabaseExampleAppIntegrationTest.java
+++ b/examples/simple-web-cluster/src/test/java/org/apache/brooklyn/demo/RebindWebClusterDatabaseExampleAppIntegrationTest.java
@@ -19,6 +19,10 @@
package org.apache.brooklyn.demo;
import org.apache.brooklyn.demo.WebClusterDatabaseExampleApp;
+import org.apache.brooklyn.test.EntityTestUtils;
+import org.apache.brooklyn.test.HttpTestUtils;
+import org.apache.brooklyn.test.WebAppMonitor;
+
import static com.google.common.base.Preconditions.checkNotNull;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
@@ -55,9 +59,6 @@ import brooklyn.location.Location;
import brooklyn.policy.Enricher;
import brooklyn.policy.autoscaling.AutoScalerPolicy;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
-import brooklyn.test.HttpTestUtils;
-import brooklyn.test.WebAppMonitor;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.time.Duration;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/locations/jclouds/src/test/java/brooklyn/policy/os/AdvertiseWinrmLoginPolicyTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/policy/os/AdvertiseWinrmLoginPolicyTest.java b/locations/jclouds/src/test/java/brooklyn/policy/os/AdvertiseWinrmLoginPolicyTest.java
index 2bc43c7..93e5c11 100644
--- a/locations/jclouds/src/test/java/brooklyn/policy/os/AdvertiseWinrmLoginPolicyTest.java
+++ b/locations/jclouds/src/test/java/brooklyn/policy/os/AdvertiseWinrmLoginPolicyTest.java
@@ -18,6 +18,7 @@
*/
package brooklyn.policy.os;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.Test;
import brooklyn.entity.BrooklynAppUnitTestSupport;
@@ -25,7 +26,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.LocationSpec;
import brooklyn.location.basic.WinRmMachineLocation;
import brooklyn.policy.PolicySpec;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/locations/jclouds/src/test/java/brooklyn/policy/os/CreateUserPolicyLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/policy/os/CreateUserPolicyLiveTest.java b/locations/jclouds/src/test/java/brooklyn/policy/os/CreateUserPolicyLiveTest.java
index 2913096..eaa8b2f 100644
--- a/locations/jclouds/src/test/java/brooklyn/policy/os/CreateUserPolicyLiveTest.java
+++ b/locations/jclouds/src/test/java/brooklyn/policy/os/CreateUserPolicyLiveTest.java
@@ -24,6 +24,7 @@ import static org.testng.Assert.assertTrue;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
@@ -37,7 +38,6 @@ import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.location.basic.SshMachineLocation;
import brooklyn.policy.PolicySpec;
import brooklyn.policy.os.CreateUserPolicy;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.internal.ssh.SshTool;
import brooklyn.util.text.Identifiers;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/locations/jclouds/src/test/java/brooklyn/policy/os/CreateUserPolicyTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/brooklyn/policy/os/CreateUserPolicyTest.java b/locations/jclouds/src/test/java/brooklyn/policy/os/CreateUserPolicyTest.java
index 855d994..833214e 100644
--- a/locations/jclouds/src/test/java/brooklyn/policy/os/CreateUserPolicyTest.java
+++ b/locations/jclouds/src/test/java/brooklyn/policy/os/CreateUserPolicyTest.java
@@ -26,6 +26,7 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -38,7 +39,6 @@ import brooklyn.location.LocationSpec;
import brooklyn.location.basic.SshMachineLocation;
import brooklyn.policy.PolicySpec;
import brooklyn.policy.os.CreateUserPolicy;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.internal.ssh.SshTool;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/policy/src/test/java/brooklyn/enricher/HttpLatencyDetectorTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/brooklyn/enricher/HttpLatencyDetectorTest.java b/policy/src/test/java/brooklyn/enricher/HttpLatencyDetectorTest.java
index b8504ad..b62cf48 100644
--- a/policy/src/test/java/brooklyn/enricher/HttpLatencyDetectorTest.java
+++ b/policy/src/test/java/brooklyn/enricher/HttpLatencyDetectorTest.java
@@ -21,6 +21,7 @@ package brooklyn.enricher;
import java.net.URL;
import java.util.concurrent.TimeUnit;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -34,7 +35,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.event.AttributeSensor;
import brooklyn.event.basic.Sensors;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/policy/src/test/java/brooklyn/enricher/RebindEnricherTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/brooklyn/enricher/RebindEnricherTest.java b/policy/src/test/java/brooklyn/enricher/RebindEnricherTest.java
index dc08e19..762a9fd 100644
--- a/policy/src/test/java/brooklyn/enricher/RebindEnricherTest.java
+++ b/policy/src/test/java/brooklyn/enricher/RebindEnricherTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertNotNull;
import java.net.URL;
import java.util.concurrent.TimeUnit;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
@@ -31,7 +32,6 @@ import brooklyn.entity.rebind.RebindTestFixtureWithApp;
import brooklyn.event.AttributeSensor;
import brooklyn.event.basic.Sensors;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.http.BetterMockWebServer;
import brooklyn.util.time.Duration;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/policy/src/test/java/brooklyn/policy/autoscaling/AutoScalerPolicyRebindTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/brooklyn/policy/autoscaling/AutoScalerPolicyRebindTest.java b/policy/src/test/java/brooklyn/policy/autoscaling/AutoScalerPolicyRebindTest.java
index 7191030..ba7d249 100644
--- a/policy/src/test/java/brooklyn/policy/autoscaling/AutoScalerPolicyRebindTest.java
+++ b/policy/src/test/java/brooklyn/policy/autoscaling/AutoScalerPolicyRebindTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertEquals;
import java.util.Map;
import java.util.concurrent.TimeUnit;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -35,7 +36,6 @@ import brooklyn.event.basic.BasicNotificationSensor;
import brooklyn.event.basic.Sensors;
import brooklyn.location.LocationSpec;
import brooklyn.location.basic.SimulatedLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.time.Duration;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/policy/src/test/java/brooklyn/policy/ha/ServiceFailureDetectorTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/brooklyn/policy/ha/ServiceFailureDetectorTest.java b/policy/src/test/java/brooklyn/policy/ha/ServiceFailureDetectorTest.java
index 7250e8e..f8c80bc 100644
--- a/policy/src/test/java/brooklyn/policy/ha/ServiceFailureDetectorTest.java
+++ b/policy/src/test/java/brooklyn/policy/ha/ServiceFailureDetectorTest.java
@@ -26,6 +26,7 @@ import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.TimeUnit;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -46,7 +47,6 @@ import brooklyn.management.ManagementContext;
import brooklyn.policy.EnricherSpec;
import brooklyn.policy.ha.HASensors.FailureDescriptor;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.LocalManagementContextForTests;
import brooklyn.test.entity.TestApplication;
import brooklyn.test.entity.TestEntity;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/policy/src/test/java/brooklyn/policy/ha/ServiceReplacerTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/brooklyn/policy/ha/ServiceReplacerTest.java b/policy/src/test/java/brooklyn/policy/ha/ServiceReplacerTest.java
index 8d2fb86..b1bd375 100644
--- a/policy/src/test/java/brooklyn/policy/ha/ServiceReplacerTest.java
+++ b/policy/src/test/java/brooklyn/policy/ha/ServiceReplacerTest.java
@@ -27,6 +27,7 @@ import java.util.List;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -54,7 +55,6 @@ import brooklyn.management.ManagementContext;
import brooklyn.policy.PolicySpec;
import brooklyn.policy.ha.HASensors.FailureDescriptor;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.LocalManagementContextForTests;
import brooklyn.test.entity.TestApplication;
import brooklyn.test.entity.TestEntity;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/entity/basic/AbstractSoftwareProcessRestartIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/basic/AbstractSoftwareProcessRestartIntegrationTest.java b/software/base/src/test/java/brooklyn/entity/basic/AbstractSoftwareProcessRestartIntegrationTest.java
index d70ed76..79f3eca 100644
--- a/software/base/src/test/java/brooklyn/entity/basic/AbstractSoftwareProcessRestartIntegrationTest.java
+++ b/software/base/src/test/java/brooklyn/entity/basic/AbstractSoftwareProcessRestartIntegrationTest.java
@@ -20,6 +20,7 @@ package brooklyn.entity.basic;
import java.util.Map;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
@@ -30,7 +31,6 @@ import brooklyn.entity.basic.SoftwareProcess.RestartSoftwareParameters;
import brooklyn.entity.basic.SoftwareProcess.StopSoftwareParameters;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.collections.CollectionFunctionals;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessEntityRebindTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessEntityRebindTest.java b/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessEntityRebindTest.java
index 6911790..6fe4183 100644
--- a/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessEntityRebindTest.java
+++ b/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessEntityRebindTest.java
@@ -28,6 +28,7 @@ import java.util.Collections;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -43,7 +44,6 @@ import brooklyn.location.NoMachinesAvailableException;
import brooklyn.location.basic.AbstractLocation;
import brooklyn.location.basic.SshMachineLocation;
import brooklyn.management.ManagementContext;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.flags.SetFromFlag;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessEntityTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessEntityTest.java b/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessEntityTest.java
index 4d2e7fd..0693d7e 100644
--- a/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessEntityTest.java
+++ b/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessEntityTest.java
@@ -30,6 +30,7 @@ import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.jclouds.util.Throwables2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -68,7 +69,6 @@ import brooklyn.management.EntityManager;
import brooklyn.management.Task;
import brooklyn.management.TaskAdaptable;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.config.ConfigBag;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/entity/basic/VanillaSoftwareProcessAndChildrenIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/basic/VanillaSoftwareProcessAndChildrenIntegrationTest.java b/software/base/src/test/java/brooklyn/entity/basic/VanillaSoftwareProcessAndChildrenIntegrationTest.java
index ae2ae62..2ad2ef7 100644
--- a/software/base/src/test/java/brooklyn/entity/basic/VanillaSoftwareProcessAndChildrenIntegrationTest.java
+++ b/software/base/src/test/java/brooklyn/entity/basic/VanillaSoftwareProcessAndChildrenIntegrationTest.java
@@ -21,6 +21,7 @@ package brooklyn.entity.basic;
import java.util.Collections;
import java.util.concurrent.TimeUnit;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -31,7 +32,6 @@ import org.testng.annotations.Test;
import brooklyn.entity.basic.SoftwareProcess.ChildStartableMode;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.ResourceUtils;
import brooklyn.util.javalang.JavaClassNames;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/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 971e22c..9e52e15 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
@@ -22,6 +22,7 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -42,7 +43,6 @@ import brooklyn.event.feed.function.FunctionPollConfig;
import brooklyn.location.LocationSpec;
import brooklyn.location.basic.FixedListMachineProvisioningLocation;
import brooklyn.location.basic.SshMachineLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.time.Duration;
import com.google.common.base.Functions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/entity/brooklynnode/BrooklynClusterIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/brooklynnode/BrooklynClusterIntegrationTest.java b/software/base/src/test/java/brooklyn/entity/brooklynnode/BrooklynClusterIntegrationTest.java
index d623a38..fcbd753 100644
--- a/software/base/src/test/java/brooklyn/entity/brooklynnode/BrooklynClusterIntegrationTest.java
+++ b/software/base/src/test/java/brooklyn/entity/brooklynnode/BrooklynClusterIntegrationTest.java
@@ -21,6 +21,7 @@ package brooklyn.entity.brooklynnode;
import java.io.File;
import java.util.List;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -32,7 +33,6 @@ import brooklyn.entity.Entity;
import brooklyn.entity.brooklynnode.BrooklynNode.ExistingFileBehaviour;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.javalang.JavaClassNames;
import brooklyn.util.net.Networking;
import brooklyn.util.os.Os;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java b/software/base/src/test/java/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java
index 182c24a..04b375a 100644
--- a/software/base/src/test/java/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java
+++ b/software/base/src/test/java/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java
@@ -31,6 +31,8 @@ import java.util.Collections;
import java.util.List;
import java.util.concurrent.ExecutionException;
+import org.apache.brooklyn.test.EntityTestUtils;
+import org.apache.brooklyn.test.HttpTestUtils;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.HttpClient;
import org.slf4j.Logger;
@@ -62,8 +64,6 @@ import brooklyn.location.basic.Locations;
import brooklyn.location.basic.PortRanges;
import brooklyn.location.basic.SshMachineLocation;
import brooklyn.test.Asserts;
-import brooklyn.test.EntityTestUtils;
-import brooklyn.test.HttpTestUtils;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.config.ConfigBag;
import brooklyn.util.exceptions.Exceptions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/entity/brooklynnode/SelectMasterEffectorTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/brooklynnode/SelectMasterEffectorTest.java b/software/base/src/test/java/brooklyn/entity/brooklynnode/SelectMasterEffectorTest.java
index 84b763d..cd3c18d 100644
--- a/software/base/src/test/java/brooklyn/entity/brooklynnode/SelectMasterEffectorTest.java
+++ b/software/base/src/test/java/brooklyn/entity/brooklynnode/SelectMasterEffectorTest.java
@@ -27,6 +27,7 @@ import java.util.Collections;
import java.util.List;
import java.util.concurrent.Callable;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.apache.http.client.methods.HttpPost;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -49,7 +50,6 @@ import brooklyn.event.feed.AttributePollHandler;
import brooklyn.event.feed.DelegatingPollHandler;
import brooklyn.event.feed.Poller;
import brooklyn.management.ha.ManagementNodeState;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.collections.MutableList;
import brooklyn.util.time.Duration;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/entity/java/EntityPollingTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/java/EntityPollingTest.java b/software/base/src/test/java/brooklyn/entity/java/EntityPollingTest.java
index 4b6f1fb..333df4d 100644
--- a/software/base/src/test/java/brooklyn/entity/java/EntityPollingTest.java
+++ b/software/base/src/test/java/brooklyn/entity/java/EntityPollingTest.java
@@ -21,6 +21,7 @@ package brooklyn.entity.java;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -36,7 +37,6 @@ import brooklyn.event.feed.jmx.JmxAttributePollConfig;
import brooklyn.event.feed.jmx.JmxFeed;
import brooklyn.location.MachineLocation;
import brooklyn.location.basic.SshMachineLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.JmxService;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/entity/java/VanillaJavaAppRebindTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/java/VanillaJavaAppRebindTest.java b/software/base/src/test/java/brooklyn/entity/java/VanillaJavaAppRebindTest.java
index 4600cd7..dbe4047 100644
--- a/software/base/src/test/java/brooklyn/entity/java/VanillaJavaAppRebindTest.java
+++ b/software/base/src/test/java/brooklyn/entity/java/VanillaJavaAppRebindTest.java
@@ -22,6 +22,7 @@ import static org.testng.Assert.assertTrue;
import java.io.File;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -38,7 +39,6 @@ import brooklyn.event.AttributeSensor;
import brooklyn.event.basic.Sensors;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.management.internal.LocalManagementContext;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.ResourceUtils;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/entity/machine/MachineEntityRebindTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/machine/MachineEntityRebindTest.java b/software/base/src/test/java/brooklyn/entity/machine/MachineEntityRebindTest.java
index 1153ff9..0312b42 100644
--- a/software/base/src/test/java/brooklyn/entity/machine/MachineEntityRebindTest.java
+++ b/software/base/src/test/java/brooklyn/entity/machine/MachineEntityRebindTest.java
@@ -18,6 +18,7 @@
*/
package brooklyn.entity.machine;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableList;
@@ -28,7 +29,6 @@ import brooklyn.entity.basic.EmptySoftwareProcess;
import brooklyn.entity.basic.Lifecycle;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.rebind.RebindTestFixtureWithApp;
-import brooklyn.test.EntityTestUtils;
public class MachineEntityRebindTest extends RebindTestFixtureWithApp {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/entity/pool/AbstractServerPoolTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/pool/AbstractServerPoolTest.java b/software/base/src/test/java/brooklyn/entity/pool/AbstractServerPoolTest.java
index 5575e87..16e6aa0 100644
--- a/software/base/src/test/java/brooklyn/entity/pool/AbstractServerPoolTest.java
+++ b/software/base/src/test/java/brooklyn/entity/pool/AbstractServerPoolTest.java
@@ -22,6 +22,7 @@ import static org.testng.Assert.fail;
import java.util.List;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
@@ -36,7 +37,6 @@ import brooklyn.location.LocationSpec;
import brooklyn.location.NoMachinesAvailableException;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.management.ManagementContext;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.LocalManagementContextForTests;
import brooklyn.test.entity.TestApplication;
import brooklyn.util.exceptions.Exceptions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/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 962400f..7a64dff 100644
--- a/software/base/src/test/java/brooklyn/entity/pool/ServerPoolTest.java
+++ b/software/base/src/test/java/brooklyn/entity/pool/ServerPoolTest.java
@@ -25,6 +25,7 @@ import static org.testng.Assert.assertTrue;
import java.util.Collection;
import java.util.Iterator;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
@@ -34,7 +35,6 @@ import brooklyn.entity.basic.Attributes;
import brooklyn.entity.basic.Lifecycle;
import brooklyn.location.LocationSpec;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation.LocalhostMachine;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import com.google.common.base.Joiner;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/entity/software/StaticSensorTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/software/StaticSensorTest.java b/software/base/src/test/java/brooklyn/entity/software/StaticSensorTest.java
index 4b9a641..2af8a07 100644
--- a/software/base/src/test/java/brooklyn/entity/software/StaticSensorTest.java
+++ b/software/base/src/test/java/brooklyn/entity/software/StaticSensorTest.java
@@ -18,13 +18,13 @@
*/
package brooklyn.entity.software;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.Test;
import brooklyn.entity.BrooklynAppUnitTestSupport;
import brooklyn.entity.basic.BasicEntity;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.event.basic.Sensors;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.config.ConfigBag;
import com.google.common.collect.ImmutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/entity/software/http/HttpRequestSensorTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/software/http/HttpRequestSensorTest.java b/software/base/src/test/java/brooklyn/entity/software/http/HttpRequestSensorTest.java
index de60fb1..ba11077 100644
--- a/software/base/src/test/java/brooklyn/entity/software/http/HttpRequestSensorTest.java
+++ b/software/base/src/test/java/brooklyn/entity/software/http/HttpRequestSensorTest.java
@@ -18,6 +18,7 @@
*/
package brooklyn.entity.software.http;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@@ -29,7 +30,6 @@ import brooklyn.entity.proxying.EntitySpec;
import brooklyn.event.AttributeSensor;
import brooklyn.event.basic.Sensors;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.TestHttpRequestHandler;
import brooklyn.test.TestHttpServer;
import brooklyn.test.entity.TestApplication;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/entity/software/mysql/AbstractToyMySqlEntityTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/software/mysql/AbstractToyMySqlEntityTest.java b/software/base/src/test/java/brooklyn/entity/software/mysql/AbstractToyMySqlEntityTest.java
index 43f1f16..d884abc 100644
--- a/software/base/src/test/java/brooklyn/entity/software/mysql/AbstractToyMySqlEntityTest.java
+++ b/software/base/src/test/java/brooklyn/entity/software/mysql/AbstractToyMySqlEntityTest.java
@@ -18,6 +18,7 @@
*/
package brooklyn.entity.software.mysql;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -33,7 +34,6 @@ import brooklyn.location.LocationSpec;
import brooklyn.location.MachineProvisioningLocation;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.location.basic.SshMachineLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.collections.MutableList;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.task.system.ProcessTaskWrapper;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/entity/software/ssh/SshCommandIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/software/ssh/SshCommandIntegrationTest.java b/software/base/src/test/java/brooklyn/entity/software/ssh/SshCommandIntegrationTest.java
index c3358f2..caff43a 100644
--- a/software/base/src/test/java/brooklyn/entity/software/ssh/SshCommandIntegrationTest.java
+++ b/software/base/src/test/java/brooklyn/entity/software/ssh/SshCommandIntegrationTest.java
@@ -22,6 +22,7 @@ import static org.testng.Assert.assertTrue;
import java.io.File;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
@@ -37,7 +38,6 @@ import brooklyn.event.AttributeSensor;
import brooklyn.event.basic.Sensors;
import brooklyn.location.Location;
import brooklyn.location.basic.SshMachineLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.test.entity.TestEntity;
import brooklyn.util.collections.MutableMap;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/event/feed/jmx/JmxFeedTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/event/feed/jmx/JmxFeedTest.java b/software/base/src/test/java/brooklyn/event/feed/jmx/JmxFeedTest.java
index 9b8c916..663aba9 100644
--- a/software/base/src/test/java/brooklyn/event/feed/jmx/JmxFeedTest.java
+++ b/software/base/src/test/java/brooklyn/event/feed/jmx/JmxFeedTest.java
@@ -18,7 +18,7 @@
*/
package brooklyn.event.feed.jmx;
-import static brooklyn.test.TestUtils.executeUntilSucceeds;
+import static org.apache.brooklyn.test.TestUtils.executeUntilSucceeds;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
@@ -41,6 +41,7 @@ import javax.management.openmbean.SimpleType;
import javax.management.openmbean.TabularDataSupport;
import javax.management.openmbean.TabularType;
+import org.apache.brooklyn.test.TestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -70,7 +71,6 @@ import brooklyn.location.basic.SimulatedLocation;
import brooklyn.test.Asserts;
import brooklyn.test.GeneralisedDynamicMBean;
import brooklyn.test.JmxService;
-import brooklyn.test.TestUtils;
import brooklyn.test.entity.TestApplication;
import brooklyn.test.entity.TestApplicationImpl;
import brooklyn.test.entity.TestEntity;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/event/feed/jmx/JmxHelperTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/event/feed/jmx/JmxHelperTest.java b/software/base/src/test/java/brooklyn/event/feed/jmx/JmxHelperTest.java
index 5985f98..fda9f15 100644
--- a/software/base/src/test/java/brooklyn/event/feed/jmx/JmxHelperTest.java
+++ b/software/base/src/test/java/brooklyn/event/feed/jmx/JmxHelperTest.java
@@ -33,6 +33,7 @@ import javax.management.NotificationListener;
import javax.management.ObjectName;
import javax.management.StandardEmitterMBean;
+import org.apache.brooklyn.test.TestUtils;
import org.jclouds.util.Throwables2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,7 +44,6 @@ import org.testng.collections.Lists;
import brooklyn.test.GeneralisedDynamicMBean;
import brooklyn.test.JmxService;
-import brooklyn.test.TestUtils;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.exceptions.Exceptions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/event/feed/jmx/RebindJmxFeedTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/event/feed/jmx/RebindJmxFeedTest.java b/software/base/src/test/java/brooklyn/event/feed/jmx/RebindJmxFeedTest.java
index 4e82e74..2234e99 100644
--- a/software/base/src/test/java/brooklyn/event/feed/jmx/RebindJmxFeedTest.java
+++ b/software/base/src/test/java/brooklyn/event/feed/jmx/RebindJmxFeedTest.java
@@ -22,6 +22,7 @@ import static org.testng.Assert.assertEquals;
import java.util.Collection;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterMethod;
@@ -42,7 +43,6 @@ import brooklyn.event.feed.ConfigToAttributes;
import brooklyn.location.Location;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
import brooklyn.location.basic.PortRanges;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.GeneralisedDynamicMBean;
import brooklyn.test.JmxService;
import brooklyn.test.entity.TestEntity;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/location/basic/MachineDetailsEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/location/basic/MachineDetailsEc2LiveTest.java b/software/base/src/test/java/brooklyn/location/basic/MachineDetailsEc2LiveTest.java
index 06f7634..47694b0 100644
--- a/software/base/src/test/java/brooklyn/location/basic/MachineDetailsEc2LiveTest.java
+++ b/software/base/src/test/java/brooklyn/location/basic/MachineDetailsEc2LiveTest.java
@@ -21,6 +21,7 @@ package brooklyn.location.basic;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotNull;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,7 +35,6 @@ import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
import brooklyn.location.MachineDetails;
import brooklyn.location.OsDetails;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.collections.MutableMap;
// This test really belongs in brooklyn-location but depends on AbstractEc2LiveTest in brooklyn-software-base
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/base/src/test/java/brooklyn/location/basic/MachineDetailsGoogleComputeLiveTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/location/basic/MachineDetailsGoogleComputeLiveTest.java b/software/base/src/test/java/brooklyn/location/basic/MachineDetailsGoogleComputeLiveTest.java
index ae52709..f0fa949 100644
--- a/software/base/src/test/java/brooklyn/location/basic/MachineDetailsGoogleComputeLiveTest.java
+++ b/software/base/src/test/java/brooklyn/location/basic/MachineDetailsGoogleComputeLiveTest.java
@@ -21,6 +21,7 @@ package brooklyn.location.basic;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotNull;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -34,7 +35,6 @@ import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
import brooklyn.location.MachineDetails;
import brooklyn.location.OsDetails;
-import brooklyn.test.EntityTestUtils;
import brooklyn.util.collections.MutableMap;
// This test really belongs in brooklyn-location but depends on AbstractGoogleComputeLiveTest in brooklyn-software-base
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/database/src/test/java/brooklyn/entity/database/crate/CrateNodeIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/database/src/test/java/brooklyn/entity/database/crate/CrateNodeIntegrationTest.java b/software/database/src/test/java/brooklyn/entity/database/crate/CrateNodeIntegrationTest.java
index 839fd3f..a8f7be3 100644
--- a/software/database/src/test/java/brooklyn/entity/database/crate/CrateNodeIntegrationTest.java
+++ b/software/database/src/test/java/brooklyn/entity/database/crate/CrateNodeIntegrationTest.java
@@ -20,6 +20,7 @@ package brooklyn.entity.database.crate;
import static org.testng.Assert.assertFalse;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -31,7 +32,6 @@ import brooklyn.entity.basic.Entities;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
public class CrateNodeIntegrationTest {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/database/src/test/java/brooklyn/entity/database/postgresql/PostgreSqlRebindIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/database/src/test/java/brooklyn/entity/database/postgresql/PostgreSqlRebindIntegrationTest.java b/software/database/src/test/java/brooklyn/entity/database/postgresql/PostgreSqlRebindIntegrationTest.java
index b58e685..d74cb15 100644
--- a/software/database/src/test/java/brooklyn/entity/database/postgresql/PostgreSqlRebindIntegrationTest.java
+++ b/software/database/src/test/java/brooklyn/entity/database/postgresql/PostgreSqlRebindIntegrationTest.java
@@ -18,13 +18,13 @@
*/
package brooklyn.entity.database.postgresql;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.rebind.RebindTestFixtureWithApp;
import brooklyn.location.basic.LocalhostMachineProvisioningLocation;
-import brooklyn.test.EntityTestUtils;
import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/messaging/src/test/java/brooklyn/entity/messaging/activemq/ActiveMQEc2LiveTest.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/test/java/brooklyn/entity/messaging/activemq/ActiveMQEc2LiveTest.java b/software/messaging/src/test/java/brooklyn/entity/messaging/activemq/ActiveMQEc2LiveTest.java
index 69bc238..5d1c0fa 100644
--- a/software/messaging/src/test/java/brooklyn/entity/messaging/activemq/ActiveMQEc2LiveTest.java
+++ b/software/messaging/src/test/java/brooklyn/entity/messaging/activemq/ActiveMQEc2LiveTest.java
@@ -28,13 +28,13 @@ import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.Test;
import brooklyn.entity.AbstractEc2LiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import com.google.common.collect.ImmutableList;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/messaging/src/test/java/brooklyn/entity/messaging/activemq/ActiveMQGoogleComputeLiveTest.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/test/java/brooklyn/entity/messaging/activemq/ActiveMQGoogleComputeLiveTest.java b/software/messaging/src/test/java/brooklyn/entity/messaging/activemq/ActiveMQGoogleComputeLiveTest.java
index 2813026..eebde2f 100644
--- a/software/messaging/src/test/java/brooklyn/entity/messaging/activemq/ActiveMQGoogleComputeLiveTest.java
+++ b/software/messaging/src/test/java/brooklyn/entity/messaging/activemq/ActiveMQGoogleComputeLiveTest.java
@@ -22,9 +22,11 @@ import brooklyn.entity.AbstractGoogleComputeLiveTest;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
+
import com.google.common.collect.ImmutableList;
+
import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.testng.annotations.Test;
import javax.jms.Connection;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9e04407d/software/messaging/src/test/java/brooklyn/entity/messaging/activemq/ActiveMQIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/messaging/src/test/java/brooklyn/entity/messaging/activemq/ActiveMQIntegrationTest.java b/software/messaging/src/test/java/brooklyn/entity/messaging/activemq/ActiveMQIntegrationTest.java
index 2434fda..dd0837b 100644
--- a/software/messaging/src/test/java/brooklyn/entity/messaging/activemq/ActiveMQIntegrationTest.java
+++ b/software/messaging/src/test/java/brooklyn/entity/messaging/activemq/ActiveMQIntegrationTest.java
@@ -31,6 +31,7 @@ import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.brooklyn.test.EntityTestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
@@ -45,7 +46,6 @@ import brooklyn.entity.java.UsesJmx.JmxAgentModes;
import brooklyn.entity.proxying.EntitySpec;
import brooklyn.entity.trait.Startable;
import brooklyn.location.Location;
-import brooklyn.test.EntityTestUtils;
import brooklyn.test.entity.TestApplication;
import com.google.common.collect.ImmutableList;