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"); + } +}