Lets validate the Qpid JMS client <- AMQP 1.0 -> ActiveMQ impl using the Joram compliance suite. (Still not working).

git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@1394300 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Hiram R. Chirino 2012-10-04 22:25:15 +00:00
parent 88dfe0020b
commit f355b16d38
5 changed files with 262 additions and 1 deletions

View File

@ -59,6 +59,20 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<!-- Joram JMS conformance tests -->
<dependency>
<groupId>org.fusesource.joram-jms-tests</groupId>
<artifactId>joram-jms-tests</artifactId>
<version>1.0</version>
<scope>test</scope>
</dependency>
<dependency>
<!-- using it for Jetty's JNDI context to work /w Joram tests. -->
<groupId>org.eclipse.jetty.aggregate</groupId>
<artifactId>jetty-all-server</artifactId>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.apache.activemq</groupId> <groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId> <artifactId>activemq-core</artifactId>

View File

@ -32,7 +32,7 @@ public class JMSClientTest extends AmqpTestSupport {
@Test @Test
public void testSendReceive() throws Exception { public void testSendReceive() throws Exception {
QueueImpl queue = new QueueImpl("BURL:direct://amq.direct//test"); QueueImpl queue = new QueueImpl("queue://testqueue");
int nMsgs = 100; int nMsgs = 100;
final String dataFormat = "%01024d"; final String dataFormat = "%01024d";

View File

@ -0,0 +1,153 @@
/**
* 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.activemq.transport.amqp.joram;
import org.apache.activemq.broker.BrokerFactory;
import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.broker.TransportConnector;
import org.objectweb.jtests.jms.admin.Admin;
import org.apache.qpid.amqp_1_0.jms.impl.ConnectionFactoryImpl;
import org.apache.qpid.amqp_1_0.jms.impl.QueueImpl;
import org.apache.qpid.amqp_1_0.jms.impl.TopicImpl;
import javax.jms.ConnectionFactory;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.io.File;
import java.net.URI;
import java.util.Hashtable;
/**
*
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
public class ActiveMQAdmin implements Admin {
Context context;
{
try {
// Use the jetty JNDI context since it's mutable.
final Hashtable<String, String> env = new Hashtable<String, String>();
env.put("java.naming.factory.initial", "org.eclipse.jetty.jndi.InitialContextFactory");
env.put("java.naming.factory.url.pkgs", "org.eclipse.jetty.jndi");;
context = new InitialContext(env);
} catch (NamingException e) {
throw new RuntimeException(e);
}
}
protected BrokerService createBroker() throws Exception {
return BrokerFactory.createBroker(new URI("broker://()/localhost?persistent=false"));
}
public String getName() {
return getClass().getName();
}
BrokerService broker;
int port;
public void startServer() throws Exception {
if (System.getProperty("basedir") == null) {
File file = new File(".");
System.setProperty("basedir", file.getAbsolutePath());
}
broker = createBroker();
broker.start();
final TransportConnector connector = broker.addConnector("amqp://localhost:0");
port = connector.getConnectUri().getPort();
}
public void stopServer() throws Exception {
broker.stop();
}
public void start() throws Exception {
}
public void stop() throws Exception {
}
public Context createContext() throws NamingException {
return context;
}
public void createQueue(String name) {
try {
context.bind(name, new QueueImpl("queue://"+name));
} catch (NamingException e) {
throw new RuntimeException(e);
}
}
public void createTopic(String name) {
try {
context.bind(name, new TopicImpl("topic://"+name));
} catch (NamingException e) {
throw new RuntimeException(e);
}
}
public void deleteQueue(String name) {
// BrokerTestSupport.delete_queue((Broker)base.broker, name);
try {
context.unbind(name);
} catch (NamingException e) {
throw new RuntimeException(e);
}
}
public void deleteTopic(String name) {
try {
context.unbind(name);
} catch (NamingException e) {
throw new RuntimeException(e);
}
}
public void createConnectionFactory(String name) {
try {
final ConnectionFactory factory = new ConnectionFactoryImpl("localhost", port, null, null);
context.bind(name, factory);
} catch (NamingException e) {
throw new RuntimeException(e);
}
}
public void deleteConnectionFactory(String name) {
try {
context.unbind(name);
} catch (NamingException e) {
throw new RuntimeException(e);
}
}
public void createQueueConnectionFactory(String name) {
createConnectionFactory(name);
}
public void createTopicConnectionFactory(String name) {
createConnectionFactory(name);
}
public void deleteQueueConnectionFactory(String name) {
deleteConnectionFactory(name);
}
public void deleteTopicConnectionFactory(String name) {
deleteConnectionFactory(name);
}
}

View File

@ -0,0 +1,74 @@
/**
* 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.activemq.transport.amqp.joram;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.objectweb.jtests.jms.conform.connection.ConnectionTest;
import org.objectweb.jtests.jms.conform.connection.TopicConnectionTest;
import org.objectweb.jtests.jms.conform.message.MessageBodyTest;
import org.objectweb.jtests.jms.conform.message.MessageDefaultTest;
import org.objectweb.jtests.jms.conform.message.MessageTypeTest;
import org.objectweb.jtests.jms.conform.message.headers.MessageHeaderTest;
import org.objectweb.jtests.jms.conform.message.properties.JMSXPropertyTest;
import org.objectweb.jtests.jms.conform.message.properties.MessagePropertyConversionTest;
import org.objectweb.jtests.jms.conform.message.properties.MessagePropertyTest;
import org.objectweb.jtests.jms.conform.queue.QueueBrowserTest;
import org.objectweb.jtests.jms.conform.queue.TemporaryQueueTest;
import org.objectweb.jtests.jms.conform.selector.SelectorSyntaxTest;
import org.objectweb.jtests.jms.conform.selector.SelectorTest;
import org.objectweb.jtests.jms.conform.session.QueueSessionTest;
import org.objectweb.jtests.jms.conform.session.SessionTest;
import org.objectweb.jtests.jms.conform.session.TopicSessionTest;
import org.objectweb.jtests.jms.conform.session.UnifiedSessionTest;
import org.objectweb.jtests.jms.conform.topic.TemporaryTopicTest;
/**
* @author <a href="http://hiramchirino.com">Hiram Chirino</a>
*/
public class JoramJmsTest extends TestCase {
public static Test suite() {
TestSuite suite = new TestSuite();
// TODO: figure out why the following tests are failing..
// suite.addTestSuite(ConnectionTest.class);
// suite.addTestSuite(TopicConnectionTest.class);
// suite.addTestSuite(MessageHeaderTest.class);
// suite.addTestSuite(MessageBodyTest.class);
// suite.addTestSuite(MessageDefaultTest.class);
// suite.addTestSuite(MessageTypeTest.class);
// suite.addTestSuite(JMSXPropertyTest.class);
// suite.addTestSuite(MessagePropertyConversionTest.class);
// suite.addTestSuite(TemporaryQueueTest.class);
// suite.addTestSuite(SelectorSyntaxTest.class);
// suite.addTestSuite(QueueSessionTest.class);
// suite.addTestSuite(SessionTest.class);
// suite.addTestSuite(TopicSessionTest.class);
// suite.addTestSuite(TemporaryTopicTest.class);
// suite.addTestSuite(UnifiedSessionTest.class);
// suite.addTestSuite(QueueBrowserTest.class);
// suite.addTestSuite(MessagePropertyTest.class);
// suite.addTestSuite(SelectorTest.class);
return suite;
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
}

View File

@ -0,0 +1,20 @@
## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------
# This config file is used by the joram jms tests.
#
jms.provider.admin.class=org.apache.activemq.transport.amqp.joram.ActiveMQAdmin