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">

Reply via email to