You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2016/11/18 22:48:33 UTC
qpid-jms git commit: QPIDJMS-225 Add additional test coverage
Repository: qpid-jms
Updated Branches:
refs/heads/master 6c067a62a -> 83f5507cc
QPIDJMS-225 Add additional test coverage
Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/83f5507c
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/83f5507c
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/83f5507c
Branch: refs/heads/master
Commit: 83f5507cca3b7616335715c7f76eb106d5b85cc8
Parents: 6c067a6
Author: Timothy Bish <ta...@gmail.com>
Authored: Fri Nov 18 17:48:25 2016 -0500
Committer: Timothy Bish <ta...@gmail.com>
Committed: Fri Nov 18 17:48:25 2016 -0500
----------------------------------------------------------------------
.../jms/exceptions/IdConversionException.java | 9 +-
.../JmsConnectionClosedException.java | 1 -
.../qpid/jms/exceptions/QpidJmsException.java | 12 +-
.../qpid/jms/provider/WrappedAsyncResult.java | 18 +-
.../amqp/message/AmqpJmsMessageFacade.java | 2 +-
.../amqp/message/AmqpJmsTextMessageFacade.java | 2 +-
.../java/org/apache/qpid/jms/JmsQueueTest.java | 8 +
.../org/apache/qpid/jms/JmsSessionTest.java | 4 -
.../java/org/apache/qpid/jms/JmsTopicTest.java | 8 +
.../qpid/jms/consumer/JmsQueueBrowserTest.java | 14 +
.../apache/qpid/jms/meta/JmsConsumerIdTest.java | 11 +
.../apache/qpid/jms/meta/JmsProducerIdTest.java | 11 +
.../apache/qpid/jms/meta/JmsSessionIdTest.java | 11 +
.../jms/producer/JmsTopicPublisherTest.java | 164 ++++++++
.../qpid/jms/provider/NoOpAsyncResultTest.java | 52 +++
.../qpid/jms/provider/ProviderFutureTest.java | 215 ++++++++++
.../qpid/jms/provider/ProviderWrapperTest.java | 389 ++++++++++++++++++-
.../jms/provider/WrappedAsyncResultTest.java | 67 ++++
.../provider/amqp/AmqpProviderFactoryTest.java | 6 +
.../message/AmqpJmsMapMessageFacadeTest.java | 8 +
.../amqp/message/AmqpJmsMessageFacadeTest.java | 89 ++++-
.../message/AmqpJmsStreamMessageFacadeTest.java | 7 +
.../message/AmqpJmsTextMessageFacadeTest.java | 9 +
.../amqp/message/AmqpWritableBufferTest.java | 37 ++
.../qpid/jms/sasl/AbstractMechanismTest.java | 72 ++++
.../qpid/jms/sasl/AnonymousMechanismTest.java | 19 +
.../qpid/jms/sasl/ExternalMechanismTest.java | 19 +
.../qpid/jms/sasl/PlainMechanismTest.java | 19 +
.../qpid/jms/session/JmsSessionClosedTest.java | 6 +
.../jms/session/JmsTopicSessionClosedTest.java | 5 +
.../apache/qpid/jms/util/URISupportTest.java | 43 ++
31 files changed, 1290 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/main/java/org/apache/qpid/jms/exceptions/IdConversionException.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/exceptions/IdConversionException.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/exceptions/IdConversionException.java
index b04b988..c05c992 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/exceptions/IdConversionException.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/exceptions/IdConversionException.java
@@ -20,17 +20,14 @@
*/
package org.apache.qpid.jms.exceptions;
-public class IdConversionException extends QpidJmsException
-{
+public class IdConversionException extends QpidJmsException {
private static final long serialVersionUID = -2349723813650476823L;
- public IdConversionException(String reason)
- {
+ public IdConversionException(String reason) {
super(reason);
}
- public IdConversionException(String reason, Exception cause)
- {
+ public IdConversionException(String reason, Exception cause) {
super(reason, cause);
}
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/main/java/org/apache/qpid/jms/exceptions/JmsConnectionClosedException.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/exceptions/JmsConnectionClosedException.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/exceptions/JmsConnectionClosedException.java
index e39cdb2..94cf989 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/exceptions/JmsConnectionClosedException.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/exceptions/JmsConnectionClosedException.java
@@ -26,7 +26,6 @@ import javax.jms.IllegalStateException;
public class JmsConnectionClosedException extends IllegalStateException {
private static final long serialVersionUID = -7975982446284065025L;
-
public JmsConnectionClosedException(IOException cause) {
super("The JMS connection has been closed: " + extractMessage(cause));
initCause(cause);
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/main/java/org/apache/qpid/jms/exceptions/QpidJmsException.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/exceptions/QpidJmsException.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/exceptions/QpidJmsException.java
index a922530..108ab04 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/exceptions/QpidJmsException.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/exceptions/QpidJmsException.java
@@ -22,20 +22,16 @@ package org.apache.qpid.jms.exceptions;
import javax.jms.JMSException;
-public class QpidJmsException extends JMSException
-{
+public class QpidJmsException extends JMSException {
private static final long serialVersionUID = 751932967255393054L;
- public QpidJmsException(String reason)
- {
+ public QpidJmsException(String reason) {
this(reason, null);
}
- public QpidJmsException(String reason, Exception cause)
- {
+ public QpidJmsException(String reason, Exception cause) {
super(reason);
- if (cause != null)
- {
+ if (cause != null) {
setLinkedException(cause);
initCause(cause);
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/WrappedAsyncResult.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/WrappedAsyncResult.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/WrappedAsyncResult.java
index fe9230f..e382afe 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/WrappedAsyncResult.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/WrappedAsyncResult.java
@@ -30,30 +30,26 @@ public abstract class WrappedAsyncResult implements AsyncResult {
* The AsyncResult to be wrapped by this AsyncResult instance.
*/
public WrappedAsyncResult(AsyncResult wrapped) {
+ if (wrapped == null) {
+ throw new IllegalArgumentException("Wrapped AsyncResult cannot be null");
+ }
+
this.wrapped = wrapped;
}
@Override
public void onFailure(Throwable result) {
- if (wrapped != null) {
- wrapped.onFailure(result);
- }
+ wrapped.onFailure(result);
}
@Override
public void onSuccess() {
- if (wrapped != null) {
- wrapped.onSuccess();
- }
+ wrapped.onSuccess();
}
@Override
public boolean isComplete() {
- if (wrapped != null) {
- return wrapped.isComplete();
- }
-
- return false;
+ return wrapped.isComplete();
}
public AsyncResult getWrappedRequest() {
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
index 1005e04..14b0c52 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
@@ -772,7 +772,7 @@ public class AmqpJmsMessageFacade implements JmsMessageFacade {
@Override
public boolean hasBody() {
- return body == null;
+ return body != null;
}
/**
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsTextMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsTextMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsTextMessageFacade.java
index 5595362..5d89dc1 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsTextMessageFacade.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsTextMessageFacade.java
@@ -114,7 +114,7 @@ public class AmqpJmsTextMessageFacade extends AmqpJmsMessageFacade implements Jm
public boolean hasBody() {
try {
return getText() != null;
- } catch (JMSException e) {
+ } catch (Exception e) {
return false;
}
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsQueueTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsQueueTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsQueueTest.java
index ed8787d..7e28350 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsQueueTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsQueueTest.java
@@ -82,6 +82,14 @@ public class JmsQueueTest extends QpidJmsTestCase {
}
@Test
+ public void testEqualsWithTemporaryQueue() {
+ JmsQueue queue1 = new JmsQueue("name");
+ JmsTemporaryQueue queue2 = new JmsTemporaryQueue("name");
+ assertFalse("should be unequal", queue1.equals(queue2));
+ assertFalse("should still be unequal", queue2.equals(queue1));
+ }
+
+ @Test
public void testHashcodeWithEqualNamedObjects() {
JmsQueue queue1 = new JmsQueue("name");
JmsQueue queue2 = new JmsQueue("name");
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsSessionTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsSessionTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsSessionTest.java
index 27fc511..e12592e 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsSessionTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsSessionTest.java
@@ -37,10 +37,6 @@ import javax.jms.TemporaryQueue;
import javax.jms.TextMessage;
import javax.jms.Topic;
-import org.apache.qpid.jms.JmsConnectionTestSupport;
-import org.apache.qpid.jms.JmsMessageConsumer;
-import org.apache.qpid.jms.JmsSession;
-import org.apache.qpid.jms.JmsTemporaryQueue;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsTopicTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsTopicTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsTopicTest.java
index 702e82b..8cf5013 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsTopicTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsTopicTest.java
@@ -82,6 +82,14 @@ public class JmsTopicTest extends QpidJmsTestCase {
}
@Test
+ public void testEqualsWithTemporaryTopic() {
+ JmsTopic topic1 = new JmsTopic("name");
+ JmsTemporaryTopic topic2 = new JmsTemporaryTopic("name");
+ assertFalse("should be unequal", topic1.equals(topic2));
+ assertFalse("should still be unequal", topic2.equals(topic1));
+ }
+
+ @Test
public void testHashcodeWithEqualNamedObjects() {
JmsTopic topic1 = new JmsTopic("name");
JmsTopic topic2 = new JmsTopic("name");
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/consumer/JmsQueueBrowserTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/consumer/JmsQueueBrowserTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/consumer/JmsQueueBrowserTest.java
index 9dee268..e781d73 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/consumer/JmsQueueBrowserTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/consumer/JmsQueueBrowserTest.java
@@ -19,9 +19,11 @@ package org.apache.qpid.jms.consumer;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
import java.util.Enumeration;
+import javax.jms.IllegalStateException;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.QueueBrowser;
@@ -75,4 +77,16 @@ public class JmsQueueBrowserTest extends JmsConnectionTestSupport {
browser.close();
assertFalse(browse.hasMoreElements());
}
+
+ @Test(timeout = 30000)
+ public void testGetEnumerationClosedBrowser() throws Exception {
+ browser = session.createBrowser(queue);
+
+ browser.close();
+
+ try {
+ browser.getEnumeration();
+ fail("Should throw an IllegalStateException");
+ } catch (IllegalStateException ise) {}
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConsumerIdTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConsumerIdTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConsumerIdTest.java
index 6c40c66..89ff17e 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConsumerIdTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsConsumerIdTest.java
@@ -145,9 +145,20 @@ public class JmsConsumerIdTest {
JmsConsumerId id5 = new JmsConsumerId(firstId, 1);
JmsConsumerId id6 = new JmsConsumerId(secondId.getConnectionId(), 1, 1);
+ // Connection ID
+ IdGenerator generator = new IdGenerator();
+ String connectionId = generator.generateId();
+
+ JmsConsumerId id7 = new JmsConsumerId(connectionId, 1, 2);
+ JmsConsumerId id8 = new JmsConsumerId(connectionId, 1, 3);
+
assertFalse(id3.equals(id4));
assertTrue(id3.equals(id5));
assertTrue(id3.equals(id6));
+ assertFalse(id3.equals(id7));
+ assertFalse(id3.equals(id8));
+ assertFalse(id4.equals(id7));
+ assertFalse(id4.equals(id8));
}
@Test
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsProducerIdTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsProducerIdTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsProducerIdTest.java
index faf73f9..61c2733 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsProducerIdTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsProducerIdTest.java
@@ -145,9 +145,20 @@ public class JmsProducerIdTest {
JmsProducerId id5 = new JmsProducerId(firstId, 1);
JmsProducerId id6 = new JmsProducerId(secondId.getConnectionId(), 1, 3);
+ // Connection ID
+ IdGenerator generator = new IdGenerator();
+ String connectionId = generator.generateId();
+
+ JmsProducerId id7 = new JmsProducerId(connectionId, 1, 2);
+ JmsProducerId id8 = new JmsProducerId(connectionId, 1, 3);
+
assertFalse(id3.equals(id4));
assertTrue(id3.equals(id5));
assertFalse(id3.equals(id6));
+ assertFalse(id3.equals(id7));
+ assertFalse(id3.equals(id8));
+ assertFalse(id4.equals(id7));
+ assertFalse(id4.equals(id8));
}
@Test
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsSessionIdTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsSessionIdTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsSessionIdTest.java
index b16a4d0..6346f81 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsSessionIdTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsSessionIdTest.java
@@ -148,8 +148,19 @@ public class JmsSessionIdTest {
JmsSessionId id4 = new JmsSessionId(firstId, 2);
JmsSessionId id5 = new JmsSessionId(firstId, 1);
+ // Connection ID
+ IdGenerator generator = new IdGenerator();
+ String connectionId = generator.generateId();
+
+ JmsSessionId id6 = new JmsSessionId(connectionId, 1);
+ JmsSessionId id7 = new JmsSessionId(connectionId, 3);
+
assertFalse(id3.equals(id4));
assertTrue(id3.equals(id5));
+ assertFalse(id3.equals(id6));
+ assertFalse(id3.equals(id7));
+ assertFalse(id4.equals(id6));
+ assertFalse(id4.equals(id7));
}
@Test
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsTopicPublisherTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsTopicPublisherTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsTopicPublisherTest.java
new file mode 100644
index 0000000..63dd0b9
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsTopicPublisherTest.java
@@ -0,0 +1,164 @@
+/*
+ * 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.qpid.jms.producer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.fail;
+
+import javax.jms.Destination;
+import javax.jms.InvalidDestinationException;
+import javax.jms.Message;
+import javax.jms.Session;
+import javax.jms.Topic;
+import javax.jms.TopicPublisher;
+
+import org.apache.qpid.jms.JmsConnectionTestSupport;
+import org.apache.qpid.jms.JmsTopicSession;
+import org.apache.qpid.jms.message.JmsOutboundMessageDispatch;
+import org.apache.qpid.jms.provider.mock.MockRemotePeer;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class JmsTopicPublisherTest extends JmsConnectionTestSupport {
+
+ private JmsTopicSession session;
+ private final MockRemotePeer remotePeer = new MockRemotePeer();
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ remotePeer.start();
+ connection = createConnectionToMockProvider();
+ session = (JmsTopicSession) connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
+ }
+
+ @Override
+ @After
+ public void tearDown() throws Exception {
+ remotePeer.terminate();
+ super.tearDown();
+ }
+
+ @Test(timeout = 10000)
+ public void testMultipleCloseCallsNoErrors() throws Exception {
+ Topic topic = session.createTopic(getTestName());
+ TopicPublisher publisher = session.createPublisher(topic);
+ publisher.close();
+ publisher.close();
+ }
+
+ @Test(timeout = 10000)
+ public void testGetTopic() throws Exception {
+ Topic topic = session.createTopic(getTestName());
+ TopicPublisher publisher = session.createPublisher(topic);
+ assertSame(topic, publisher.getTopic());
+ }
+
+ @Test(timeout = 10000)
+ public void testPublishMessage() throws Exception {
+ Topic topic = session.createTopic(getTestName());
+ TopicPublisher publisher = session.createPublisher(topic);
+ Message message = session.createMessage();
+ publisher.publish(message);
+
+ JmsOutboundMessageDispatch envelope = remotePeer.getLastReceivedMessage();
+ assertNotNull(envelope);
+ message = envelope.getMessage();
+ Destination destination = message.getJMSDestination();
+ assertEquals(topic, destination);
+ }
+
+ @Test(timeout = 10000)
+ public void testPublishMessageOnProvidedTopic() throws Exception {
+ Topic topic = session.createTopic(getTestName());
+ TopicPublisher publisher = session.createPublisher(null);
+ Message message = session.createMessage();
+ publisher.publish(topic, message);
+
+ JmsOutboundMessageDispatch envelope = remotePeer.getLastReceivedMessage();
+ assertNotNull(envelope);
+ message = envelope.getMessage();
+ Destination destination = message.getJMSDestination();
+ assertEquals(topic, destination);
+ }
+
+ @Test(timeout = 10000)
+ public void testPublishMessageOnProvidedTopicWhenNotAnonymous() throws Exception {
+ Topic topic = session.createTopic(getTestName());
+ TopicPublisher publisher = session.createPublisher(topic);
+ Message message = session.createMessage();
+
+ try {
+ publisher.publish(session.createTopic(getTestName() + "1"), message);
+ fail("Should throw UnsupportedOperationException");
+ } catch (UnsupportedOperationException uoe) {}
+
+ try {
+ publisher.publish((Topic) null, message);
+ fail("Should throw InvalidDestinationException");
+ } catch (InvalidDestinationException ide) {}
+ }
+
+ @Test(timeout = 10000)
+ public void testPublishMessageWithDeliveryOptions() throws Exception {
+ Topic topic = session.createTopic(getTestName());
+ TopicPublisher publisher = session.createPublisher(topic);
+ Message message = session.createMessage();
+ publisher.publish(message, Message.DEFAULT_DELIVERY_MODE, Message.DEFAULT_PRIORITY, Message.DEFAULT_TIME_TO_LIVE);
+
+ JmsOutboundMessageDispatch envelope = remotePeer.getLastReceivedMessage();
+ assertNotNull(envelope);
+ message = envelope.getMessage();
+ Destination destination = message.getJMSDestination();
+ assertEquals(topic, destination);
+ }
+
+ @Test(timeout = 10000)
+ public void testPublishMessageWithOptionsOnProvidedTopic() throws Exception {
+ Topic topic = session.createTopic(getTestName());
+ TopicPublisher publisher = session.createPublisher(null);
+ Message message = session.createMessage();
+ publisher.publish(topic, message, Message.DEFAULT_DELIVERY_MODE, Message.DEFAULT_PRIORITY, Message.DEFAULT_TIME_TO_LIVE);
+
+ JmsOutboundMessageDispatch envelope = remotePeer.getLastReceivedMessage();
+ assertNotNull(envelope);
+ message = envelope.getMessage();
+ Destination destination = message.getJMSDestination();
+ assertEquals(topic, destination);
+ }
+
+ @Test(timeout = 10000)
+ public void testPublishMessageWithOptionsOnProvidedTopicWhenNotAnonymous() throws Exception {
+ Topic topic = session.createTopic(getTestName());
+ TopicPublisher publisher = session.createPublisher(topic);
+ Message message = session.createMessage();
+
+ try {
+ publisher.publish(session.createTopic(getTestName() + "1"), message, Message.DEFAULT_DELIVERY_MODE, Message.DEFAULT_PRIORITY, Message.DEFAULT_TIME_TO_LIVE);
+ fail("Should throw UnsupportedOperationException");
+ } catch (UnsupportedOperationException uoe) {}
+
+ try {
+ publisher.publish((Topic) null, message, Message.DEFAULT_DELIVERY_MODE, Message.DEFAULT_PRIORITY, Message.DEFAULT_TIME_TO_LIVE);
+ fail("Should throw InvalidDestinationException");
+ } catch (InvalidDestinationException ide) {}
+ }
+}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/NoOpAsyncResultTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/NoOpAsyncResultTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/NoOpAsyncResultTest.java
new file mode 100644
index 0000000..2712068
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/NoOpAsyncResultTest.java
@@ -0,0 +1,52 @@
+/*
+ * 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.qpid.jms.provider;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+
+import org.junit.Test;
+
+public class NoOpAsyncResultTest {
+
+ @Test
+ public void testDefaultToComplete() {
+ NoOpAsyncResult result = new NoOpAsyncResult();
+ assertTrue(result.isComplete());
+ }
+
+ @Test
+ public void testOnSuccess() {
+ NoOpAsyncResult result = new NoOpAsyncResult();
+
+ assertTrue(result.isComplete());
+ result.onSuccess();
+ result.onFailure(new IOException());
+ assertTrue(result.isComplete());
+ }
+
+ @Test
+ public void testOnFailure() {
+ NoOpAsyncResult result = new NoOpAsyncResult();
+
+ assertTrue(result.isComplete());
+ result.onFailure(new IOException());
+ result.onSuccess();
+ assertTrue(result.isComplete());
+ }
+}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/ProviderFutureTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/ProviderFutureTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/ProviderFutureTest.java
new file mode 100644
index 0000000..210077c
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/ProviderFutureTest.java
@@ -0,0 +1,215 @@
+/*
+ * 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.qpid.jms.provider;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.junit.Test;
+
+public class ProviderFutureTest {
+
+ @Test
+ public void testIsComplete() {
+ ProviderFuture future = new ProviderFuture();
+
+ assertFalse(future.isComplete());
+ future.onSuccess();
+ assertTrue(future.isComplete());
+ }
+
+ @Test(timeout = 10000)
+ public void testOnSuccess() {
+ ProviderFuture future = new ProviderFuture();
+
+ future.onSuccess();
+ try {
+ future.sync();
+ } catch (IOException cause) {
+ fail("Should throw an error");
+ }
+ }
+
+ @Test(timeout = 10000)
+ public void testOnFailure() {
+ ProviderFuture future = new ProviderFuture();
+ IOException ex = new IOException();
+
+ future.onFailure(ex);
+ try {
+ future.sync(5, TimeUnit.SECONDS);
+ fail("Should throw an error");
+ } catch (IOException cause) {
+ assertSame(cause, ex);
+ }
+ }
+
+ @Test(timeout = 10000)
+ public void testOnSuccessCallsSynchronization() {
+ final AtomicBoolean syncCalled = new AtomicBoolean(false);
+ ProviderFuture future = new ProviderFuture(new ProviderSynchronization() {
+
+ @Override
+ public void onPendingSuccess() {
+ syncCalled.set(true);
+ }
+
+ @Override
+ public void onPendingFailure(Throwable cause) {
+ }
+ });
+
+ future.onSuccess();
+ try {
+ future.sync(5, TimeUnit.SECONDS);
+ } catch (IOException cause) {
+ fail("Should throw an error");
+ }
+
+ assertTrue("Synchronization not called", syncCalled.get());
+ }
+
+ @Test(timeout = 10000)
+ public void testOnFailureCallsSynchronization() {
+ final AtomicBoolean syncCalled = new AtomicBoolean(false);
+ ProviderFuture future = new ProviderFuture(new ProviderSynchronization() {
+
+ @Override
+ public void onPendingSuccess() {
+ }
+
+ @Override
+ public void onPendingFailure(Throwable cause) {
+ syncCalled.set(true);
+ }
+ });
+
+ IOException ex = new IOException();
+
+ future.onFailure(ex);
+ try {
+ future.sync(5, TimeUnit.SECONDS);
+ fail("Should throw an error");
+ } catch (IOException cause) {
+ assertSame(cause, ex);
+ }
+
+ assertTrue("Synchronization not called", syncCalled.get());
+ }
+
+ @Test(timeout = 10000)
+ public void testSuccessfulStateIsFixed() {
+ ProviderFuture future = new ProviderFuture();
+ IOException ex = new IOException();
+
+ future.onSuccess();
+ future.onFailure(ex);
+ try {
+ future.sync(5, TimeUnit.SECONDS);
+ } catch (IOException cause) {
+ fail("Should throw an error");
+ }
+ }
+
+ @Test(timeout = 10000)
+ public void testFailedStateIsFixed() {
+ ProviderFuture future = new ProviderFuture();
+ IOException ex = new IOException();
+
+ future.onFailure(ex);
+ future.onSuccess();
+ try {
+ future.sync(5, TimeUnit.SECONDS);
+ fail("Should throw an error");
+ } catch (IOException cause) {
+ assertSame(cause, ex);
+ }
+ }
+
+ @Test(timeout = 10000)
+ public void testSyncHandlesInterruption() throws InterruptedException {
+ final ProviderFuture future = new ProviderFuture();
+
+ final CountDownLatch syncing = new CountDownLatch(1);
+ final CountDownLatch done = new CountDownLatch(1);
+ final AtomicBoolean interrupted = new AtomicBoolean(false);
+
+ Thread runner = new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ try {
+ syncing.countDown();
+ future.sync();
+ } catch (IOException cause) {
+ if (cause.getCause() instanceof InterruptedException) {
+ interrupted.set(true);
+ }
+ } finally {
+ done.countDown();
+ }
+ }
+ });
+ runner.start();
+ assertTrue(syncing.await(5, TimeUnit.SECONDS));
+ runner.interrupt();
+
+ assertTrue(done.await(5, TimeUnit.SECONDS));
+
+ assertTrue(interrupted.get());
+ }
+
+ @Test(timeout = 10000)
+ public void testTimedSyncHandlesInterruption() throws InterruptedException {
+ final ProviderFuture future = new ProviderFuture();
+
+ final CountDownLatch syncing = new CountDownLatch(1);
+ final CountDownLatch done = new CountDownLatch(1);
+ final AtomicBoolean interrupted = new AtomicBoolean(false);
+
+ Thread runner = new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ try {
+ syncing.countDown();
+ future.sync(20, TimeUnit.SECONDS);
+ } catch (IOException cause) {
+ if (cause.getCause() instanceof InterruptedException) {
+ interrupted.set(true);
+ }
+ } finally {
+ done.countDown();
+ }
+ }
+ });
+ runner.start();
+ assertTrue(syncing.await(5, TimeUnit.SECONDS));
+ runner.interrupt();
+
+ assertTrue(done.await(5, TimeUnit.SECONDS));
+
+ assertTrue(interrupted.get());
+ }
+}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/ProviderWrapperTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/ProviderWrapperTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/ProviderWrapperTest.java
index 602617d..3da448b 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/ProviderWrapperTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/ProviderWrapperTest.java
@@ -16,20 +16,391 @@
*/
package org.apache.qpid.jms.provider;
-import org.apache.qpid.jms.provider.mock.MockProvider;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+import java.net.URI;
+
+import org.apache.qpid.jms.message.JmsInboundMessageDispatch;
+import org.apache.qpid.jms.message.JmsOutboundMessageDispatch;
+import org.apache.qpid.jms.meta.JmsConnectionId;
+import org.apache.qpid.jms.meta.JmsConsumerId;
+import org.apache.qpid.jms.meta.JmsSessionId;
+import org.apache.qpid.jms.meta.JmsSessionInfo;
+import org.apache.qpid.jms.meta.JmsTransactionId;
+import org.apache.qpid.jms.meta.JmsTransactionInfo;
+import org.apache.qpid.jms.provider.ProviderConstants.ACK_TYPE;
import org.apache.qpid.jms.test.QpidJmsTestCase;
-import org.junit.After;
+import org.junit.Test;
+import org.mockito.Mockito;
public class ProviderWrapperTest extends QpidJmsTestCase{
- MockProvider mockProvider = null;
+ @Test
+ public void testGetMessageFactory() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ wrapper.getMessageFactory();
+ Mockito.verify(mockProvider).getMessageFactory();
+ }
+
+ @Test
+ public void testGetNext() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ assertSame(mockProvider, wrapper.getNext());
+ }
+
+ @Test
+ public void testAcknowledgeMessage() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ JmsInboundMessageDispatch inbound = Mockito.mock(JmsInboundMessageDispatch.class);
+ AsyncResult result = Mockito.mock(AsyncResult.class);
+
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ wrapper.acknowledge(inbound, ACK_TYPE.ACCEPTED, result);
+ Mockito.verify(mockProvider).acknowledge(inbound, ACK_TYPE.ACCEPTED, result);
+ }
+
+ @Test
+ public void testAcknowledgeSession() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ AsyncResult result = Mockito.mock(AsyncResult.class);
+ JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1);
+
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
- @Override
- @After
- public void tearDown() throws Exception {
- if (mockProvider != null) {
- mockProvider.close();
+ wrapper.acknowledge(sessionId, ACK_TYPE.ACCEPTED, result);
+ Mockito.verify(mockProvider).acknowledge(sessionId, ACK_TYPE.ACCEPTED, result);
+ }
+
+ @Test
+ public void testRecover() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ AsyncResult result = Mockito.mock(AsyncResult.class);
+ JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1);
+
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ wrapper.recover(sessionId, result);
+ Mockito.verify(mockProvider).recover(sessionId, result);
+ }
+
+ @Test
+ public void testStart() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ try {
+ wrapper.start();
+ fail("should have thrown exception due to no listener");
+ } catch (IllegalStateException ise) {
}
- super.tearDown();
+
+ ProviderListener listener = Mockito.mock(ProviderListener.class);
+
+ wrapper.setProviderListener(listener);
+ wrapper.start();
+
+ assertSame(listener, wrapper.getProviderListener());
+
+ Mockito.verify(mockProvider).start();
+ }
+
+ @Test
+ public void testClose() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ wrapper.close();
+ Mockito.verify(mockProvider).close();
+ }
+
+ @Test
+ public void testConnect() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ wrapper.connect();
+ Mockito.verify(mockProvider).connect();
+ }
+
+ @Test
+ public void testGetRemoteURI() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ wrapper.getRemoteURI();
+ Mockito.verify(mockProvider).getRemoteURI();
+ }
+
+ @Test
+ public void testCreate() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ AsyncResult result = Mockito.mock(AsyncResult.class);
+ JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1);
+ JmsSessionInfo session = new JmsSessionInfo(sessionId);
+
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ wrapper.create(session, result);
+ Mockito.verify(mockProvider).create(session, result);
+ }
+
+ @Test
+ public void testStartResource() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ AsyncResult result = Mockito.mock(AsyncResult.class);
+ JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1);
+ JmsSessionInfo session = new JmsSessionInfo(sessionId);
+
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ wrapper.start(session, result);
+ Mockito.verify(mockProvider).start(session, result);
+ }
+
+ @Test
+ public void testStopResource() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ AsyncResult result = Mockito.mock(AsyncResult.class);
+ JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1);
+ JmsSessionInfo session = new JmsSessionInfo(sessionId);
+
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ wrapper.stop(session, result);
+ Mockito.verify(mockProvider).stop(session, result);
+ }
+
+ @Test
+ public void testDestroy() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ AsyncResult result = Mockito.mock(AsyncResult.class);
+ JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1);
+ JmsSessionInfo session = new JmsSessionInfo(sessionId);
+
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ wrapper.destroy(session, result);
+ Mockito.verify(mockProvider).destroy(session, result);
+ }
+
+ @Test
+ public void testSend() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ JmsOutboundMessageDispatch envelope = Mockito.mock(JmsOutboundMessageDispatch.class);
+ AsyncResult result = Mockito.mock(AsyncResult.class);
+
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ wrapper.send(envelope, result);
+ Mockito.verify(mockProvider).send(envelope, result);
+ }
+
+ @Test
+ public void testUnsubscribe() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ AsyncResult result = Mockito.mock(AsyncResult.class);
+ String subscriptionName = "subName";
+
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ wrapper.unsubscribe(subscriptionName, result);
+ Mockito.verify(mockProvider).unsubscribe(subscriptionName, result);
+ }
+
+ @Test
+ public void testCommit() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ AsyncResult result = Mockito.mock(AsyncResult.class);
+ JmsConnectionId connectionId = new JmsConnectionId("ID");
+ JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1);
+ JmsTransactionId txId = new JmsTransactionId(connectionId, 1);
+ JmsTransactionInfo txInfo = new JmsTransactionInfo(sessionId, txId);
+
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ wrapper.commit(txInfo, result);
+ Mockito.verify(mockProvider).commit(txInfo, result);
+ }
+
+ @Test
+ public void testRollback() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ AsyncResult result = Mockito.mock(AsyncResult.class);
+ JmsConnectionId connectionId = new JmsConnectionId("ID");
+ JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1);
+ JmsTransactionId txId = new JmsTransactionId(connectionId, 1);
+ JmsTransactionInfo txInfo = new JmsTransactionInfo(sessionId, txId);
+
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ wrapper.rollback(txInfo, result);
+ Mockito.verify(mockProvider).rollback(txInfo, result);
+ }
+
+ @Test
+ public void testPull() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ AsyncResult result = Mockito.mock(AsyncResult.class);
+ JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1);
+ JmsConsumerId consumerId = new JmsConsumerId(sessionId, 1);
+
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+
+ wrapper.pull(consumerId, 1000, result);
+ Mockito.verify(mockProvider).pull(consumerId, 1000, result);
+ }
+
+ @Test
+ public void testOnInboundMessage() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+ JmsInboundMessageDispatch envelope = Mockito.mock(JmsInboundMessageDispatch.class);
+ ProviderListener listener = Mockito.mock(ProviderListener.class);
+
+ wrapper.setProviderListener(listener);
+ wrapper.onInboundMessage(envelope);
+
+ Mockito.verify(listener).onInboundMessage(envelope);
+ }
+
+ @Test
+ public void testOnCompletedMessageSend() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+ JmsOutboundMessageDispatch envelope = Mockito.mock(JmsOutboundMessageDispatch.class);
+ ProviderListener listener = Mockito.mock(ProviderListener.class);
+
+ wrapper.setProviderListener(listener);
+ wrapper.onCompletedMessageSend(envelope);
+
+ Mockito.verify(listener).onCompletedMessageSend(envelope);
+ }
+
+ @Test
+ public void testOnFailedMessageSend() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+ JmsOutboundMessageDispatch envelope = Mockito.mock(JmsOutboundMessageDispatch.class);
+ ProviderListener listener = Mockito.mock(ProviderListener.class);
+ IOException ex = new IOException();
+
+ wrapper.setProviderListener(listener);
+ wrapper.onFailedMessageSend(envelope, ex);
+
+ Mockito.verify(listener).onFailedMessageSend(envelope, ex);
+ }
+
+ @Test
+ public void testOnConnectionInterrupted() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+ ProviderListener listener = Mockito.mock(ProviderListener.class);
+ URI remoteURI = new URI("tcp://localhost");
+
+ wrapper.setProviderListener(listener);
+ wrapper.onConnectionInterrupted(remoteURI);
+
+ Mockito.verify(listener).onConnectionInterrupted(remoteURI);
+ }
+
+ @Test
+ public void testOnConnectionEstablished() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+ ProviderListener listener = Mockito.mock(ProviderListener.class);
+ URI remoteURI = new URI("tcp://localhost");
+ Mockito.when(mockProvider.getRemoteURI()).thenReturn(remoteURI);
+
+ wrapper.setProviderListener(listener);
+ wrapper.onConnectionEstablished(remoteURI);
+
+ Mockito.verify(listener).onConnectionEstablished(remoteURI);
+ }
+
+ @Test
+ public void testOnConnectionRestored() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+ ProviderListener listener = Mockito.mock(ProviderListener.class);
+ URI remoteURI = new URI("tcp://localhost");
+
+ wrapper.setProviderListener(listener);
+ wrapper.onConnectionRestored(remoteURI);
+
+ Mockito.verify(listener).onConnectionRestored(remoteURI);
+ }
+
+ @Test
+ public void testOnResourceClosed() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+ ProviderListener listener = Mockito.mock(ProviderListener.class);
+ JmsSessionId sessionId = new JmsSessionId("ID:TEST", 1);
+ JmsSessionInfo session = new JmsSessionInfo(sessionId);
+ IOException ex = new IOException();
+
+ wrapper.setProviderListener(listener);
+ wrapper.onResourceClosed(session, ex);
+
+ Mockito.verify(listener).onResourceClosed(session, ex);
+ }
+
+ @Test
+ public void testOnProviderException() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+ ProviderListener listener = Mockito.mock(ProviderListener.class);
+ IOException ex = new IOException();
+
+ wrapper.setProviderListener(listener);
+ wrapper.onProviderException(ex);
+
+ Mockito.verify(listener).onProviderException(ex);
+ }
+
+ @Test
+ public void testOnConnectionFailure() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+ ProviderListener listener = Mockito.mock(ProviderListener.class);
+ IOException ex = new IOException();
+
+ wrapper.setProviderListener(listener);
+ wrapper.onConnectionFailure(ex);
+
+ Mockito.verify(listener).onConnectionFailure(ex);
+ }
+
+ @Test
+ public void onConnectionRecovery() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+ ProviderListener listener = Mockito.mock(ProviderListener.class);
+
+ wrapper.setProviderListener(listener);
+ wrapper.onConnectionRecovery(mockProvider);
+
+ Mockito.verify(listener).onConnectionRecovery(mockProvider);
+ }
+
+ @Test
+ public void onConnectionRecoverd() throws Exception {
+ Provider mockProvider = Mockito.mock(Provider.class);
+ ProviderWrapper<Provider> wrapper = new ProviderWrapper<Provider>(mockProvider);
+ ProviderListener listener = Mockito.mock(ProviderListener.class);
+
+ wrapper.setProviderListener(listener);
+ wrapper.onConnectionRecovered(mockProvider);
+
+ Mockito.verify(listener).onConnectionRecovered(mockProvider);
}
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/WrappedAsyncResultTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/WrappedAsyncResultTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/WrappedAsyncResultTest.java
new file mode 100644
index 0000000..52e888b
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/WrappedAsyncResultTest.java
@@ -0,0 +1,67 @@
+/*
+ * 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.qpid.jms.provider;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+
+import org.junit.Test;
+
+public class WrappedAsyncResultTest {
+
+ @Test
+ public void testCreateWithNull() {
+ try {
+ new WrappedAsyncResult(null) {};
+ } catch (IllegalArgumentException iae) {}
+ }
+
+ @Test
+ public void testGetWrapped() {
+ ProviderFuture future = new ProviderFuture();
+ WrappedAsyncResult wrapped = new WrappedAsyncResult(future) {};
+
+ assertSame(wrapped.getWrappedRequest(), future);
+ }
+
+ @Test
+ public void testOnSuccessPassthrough() {
+ ProviderFuture future = new ProviderFuture();
+ WrappedAsyncResult wrapped = new WrappedAsyncResult(future) {};
+
+ assertFalse(future.isComplete());
+ assertFalse(wrapped.isComplete());
+ wrapped.onSuccess();
+ assertTrue(wrapped.isComplete());
+ assertTrue(future.isComplete());
+ }
+
+ @Test
+ public void testOnFailurePassthrough() {
+ ProviderFuture future = new ProviderFuture();
+ WrappedAsyncResult wrapped = new WrappedAsyncResult(future) {};
+
+ assertFalse(future.isComplete());
+ assertFalse(wrapped.isComplete());
+ wrapped.onFailure(new IOException());
+ assertTrue(wrapped.isComplete());
+ assertTrue(future.isComplete());
+ }
+}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactoryTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactoryTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactoryTest.java
index da5f54d..e49e42e 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactoryTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/AmqpProviderFactoryTest.java
@@ -73,6 +73,12 @@ public class AmqpProviderFactoryTest extends QpidJmsTestCase {
AmqpProviderFactory.create(badOptionsURI);
}
+ @Test(timeout = 20000, expected=IOException.class)
+ public void testCreateProviderFailsWithMissingScheme() throws IOException, Exception {
+ URI missingSchemeURI = new URI(null, null, peerURI.getHost(), peerURI.getPort(), null, null, null);
+ AmqpProviderFactory.create(missingSchemeURI);
+ }
+
@Test(timeout = 20000)
public void testCreateProviderHasDefaultIdleTimeoutValue() throws IOException, Exception {
Provider provider = AmqpProviderFactory.create(new URI(peerURI.toString()));
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMapMessageFacadeTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMapMessageFacadeTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMapMessageFacadeTest.java
index 6716fb6..763298b 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMapMessageFacadeTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMapMessageFacadeTest.java
@@ -64,6 +64,12 @@ public class AmqpJmsMapMessageFacadeTest extends AmqpJmsMessageTypesTestCase {
}
@Test
+ public void testNewMessageToSendReportsNoBody() throws Exception {
+ AmqpJmsMapMessageFacade amqpMapMessageFacade = createNewMapMessageFacade();
+ amqpMapMessageFacade.hasBody();
+ }
+
+ @Test
public void testNewMessageToSendReportsIsEmpty() throws Exception {
AmqpJmsMapMessageFacade amqpMapMessageFacade = createNewMapMessageFacade();
assertFalse(amqpMapMessageFacade.getMapNames().hasMoreElements());
@@ -153,9 +159,11 @@ public class AmqpJmsMapMessageFacadeTest extends AmqpJmsMessageTypesTestCase {
Object result = amqpMapMessageFacade.get("entry1");
assertNotNull(result);
assertTrue(result instanceof Boolean);
+ assertTrue(amqpMapMessageFacade.hasBody());
// Should be able to use the message, e.g clearing it and adding to it.
amqpMapMessageFacade.clearBody();
+ assertFalse(amqpMapMessageFacade.hasBody());
amqpMapMessageFacade.put("entry", "value");
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
index 3b838d7..22eef19 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java
@@ -27,6 +27,7 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.nio.ByteBuffer;
import java.util.Arrays;
@@ -53,6 +54,7 @@ import org.apache.qpid.proton.amqp.Symbol;
import org.apache.qpid.proton.amqp.UnsignedByte;
import org.apache.qpid.proton.amqp.UnsignedInteger;
import org.apache.qpid.proton.amqp.UnsignedLong;
+import org.apache.qpid.proton.amqp.messaging.AmqpValue;
import org.apache.qpid.proton.amqp.messaging.ApplicationProperties;
import org.apache.qpid.proton.amqp.messaging.DeliveryAnnotations;
import org.apache.qpid.proton.amqp.messaging.Footer;
@@ -1090,6 +1092,13 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase {
}
@Test
+ public void testSetCorrelationIdBytesNullDoesNotCreateProperties() throws Exception {
+ AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
+ amqpMessageFacade.setCorrelationIdBytes(null);
+ assertNull("Unexpected Properties Object in AMQP message", amqpMessageFacade.getProperties());
+ }
+
+ @Test
public void testGetCorrelationIdBytesOnNewMessage() throws Exception {
AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
@@ -1097,6 +1106,21 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase {
}
@Test
+ public void testGetCorrelationIdBytesOnMessageWithNonBinaryContent() throws Exception {
+ AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
+
+ Properties properties = new Properties();
+ properties.setCorrelationId(UUID.randomUUID());
+
+ amqpMessageFacade.setProperties(properties);
+
+ try {
+ amqpMessageFacade.getCorrelationIdBytes();
+ fail("Should have thrown JMSException");
+ } catch (JMSException ex) {}
+ }
+
+ @Test
public void testGetCorrelationIdBytesOnReceievedMessageWithBinaryId() throws Exception {
Binary testCorrelationId = createBinaryId();
byte[] bytes = testCorrelationId.getArray();
@@ -1148,12 +1172,7 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase {
}
}
- @Test
- public void testGetMessageIdIsNullOnNewMessage() {
- AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
-
- assertNull("Expected messageId value to be null on new message", amqpMessageFacade.getMessageId());
- }
+ //--- Message Id field ---
/**
* Test that setting then getting a String value as the messageId returns the expected value
@@ -1296,6 +1315,56 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase {
return new Binary(idBytes);
}
+ // --- Provider Message Id field ---
+
+ @Test
+ public void testGetProviderMessageIdObjectOnNewMessage() throws Exception {
+ AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
+ assertNull("Expected messageId not returned", amqpMessageFacade.getProviderMessageIdObject());
+ }
+
+ /**
+ * Test that setting then getting a String value as the provider messageId returns the expected value
+ *
+ * @throws Exception if the test encounters an unexpected error
+ */
+ @Test
+ public void testSetGetProviderMessageIdObjectOnNewMessageWithString() throws Exception {
+ String testMessageId = "ID:myStringMessageId";
+
+ AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
+
+ amqpMessageFacade.setProviderMessageIdObject(testMessageId);
+
+ assertEquals("Expected messageId not returned", testMessageId, amqpMessageFacade.getProviderMessageIdObject());
+ assertEquals("ID strings were not equal", testMessageId, amqpMessageFacade.getProviderMessageIdObject());
+ }
+
+ @Test
+ public void testSetProviderMessageIdObjectNullClearsProperty() throws Exception {
+ String testMessageId = "ID:myStringMessageId";
+
+ AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
+
+ amqpMessageFacade.setProviderMessageIdObject(testMessageId);
+ assertEquals("Expected messageId not returned", testMessageId, amqpMessageFacade.getProviderMessageIdObject());
+
+ amqpMessageFacade.setProviderMessageIdObject(null);
+ assertNull("Expected messageId not returned", amqpMessageFacade.getProviderMessageIdObject());
+ }
+
+ @Test
+ public void testSetProviderMessageIdObjectNullDoesNotCreateProperties() throws Exception {
+ AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
+
+ assertNull("Expected null value not returned", amqpMessageFacade.getProperties());
+
+ amqpMessageFacade.setProviderMessageIdObject(null);
+
+ assertNull("Expected null value not returned", amqpMessageFacade.getProviderMessageIdObject());
+ assertNull("Expected null value not returned", amqpMessageFacade.getProperties());
+ }
+
// --- creation-time field ---
@Test
@@ -2145,6 +2214,14 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase {
// ===============================================
@Test
+ public void testMessageHasBodyDetectsPayload() throws Exception {
+ AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade();
+ assertFalse(amqpMessageFacade.hasBody());
+ amqpMessageFacade.setBody(new AmqpValue("test"));
+ assertTrue(amqpMessageFacade.hasBody());
+ }
+
+ @Test
public void testClearBodyRemoveMessageBody() {
Message message = Message.Factory.create();
AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message);
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsStreamMessageFacadeTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsStreamMessageFacadeTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsStreamMessageFacadeTest.java
index 83ee4cd..f279975 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsStreamMessageFacadeTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsStreamMessageFacadeTest.java
@@ -45,6 +45,12 @@ import org.junit.Test;
public class AmqpJmsStreamMessageFacadeTest extends AmqpJmsMessageTypesTestCase {
@Test
+ public void testNewMessageToSendReportsNoBody() throws Exception {
+ AmqpJmsStreamMessageFacade amqpStreamMessageFacade = createNewStreamMessageFacade();
+ assertFalse("Message should report no body", amqpStreamMessageFacade.hasBody());
+ }
+
+ @Test
public void testNewMessageToSendContainsMessageTypeAnnotation() throws Exception {
AmqpJmsStreamMessageFacade amqpStreamMessageFacade = createNewStreamMessageFacade();
@@ -114,6 +120,7 @@ public class AmqpJmsStreamMessageFacadeTest extends AmqpJmsMessageTypesTestCase
AmqpJmsStreamMessageFacade amqpStreamMessageFacade = createReceivedStreamMessageFacade(createMockAmqpConsumer(), message);
+ assertTrue("Message should report that it contains a body", amqpStreamMessageFacade.hasBody());
assertEquals("Unexpected value retrieved", Boolean.FALSE, amqpStreamMessageFacade.peek());
assertEquals("Unexpected value retrieved", Boolean.FALSE, amqpStreamMessageFacade.peek());
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsTextMessageFacadeTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsTextMessageFacadeTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsTextMessageFacadeTest.java
index bd517ad..aeb5fe1 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsTextMessageFacadeTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsTextMessageFacadeTest.java
@@ -20,6 +20,7 @@ import static org.apache.qpid.jms.provider.amqp.message.AmqpMessageSupport.JMS_M
import static org.apache.qpid.jms.provider.amqp.message.AmqpMessageSupport.JMS_TEXT_MESSAGE;
import static org.apache.qpid.jms.provider.amqp.message.AmqpMessageSupport.getSymbol;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -201,6 +202,14 @@ public class AmqpJmsTextMessageFacadeTest extends AmqpJmsMessageTypesTestCase {
}
@Test
+ public void testGetTextWithNonAmqpValueOrDataSectionReportsNoBody() throws Exception {
+ Message message = Message.Factory.create();
+ message.setBody(new AmqpSequence(new ArrayList<Object>()));
+ AmqpJmsTextMessageFacade amqpTextMessageFacade = createReceivedTextMessageFacade(createMockAmqpConsumer(), message);
+ assertFalse(amqpTextMessageFacade.hasBody());
+ }
+
+ @Test
public void testGetTextWithNonAmqpValueOrDataSectionThrowsISE() throws Exception {
Message message = Message.Factory.create();
message.setBody(new AmqpSequence(new ArrayList<Object>()));
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpWritableBufferTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpWritableBufferTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpWritableBufferTest.java
index b583c27..992d628 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpWritableBufferTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpWritableBufferTest.java
@@ -21,6 +21,8 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import java.nio.ByteBuffer;
+
import org.junit.Test;
import io.netty.buffer.ByteBuf;
@@ -40,6 +42,14 @@ public class AmqpWritableBufferTest {
}
@Test
+ public void testLimit() {
+ ByteBuf buffer = Unpooled.buffer(1024);
+ AmqpWritableBuffer writable = new AmqpWritableBuffer(buffer);
+
+ assertEquals(buffer.capacity(), writable.limit());
+ }
+
+ @Test
public void testRemaining() {
ByteBuf buffer = Unpooled.buffer(1024);
AmqpWritableBuffer writable = new AmqpWritableBuffer(buffer);
@@ -80,4 +90,31 @@ public class AmqpWritableBufferTest {
writable.position(1);
assertEquals(1, writable.position());
}
+
+ @Test
+ public void testPutByteBuffer() {
+ ByteBuffer input = ByteBuffer.allocate(1024);
+ input.put((byte) 1);
+ input.flip();
+
+ ByteBuf buffer = Unpooled.buffer(1024);
+ AmqpWritableBuffer writable = new AmqpWritableBuffer(buffer);
+
+ assertEquals(0, writable.position());
+ writable.put(input);
+ assertEquals(1, writable.position());
+ }
+
+ @Test
+ public void testPutByteBuf() {
+ ByteBuf input = Unpooled.buffer();
+ input.writeByte((byte) 1);
+
+ ByteBuf buffer = Unpooled.buffer(1024);
+ AmqpWritableBuffer writable = new AmqpWritableBuffer(buffer);
+
+ assertEquals(0, writable.position());
+ writable.put(input);
+ assertEquals(1, writable.position());
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/AbstractMechanismTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/AbstractMechanismTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/AbstractMechanismTest.java
new file mode 100644
index 0000000..768cc74
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/AbstractMechanismTest.java
@@ -0,0 +1,72 @@
+/*
+ * 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.qpid.jms.sasl;
+
+import static org.junit.Assert.assertEquals;
+
+import java.security.Principal;
+
+import javax.security.sasl.SaslException;
+
+import org.junit.Test;
+
+public class AbstractMechanismTest {
+
+ @Test
+ public void testCompareTo() {
+ Mechanism mech1 = new Mechanism(1);
+ Mechanism mech2 = new Mechanism(2);
+
+ assertEquals(-1, mech1.compareTo(mech2));
+ assertEquals(0, mech1.compareTo(mech1));
+ assertEquals(1, mech2.compareTo(mech1));
+ }
+
+ private static class Mechanism extends AbstractMechanism {
+
+ private int prority;
+
+ public Mechanism(int priority) {
+ this.prority = priority;
+ }
+
+ @Override
+ public int getPriority() {
+ return prority;
+ }
+
+ @Override
+ public String getName() {
+ return getClass().getSimpleName();
+ }
+
+ @Override
+ public byte[] getInitialResponse() throws SaslException {
+ return null;
+ }
+
+ @Override
+ public byte[] getChallengeResponse(byte[] challenge) throws SaslException {
+ return null;
+ }
+
+ @Override
+ public boolean isApplicable(String username, String password, Principal localPrincipal) {
+ return false;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/AnonymousMechanismTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/AnonymousMechanismTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/AnonymousMechanismTest.java
index b87eff6..82b686f 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/AnonymousMechanismTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/AnonymousMechanismTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.qpid.jms.sasl;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.security.Principal;
@@ -25,6 +26,24 @@ import org.junit.Test;
public class AnonymousMechanismTest {
@Test
+ public void testGetInitialResponseWithNullUserAndPassword() {
+ AnonymousMechanism mech = new AnonymousMechanism();
+
+ byte[] response = mech.getInitialResponse();
+ assertNotNull(response);
+ assertTrue(response.length == 0);
+ }
+
+ @Test
+ public void testGetChallengeResponse() {
+ AnonymousMechanism mech = new AnonymousMechanism();
+
+ byte[] response = mech.getChallengeResponse(new byte[1]);
+ assertNotNull(response);
+ assertTrue(response.length == 0);
+ }
+
+ @Test
public void testIsApplicableWithNoCredentials() {
AnonymousMechanism mech = new AnonymousMechanism();
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/ExternalMechanismTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/ExternalMechanismTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/ExternalMechanismTest.java
index 7bb6341..ab613b9 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/ExternalMechanismTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/ExternalMechanismTest.java
@@ -17,6 +17,7 @@
package org.apache.qpid.jms.sasl;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.security.Principal;
@@ -26,6 +27,24 @@ import org.junit.Test;
public class ExternalMechanismTest {
@Test
+ public void testGetInitialResponseWithNullUserAndPassword() {
+ ExternalMechanism mech = new ExternalMechanism();
+
+ byte[] response = mech.getInitialResponse();
+ assertNotNull(response);
+ assertTrue(response.length == 0);
+ }
+
+ @Test
+ public void testGetChallengeResponse() {
+ ExternalMechanism mech = new ExternalMechanism();
+
+ byte[] response = mech.getChallengeResponse(new byte[1]);
+ assertNotNull(response);
+ assertTrue(response.length == 0);
+ }
+
+ @Test
public void testIsNotApplicableWithUserAndPasswordButNoPrincipal() {
ExternalMechanism mech = new ExternalMechanism();
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/PlainMechanismTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/PlainMechanismTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/PlainMechanismTest.java
index 4a251d2..ac03286 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/PlainMechanismTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/sasl/PlainMechanismTest.java
@@ -17,6 +17,7 @@
package org.apache.qpid.jms.sasl;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.security.Principal;
@@ -26,6 +27,24 @@ import org.junit.Test;
public class PlainMechanismTest {
@Test
+ public void testGetInitialResponseWithNullUserAndPassword() {
+ PlainMechanism mech = new PlainMechanism();
+
+ byte[] response = mech.getInitialResponse();
+ assertNotNull(response);
+ assertTrue(response.length > 0);
+ }
+
+ @Test
+ public void testGetChallengeResponse() {
+ PlainMechanism mech = new PlainMechanism();
+
+ byte[] response = mech.getChallengeResponse(new byte[1]);
+ assertNotNull(response);
+ assertTrue(response.length == 0);
+ }
+
+ @Test
public void testIsNotApplicableWithNoCredentials() {
PlainMechanism mech = new PlainMechanism();
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/session/JmsSessionClosedTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/session/JmsSessionClosedTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/session/JmsSessionClosedTest.java
index 47f2ae4..8d3a310 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/session/JmsSessionClosedTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/session/JmsSessionClosedTest.java
@@ -207,6 +207,12 @@ public class JmsSessionClosedTest extends JmsConnectionTestSupport {
}
@Test(timeout=30000, expected=JMSException.class)
+ public void testCreateDurableConsumerSelectorBooleanFails() throws Exception {
+ Topic destination = session.createTopic("TEST");
+ session.createDurableConsumer(destination, "test", "a = b", false);
+ }
+
+ @Test(timeout=30000, expected=JMSException.class)
public void testCreateQueueBrowserFails() throws Exception {
Queue destination = session.createQueue("test");
session.createBrowser(destination);
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/session/JmsTopicSessionClosedTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/session/JmsTopicSessionClosedTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/session/JmsTopicSessionClosedTest.java
index d3dfd64..eb1a9b5 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/session/JmsTopicSessionClosedTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/session/JmsTopicSessionClosedTest.java
@@ -87,6 +87,11 @@ public class JmsTopicSessionClosedTest extends JmsConnectionTestSupport {
session.createDurableSubscriber(destination, "foo", "color = blue", false);
}
+ @Test(timeout=30000, expected=javax.jms.IllegalStateException.class)
+ public void testCreateDurableConsumerWithSelector() throws Exception {
+ session.createDurableConsumer(destination, "foo", "color = blue", false);
+ }
+
@Test(timeout=30000)
public void testSubscriberCloseAgain() throws Exception {
// Close it again (closing the session should have closed it already).
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/83f5507c/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/URISupportTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/URISupportTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/URISupportTest.java
index 6495858..1ccc878 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/URISupportTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/URISupportTest.java
@@ -19,10 +19,13 @@ package org.apache.qpid.jms.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -138,6 +141,12 @@ public class URISupportTest {
}
@Test
+ public void testCheckParenthesisWithNullOrEmpty() throws Exception {
+ assertTrue(URISupport.checkParenthesis(null));
+ assertTrue(URISupport.checkParenthesis(""));
+ }
+
+ @Test
public void testCreateWithQuery() throws Exception {
URI source = new URI("vm://localhost");
URI dest = PropertyUtil.replaceQuery(source, "network=true&one=two");
@@ -236,6 +245,40 @@ public class URISupportTest {
}
@Test
+ public void testIndexOfParenthesisMatchExceptions() throws URISyntaxException {
+ try {
+ URISupport.indexOfParenthesisMatch(null, -1);
+ fail("Should have thrown IllegalArgumentException");
+ } catch (IllegalArgumentException iobe) {}
+
+ try {
+ URISupport.indexOfParenthesisMatch("tcp", 4);
+ fail("Should have thrown IllegalArgumentException");
+ } catch (IllegalArgumentException iobe) {}
+
+ try {
+ URISupport.indexOfParenthesisMatch("tcp", 2);
+ fail("Should have thrown IllegalArgumentException");
+ } catch (IllegalArgumentException iobe) {}
+
+ try {
+ URISupport.indexOfParenthesisMatch("(tcp", 0);
+ fail("Should have thrown URISyntaxException");
+ } catch (URISyntaxException iobe) {}
+ }
+
+ @Test
+ public void testApplyParametersWithNullOrEmptyParameters() throws URISyntaxException {
+ URI uri = new URI("tcp://localhost");
+
+ URI result = URISupport.applyParameters(uri, null, "value.");
+ assertSame(uri, result);
+
+ result = URISupport.applyParameters(uri, Collections.<String, String>emptyMap(), "value.");
+ assertSame(uri, result);
+ }
+
+ @Test
public void testIsCompositeURINoQueryNoSlashesNoParentheses() throws URISyntaxException {
assertFalse("test:part1" + " must be detected as non-composite URI", URISupport.isCompositeURI(new URI("test:part1")));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org