You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2012/10/05 19:35:08 UTC
svn commit: r1394677 - in /activemq/trunk/activemq-amqp/src:
main/java/org/apache/activemq/transport/amqp/
main/java/org/apache/activemq/transport/amqp/transform/
test/java/org/apache/activemq/transport/amqp/
test/java/org/apache/activemq/transport/amq...
Author: chirino
Date: Fri Oct 5 17:35:07 2012
New Revision: 1394677
URL: http://svn.apache.org/viewvc?rev=1394677&view=rev
Log:
Fixin deadlock in amqp impl. Improved message mapping support and commented out the failing Joram test cases.
Modified:
activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AMQPSslTransportFactory.java
activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpNioTransportFactory.java
activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpProtocolConverter.java
activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpTransportFactory.java
activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpTransportFilter.java
activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/transform/JMSMappingInboundTransformer.java
activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/transform/JMSMappingOutboundTransformer.java
activemq/trunk/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/JMSClientTest.java
activemq/trunk/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/joram/ActiveMQAdmin.java
activemq/trunk/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/joram/JoramJmsTest.java
Modified: activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AMQPSslTransportFactory.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AMQPSslTransportFactory.java?rev=1394677&r1=1394676&r2=1394677&view=diff
==============================================================================
--- activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AMQPSslTransportFactory.java (original)
+++ activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AMQPSslTransportFactory.java Fri Oct 5 17:35:07 2012
@@ -52,11 +52,16 @@ public class AMQPSslTransportFactory ext
public Transport serverConfigure(Transport transport, WireFormat format, HashMap options) throws Exception {
transport = super.serverConfigure(transport, format, options);
- MutexTransport mutex = transport.narrow(MutexTransport.class);
- if (mutex != null) {
- mutex.setSyncOnCommand(true);
+ // strip off the mutex transport.
+ if( transport instanceof MutexTransport ) {
+ transport = ((MutexTransport)transport).getNext();
}
+// MutexTransport mutex = transport.narrow(MutexTransport.class);
+// if (mutex != null) {
+// mutex.setSyncOnCommand(true);
+// }
+
return transport;
}
Modified: activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpNioTransportFactory.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpNioTransportFactory.java?rev=1394677&r1=1394676&r2=1394677&view=diff
==============================================================================
--- activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpNioTransportFactory.java (original)
+++ activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpNioTransportFactory.java Fri Oct 5 17:35:07 2012
@@ -65,11 +65,16 @@ public class AmqpNioTransportFactory ext
public Transport serverConfigure(Transport transport, WireFormat format, HashMap options) throws Exception {
transport = super.serverConfigure(transport, format, options);
- MutexTransport mutex = transport.narrow(MutexTransport.class);
- if (mutex != null) {
- mutex.setSyncOnCommand(true);
+ // strip off the mutex transport.
+ if( transport instanceof MutexTransport ) {
+ transport = ((MutexTransport)transport).getNext();
}
+// MutexTransport mutex = transport.narrow(MutexTransport.class);
+// if (mutex != null) {
+// mutex.setSyncOnCommand(true);
+// }
+
return transport;
}
Modified: activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpProtocolConverter.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpProtocolConverter.java?rev=1394677&r1=1394676&r2=1394677&view=diff
==============================================================================
--- activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpProtocolConverter.java (original)
+++ activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpProtocolConverter.java Fri Oct 5 17:35:07 2012
@@ -19,22 +19,23 @@ package org.apache.activemq.transport.am
import org.apache.activemq.broker.BrokerContext;
import org.apache.activemq.command.*;
import org.apache.activemq.transport.amqp.transform.*;
-import org.apache.activemq.util.*;
+import org.apache.activemq.util.IOExceptionSupport;
+import org.apache.activemq.util.IdGenerator;
+import org.apache.activemq.util.LongSequenceGenerator;
import org.apache.qpid.proton.engine.*;
-import org.apache.qpid.proton.engine.Session;
import org.apache.qpid.proton.engine.impl.ConnectionImpl;
import org.apache.qpid.proton.engine.impl.TransportImpl;
-import org.fusesource.hawtbuf.*;
+import org.fusesource.hawtbuf.Buffer;
+import org.fusesource.hawtbuf.ByteArrayOutputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jms.*;
+import javax.jms.JMSException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
-
-import org.fusesource.hawtbuf.ByteArrayOutputStream;
+import java.util.concurrent.locks.ReentrantLock;
class AmqpProtocolConverter {
@@ -50,6 +51,8 @@ class AmqpProtocolConverter {
this.amqpTransport = amqpTransport;
}
+ ReentrantLock lock = new ReentrantLock();
+
//
// private static final Buffer PING_RESP_FRAME = new PINGRESP().encode();
//
@@ -212,6 +215,8 @@ class AmqpProtocolConverter {
private final ConnectionId connectionId = new ConnectionId(CONNECTION_ID_GENERATOR.generateId());
private ConnectionInfo connectionInfo = new ConnectionInfo();
private long nextSessionId = 0;
+ private long nextTempDestinationId = 0;
+ HashMap<Sender, ActiveMQDestination> tempDestinations = new HashMap<Sender, ActiveMQDestination>();
static abstract class AmqpDeliveryListener {
abstract public void onDelivery(Delivery delivery) throws Exception;
@@ -219,6 +224,7 @@ class AmqpProtocolConverter {
}
private void onConnectionOpen() throws AmqpProtocolException {
+
connectionInfo.setResponseRequired(true);
connectionInfo.setConnectionId(connectionId);
// configureInactivityMonitor(connect.keepAlive());
@@ -246,7 +252,6 @@ class AmqpProtocolConverter {
sendToActiveMQ(connectionInfo, new ResponseHandler() {
public void onResponse(AmqpProtocolConverter converter, Response response) throws IOException {
-
protonConnection.open();
pumpProtonToSocket();
@@ -289,7 +294,7 @@ class AmqpProtocolConverter {
}
}
- InboundTransformer inboundTransformer = new JMSMappingInboundTransformer(ActiveMQJMSVendor.INSTANCE);
+ InboundTransformer inboundTransformer = new AMQPNativeInboundTransformer(ActiveMQJMSVendor.INSTANCE);
class ProducerContext extends AmqpDeliveryListener {
private final ProducerId producerId;
@@ -355,13 +360,13 @@ class AmqpProtocolConverter {
// Client is producing to this receiver object
ProducerId producerId = new ProducerId(sessionContext.sessionId, sessionContext.nextProducerId++);
- ActiveMQDestination destination = ActiveMQDestination.createDestination(receiver.getRemoteTargetAddress(), ActiveMQDestination.QUEUE_TYPE);
- ProducerContext producerContext = new ProducerContext(producerId, destination);
+ ActiveMQDestination dest = ActiveMQDestination.createDestination(receiver.getRemoteTargetAddress(), ActiveMQDestination.QUEUE_TYPE);
+ ProducerContext producerContext = new ProducerContext(producerId, dest);
receiver.setContext(producerContext);
receiver.flow(1024 * 64);
ProducerInfo producerInfo = new ProducerInfo(producerId);
- producerInfo.setDestination(destination);
+ producerInfo.setDestination(dest);
sendToActiveMQ(producerInfo, new ResponseHandler() {
public void onResponse(AmqpProtocolConverter converter, Response response) throws IOException {
receiver.open();
@@ -485,11 +490,30 @@ class AmqpProtocolConverter {
subscriptionsByConsumerId.put(id, consumerContext);
- ActiveMQDestination destination = ActiveMQDestination.createDestination(sender.getRemoteSourceAddress(), ActiveMQDestination.QUEUE_TYPE);
+ ActiveMQDestination dest;
+ if( sender.getRemoteSourceAddress() != null ) {
+ dest = ActiveMQDestination.createDestination(sender.getRemoteSourceAddress(), ActiveMQDestination.QUEUE_TYPE);
+ } else {
+ // lets create a temp dest.
+// if (topic) {
+// dest = new ActiveMQTempTopic(info.getConnectionId(), tempDestinationIdGenerator.getNextSequenceId());
+// } else {
+ dest = new ActiveMQTempQueue(connectionId, nextTempDestinationId++);
+// }
+
+ DestinationInfo info = new DestinationInfo();
+ info.setConnectionId(connectionId);
+ info.setOperationType(DestinationInfo.ADD_OPERATION_TYPE);
+ info.setDestination(dest);
+ sendToActiveMQ(info, null);
+ tempDestinations.put(sender, dest);
+ sender.setLocalSourceAddress(inboundTransformer.getVendor().toAddress(dest));
+ }
+
sender.setContext(consumerContext);
ConsumerInfo consumerInfo = new ConsumerInfo(id);
- consumerInfo.setDestination(destination);
+ consumerInfo.setDestination(dest);
consumerInfo.setPrefetchSize(100);
consumerInfo.setDispatchAsync(true);
Modified: activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpTransportFactory.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpTransportFactory.java?rev=1394677&r1=1394676&r2=1394677&view=diff
==============================================================================
--- activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpTransportFactory.java (original)
+++ activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpTransportFactory.java Fri Oct 5 17:35:07 2012
@@ -55,11 +55,14 @@ public class AmqpTransportFactory extend
public Transport serverConfigure(Transport transport, WireFormat format, HashMap options) throws Exception {
transport = super.serverConfigure(transport, format, options);
- MutexTransport mutex = transport.narrow(MutexTransport.class);
- if (mutex != null) {
- mutex.setSyncOnCommand(true);
+ // strip off the mutex transport.
+ if( transport instanceof MutexTransport ) {
+ transport = ((MutexTransport)transport).getNext();
}
-
+// MutexTransport mutex = transport.narrow(MutexTransport.class);
+// if (mutex != null) {
+// mutex.setSyncOnCommand(true);
+// }
return transport;
}
Modified: activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpTransportFilter.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpTransportFilter.java?rev=1394677&r1=1394676&r2=1394677&view=diff
==============================================================================
--- activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpTransportFilter.java (original)
+++ activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/AmqpTransportFilter.java Fri Oct 5 17:35:07 2012
@@ -59,8 +59,11 @@ public class AmqpTransportFilter extends
public void oneway(Object o) throws IOException {
try {
final Command command = (Command) o;
- synchronized (protocolConverter) {
+ protocolConverter.lock.lock();
+ try {
protocolConverter.onActiveMQCommand(command);
+ } finally {
+ protocolConverter.lock.unlock();
}
} catch (Exception e) {
throw IOExceptionSupport.create(e);
@@ -72,8 +75,11 @@ public class AmqpTransportFilter extends
if (trace) {
TRACE.trace("Received: \n" + command);
}
- synchronized (protocolConverter) {
+ protocolConverter.lock.lock();
+ try {
protocolConverter.onAMQPData((Buffer) command);
+ } finally {
+ protocolConverter.lock.unlock();
}
} catch (IOException e) {
handleException(e);
@@ -83,6 +89,7 @@ public class AmqpTransportFilter extends
}
public void sendToActiveMQ(Command command) {
+ assert protocolConverter.lock.isHeldByCurrentThread();
TransportListener l = transportListener;
if (l != null) {
l.onCommand(command);
@@ -90,6 +97,7 @@ public class AmqpTransportFilter extends
}
public void sendToAmqp(Buffer command) throws IOException {
+ assert protocolConverter.lock.isHeldByCurrentThread();
if (trace) {
TRACE.trace("Sending: \n" + command);
}
Modified: activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/transform/JMSMappingInboundTransformer.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/transform/JMSMappingInboundTransformer.java?rev=1394677&r1=1394676&r2=1394677&view=diff
==============================================================================
--- activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/transform/JMSMappingInboundTransformer.java (original)
+++ activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/transform/JMSMappingInboundTransformer.java Fri Oct 5 17:35:07 2012
@@ -20,6 +20,7 @@ import org.apache.qpid.proton.type.Binar
import org.apache.qpid.proton.type.messaging.*;
import javax.jms.*;
+import java.io.Serializable;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -62,12 +63,14 @@ public class JMSMappingInboundTransforme
} else if (body instanceof AmqpSequence ) {
AmqpSequence sequence = (AmqpSequence) body;
StreamMessage m = vendor.createStreamMessage();
- throw new RuntimeException("not implemented");
-// jms = m;
+ for( Object item : sequence.getValue()) {
+ m.writeObject(item);
+ }
+ rc = m;
} else if (body instanceof AmqpValue) {
Object value = ((AmqpValue) body).getValue();
if( value == null ) {
- rc = vendor.createMessage();
+ rc = vendor.createObjectMessage();
} if( value instanceof String ) {
TextMessage m = vendor.createTextMessage();
m.setText((String) value);
@@ -78,19 +81,22 @@ public class JMSMappingInboundTransforme
m.writeBytes(d.getArray(), d.getArrayOffset(), d.getLength());
rc = m;
} else if( value instanceof List) {
- List d = (List) value;
StreamMessage m = vendor.createStreamMessage();
- throw new RuntimeException("not implemented");
-// jms = m;
+ for( Object item : (List) value) {
+ m.writeObject(item);
+ }
+ rc = m;
} else if( value instanceof Map) {
- Map d = (Map) value;
MapMessage m = vendor.createMapMessage();
- throw new RuntimeException("not implemented");
-// jms = m;
+ final Set<Map.Entry<String, Object>> set = ((Map) value).entrySet();
+ for (Map.Entry<String, Object> entry : set) {
+ m.setObject(entry.getKey(), entry.getValue());
+ }
+ rc = m;
} else {
ObjectMessage m = vendor.createObjectMessage();
- throw new RuntimeException("not implemented");
-// jms = m;
+ m.setObject((Serializable) value);
+ rc = m;
}
} else {
throw new RuntimeException("Unexpected body type: "+body.getClass());
Modified: activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/transform/JMSMappingOutboundTransformer.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/transform/JMSMappingOutboundTransformer.java?rev=1394677&r1=1394676&r2=1394677&view=diff
==============================================================================
--- activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/transform/JMSMappingOutboundTransformer.java (original)
+++ activemq/trunk/activemq-amqp/src/main/java/org/apache/activemq/transport/amqp/transform/JMSMappingOutboundTransformer.java Fri Oct 5 17:35:07 2012
@@ -26,8 +26,10 @@ import org.apache.qpid.proton.type.messa
import javax.jms.*;
import java.io.ByteArrayOutputStream;
+import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
+import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
@@ -95,11 +97,25 @@ public class JMSMappingOutboundTransform
} if( msg instanceof TextMessage ) {
body = new AmqpValue(((TextMessage) msg).getText());
} if( msg instanceof MapMessage ) {
- throw new RuntimeException("Not implemented");
+ final HashMap map = new HashMap();
+ final MapMessage m = (MapMessage) msg;
+ final Enumeration names = m.getMapNames();
+ while (names.hasMoreElements()) {
+ String key = (String) names.nextElement();
+ map.put(key, m.getObject(key));
+ }
+ body = new AmqpValue(map);
} if( msg instanceof StreamMessage ) {
- throw new RuntimeException("Not implemented");
+ ArrayList list = new ArrayList();
+ final StreamMessage m = (StreamMessage) msg;
+ try {
+ while(true) {
+ list.add(m.readObject());
+ }
+ } catch(MessageEOFException e){}
+ body = new AmqpSequence(list);
} if( msg instanceof ObjectMessage ) {
- throw new RuntimeException("Not implemented");
+ body = new AmqpValue(((ObjectMessage) msg).getObject());
}
header.setDurable(msg.getJMSDeliveryMode() == DeliveryMode.PERSISTENT ? true : false);
Modified: activemq/trunk/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/JMSClientTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/JMSClientTest.java?rev=1394677&r1=1394676&r2=1394677&view=diff
==============================================================================
--- activemq/trunk/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/JMSClientTest.java (original)
+++ activemq/trunk/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/JMSClientTest.java Fri Oct 5 17:35:07 2012
@@ -34,7 +34,7 @@ public class JMSClientTest extends AmqpT
QueueImpl queue = new QueueImpl("queue://testqueue");
int nMsgs = 100;
- final String dataFormat = "%01024d";
+ final String dataFormat = "%010240d";
final ConnectionFactoryImpl factory = new ConnectionFactoryImpl("localhost", port, null, null);
Modified: activemq/trunk/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/joram/ActiveMQAdmin.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/joram/ActiveMQAdmin.java?rev=1394677&r1=1394676&r2=1394677&view=diff
==============================================================================
--- activemq/trunk/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/joram/ActiveMQAdmin.java (original)
+++ activemq/trunk/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/joram/ActiveMQAdmin.java Fri Oct 5 17:35:07 2012
@@ -20,7 +20,7 @@ import org.apache.activemq.broker.Broker
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.ConnectionFactoryImpl;
import org.apache.qpid.amqp_1_0.jms.impl.QueueImpl;
import org.apache.qpid.amqp_1_0.jms.impl.TopicImpl;
@@ -31,6 +31,7 @@ import javax.naming.NamingException;
import java.io.File;
import java.net.URI;
import java.util.Hashtable;
+import java.util.logging.*;
/**
*
@@ -40,6 +41,7 @@ public class ActiveMQAdmin implements Ad
Context context;
{
+ // enableJMSFrameTracing();
try {
// Use the jetty JNDI context since it's mutable.
final Hashtable<String, String> env = new Hashtable<String, String>();
@@ -51,6 +53,29 @@ public class ActiveMQAdmin implements Ad
}
}
+ private void enableJMSFrameTracing() {
+ final SimpleFormatter formatter = new SimpleFormatter();
+ Handler handler = new Handler() {
+ @Override
+ public void publish(LogRecord r) {
+ System.out.println(String.format("%s:%s", r.getLoggerName(), r.getMessage()));
+ }
+
+ @Override
+ public void flush() {
+ System.out.flush();
+ }
+
+ @Override
+ public void close() throws SecurityException {
+ }
+ };
+
+ Logger log = Logger.getLogger("RAW");
+ log.addHandler(handler);
+ log.setLevel(Level.FINEST);
+ }
+
protected BrokerService createBroker() throws Exception {
return BrokerFactory.createBroker(new URI("broker://()/localhost?persistent=false"));
}
@@ -59,22 +84,26 @@ public class ActiveMQAdmin implements Ad
return getClass().getName();
}
- BrokerService broker;
- int port;
+ static BrokerService broker;
+ static int port;
public void startServer() throws Exception {
+ if( broker!=null ) {
+ stopServer();
+ }
if (System.getProperty("basedir") == null) {
File file = new File(".");
System.setProperty("basedir", file.getAbsolutePath());
}
broker = createBroker();
+ TransportConnector connector = broker.addConnector("amqp://localhost:0");
broker.start();
- final TransportConnector connector = broker.addConnector("amqp://localhost:0");
port = connector.getConnectUri().getPort();
}
public void stopServer() throws Exception {
broker.stop();
+ broker = null;
}
public void start() throws Exception {
Modified: activemq/trunk/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/joram/JoramJmsTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/joram/JoramJmsTest.java?rev=1394677&r1=1394676&r2=1394677&view=diff
==============================================================================
--- activemq/trunk/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/joram/JoramJmsTest.java (original)
+++ activemq/trunk/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/joram/JoramJmsTest.java Fri Oct 5 17:35:07 2012
@@ -45,25 +45,38 @@ public class JoramJmsTest extends TestCa
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);
+
+ // Passing tests
+ suite.addTestSuite(JMSXPropertyTest.class);
+ suite.addTestSuite(MessageBodyTest.class);
+ suite.addTestSuite(MessageDefaultTest.class);
+ suite.addTestSuite(MessagePropertyConversionTest.class);
+ suite.addTestSuite(MessagePropertyTest.class);
+
+ if (false ) {
+// TODO: Fails due to JMS client impl error.
+ suite.addTestSuite(UnifiedSessionTest.class);
+// TODO: Fails due to https://issues.apache.org/jira/browse/PROTON-62: ClassCastException when processing an Attach frame
+ suite.addTestSuite(QueueSessionTest.class);
+ suite.addTestSuite(SessionTest.class);
+// TODO: Fails due to inconsistent ObjectMessage mapping in the JMS client.
+ suite.addTestSuite(MessageTypeTest.class);
+// TODO: Fails due to temp destinations not being supported yet.
+ suite.addTestSuite(MessageHeaderTest.class);
+ suite.addTestSuite(TemporaryQueueTest.class);
+ suite.addTestSuite(TemporaryTopicTest.class);
+// TODO: Fails due to selectors not being implemented yet.
+ suite.addTestSuite(SelectorSyntaxTest.class);
+ suite.addTestSuite(SelectorTest.class);
+// TODO: Fails due to: javax.jms.IllegalStateException: Cannot set client-id to "publisherConnection"; client-id must be set on connection creation
+ suite.addTestSuite(TopicConnectionTest.class);
+ suite.addTestSuite(TopicSessionTest.class);
+// TODO: figure out why the following tests fail..
+// TODO: figure out why the following tests hang..
+ suite.addTestSuite(ConnectionTest.class);
+ suite.addTestSuite(QueueBrowserTest.class);
+
+ }
return suite;
}