You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2015/01/04 08:28:52 UTC

[1/2] karaf git commit: [KARAF-3430] Add username and password in the generated ActiveMQ connection factory blueprint XML. Fix ActiveMQ pool import Add itests about jms feature

Repository: karaf
Updated Branches:
  refs/heads/karaf-2.3.x cc788d94e -> 09243217a


[KARAF-3430] Add username and password in the generated ActiveMQ connection factory blueprint XML.
Fix ActiveMQ pool import
Add itests about jms feature


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

Branch: refs/heads/karaf-2.3.x
Commit: f688ca46492f19e837b68f7ed48b9b5f8852e023
Parents: cc788d9
Author: Jean-Baptiste Onofré <jb...@apache.org>
Authored: Sun Jan 4 07:53:45 2015 +0100
Committer: Jean-Baptiste Onofré <jb...@apache.org>
Committed: Sun Jan 4 08:11:35 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/karaf/itests/JmsTest.java   | 121 +++++++++++++++++++
 jms/command/pom.xml                             |   1 +
 .../apache/karaf/jms/command/CreateCommand.java |   8 +-
 jms/core/pom.xml                                |   1 +
 .../java/org/apache/karaf/jms/JmsMBean.java     |  10 ++
 .../java/org/apache/karaf/jms/JmsService.java   |  12 ++
 .../apache/karaf/jms/internal/JmsMBeanImpl.java |   8 ++
 .../karaf/jms/internal/JmsServiceImpl.java      |  10 +-
 .../jms/internal/connectionfactory-activemq.xml |   2 +
 9 files changed, 170 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/f688ca46/itests/src/test/java/org/apache/karaf/itests/JmsTest.java
----------------------------------------------------------------------
diff --git a/itests/src/test/java/org/apache/karaf/itests/JmsTest.java b/itests/src/test/java/org/apache/karaf/itests/JmsTest.java
new file mode 100644
index 0000000..66ab608
--- /dev/null
+++ b/itests/src/test/java/org/apache/karaf/itests/JmsTest.java
@@ -0,0 +1,121 @@
+/*
+ * Licensed 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.karaf.itests;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerClass;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+import javax.management.remote.JMXConnector;
+import java.net.URI;
+import java.util.List;
+
+@RunWith(PaxExam.class)
+@ExamReactorStrategy(PerClass.class)
+public class JmsTest extends KarafTestSupport {
+
+    @Before
+    public void installJmsFeatureAndActiveMQBroker() throws Exception {
+        installAndAssertFeature("jms");
+        featuresService.addRepository(new URI("mvn:org.apache.activemq/activemq-karaf/5.10.0/xml/features"));
+        installAndAssertFeature("activemq-broker-noweb");
+    }
+
+    @Test
+    public void testCommands() throws Exception {
+        // jms:create command
+        System.out.println(executeCommand("jms:create -t ActiveMQ -u karaf -p karaf --url tcp://localhost:61616 test"));
+        // give time to fileinstall to load the blueprint file
+        Thread.sleep(5000);
+        // jms:connectionfactories command
+        String connectionFactories = executeCommand("jms:connectionfactories");
+        System.out.println(connectionFactories);
+        assertTrue(connectionFactories.contains("jms/test"));
+        // jms:info command
+        String info = executeCommand("jms:info test");
+        System.out.println(info);
+        assertTrue(info.contains("ActiveMQ"));
+        assertTrue(info.contains("5.10.0"));
+        // jms:send command
+        System.out.println(executeCommand("jms:send test queue message"));
+        // jms:count command
+        String count = executeCommand("jms:count test queue");
+        System.out.println(count);
+        assertTrue(count.contains("1"));
+        // jms:consume command
+        String consumed = executeCommand("jms:consume test queue");
+        System.out.println(consumed);
+        assertTrue(consumed.contains("1 message"));
+        // jms:send & jms:move commands
+        System.out.print(executeCommand("jms:send test queue message"));
+        String move = executeCommand("jms:move test queue other");
+        System.out.println(move);
+        assertTrue(move.contains("1 message"));
+        // jms:queues command
+        String queues = executeCommand("jms:queues test");
+        System.out.println(queues);
+        assertTrue(queues.contains("queue"));
+        assertTrue(queues.contains("other"));
+        // jms:browse command
+        String browse = executeCommand("jms:browse test other");
+        System.out.println(browse);
+        assertTrue(browse.contains("message"));
+        assertTrue(browse.contains("queue://other"));
+        // jms:consume command
+        System.out.println(executeCommand("jms:consume test other"));
+        // jms:delete command
+        System.out.println(executeCommand("jms:delete test"));
+        // jms:connectionfactories command
+        connectionFactories = executeCommand("jms:connectionfactories");
+        System.out.println(connectionFactories);
+    }
+
+    @Test
+    public void testMBean() throws Exception {
+        JMXConnector connector = null;
+        try {
+            connector = this.getJMXConnector();
+            MBeanServerConnection connection = connector.getMBeanServerConnection();
+            ObjectName name = new ObjectName("org.apache.karaf:type=jms,name=root");
+            // create operation
+            connection.invoke(name, "create", new String[]{ "testMBean", "activemq", "tcp://localhost:61616", "karaf", "karaf" }, new String[]{ "java.lang.String", "java.lang.String", "java.lang.String", "java.lang.String", "java.lang.String" });
+            Thread.sleep(5000);
+            List<String> connectionFactories = (List<String>) connection.getAttribute(name, "Connectionfactories");
+            assertEquals(true, connectionFactories.size() >= 1);
+            // send operation
+            connection.invoke(name, "send", new String[]{ "testMBean", "queueMBean", "message", null, "karaf", "karaf" }, new String[]{ "java.lang.String", "java.lang.String", "java.lang.String", "java.lang.String", "java.lang.String", "java.lang.String"});
+            // count operation
+            Integer count = (Integer) connection.invoke(name, "count", new String[]{ "testMBean", "queueMBean", "karaf", "karaf" }, new String[]{ "java.lang.String", "java.lang.String", "java.lang.String", "java.lang.String"});
+            assertEquals(1, count.intValue());
+            // queues operation
+            List<String> queues = (List<String>) connection.invoke(name, "queues", new String[]{ "testMBean", "karaf", "karaf" }, new String[]{ "java.lang.String", "java.lang.String", "java.lang.String"});
+            assertTrue(queues.size() >= 1);
+            // delete operation
+            connection.invoke(name, "delete", new String[]{ "testMBean" }, new String[]{ "java.lang.String" });
+        } finally {
+            if (connector != null) {
+                connector.close();
+            }
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/karaf/blob/f688ca46/jms/command/pom.xml
----------------------------------------------------------------------
diff --git a/jms/command/pom.xml b/jms/command/pom.xml
index c1b4c67..0c4b85a 100644
--- a/jms/command/pom.xml
+++ b/jms/command/pom.xml
@@ -83,6 +83,7 @@
                             org.apache.karaf.shell.console,
                             *
                         </Import-Package>
+                        <DynamicImport-Package>*</DynamicImport-Package>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/f688ca46/jms/command/src/main/java/org/apache/karaf/jms/command/CreateCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/CreateCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/CreateCommand.java
index 5c00466..2cfe235 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/CreateCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/CreateCommand.java
@@ -32,8 +32,14 @@ public class CreateCommand extends JmsCommandSupport {
     @Option(name = "-u", aliases = { "--url" }, description = "The JMS URL. NB: for WebsphereMQ type, the URL is hostname/port/queuemanager/channel", required = true, multiValued = false)
     String url;
 
+    @Option(name = "-u", aliases = { "--username" }, description = "Username to connect to the JMS broker", required = false, multiValued = false)
+    String username = "karaf";
+
+    @Option(name = "-p", aliases = { "--password" }, description = "Password to connect to the JMS broker", required = false, multiValued = false)
+    String password = "karaf";
+
     public Object doExecute() throws Exception {
-        getJmsService().create(name, type, url);
+        getJmsService().create(name, type, url, username, password);
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/f688ca46/jms/core/pom.xml
----------------------------------------------------------------------
diff --git a/jms/core/pom.xml b/jms/core/pom.xml
index ac0edd4..0aa6f44 100644
--- a/jms/core/pom.xml
+++ b/jms/core/pom.xml
@@ -91,6 +91,7 @@
                         <Private-Package>
                             org.apache.karaf.jms.internal
                         </Private-Package>
+                        <DynamicImport-Package>*</DynamicImport-Package>
                     </instructions>
                 </configuration>
             </plugin>

http://git-wip-us.apache.org/repos/asf/karaf/blob/f688ca46/jms/core/src/main/java/org/apache/karaf/jms/JmsMBean.java
----------------------------------------------------------------------
diff --git a/jms/core/src/main/java/org/apache/karaf/jms/JmsMBean.java b/jms/core/src/main/java/org/apache/karaf/jms/JmsMBean.java
index 8540b86..8fb69c7 100644
--- a/jms/core/src/main/java/org/apache/karaf/jms/JmsMBean.java
+++ b/jms/core/src/main/java/org/apache/karaf/jms/JmsMBean.java
@@ -45,6 +45,16 @@ public interface JmsMBean {
     void create(String name, String type, String url) throws MBeanException;
 
     /**
+     * Create a JMS connection factory.
+     *
+     * @param name the JMS connection factory name.
+     * @param type the JMS connection factory type (ActiveMQ or WebsphereMQ).
+     * @param url the JMS connection factory URL. NB: when type is WebsphereMQ, the URL has the format host/port/queuemanager/channel.
+     * @throws MBeanException
+     */
+    void create(String name, String type, String url, String username, String password) throws MBeanException;
+
+    /**
      * Delete a JMS connection factory.
      *
      * @param name the JMS connection factory name.

http://git-wip-us.apache.org/repos/asf/karaf/blob/f688ca46/jms/core/src/main/java/org/apache/karaf/jms/JmsService.java
----------------------------------------------------------------------
diff --git a/jms/core/src/main/java/org/apache/karaf/jms/JmsService.java b/jms/core/src/main/java/org/apache/karaf/jms/JmsService.java
index 8aa970f..31cd492 100644
--- a/jms/core/src/main/java/org/apache/karaf/jms/JmsService.java
+++ b/jms/core/src/main/java/org/apache/karaf/jms/JmsService.java
@@ -46,6 +46,18 @@ public interface JmsService {
      * @param name the JMS connection factory name.
      * @param type the JMS connection factory type (ActiveMQ, WebsphereMQ, ...).
      * @param url the JMS URL to use.
+     * @param username the JMS connection factory authentication username.
+     * @param password the JMS connection factory authentication password.
+     * @throws Exception
+     */
+    void create(String name, String type, String url, String username, String password) throws Exception;
+
+    /**
+     * Create a new JMS connection factory.
+     *
+     * @param name the JMS connection factory name.
+     * @param type the JMS connection factory type (ActiveMQ, WebsphereMQ, ...).
+     * @param url the JMS URL to use.
      * @throws Exception
      */
     void create(String name, String type, String url) throws Exception;

