activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cschnei...@apache.org
Subject activemq git commit: [AMQ-6546] Big refactoring and cleanup of karaf itests
Date Wed, 04 Jan 2017 16:09:53 GMT
Repository: activemq
Updated Branches:
  refs/heads/master 56917c07e -> 4dd3aa420


[AMQ-6546] Big refactoring and cleanup of karaf itests


Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/4dd3aa42
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/4dd3aa42
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/4dd3aa42

Branch: refs/heads/master
Commit: 4dd3aa420e6abd0e5d528ab37eaad9bd0b874491
Parents: 56917c0
Author: Christian Schneider <chris@die-schneider.net>
Authored: Mon Dec 19 09:28:03 2016 +0100
Committer: Christian Schneider <chris@die-schneider.net>
Committed: Wed Jan 4 16:55:19 2017 +0100

----------------------------------------------------------------------
 .../karaf/itest/AbstractFeatureTest.java        | 211 ++++++++-----------
 .../karaf/itest/AbstractJmsFeatureTest.java     |   3 +-
 .../itest/ActiveMQAMQPBrokerFeatureTest.java    |  32 ++-
 .../itest/ActiveMQBrokerBlueprintTest.java      |   2 +-
 .../karaf/itest/ActiveMQBrokerFeatureTest.java  |  56 +----
 .../itest/ActiveMQBrokerNdCamelFeatureTest.java |  56 ++---
 ...ctiveMQBrokerNdExternalCamelFeatureTest.java |  52 ++---
 .../ActiveMQBrokerNdWebConsoleFeatureTest.java  |   9 +-
 .../itest/ActiveMQBrokerRuntimeConfigTest.java  |  47 ++---
 .../karaf/itest/ActiveMQClientBundleTest.java   |   7 +-
 .../activemq/karaf/itest/ObrFeatureTest.java    |  89 +++-----
 pom.xml                                         |   2 +-
 12 files changed, 208 insertions(+), 358 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/4dd3aa42/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/AbstractFeatureTest.java
----------------------------------------------------------------------
diff --git a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/AbstractFeatureTest.java
b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/AbstractFeatureTest.java
index aad2825..95b3348 100644
--- a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/AbstractFeatureTest.java
+++ b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/AbstractFeatureTest.java
@@ -16,6 +16,27 @@
  */
 package org.apache.activemq.karaf.itest;
 
+import static org.junit.Assert.assertTrue;
+import static org.ops4j.pax.exam.CoreOptions.composite;
+import static org.ops4j.pax.exam.CoreOptions.maven;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.features;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.karafDistributionConfiguration;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRuntimeFolder;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.logLevel;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.replaceConfigurationFile;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.PrintStream;
+import java.security.PrivilegedAction;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.FutureTask;
+import java.util.concurrent.TimeUnit;
+
+import javax.inject.Inject;
 import javax.security.auth.Subject;
 
 import org.apache.karaf.features.FeaturesService;
@@ -25,11 +46,12 @@ import org.apache.karaf.shell.api.console.Session;
 import org.apache.karaf.shell.api.console.SessionFactory;
 import org.junit.After;
 import org.junit.Before;
+import org.ops4j.pax.exam.MavenUtils;
 import org.ops4j.pax.exam.Option;
-import org.ops4j.pax.exam.TestProbeBuilder;
 import org.ops4j.pax.exam.ProbeBuilder;
-import org.ops4j.pax.exam.karaf.options.KarafDistributionOption;
+import org.ops4j.pax.exam.TestProbeBuilder;
 import org.ops4j.pax.exam.karaf.options.LogLevelOption;
+import org.ops4j.pax.exam.options.MavenUrlReference;
 import org.ops4j.pax.exam.options.UrlReference;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -37,49 +59,21 @@ import org.osgi.framework.Constants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.inject.Inject;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.FutureTask;
