This is an automated email from the ASF dual-hosted git repository.
buhhunyx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/master by this push:
new 0a0fea0 cxf-rt-transports-jms: stable MessageListenerTest
0a0fea0 is described below
commit 0a0fea05db9c93ac8a9f87bf1ffe50c3f95531d6
Author: amarkevich <[email protected]>
AuthorDate: Fri Apr 12 15:04:34 2019 +0300
cxf-rt-transports-jms: stable MessageListenerTest
---
.../org/apache/cxf/transport/jms/util/JMSUtil.java | 1 +
.../transport/jms/util/MessageListenerTest.java | 106 ++++++++-------------
rt/transports/jms/src/test/resources/jms_test.wsdl | 4 +-
3 files changed, 42 insertions(+), 69 deletions(-)
diff --git
a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/util/JMSUtil.java
b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/util/JMSUtil.java
index 7dfe529..6c4472d 100644
---
a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/util/JMSUtil.java
+++
b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/util/JMSUtil.java
@@ -146,6 +146,7 @@ public final class JMSUtil {
actualNum++;
messages.nextElement();
}
+ browser.close();
return actualNum;
}
}
diff --git
a/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/util/MessageListenerTest.java
b/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/util/MessageListenerTest.java
index 937f0b5..dc56425 100644
---
a/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/util/MessageListenerTest.java
+++
b/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/util/MessageListenerTest.java
@@ -23,7 +23,6 @@ import javax.jms.Destination;
import javax.jms.ExceptionListener;
import javax.jms.JMSException;
import javax.jms.Message;
-import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Queue;
@@ -39,44 +38,32 @@ import org.apache.activemq.pool.XaPooledConnectionFactory;
import org.apache.geronimo.transaction.manager.GeronimoTransactionManager;
import org.awaitility.Awaitility;
-import org.easymock.Capture;
import org.junit.Test;
-
-import static org.easymock.EasyMock.capture;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.newCapture;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
public class MessageListenerTest {
- private static final String FAIL = "fail";
- private static final String FAILFIRST = "failfirst";
- private static final String OK = "ok";
-
+ enum TestMessage {
+ OK, FAILFIRST, FAIL;
+ }
+
@Test
public void testConnectionProblem() throws JMSException {
Connection connection = createConnection("broker");
Queue dest = JMSUtil.createQueue(connection, "test");
MessageListener listenerHandler = new TestMessageListener();
- ExceptionListener exListener = createMock(ExceptionListener.class);
-
- Capture<JMSException> captured = newCapture();
- exListener.onException(capture(captured));
- expectLastCall();
- replay(exListener);
+ TestExceptionListener exListener = new TestExceptionListener();
PollingMessageListenerContainer container = //
new PollingMessageListenerContainer(connection, dest,
listenerHandler, exListener);
connection.close(); // Simulate connection problem
container.start();
Awaitility.await().until(() -> !container.isRunning());
- verify(exListener);
- JMSException ex = captured.getValue();
+ JMSException ex = exListener.exception;
+ assertNotNull(ex);
assertEquals("The connection is already closed", ex.getMessage());
}
@@ -87,12 +74,7 @@ public class MessageListenerTest {
Queue dest = JMSUtil.createQueue(connection, "test");
MessageListener listenerHandler = new TestMessageListener();
- ExceptionListener exListener = createMock(ExceptionListener.class);
-
- Capture<JMSException> captured = newCapture();
- exListener.onException(capture(captured));
- expectLastCall();
- replay(exListener);
+ TestExceptionListener exListener = new TestExceptionListener();
PollingMessageListenerContainer container = //
new PollingMessageListenerContainer(connection, dest,
listenerHandler, exListener);
@@ -103,8 +85,8 @@ public class MessageListenerTest {
connection.close(); // Simulate connection problem
container.start();
Awaitility.await().until(() -> !container.isRunning());
- verify(exListener);
- JMSException ex = captured.getValue();
+ JMSException ex = exListener.exception;
+ assertNotNull(ex);
// Closing the pooled connection will result in a NPE when using it
assertEquals("Wrapped exception. null", ex.getMessage());
}
@@ -116,12 +98,7 @@ public class MessageListenerTest {
Queue dest = JMSUtil.createQueue(connection, "test");
MessageListener listenerHandler = new TestMessageListener();
- ExceptionListener exListener = new ExceptionListener() {
-
- @Override
- public void onException(JMSException exception) {
- }
- };
+ ExceptionListener exListener = new TestExceptionListener();
PollingMessageListenerContainer container = new
PollingMessageListenerContainer(connection, dest,
listenerHandler, exListener);
container.setTransacted(false);
@@ -149,10 +126,10 @@ public class MessageListenerTest {
assertNumMessagesInQueue("At the start the queue should be empty",
connection, dest, 0, 0L);
- sendMessage(connection, dest, OK);
+ sendMessage(connection, dest, TestMessage.OK);
assertNumMessagesInQueue("This message should be committed",
connection, dest, 0, 1000L);
- sendMessage(connection, dest, FAIL);
+ sendMessage(connection, dest, TestMessage.FAIL);
assertNumMessagesInQueue("Even when an exception occurs the message
should be committed", connection,
dest, 0, 1000L);
@@ -181,17 +158,17 @@ public class MessageListenerTest {
assertNumMessagesInQueue("At the start the queue should be empty",
connection, dest, 0, 0L);
assertNumMessagesInQueue("At the start the DLQ should be empty",
connection, dlq, 0, 0L);
- sendMessage(connection, dest, OK);
+ sendMessage(connection, dest, TestMessage.OK);
assertNumMessagesInQueue("This message should be committed",
connection, dest, 0, 1000L);
- sendMessage(connection, dest, FAILFIRST);
+ sendMessage(connection, dest, TestMessage.FAILFIRST);
assertNumMessagesInQueue("Should succeed on second try", connection,
dest, 0, 2000L);
- sendMessage(connection, dest, FAIL);
+ sendMessage(connection, dest, TestMessage.FAIL);
assertNumMessagesInQueue("Should be rolled back", connection, dlq, 1,
2500L);
}
- private Connection createConnection(String name) throws JMSException {
+ private static Connection createConnection(String name) throws
JMSException {
ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://" +
name
+
"?broker.persistent=false");
cf.setRedeliveryPolicy(redeliveryPolicy());
@@ -200,7 +177,7 @@ public class MessageListenerTest {
return connection;
}
- private Connection createXAConnection(String name, TransactionManager tm)
throws JMSException {
+ private static Connection createXAConnection(String name,
TransactionManager tm) throws JMSException {
ActiveMQXAConnectionFactory cf = new
ActiveMQXAConnectionFactory("vm://" + name
+
"?broker.persistent=false");
cf.setRedeliveryPolicy(redeliveryPolicy());
@@ -212,24 +189,13 @@ public class MessageListenerTest {
return connection;
}
- private RedeliveryPolicy redeliveryPolicy() {
+ private static RedeliveryPolicy redeliveryPolicy() {
RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
- redeliveryPolicy.setRedeliveryDelay(1000);
+ redeliveryPolicy.setRedeliveryDelay(500L);
redeliveryPolicy.setMaximumRedeliveries(1);
return redeliveryPolicy;
}
- protected void drainQueue(Connection connection, Queue dest) throws
JMSException, InterruptedException {
- Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
- MessageConsumer consumer = session.createConsumer(dest);
- while (consumer.receiveNoWait() != null) {
- System.out.println("Consuming old message");
- }
- consumer.close();
- session.close();
- assertNumMessagesInQueue("", connection, dest, 0, 0L);
- }
-
private static void assertNumMessagesInQueue(String message, Connection
connection, Queue queue,
int expectedNum, long timeout)
throws JMSException,
InterruptedException {
@@ -247,11 +213,10 @@ public class MessageListenerTest {
assertEquals(message + " -> number of messages on queue", expectedNum,
actualNum);
}
- private static void sendMessage(Connection connection, Destination dest,
String content) throws JMSException,
- InterruptedException {
+ private static void sendMessage(Connection connection, Destination dest,
TestMessage content) throws JMSException {
Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
MessageProducer prod = session.createProducer(dest);
- Message message = session.createTextMessage(content);
+ Message message = session.createTextMessage(content.toString());
prod.send(message);
prod.close();
session.close();
@@ -263,18 +228,19 @@ public class MessageListenerTest {
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage)message;
try {
- String text = textMessage.getText();
- if (OK.equals(text)) {
+ switch (TestMessage.valueOf(textMessage.getText())) {
+ case OK:
//System.out.println("Simulating Processing successful");
- } else if (FAIL.equals(text)) {
- throw new RuntimeException("Simulating something went
wrong. Expecting rollback");
- } else if (FAILFIRST.equals(text)) {
+ break;
+ case FAILFIRST:
if (message.getJMSRedelivered()) {
//System.out.println("Simulating processing worked on
second try");
- } else {
- throw new RuntimeException("Simulating something went
wrong. Expecting rollback");
+ break;
}
- } else {
+ throw new RuntimeException("Simulating something went
wrong. Expecting rollback");
+ case FAIL:
+ throw new RuntimeException("Simulating something went
wrong. Expecting rollback");
+ default:
throw new IllegalArgumentException("Invalid message type");
}
} catch (JMSException e) {
@@ -282,4 +248,12 @@ public class MessageListenerTest {
}
}
}
+
+ private static final class TestExceptionListener implements
ExceptionListener {
+ JMSException exception;
+ @Override
+ public void onException(JMSException ex) {
+ exception = ex;
+ }
+ };
}
diff --git a/rt/transports/jms/src/test/resources/jms_test.wsdl
b/rt/transports/jms/src/test/resources/jms_test.wsdl
index 2c05636..705dff8 100644
--- a/rt/transports/jms/src/test/resources/jms_test.wsdl
+++ b/rt/transports/jms/src/test/resources/jms_test.wsdl
@@ -24,9 +24,7 @@
xmlns:x1="http://cxf.apache.org/hello_world_jms/types"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://cxf.apache.org/hello_world_jms"
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.w3.org/2010/soapjms/
http://svn.apache.org/repos/asf/cxf/tags/cxf-2.7.7/rt/transports/jms/src/main/resources/schemas/wsdl/spec/jms-spec-wsdl.xsd
">
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:x1="http://cxf.apache.org/hello_world_jms/types"
targetNamespace="http://cxf.apache.org/hello_world_jms/types"
elementFormDefault="qualified">
<complexType name="ErrorCode">