mirror of https://github.com/apache/activemq.git
convert to JUnit 4 test and add a timeout
git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@1506149 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
3940f2dffd
commit
acbe5499b5
|
@ -16,6 +16,10 @@
|
|||
*/
|
||||
package org.apache.activemq.bugs;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import java.lang.Thread.UncaughtExceptionHandler;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Vector;
|
||||
|
@ -32,28 +36,33 @@ import javax.jms.MessageProducer;
|
|||
import javax.jms.Session;
|
||||
import javax.jms.TextMessage;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.activemq.ActiveMQConnectionFactory;
|
||||
import org.apache.activemq.broker.BrokerService;
|
||||
import org.apache.activemq.command.ActiveMQQueue;
|
||||
import org.apache.activemq.command.ActiveMQTopic;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TestName;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* This is a test case for the issue reported at:
|
||||
* https://issues.apache.org/activemq/browse/AMQ-2021
|
||||
* Bug is modification of inflight message properties so the failure can manifest itself in a bunch
|
||||
* or ways, from message receipt with null properties to marshall errors
|
||||
* This is a test case for the issue reported at: https://issues.apache.org/activemq/browse/AMQ-2021 Bug is modification
|
||||
* of inflight message properties so the failure can manifest itself in a bunch or ways, from message receipt with null
|
||||
* properties to marshall errors
|
||||
*/
|
||||
public class AMQ2021Test extends TestCase implements ExceptionListener, UncaughtExceptionHandler {
|
||||
public class AMQ2021Test implements ExceptionListener, UncaughtExceptionHandler {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(AMQ2021Test.class);
|
||||
BrokerService brokerService;
|
||||
ArrayList<Thread> threads = new ArrayList<Thread>();
|
||||
Vector<Throwable> exceptions;
|
||||
|
||||
@Rule
|
||||
public TestName name = new TestName();
|
||||
|
||||
AMQ2021Test testCase;
|
||||
|
||||
private final String ACTIVEMQ_BROKER_BIND = "tcp://localhost:0";
|
||||
|
@ -68,8 +77,8 @@ public class AMQ2021Test extends TestCase implements ExceptionListener, Uncaught
|
|||
private ActiveMQTopic destination;
|
||||
private CountDownLatch started;
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
Thread.setDefaultUncaughtExceptionHandler(this);
|
||||
testCase = this;
|
||||
|
||||
|
@ -78,19 +87,18 @@ public class AMQ2021Test extends TestCase implements ExceptionListener, Uncaught
|
|||
brokerService.setDeleteAllMessagesOnStartup(true);
|
||||
brokerService.addConnector(ACTIVEMQ_BROKER_BIND);
|
||||
brokerService.start();
|
||||
destination = new ActiveMQTopic(getName());
|
||||
destination = new ActiveMQTopic(name.getMethodName());
|
||||
exceptions = new Vector<Throwable>();
|
||||
|
||||
CONSUMER_BROKER_URL = brokerService.getTransportConnectors().get(0).getPublishableConnectString() + CONSUMER_BROKER_URL;
|
||||
PRODUCER_BROKER_URL = brokerService.getTransportConnectors().get(0).getPublishableConnectString();
|
||||
|
||||
receivedLatch =
|
||||
new CountDownLatch(numConsumers * (numMessages + dlqMessages));
|
||||
receivedLatch = new CountDownLatch(numConsumers * (numMessages + dlqMessages));
|
||||
started = new CountDownLatch(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void tearDown() throws Exception {
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
for (Thread t : threads) {
|
||||
t.interrupt();
|
||||
t.join();
|
||||
|
@ -98,6 +106,7 @@ public class AMQ2021Test extends TestCase implements ExceptionListener, Uncaught
|
|||
brokerService.stop();
|
||||
}
|
||||
|
||||
@Test(timeout=240000)
|
||||
public void testConcurrentTopicResendToDLQ() throws Exception {
|
||||
|
||||
for (int i = 0; i < numConsumers; i++) {
|
||||
|
@ -142,8 +151,7 @@ public class AMQ2021Test extends TestCase implements ExceptionListener, Uncaught
|
|||
}
|
||||
|
||||
private void consumeFromDLQ(int messageCount) throws Exception {
|
||||
ActiveMQConnectionFactory connectionFactory =
|
||||
new ActiveMQConnectionFactory(CONSUMER_BROKER_URL);
|
||||
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(CONSUMER_BROKER_URL);
|
||||
Connection connection = connectionFactory.createConnection();
|
||||
connection.start();
|
||||
|
||||
|
@ -171,7 +179,7 @@ public class AMQ2021Test extends TestCase implements ExceptionListener, Uncaught
|
|||
|
||||
for (int i = 0; i < count; i++) {
|
||||
int id = i + 1;
|
||||
TextMessage message = session.createTextMessage(getName()+" Message "+ id);
|
||||
TextMessage message = session.createTextMessage(name.getMethodName() + " Message " + id);
|
||||
message.setIntProperty("MsgNumber", id);
|
||||
producer.send(message);
|
||||
|
||||
|
@ -201,10 +209,10 @@ public class AMQ2021Test extends TestCase implements ExceptionListener, Uncaught
|
|||
super(threadId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
ActiveMQConnectionFactory connectionFactory =
|
||||
new ActiveMQConnectionFactory(CONSUMER_BROKER_URL);
|
||||
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(CONSUMER_BROKER_URL);
|
||||
Connection connection = connectionFactory.createConnection();
|
||||
connection.setExceptionListener(testCase);
|
||||
connection.setClientID(getName());
|
||||
|
@ -221,6 +229,7 @@ public class AMQ2021Test extends TestCase implements ExceptionListener, Uncaught
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessage(Message message) {
|
||||
try {
|
||||
counter++;
|
||||
|
@ -244,14 +253,15 @@ public class AMQ2021Test extends TestCase implements ExceptionListener, Uncaught
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onException(JMSException exception) {
|
||||
log.info("Unexpected JMSException", exception);
|
||||
exceptions.add(exception);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uncaughtException(Thread thread, Throwable exception) {
|
||||
log.info("Unexpected exception from thread " + thread + ", ex: " + exception);
|
||||
exceptions.add(exception);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue