blob: 90ecb18353f84c5c2ffc51730d48dfd56a1a76dc [file] [log] [blame]
/*
* 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.jms.ConnectionFactory;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import java.lang.management.ManagementFactory;
import java.net.Socket;
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");
featureService.addRepository(new URI("mvn:org.apache.activemq/activemq-karaf/5.10.0/xml/features"));
installAndAssertFeature("activemq-broker-noweb");
// check if ActiveMQ is completely started
System.out.println("Waiting for the ActiveMQ transport connector on 61616 ...");
boolean bound = false;
while (!bound) {
try {
Thread.sleep(2000);
Socket socket = new Socket("localhost", 61616);
bound = true;
} catch (Exception e) {
// wait the connection
}
}
}
@Test(timeout = 120000)
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 by looking for the connection factory OSGi service
getOsgiService(ConnectionFactory.class, "name=test" , 30000);
// jms:connectionfactories command
String connectionFactories = executeCommand("jms:connectionfactories");
System.out.println(connectionFactories);
assertContains("jms/test", connectionFactories);
// jms:info command
String info = executeCommand("jms:info test");
System.out.println(info);
assertContains("ActiveMQ", info);
assertContains("5.10.0", info);
// 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);
assertContains("1", count);
// jms:consume command
String consumed = executeCommand("jms:consume test queue");
System.out.println(consumed);
assertContains("1 message", consumed);
// 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);
assertContains("1 message", move);
// jms:queues command
String queues = executeCommand("jms:queues test");
System.out.println(queues);
assertContains("queue", queues);
assertContains("other", queues);
// jms:browse command
String browse = executeCommand("jms:browse test other");
System.out.println(browse);
assertContains("message", browse);
assertContains("queue://other", browse);
// 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(timeout = 120000)
public void testMBean() throws Exception {
MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName name = new ObjectName("org.apache.karaf:type=jms,name=root");
// create operation
System.out.println("JMS MBean create operation invocation");
mbeanServer.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"});
// give time to fileinstall to load the blueprint file by looking for the connection factory OSGi service
getOsgiService(ConnectionFactory.class, "name=testMBean", 30000);
List<String> connectionFactories = (List<String>) mbeanServer.getAttribute(name, "Connectionfactories");
assertEquals(true, connectionFactories.size() >= 1);
// send operation
System.out.println("JMS MBean send operation invocation");
mbeanServer.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
System.out.println("JMS MBean count operation invocation");
Integer count = (Integer) mbeanServer.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
System.out.print("JMS MBean queues operation invocation: ");
List<String> queues = (List<String>) mbeanServer.invoke(name, "queues", new String[]{"testMBean", "karaf", "karaf"}, new String[]{"java.lang.String", "java.lang.String", "java.lang.String"});
System.out.println(queues);
assertTrue(queues.size() >= 1);
// delete operation
System.out.println("JMS MBean delete operation invocation");
mbeanServer.invoke(name, "delete", new String[]{"testMBean"}, new String[]{"java.lang.String"});
}
}