Shutdown all connections opened in the testcase so that the broker shutdown between cases. Fixes failures that happened ocasionally

git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@641890 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Hiram R. Chirino 2008-03-27 16:55:09 +00:00
parent e35c115e03
commit 14b8957713
1 changed files with 25 additions and 8 deletions

View File

@ -16,7 +16,13 @@
*/ */
package org.apache.activemq; package org.apache.activemq;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.jms.BytesMessage; import javax.jms.BytesMessage;
import javax.jms.Connection; import javax.jms.Connection;
@ -40,20 +46,26 @@ public class JmsTempDestinationTest extends TestCase {
private Connection connection; private Connection connection;
private ActiveMQConnectionFactory factory; private ActiveMQConnectionFactory factory;
protected List<Connection> connections = Collections.synchronizedList(new ArrayList<Connection>());
protected void setUp() throws Exception { protected void setUp() throws Exception {
factory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false"); factory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
factory.setUseAsyncSend(false); factory.setUseAsyncSend(false);
connection = factory.createConnection(); connection = factory.createConnection();
connections.add(connection);
} }
/** /**
* @see junit.framework.TestCase#tearDown() * @see junit.framework.TestCase#tearDown()
*/ */
protected void tearDown() throws Exception { protected void tearDown() throws Exception {
if (connection != null) { for (Iterator iter = connections.iterator(); iter.hasNext();) {
connection.close(); Connection conn = (Connection)iter.next();
connection = null; try {
conn.close();
} catch (Throwable e) {
}
iter.remove();
} }
} }
@ -74,6 +86,7 @@ public class JmsTempDestinationTest extends TestCase {
// temp destination should not be consume when using another connection // temp destination should not be consume when using another connection
Connection otherConnection = factory.createConnection(); Connection otherConnection = factory.createConnection();
connections.add(otherConnection);
Session otherSession = otherConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); Session otherSession = otherConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
TemporaryQueue otherQueue = otherSession.createTemporaryQueue(); TemporaryQueue otherQueue = otherSession.createTemporaryQueue();
MessageConsumer consumer = otherSession.createConsumer(otherQueue); MessageConsumer consumer = otherSession.createConsumer(otherQueue);
@ -162,6 +175,7 @@ public class JmsTempDestinationTest extends TestCase {
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
BytesMessage message = session.createBytesMessage(); BytesMessage message = session.createBytesMessage();
message.writeBytes(data); message.writeBytes(data);
message.setIntProperty("c", i);
producer.send(message); producer.send(message);
list.add(message); list.add(message);
} }
@ -170,8 +184,8 @@ public class JmsTempDestinationTest extends TestCase {
MessageConsumer consumer = session.createConsumer(queue); MessageConsumer consumer = session.createConsumer(queue);
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
Message message2 = consumer.receive(2000); Message message2 = consumer.receive(2000);
assertTrue(message2 != null); assertTrue(message2 != null);
assertEquals(i, message2.getIntProperty("c"));
assertTrue(message2.equals(list.get(i))); assertTrue(message2.equals(list.get(i)));
} }
} }
@ -182,10 +196,12 @@ public class JmsTempDestinationTest extends TestCase {
* *
* @throws JMSException * @throws JMSException
* @throws InterruptedException * @throws InterruptedException
* @throws URISyntaxException
*/ */
public void testPublishFailsForClosedConnection() throws JMSException, InterruptedException { public void testPublishFailsForClosedConnection() throws JMSException, InterruptedException, URISyntaxException {
Connection tempConnection = factory.createConnection(); Connection tempConnection = factory.createConnection();
connections.add(tempConnection);
Session tempSession = tempConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); Session tempSession = tempConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
TemporaryQueue queue = tempSession.createTemporaryQueue(); TemporaryQueue queue = tempSession.createTemporaryQueue();
@ -211,7 +227,6 @@ public class JmsTempDestinationTest extends TestCase {
producer.send(message); producer.send(message);
fail("Send should fail since temp destination should not exist anymore."); fail("Send should fail since temp destination should not exist anymore.");
} catch (JMSException e) { } catch (JMSException e) {
assertTrue("failed to throw an exception", true);
} }
} }
@ -225,6 +240,7 @@ public class JmsTempDestinationTest extends TestCase {
public void testPublishFailsForDestoryedTempDestination() throws JMSException, InterruptedException { public void testPublishFailsForDestoryedTempDestination() throws JMSException, InterruptedException {
Connection tempConnection = factory.createConnection(); Connection tempConnection = factory.createConnection();
connections.add(tempConnection);
Session tempSession = tempConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); Session tempSession = tempConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
TemporaryQueue queue = tempSession.createTemporaryQueue(); TemporaryQueue queue = tempSession.createTemporaryQueue();
@ -260,6 +276,7 @@ public class JmsTempDestinationTest extends TestCase {
*/ */
public void testDeleteDestinationWithSubscribersFails() throws JMSException { public void testDeleteDestinationWithSubscribersFails() throws JMSException {
Connection connection = factory.createConnection(); Connection connection = factory.createConnection();
connections.add(connection);
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
TemporaryQueue queue = session.createTemporaryQueue(); TemporaryQueue queue = session.createTemporaryQueue();