-import java.util.concurrent.TimeUnit;
-
-import static org.ops4j.pax.exam.CoreOptions.*;
-import static org.junit.Assert.assertTrue;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.*;
-
 public abstract class AbstractFeatureTest {
 
+    private static final String KARAF_MAJOR_VERSION = "4.0.0";
     public static final Logger LOG = LoggerFactory.getLogger(AbstractFeatureTest.class);
     public static final long ASSERTION_TIMEOUT = 30000L;
     public static final long COMMAND_TIMEOUT = 30000L;
     public static final String USER = "karaf";
     public static final String PASSWORD = "karaf";
-
-    static String basedir;
-    static {
-        try {
-            File location = new File(AbstractFeatureTest.class.getProtectionDomain().getCodeSource().getLocation().getFile());
-            basedir = new File(location, "../..").getCanonicalPath();
-            System.err.println("basedir=" + basedir);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
+    public static final String RESOURCE_BASE = "src/test/resources/org/apache/activemq/karaf/itest/";
 
     @Inject
     BundleContext bundleContext;
 
-	@Inject
-	FeaturesService featuresService;
+    @Inject
+    FeaturesService featuresService;
 
     @Before
     public void setUp() throws Exception {
@@ -101,7 +95,7 @@ public abstract class AbstractFeatureTest {
 
     ExecutorService executor = Executors.newCachedThreadPool();
 
-    protected String executeCommand(final String command, final Long timeout, final Boolean
silent) {
+    private String executeCommand(final String command, final Long timeout, final Boolean
silent) {
         String response;
         final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
         final PrintStream printStream = new PrintStream(byteArrayOutputStream);
@@ -151,19 +145,17 @@ public abstract class AbstractFeatureTest {
         return executeCommand(command, COMMAND_TIMEOUT, false);
     }
 
-	/**
-	 * Installs a feature and asserts that feature is properly installed.
-	 * @param feature
-	 * @throws Exception
-	 */
-	public void installAndAssertFeature(final String feature) throws Throwable {
-        executeCommand("feature:list -i");
-		executeCommand("feature:install " + feature);
-		assertFeatureInstalled(feature);
-	}
+    /**
+     * Installs a feature and asserts that feature is properly installed.
+     * 
+     * @param feature
+     * @throws Exception
+     */
+    public void installAndAssertFeature(final String feature) throws Throwable {
+        featuresService.installFeature(feature);
+    }
 
     public void assertFeatureInstalled(final String feature) throws Throwable {
-        executeCommand("feature:list -i");
         withinReason(new Callable<Boolean>() {
             @Override
             public Boolean call() throws Exception {
@@ -172,95 +164,49 @@ public abstract class AbstractFeatureTest {
             }
         });
     }
-
-    public boolean verifyBundleInstalled(final String bundleName) throws Exception {
-        boolean found = false;
+    
+    public Bundle getBundle(String symName) {
         for (Bundle bundle: bundleContext.getBundles()) {
-            LOG.debug("Checking: " + bundle.getSymbolicName());
-            if (bundle.getSymbolicName().contains(bundleName)) {
-                found = true;
-                break;
+            if (bundle.getSymbolicName().contains(symName)) {
+                return bundle;
             }
         }
-        return found;
-    }
-
-	public static String karafVersion() {
-        return System.getProperty("karafVersion", "unknown-need-env-var");
-    }
-
-    public static UrlReference getActiveMQKarafFeatureUrl() {
-        String type = "xml/features";
-        UrlReference urlReference = mavenBundle().groupId("org.apache.activemq").
-            artifactId("activemq-karaf").versionAsInProject().type(type);
-        System.err.println("FeatureURL: " + urlReference.getURL());
-        return urlReference;
-    }
-
-    // for use from a probe
-    public String getCamelFeatureUrl() {
-        return getCamelFeatureUrl(System.getProperty("camel.version", "unknown"));
-    }
-
-    public static String getCamelFeatureUrl(String ver) {
-        return "mvn:org.apache.camel.karaf/apache-camel/"
-        + ver
-        + "/xml/features";
-    }
-
-    public static UrlReference getKarafFeatureUrl() {
-        LOG.info("*** The karaf version is " + karafVersion() + " ***");
-
-        String type = "xml/features";
-        return mavenBundle().groupId("org.apache.karaf.assemblies.features").
-            artifactId("standard").version(karafVersion()).type(type);
+        throw new RuntimeException("Bundle " + symName + " not found");
     }
 
-    public static Option[] configureBrokerStart(Option[] existingOptions, String xmlConfig)
{
-        existingOptions = append(
-                replaceConfigurationFile("etc/activemq.xml", new File(basedir + "/src/test/resources/org/apache/activemq/karaf/itest/"
+ xmlConfig + ".xml")),
-                existingOptions);
-        return append(
-                replaceConfigurationFile("etc/org.apache.activemq.server-default.cfg", new
File(basedir + "/src/test/resources/org/apache/activemq/karaf/itest/org.apache.activemq.server-default.cfg")),
-                existingOptions);
+    public static Option configureBrokerStart(String xmlConfig) {
+        return composite(
+                replaceConfigurationFile("etc/activemq.xml", new File(RESOURCE_BASE + xmlConfig
+ ".xml")),
+                replaceConfigurationFile("etc/org.apache.activemq.server-default.cfg", 
+                                         new File(RESOURCE_BASE + "org.apache.activemq.server-default.cfg"))
+                );
     }
 
-    public static Option[] configureBrokerStart(Option[] existingOptions) {
-        final String xmlConfig = "activemq";
-        return configureBrokerStart(existingOptions, xmlConfig);
+    public static Option configureBrokerStart() {
+        return configureBrokerStart("activemq");
     }
 
-    public static Option[] append(Option toAdd, Option[] existingOptions) {
-        ArrayList<Option> newOptions = new ArrayList<Option>();
-        newOptions.addAll(Arrays.asList(existingOptions));
-        newOptions.add(toAdd);
-        return newOptions.toArray(new Option[]{});
+    public static Option configure(String... features) {
+        MavenUrlReference karafUrl = maven().groupId("org.apache.karaf").artifactId("apache-karaf")
+            .type("tar.gz").versionAsInProject();
+        UrlReference camelUrl = maven().groupId("org.apache.camel.karaf")
+            .artifactId("apache-camel").type("xml").classifier("features").versionAsInProject();
+        UrlReference activeMQUrl = maven().groupId("org.apache.activemq").
+            artifactId("activemq-karaf").versionAsInProject().type("xml").classifier("features").versionAsInProject();
+        return composite(
+         karafDistributionConfiguration().frameworkUrl(karafUrl).karafVersion(KARAF_MAJOR_VERSION)
+             .name("Apache Karaf").unpackDirectory(new File("target/paxexam/unpack/")),
+         keepRuntimeFolder(), //
+         logLevel(LogLevelOption.LogLevel.WARN), //
+         editConfigurationFilePut("etc/config.properties", "karaf.startlevel.bundle", "50"),
+         // debugConfiguration("5005", true),
+         features(activeMQUrl, features), //
+         features(camelUrl)
+        );
     }
 
-    public static Option[] configure(String ...features) {
-
-        ArrayList<String> f = new ArrayList<String>();
-        f.addAll(Arrays.asList(features));
-
-        Option[] options =
-            new Option[]{
-                karafDistributionConfiguration().frameworkUrl(
-                    maven().groupId("org.apache.karaf").artifactId("apache-karaf").type("tar.gz").versionAsInProject())
-                    .karafVersion(karafVersion()).name("Apache Karaf")
-                    .unpackDirectory(new File("target/paxexam/unpack/")),
-
-                KarafDistributionOption.keepRuntimeFolder(),
-                logLevel(LogLevelOption.LogLevel.WARN),
-                editConfigurationFilePut("etc/config.properties", "karaf.startlevel.bundle",
"50"),
-                //debugConfiguration("5005", true),
-                features(getActiveMQKarafFeatureUrl(), f.toArray(new String[f.size()]))};
-        if (f.contains("activemq-camel")) {
-            options = append(features(maven().groupId("org.apache.camel.karaf").artifactId("apache-camel")
-                    .versionAsInProject()
-                    .type("xml/features")), options);
-        }
-
-        return options;
+    protected static String camelVersion() {
+        return MavenUtils.getArtifactVersion("org.apache.camel.karaf", "apache-camel");
     }
 
     protected boolean withinReason(Callable<Boolean> callable) throws Throwable {
@@ -278,4 +224,21 @@ public abstract class AbstractFeatureTest {
             }
         }
     }
+    
+    protected void withinReason(Runnable runable) throws Exception {
+        long max = System.currentTimeMillis() + ASSERTION_TIMEOUT;
+        while (true) {
+            try {
+                runable.run();
+                return;
+            } catch (Throwable t) {
+                if (System.currentTimeMillis() < max) {
+                    TimeUnit.SECONDS.sleep(1);
+                    continue;
+                } else {
+                    throw t;
+                }
+            }
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/activemq/blob/4dd3aa42/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/AbstractJmsFeatureTest.java
----------------------------------------------------------------------
diff --git a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/AbstractJmsFeatureTest.java
b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/AbstractJmsFeatureTest.java
index 16e9eeb..5e98b41 100644
--- a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/AbstractJmsFeatureTest.java
+++ b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/AbstractJmsFeatureTest.java
@@ -71,11 +71,10 @@ public abstract class AbstractJmsFeatureTest extends AbstractFeatureTest
{
         connection.close();
     }
 
-    protected Connection getConnection() throws Throwable {
+    protected Connection getConnection() throws Exception {
         ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
         Connection connection = factory.createConnection(AbstractFeatureTest.USER, AbstractFeatureTest.PASSWORD);
         connection.start();
-
         return connection;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/activemq/blob/4dd3aa42/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQAMQPBrokerFeatureTest.java
----------------------------------------------------------------------
diff --git a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQAMQPBrokerFeatureTest.java
b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQAMQPBrokerFeatureTest.java
index 5c6c85d..51e9946 100644
--- a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQAMQPBrokerFeatureTest.java
+++ b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQAMQPBrokerFeatureTest.java
@@ -16,10 +16,6 @@
  */
 package org.apache.activemq.karaf.itest;
 
-import static org.junit.Assert.assertTrue;
-
-import java.util.concurrent.Callable;
-
 import javax.jms.Connection;
 
 import org.apache.qpid.jms.JmsConnectionFactory;
@@ -29,41 +25,41 @@ import org.junit.runner.RunWith;
 import org.ops4j.pax.exam.Configuration;
 import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerClass;
 
 @RunWith(PaxExam.class)
+@ExamReactorStrategy(PerClass.class)
 public class ActiveMQAMQPBrokerFeatureTest extends ActiveMQBrokerFeatureTest {
     private static final Integer AMQP_PORT = 61636;
 
     @Configuration
     public static Option[] configure() {
-        Option[] configure = configure("activemq", "activemq-amqp-client");
-
-        Option[] configuredOptions = configureBrokerStart(configure);
-
-        return configuredOptions;
+        return new Option[] //
+        {
+         configure("activemq", "activemq-amqp-client"), //
+         configureBrokerStart()
+        };
     }
 
     @Override
-    protected Connection getConnection() throws Throwable {
-        withinReason(new Callable<Boolean>() {
-            @Override
-            public Boolean call() throws Exception {
-                assertTrue("qpid jms client bundle installed", verifyBundleInstalled("org.apache.qpid.jms.client"));
-                return true;
+    protected Connection getConnection() throws Exception {
+        withinReason(new Runnable() {
+            public void run() {
+                getBundle("org.apache.qpid.jms.client");
             }
         });
 
         String amqpURI = "amqp://localhost:" + AMQP_PORT;
         JmsConnectionFactory factory = new JmsConnectionFactory(amqpURI);
-
         factory.setUsername(AbstractFeatureTest.USER);
         factory.setPassword(AbstractFeatureTest.PASSWORD);
-
         Connection connection = factory.createConnection();
+        
         connection.start();
         return connection;
     }
-
+    
     @Override
     @Ignore
     @Test(timeout = 5 * 60 * 1000)

http://git-wip-us.apache.org/repos/asf/activemq/blob/4dd3aa42/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerBlueprintTest.java
----------------------------------------------------------------------
diff --git a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerBlueprintTest.java
b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerBlueprintTest.java
index c97a485..8fb4e0f 100644
--- a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerBlueprintTest.java
+++ b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerBlueprintTest.java
@@ -39,7 +39,7 @@ public class ActiveMQBrokerBlueprintTest extends AbstractJmsFeatureTest
{
         {
          composite(super.configure("activemq", "activemq-blueprint")),
          replaceConfigurationFile("deploy/activemq-blueprint.xml", 
-                                  new File(basedir + "/src/test/resources/org/apache/activemq/karaf/itest/activemq-blueprint.xml"))
+                                  new File("src/test/resources/org/apache/activemq/karaf/itest/activemq-blueprint.xml"))
         };
     }
 

http://git-wip-us.apache.org/repos/asf/activemq/blob/4dd3aa42/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerFeatureTest.java
----------------------------------------------------------------------
diff --git a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerFeatureTest.java
b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerFeatureTest.java
index 0025afa..f9c2b79 100644
--- a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerFeatureTest.java
+++ b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerFeatureTest.java
@@ -16,12 +16,6 @@
  */
 package org.apache.activemq.karaf.itest;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.Properties;
-import java.util.concurrent.Callable;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.ops4j.pax.exam.Option;
@@ -43,29 +37,11 @@ public class ActiveMQBrokerFeatureTest extends AbstractJmsFeatureTest
{
 
     @Configuration
     public static Option[] configure() {
-        return configureBrokerStart(configure("activemq"));
-    }
-
-    protected final File file = new File("../../../classes/META-INF/maven/dependencies.properties");
-
-    public final String getArtifactVersion(final String groupId, final String artifactId)
{
-        final Properties dependencies = new Properties();
-        try (FileInputStream fis = new FileInputStream(file)){
-            dependencies.load(fis);
-            final String version = dependencies
-                .getProperty(groupId + "/" + artifactId + "/version");
-            if (version == null) {
-                throw new RuntimeException(
-                    "Could not resolve version. Do you have a dependency for " + groupId
+ "/"
-                        + artifactId + " in your maven project?");
-            }
-            return version;
-        }
-        catch (IOException e) {
-            throw new RuntimeException("Could not resolve version for groupId:" + groupId
-                + " artifactId:" + artifactId
-                + " by reading the dependency information generated by maven.", e);
-        }
+        return new Option[] //
+        {
+         configure("activemq"), //
+         configureBrokerStart()
+        };
     }
 
     protected String installWrappedBundle(WrappedUrlProvisionOption option) {
@@ -75,20 +51,10 @@ public class ActiveMQBrokerFeatureTest extends AbstractJmsFeatureTest
{
     @Test(timeout=5 * 60 * 1000)
     public void test() throws Throwable {
 
-        withinReason(new Callable<Boolean>() {
-            @Override
-            public Boolean call() throws Exception {
+        withinReason(new Runnable() {
+            public void run() {
                 assertEquals("brokerName = amq-broker", executeCommand("activemq:list").trim());
-                return true;
-            }
-        });
-
-
-        withinReason(new Callable<Boolean>(){
-            @Override
-            public Boolean call() throws Exception {
                 assertTrue(executeCommand("activemq:bstat").trim().contains("BrokerName =
amq-broker"));
-                return true;
             }
         });
 
@@ -96,13 +62,11 @@ public class ActiveMQBrokerFeatureTest extends AbstractJmsFeatureTest
{
         final String nameAndPayload = String.valueOf(System.currentTimeMillis());
         produceMessage(nameAndPayload);
 
-        executeCommand("activemq:bstat", COMMAND_TIMEOUT, false).trim();
+        executeCommand("activemq:bstat").trim();
 
-        withinReason(new Callable<Boolean>(){
-            @Override
-            public Boolean call() throws Exception {
+        withinReason(new Runnable() {
+            public void run() {
                 assertEquals("JMS_BODY_FIELD:JMSText = " + nameAndPayload, executeCommand("activemq:browse
--amqurl tcp://localhost:61616 --user karaf --password karaf -Vbody " + nameAndPayload).trim());
-                return true;
             }
         });
 

http://git-wip-us.apache.org/repos/asf/activemq/blob/4dd3aa42/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdCamelFeatureTest.java
----------------------------------------------------------------------
diff --git a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdCamelFeatureTest.java
b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdCamelFeatureTest.java
index b2a26ab..7a8b001 100644
--- a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdCamelFeatureTest.java
+++ b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdCamelFeatureTest.java
@@ -17,74 +17,44 @@
 package org.apache.activemq.karaf.itest;
 
 import java.io.File;
-import java.util.concurrent.Callable;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.MavenUtils;
 import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.Configuration;
 import org.ops4j.pax.exam.junit.PaxExam;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.ops4j.pax.exam.CoreOptions.composite;
 import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.replaceConfigurationFile;
 
 @RunWith(PaxExam.class)
 public class ActiveMQBrokerNdCamelFeatureTest extends AbstractJmsFeatureTest {
 
     @Configuration
     public static Option[] configure() {
-        return append(
-                editConfigurationFilePut("etc/system.properties", "camel.version", MavenUtils.getArtifactVersion("org.apache.camel.karaf",
"apache-camel")),
-                configure("activemq", "activemq-camel"));
+        return new Option[] //
+        {
+         composite(configure("activemq", "activemq-camel")),
+         editConfigurationFilePut("etc/system.properties", "camel.version", camelVersion()),
+         replaceConfigurationFile("etc/activemq.xml", new File(RESOURCE_BASE + "activemq-nd-camel.xml")),
+         replaceConfigurationFile("etc/org.apache.activemq.server-default.cfg", new File(RESOURCE_BASE
+ "org.apache.activemq.server-default.cfg"))
+        };
     }
 
     @Test(timeout = 2 * 60 * 1000)
     public void test() throws Throwable {
-        System.err.println(executeCommand("feature:list").trim());
-
+        System.err.println(executeCommand("feature:list -i").trim());
         assertFeatureInstalled("activemq");
 
-        assertTrue("activemq-camel bundle installed", verifyBundleInstalled("org.apache.activemq.activemq-camel"));
-
-        withinReason(new Callable<Boolean>() {
-            @Override
-            public Boolean call() throws Exception {
-                assertTrue("activemq-camel bundle installed", verifyBundleInstalled("org.apache.activemq.activemq-camel"));
-                return true;
-            }
-        });
-
-        // start broker with embedded camel route
-        String karafDir = System.getProperty("karaf.base");
-        File target = new File(karafDir + "/etc/activemq.xml");
-        copyFile(new File(basedir + "/../../../src/test/resources/org/apache/activemq/karaf/itest/activemq-nd-camel.xml"),
target);
-        target = new File(karafDir + "/etc/org.apache.activemq.server-default.cfg");
-        copyFile(new File(basedir + "/../../../src/test/resources/org/apache/activemq/karaf/itest/org.apache.activemq.server-default.cfg"),
target);
-
-        withinReason(new Callable<Boolean>() {
-            @Override
-            public Boolean call() throws Exception {
+        withinReason(new Runnable() {
+            public void run() {
+                getBundle("org.apache.activemq.activemq-camel");
                 assertEquals("brokerName = amq-broker", executeCommand("activemq:list").trim());
-                return true;
-            }
-        });
-
-
-        withinReason(new Callable<Boolean>(){
-            @Override
-            public Boolean call() throws Exception {
                 assertTrue(executeCommand("activemq:bstat").trim().contains("BrokerName =
amq-broker"));
-                return true;
-            }
-        });
-
-        withinReason(new Callable<Boolean>(){
-            @Override
-            public Boolean call() throws Exception {
                 assertTrue("we have camel consumers", executeCommand("activemq:dstat").trim().contains("camel_in"));
-                return true;
             }
         });
 

http://git-wip-us.apache.org/repos/asf/activemq/blob/4dd3aa42/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdExternalCamelFeatureTest.java
----------------------------------------------------------------------
diff --git a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdExternalCamelFeatureTest.java
b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdExternalCamelFeatureTest.java
index c217c20..9434f0b 100644
--- a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdExternalCamelFeatureTest.java
+++ b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdExternalCamelFeatureTest.java
@@ -16,74 +16,54 @@
  */
 package org.apache.activemq.karaf.itest;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.replaceConfigurationFile;
+
 import java.io.File;
 import java.util.concurrent.Callable;
 
 import org.junit.Ignore;
 import org.junit.Test;
 import org.ops4j.pax.exam.Configuration;
-import org.ops4j.pax.exam.MavenUtils;
 import org.ops4j.pax.exam.Option;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.replaceConfigurationFile;
-
 //@RunWith(PaxExam.class)
 @Ignore
 public class ActiveMQBrokerNdExternalCamelFeatureTest extends AbstractJmsFeatureTest {
 
     @Configuration
     public static Option[] configure() {
-        Option[] baseOptions = configure("activemq");
-        // copy camel.xml into a temporary directory in karaf, so we later can hot-deploy
it
-        baseOptions = append(replaceConfigurationFile("data/tmp/camel.xml", new File(basedir
+ "/src/test/resources/org/apache/activemq/karaf/itest/camel.xml")), baseOptions);
-        baseOptions = append(editConfigurationFilePut("etc/system.properties", "camel.version",
MavenUtils.getArtifactVersion("org.apache.camel.karaf", "apache-camel")), baseOptions);
-        return configureBrokerStart(baseOptions);
+        return new Option[] //
+        {
+         configure("activemq"),
+         // copy camel.xml into a temporary directory in karaf, so we later can hot-deploy
it
+         replaceConfigurationFile("data/tmp/camel.xml", new File(RESOURCE_BASE + "camel.xml")),
+         editConfigurationFilePut("etc/system.properties", "camel.version", camelVersion())
+        };
     }
 
     @Ignore("camel.xml from auto deploy directory does not seem to get picked up, no idea
why atm")
     @Test(timeout = 2 * 60 * 1000)
     public void test() throws Throwable {
-
         assertFeatureInstalled("activemq");
-        executeCommand("feature:repo-add " + getCamelFeatureUrl());
         installAndAssertFeature("camel");
         installAndAssertFeature("activemq-camel");
 
-        withinReason(new Callable<Boolean>() {
-            @Override
-            public Boolean call() throws Exception {
+        withinReason(new Runnable() {
+            public void run() {
                 assertEquals("brokerName = amq-broker", executeCommand("activemq:list").trim());
-                return true;
-            }
-        });
-
-
-        withinReason(new Callable<Boolean>(){
-            @Override
-            public Boolean call() throws Exception {
                 assertTrue(executeCommand("activemq:bstat").trim().contains("BrokerName =
amq-broker"));
-                return true;
+                getBundle("org.apache.activemq.activemq-camel");
             }
         });
 
-        withinReason(new Callable<Boolean>() {
-            @Override
-            public Boolean call() throws Exception {
-                assertTrue("activemq-camel bundle installed", verifyBundleInstalled("org.apache.activemq.activemq-camel"));
-                return true;
-            }
-        });
-
-        assertFeatureInstalled("activemq-camel");
-
         System.err.println(executeCommand("activemq:bstat").trim());
 
         // hot deploy the camel.xml file by copying it to the deploy directory
-        System.err.println("Karaf is running in dir: " + System.getProperty("karaf.base"));
         String karafDir = System.getProperty("karaf.base");
+        System.err.println("Karaf is running in dir: " + karafDir);
         System.err.println("Hot deploying Camel application");
         copyFile(new File(karafDir + "/data/tmp/camel.xml"), new File(karafDir + "/deploy/camel.xml"));
 

http://git-wip-us.apache.org/repos/asf/activemq/blob/4dd3aa42/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdWebConsoleFeatureTest.java
----------------------------------------------------------------------
diff --git a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdWebConsoleFeatureTest.java
b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdWebConsoleFeatureTest.java
index bc0ef16..ef09bf8 100644
--- a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdWebConsoleFeatureTest.java
+++ b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerNdWebConsoleFeatureTest.java
@@ -39,9 +39,12 @@ public class ActiveMQBrokerNdWebConsoleFeatureTest extends ActiveMQBrokerFeature
 
     @Configuration
     public static Option[] configure() {
-        return append(CoreOptions.mavenBundle("commons-codec", "commons-codec").versionAsInProject(),
-                append(CoreOptions.mavenBundle("commons-httpclient", "commons-httpclient").versionAsInProject(),
-                configure("activemq-broker")));
+        return new Option[] //
+        {
+         CoreOptions.mavenBundle("commons-codec", "commons-codec").versionAsInProject(),
+         CoreOptions.mavenBundle("commons-httpclient", "commons-httpclient").versionAsInProject(),
+         configure("activemq-broker")
+        };
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/activemq/blob/4dd3aa42/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerRuntimeConfigTest.java
----------------------------------------------------------------------
diff --git a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerRuntimeConfigTest.java
b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerRuntimeConfigTest.java
index 6b806ec..2785d06 100644
--- a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerRuntimeConfigTest.java
+++ b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQBrokerRuntimeConfigTest.java
@@ -16,50 +16,43 @@
  */
 package org.apache.activemq.karaf.itest;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.replaceConfigurationFile;
+
 import java.io.File;
 import java.util.Date;
-import java.util.concurrent.Callable;
 import java.util.concurrent.TimeUnit;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.junit.PaxExam;
 
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.replaceConfigurationFile;
-
 @RunWith(PaxExam.class)
 public class ActiveMQBrokerRuntimeConfigTest extends AbstractJmsFeatureTest {
 
     @Configuration
     public static Option[] configure() {
-        return append(editConfigurationFilePut("etc/org.apache.activemq.server-default.cfg",
"config.check", "false"),
-                configureBrokerStart(
-                        append(replaceConfigurationFile("data/tmp/modified-config.xml",
-                                new File(basedir + "/src/test/resources/org/apache/activemq/karaf/itest/activemq-runtime-config-mod.xml")),
-                                configure("activemq")), "activemq-runtime-config"));
+        return new Option[] //
+            {
+                configure("activemq"),
+             editConfigurationFilePut("etc/org.apache.activemq.server-default.cfg", "config.check",
"false"),
+             replaceConfigurationFile("data/tmp/modified-config.xml",
+                                      new File(RESOURCE_BASE + "activemq-runtime-config-mod.xml")),
+             configureBrokerStart("activemq-runtime-config")
+            };
     }
 
     @Test(timeout = 2 * 60 * 1000)
     public void test() throws Throwable {
 
-        withinReason(new Callable<Boolean>() {
-            @Override
-            public Boolean call() throws Exception {
+        withinReason(new Runnable() {
+            public void run() {
                 assertEquals("brokerName = amq-broker", executeCommand("activemq:list").trim());
-                return true;
-            }
-        });
-
-        withinReason(new Callable<Boolean>(){
-            @Override
-            public Boolean call() throws Exception {
                 assertTrue("3MB limit", executeCommand("activemq:query").trim().contains("MemoryLimit
= 3145728"));
-                return true;
             }
         });
 
@@ -73,11 +66,9 @@ public class ActiveMQBrokerRuntimeConfigTest extends AbstractJmsFeatureTest
{
         copyFile(new File(karafDir + "/data/tmp/modified-config.xml"), target);
         System.err.println("new mod at: " + new Date(target.lastModified()));
 
-        withinReason(new Callable<Boolean>() {
-            @Override
-            public Boolean call() throws Exception {
+        withinReason(new Runnable() {
+            public void run() {
                 assertTrue("4MB limit", executeCommand("activemq:query").trim().contains("MemoryLimit
= 4194304"));
-                return true;
             }
         });
 

http://git-wip-us.apache.org/repos/asf/activemq/blob/4dd3aa42/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQClientBundleTest.java
----------------------------------------------------------------------
diff --git a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQClientBundleTest.java
b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQClientBundleTest.java
index efccfbb..e5d2be9 100644
--- a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQClientBundleTest.java
+++ b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ActiveMQClientBundleTest.java
@@ -19,8 +19,8 @@ package org.apache.activemq.karaf.itest;
 import org.apache.activemq.ActiveMQConnectionFactory;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.junit.PaxExam;
 
 @RunWith(PaxExam.class)
@@ -28,7 +28,10 @@ public class ActiveMQClientBundleTest extends AbstractFeatureTest {
 
     @Configuration
     public static Option[] configure() {
-        return configure("activemq-client");
+        return new Option[] //
+        {
+         configure("activemq-client")
+        };
     }
 
     @Test(timeout = 2 * 60 * 1000)

http://git-wip-us.apache.org/repos/asf/activemq/blob/4dd3aa42/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ObrFeatureTest.java
----------------------------------------------------------------------
diff --git a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ObrFeatureTest.java
b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ObrFeatureTest.java
index 610d1a6..dba2333 100644
--- a/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ObrFeatureTest.java
+++ b/activemq-karaf-itest/src/test/java/org/apache/activemq/karaf/itest/ObrFeatureTest.java
@@ -22,103 +22,84 @@ import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.ops4j.pax.exam.Configuration;
-import org.ops4j.pax.exam.CoreOptions;
-import org.ops4j.pax.exam.MavenUtils;
 import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerMethod;
 import org.osgi.framework.Bundle;
 
-
 @RunWith(PaxExam.class)
+@ExamReactorStrategy(PerMethod.class)
 public class ObrFeatureTest extends AbstractFeatureTest {
 
     @Configuration
     public static Option[] configure() {
-        Option[] options = append(
-                editConfigurationFilePut("etc/system.properties", "camel.version", MavenUtils.getArtifactVersion("org.apache.camel.karaf",
"apache-camel")),
-                configure("obr"));
-        // can't see where these deps die in a paxexam container - vanilla distro unpack
can install war feature ok
-        options = append(CoreOptions.mavenBundle("org.apache.xbean", "xbean-bundleutils").versionAsInProject(),
options);
-        options = append(CoreOptions.mavenBundle("org.apache.xbean", "xbean-asm-util").versionAsInProject(),
options);
-        return append(CoreOptions.mavenBundle("org.apache.xbean", "xbean-finder").versionAsInProject(),
options);
-    }
-
-
-    @Test(timeout=5 * 60 * 1000)
-    public void testWar() throws Throwable {
-        installAndAssertFeature("war");
+        return new Option[] //
+            {
+             configure("obr"),
+             editConfigurationFilePut("etc/system.properties", "camel.version", camelVersion()),
+        };
     }
 
-    @Test(timeout=5 * 60 * 1000)
+    @Test(timeout = 5 * 60 * 1000)
     public void testClient() throws Throwable {
         installAndAssertFeature("activemq-client");
     }
 
-    @Test(timeout=5 * 60 * 1000)
+    @Test(timeout = 5 * 60 * 1000)
     public void testActiveMQ() throws Throwable {
         installAndAssertFeature("activemq");
     }
 
-    @Test(timeout=5 * 60 * 1000)
+    @Test(timeout = 5 * 60 * 1000)
     public void testBroker() throws Throwable {
         installAndAssertFeature("activemq-broker");
     }
 
-    @Test(timeout=5 * 60 * 1000)
+    @Test(timeout = 5 * 60 * 1000)
     public void testCamel() throws Throwable {
-        executeCommand("feature:repo-add " + getCamelFeatureUrl());
         installAndAssertFeature("activemq-camel");
     }
 
-    @Test(timeout=5 * 60 * 1000)
+    @Test(timeout = 5 * 60 * 1000)
     public void testClientWithSpring31() throws Throwable {
-        executeCommand("feature:install spring/3.1.4.RELEASE");
-        installAndAssertFeature("activemq-client");
-        verifyBundleInstalledAndRegisteredServices("activemq-osgi", 2);
+        testWithSpringVersion("3.1.4.RELEASE");
     }
 
-    @Test(timeout=5 * 60 * 1000)
+    @Test(timeout = 5 * 60 * 1000)
     public void testClientWithSpring32() throws Throwable {
-        executeCommand("feature:install spring/3.2.14.RELEASE_1");
-        installAndAssertFeature("activemq-client");
-        verifyBundleInstalledAndRegisteredServices("activemq-osgi", 2);
+        testWithSpringVersion("3.2.14.RELEASE_1");
     }
 
-    @Test(timeout=5 * 60 * 1000)
+    @Test(timeout = 5 * 60 * 1000)
     public void testClientWithSpring40() throws Throwable {
-        executeCommand("feature:install spring/4.0.7.RELEASE_3");
-        installAndAssertFeature("activemq-client");
-        verifyBundleInstalledAndRegisteredServices("activemq-osgi", 2);
+        testWithSpringVersion("4.0.7.RELEASE_3");
     }
 
-    @Test(timeout=5 * 60 * 1000)
+    @Test(timeout = 5 * 60 * 1000)
     public void testClientWithSpring41() throws Throwable {
-        executeCommand("feature:install spring/4.1.7.RELEASE_2");
-        installAndAssertFeature("activemq-client");
-        verifyBundleInstalledAndRegisteredServices("activemq-osgi", 2);
+        testWithSpringVersion("4.1.7.RELEASE_2");
     }
 
-    @Test(timeout=5 * 60 * 1000)
+    @Test(timeout = 5 * 60 * 1000)
     public void testClientWithSpring42() throws Throwable {
-        executeCommand("feature:install spring/4.2.2.RELEASE_1");
+        testWithSpringVersion("4.2.2.RELEASE_1");
+    }
+
+    private void testWithSpringVersion(String version) throws Exception, Throwable {
+        featuresService.installFeature("spring", version);
         installAndAssertFeature("activemq-client");
         verifyBundleInstalledAndRegisteredServices("activemq-osgi", 2);
     }
 
-    public boolean verifyBundleInstalledAndRegisteredServices(final String bundleName, final
int numberOfServices) throws Exception {
-        boolean found = false;
-        for (final Bundle bundle : bundleContext.getBundles()) {
-            LOG.debug("Checking: " + bundle.getSymbolicName());
-            if (bundle.getSymbolicName().contains(bundleName)) {
-                Assert.assertEquals(Bundle.ACTIVE, bundle.getState());
-                // Assert that the bundle has registered some services via blueprint
-                Assert.assertNotNull(bundle.getRegisteredServices());
-                // Assert that the bundle has registered the correct number of services
-                Assert.assertEquals(numberOfServices, bundle.getRegisteredServices().length);
-                found = true;
-                break;
-            }
-        }
-        return found;
+    private void verifyBundleInstalledAndRegisteredServices(final String bundleName,
+                                                           final int numberOfServices)
+        throws Exception {
+        Bundle bundle = getBundle(bundleName);
+        Assert.assertEquals(Bundle.ACTIVE, bundle.getState());
+        // Assert that the bundle has registered some services via blueprint
+        Assert.assertNotNull(bundle.getRegisteredServices());
+        // Assert that the bundle has registered the correct number of services
+        Assert.assertEquals(numberOfServices, bundle.getRegisteredServices().length);
     }
 }

http://git-wip-us.apache.org/repos/asf/activemq/blob/4dd3aa42/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 37c913c..d8a0de7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -135,7 +135,7 @@
     <jaxb-basics-version>0.6.4</jaxb-basics-version>
     <stompjms-version>1.19</stompjms-version>
 
-    <pax-exam-version>4.6.0</pax-exam-version>
+    <pax-exam-version>4.9.1</pax-exam-version>
     <paxexam-karaf-container-version>1.0.0</paxexam-karaf-container-version>
     <pax-runner-version>1.8.6</pax-runner-version>
     <pax-url-version>2.4.3</pax-url-version>


Mime
View raw message