This is an automated email from the ASF dual-hosted git repository.

jgallimore pushed a commit to branch tomee-7.0.x
in repository https://gitbox.apache.org/repos/asf/tomee.git

commit 0b8637273c62e251a3fefd694b24fcf6eb0d654c
Author: Jonathan S. Fisher <jonathan.fis...@emoneyusa.com>
AuthorDate: Tue Sep 3 12:15:15 2019 -0500

    Skookimify junit tests so they don't depend on processing order as much
---
 .../arquillian/tests/jms/JMSContextInjectionTest.java | 19 ++++++++++++++-----
 .../openejb/arquillian/tests/jms/JMSSenderBean.java   | 19 +++++++++++++++++--
 .../arquillian/tests/jms/XACancellingException.java   | 12 ++++++++++++
 3 files changed, 43 insertions(+), 7 deletions(-)

diff --git 
a/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/src/test/java/org/apache/openejb/arquillian/tests/jms/JMSContextInjectionTest.java
 
b/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/src/test/java/org/apache/openejb/arquillian/tests/jms/JMSContextInjectionTest.java
index b6a4d2c..e1a1a75 100644
--- 
a/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/src/test/java/org/apache/openejb/arquillian/tests/jms/JMSContextInjectionTest.java
+++ 
b/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/src/test/java/org/apache/openejb/arquillian/tests/jms/JMSContextInjectionTest.java
@@ -21,6 +21,7 @@ import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.arquillian.test.api.ArquillianResource;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -56,22 +57,30 @@ public class JMSContextInjectionTest {
     @Test
     public void testShouldSendAndReceiveTwoHundredMessages() throws Exception {
         messageCounter.reset();
-
         for (int i = 0; i < 200; i++) {
             senderBean.sendToQueue("test", "Hello world");
         }
-        Thread.sleep(100L);
+        int waitingCount =0;
+        while (senderBean.countMessagesInQueue("test") > 0 && waitingCount++ < 
15) {
+            Thread.sleep(10L);
+        }
+        if (waitingCount >= 15) {
+            Assert.fail("Hit max wait time");
+        }
         assertEquals(200, messageCounter.getValue());
     }
 
     @Test
     public void testTransactionShouldRollback() throws Exception {
         messageCounter.reset();
-
+        boolean fail = true;
         try {
             senderBean.sendToQueue("test", "Hello world", true);
-        } catch (Exception e) {
-            e.printStackTrace();
+        } catch (XACancellingException e) {
+            fail = false;
+        }
+        if (fail) {
+            Assert.fail("Did not catch XACancellingException and we needed 
to");
         }
         Thread.sleep(100L);
         assertEquals(0, messageCounter.getValue());
diff --git 
a/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/src/test/java/org/apache/openejb/arquillian/tests/jms/JMSSenderBean.java
 
b/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/src/test/java/org/apache/openejb/arquillian/tests/jms/JMSSenderBean.java
index 0411112..94123ca 100644
--- 
a/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/src/test/java/org/apache/openejb/arquillian/tests/jms/JMSSenderBean.java
+++ 
b/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/src/test/java/org/apache/openejb/arquillian/tests/jms/JMSSenderBean.java
@@ -16,14 +16,17 @@
  */
 package org.apache.openejb.arquillian.tests.jms;
 
+import java.util.Enumeration;
+
 import javax.ejb.*;
 import javax.inject.Inject;
 import javax.jms.JMSContext;
 import javax.jms.Queue;
+import javax.jms.QueueBrowser;
 
 @Singleton
 @Lock(LockType.READ)
-@TransactionAttribute(TransactionAttributeType.REQUIRED)
+@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
 public class JMSSenderBean {
 
     @Inject
@@ -38,7 +41,19 @@ public class JMSSenderBean {
         jmsContext.createProducer().send(queue, message);
 
         if (rollback) {
-            throw new RuntimeException("Should rollback");
+            throw new XACancellingException();
+        }
+    }
+
+    public int countMessagesInQueue(final String queueName) throws Exception {
+        final Queue queue = jmsContext.createQueue(queueName);
+        final QueueBrowser browser = jmsContext.createBrowser(queue);
+        final Enumeration<?> msgEnumeration = browser.getEnumeration();
+        int count =0 ;
+        while (msgEnumeration.hasMoreElements()) {
+            msgEnumeration.nextElement();
+            count++;
         }
+        return count;
     }
 }
diff --git 
a/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/src/test/java/org/apache/openejb/arquillian/tests/jms/XACancellingException.java
 
b/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/src/test/java/org/apache/openejb/arquillian/tests/jms/XACancellingException.java
new file mode 100644
index 0000000..627f13a
--- /dev/null
+++ 
b/arquillian/arquillian-tomee-tests/arquillian-tomee-jms-tests/src/test/java/org/apache/openejb/arquillian/tests/jms/XACancellingException.java
@@ -0,0 +1,12 @@
+package org.apache.openejb.arquillian.tests.jms;
+
+import javax.ejb.ApplicationException;
+
+@ApplicationException(rollback = true)
+public class XACancellingException extends RuntimeException {
+    private static final long serialVersionUID = 1L;
+
+    public XACancellingException() {
+      super("Should rollback");
+      }
+}

Reply via email to