http://git-wip-us.apache.org/repos/asf/karaf/blob/f688ca46/jms/core/src/main/java/org/apache/karaf/jms/internal/JmsMBeanImpl.java
----------------------------------------------------------------------
diff --git a/jms/core/src/main/java/org/apache/karaf/jms/internal/JmsMBeanImpl.java b/jms/core/src/main/java/org/apache/karaf/jms/internal/JmsMBeanImpl.java
index 511b690..85fc385 100644
--- a/jms/core/src/main/java/org/apache/karaf/jms/internal/JmsMBeanImpl.java
+++ b/jms/core/src/main/java/org/apache/karaf/jms/internal/JmsMBeanImpl.java
@@ -54,6 +54,14 @@ public class JmsMBeanImpl extends StandardMBean implements JmsMBean {
         }
     }
 
+    public void create(String name, String type, String url, String username, String password) throws MBeanException {
+        try {
+            jmsService.create(name, type, url, username, password);
+        } catch (Throwable t) {
+            throw new MBeanException(null, t.getMessage());
+        }
+    }
+
     public void delete(String name) throws MBeanException {
         try {
             jmsService.delete(name);

http://git-wip-us.apache.org/repos/asf/karaf/blob/f688ca46/jms/core/src/main/java/org/apache/karaf/jms/internal/JmsServiceImpl.java
----------------------------------------------------------------------
diff --git a/jms/core/src/main/java/org/apache/karaf/jms/internal/JmsServiceImpl.java b/jms/core/src/main/java/org/apache/karaf/jms/internal/JmsServiceImpl.java
index bf31704..252a039 100644
--- a/jms/core/src/main/java/org/apache/karaf/jms/internal/JmsServiceImpl.java
+++ b/jms/core/src/main/java/org/apache/karaf/jms/internal/JmsServiceImpl.java
@@ -39,20 +39,22 @@ public class JmsServiceImpl implements JmsService {
 
     private BundleContext bundleContext;
 
-    public void create(String name, String type, String url) throws Exception {
+    public void create(String name, String type, String url, String username, String password) throws Exception {
         if (!type.equalsIgnoreCase("activemq") && !type.equalsIgnoreCase("webspheremq")) {
             throw new IllegalArgumentException("JMS connection factory type not known");
         }
 
         File karafBase = new File(System.getProperty("karaf.base"));
         File deployFolder = new File(karafBase, "deploy");
-        File  outFile = new File(deployFolder, "connectionfactory-" + name + ".xml");
+        File outFile = new File(deployFolder, "connectionfactory-" + name + ".xml");
 
         if (type.equalsIgnoreCase("activemq")) {
             // activemq
             HashMap<String, String> properties = new HashMap<String, String>();
             properties.put("${name}", name);
             properties.put("${url}", url);
+            properties.put("${username}", username);
+            properties.put("${password}", password);
             copyDataSourceFile(outFile, "connectionfactory-activemq.xml", properties);
         } else {
             // webspheremq
@@ -70,6 +72,10 @@ public class JmsServiceImpl implements JmsService {
         }
     }
 
+    public void create(String name, String type, String url) throws Exception {
+        create(name, type, url, null, null);
+    }
+
     public void delete(String name) throws Exception {
         File karafBase = new File(System.getProperty("karaf.base"));
         File deployFolder = new File(karafBase, "deploy");

http://git-wip-us.apache.org/repos/asf/karaf/blob/f688ca46/jms/core/src/main/resources/org/apache/karaf/jms/internal/connectionfactory-activemq.xml
----------------------------------------------------------------------
diff --git a/jms/core/src/main/resources/org/apache/karaf/jms/internal/connectionfactory-activemq.xml b/jms/core/src/main/resources/org/apache/karaf/jms/internal/connectionfactory-activemq.xml
index 53d73cc..1750283 100644
--- a/jms/core/src/main/resources/org/apache/karaf/jms/internal/connectionfactory-activemq.xml
+++ b/jms/core/src/main/resources/org/apache/karaf/jms/internal/connectionfactory-activemq.xml
@@ -19,6 +19,8 @@
 
     <bean id="activemqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
         <property name="brokerURL" value="${url}" />
+        <property name="userName" value="${username}" />
+        <property name="password" value="${password}" />
     </bean>
 
     <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">


[2/2] karaf git commit: Fix JmsTest itest

Posted by jb...@apache.org.
Fix JmsTest itest


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

Branch: refs/heads/karaf-2.3.x
Commit: 09243217ab0f9ba570a1818fc673e2128d336469
Parents: f688ca4
Author: Jean-Baptiste Onofré <jb...@apache.org>
Authored: Sun Jan 4 08:28:35 2015 +0100
Committer: Jean-Baptiste Onofré <jb...@apache.org>
Committed: Sun Jan 4 08:28:35 2015 +0100

----------------------------------------------------------------------
 .../test/java/org/apache/karaf/itests/JmsTest.java  | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/09243217/itests/src/test/java/org/apache/karaf/itests/JmsTest.java
----------------------------------------------------------------------
diff --git a/itests/src/test/java/org/apache/karaf/itests/JmsTest.java b/itests/src/test/java/org/apache/karaf/itests/JmsTest.java
index 66ab608..e70a072 100644
--- a/itests/src/test/java/org/apache/karaf/itests/JmsTest.java
+++ b/itests/src/test/java/org/apache/karaf/itests/JmsTest.java
@@ -16,9 +16,9 @@ package org.apache.karaf.itests;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.junit.PaxExam;
-import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
-import org.ops4j.pax.exam.spi.reactors.PerClass;
+import org.ops4j.pax.exam.junit.ExamReactorStrategy;
+import org.ops4j.pax.exam.junit.JUnit4TestRunner;
+import org.ops4j.pax.exam.spi.reactors.AllConfinedStagedReactorFactory;
 
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.assertEquals;
@@ -29,15 +29,17 @@ import javax.management.remote.JMXConnector;
 import java.net.URI;
 import java.util.List;
 
-@RunWith(PaxExam.class)
-@ExamReactorStrategy(PerClass.class)
+@RunWith(JUnit4TestRunner.class)
+@ExamReactorStrategy(AllConfinedStagedReactorFactory.class)
 public class JmsTest extends KarafTestSupport {
 
     @Before
     public void installJmsFeatureAndActiveMQBroker() throws Exception {
-        installAndAssertFeature("jms");
+        featuresService.installFeature("jms");
+        assertFeatureInstalled("jms");
         featuresService.addRepository(new URI("mvn:org.apache.activemq/activemq-karaf/5.10.0/xml/features"));
-        installAndAssertFeature("activemq-broker-noweb");
+        featuresService.installFeature("activemq-broker-noweb");
+        assertFeatureInstalled("activemq-broker-noweb");
     }
 
     @Test