You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2009/07/31 11:37:33 UTC
svn commit: r799560 -
/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/bugs/AMQ1936Test.java
Author: gtully
Date: Fri Jul 31 09:37:32 2009
New Revision: 799560
URL: http://svn.apache.org/viewvc?rev=799560&view=rev
Log:
test still failing on solaris with slow disk, reducing log output and adding a thread dump if it fails to help diagnose: https://issues.apache.org/activemq/browse/AMQ-1936 - need to exclude a hung consumer case
Modified:
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/bugs/AMQ1936Test.java
Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/bugs/AMQ1936Test.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/bugs/AMQ1936Test.java?rev=799560&r1=799559&r2=799560&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/bugs/AMQ1936Test.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/bugs/AMQ1936Test.java Fri Jul 31 09:37:32 2009
@@ -20,6 +20,9 @@
import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.util.Wait;
import org.apache.log4j.Logger;
+
+import java.util.Map;
+import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.LinkedBlockingQueue;
@@ -98,7 +101,7 @@
}
}
- private void sendTextMessage( String queueName, String msg ) throws JMSException, NamingException {
+ private void sendTextMessage( String queueName, int i ) throws JMSException, NamingException {
QueueConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://test");
QueueConnection queueConnection = null;
QueueSession session = null;
@@ -116,7 +119,7 @@
sender = session.createSender( queue );
sender.setDeliveryMode( DeliveryMode.PERSISTENT );
- message = session.createTextMessage( msg );
+ message = session.createTextMessage( String.valueOf(i) );
// send the message
sender.send( message );
@@ -124,9 +127,10 @@
if( session.getTransacted()) {
session.commit();
}
-
- logger.info( "Message successfully sent to : " + queue.getQueueName( ) + " messageid: " + message.getJMSMessageID( )
+ if (i%1000 == 0) {
+ logger.info( "Message successfully sent to : " + queue.getQueueName( ) + " messageid: " + message.getJMSMessageID( )
+ " content:" + message.getText());
+ }
} finally {
if( sender!=null ) {
sender.close();
@@ -152,7 +156,7 @@
if( duplicateSignal.getCount()==0 ) {
fail( "Duplicate message id detected" );
}
- sendTextMessage( TEST_QUEUE_NAME, String.valueOf(i) );
+ sendTextMessage( TEST_QUEUE_NAME, i );
}
// create a number of consumers to read of the messages and start them with a handler which simply stores the message ids
@@ -162,10 +166,10 @@
public void onMessage( Message message ) throws Exception {
synchronized( lock ) {
- logger.info( "Received message:" + message.getJMSMessageID() + " with content: " + ((TextMessage)message).getText() );
-
- messageCount.incrementAndGet();
-
+ int current = messageCount.incrementAndGet();
+ if (current % 1000 == 0) {
+ logger.info( "Received message:" + message.getJMSMessageID() + " with content: " + ((TextMessage)message).getText() );
+ }
if( messages.containsKey( message.getJMSMessageID()) ) {
duplicateSignal.countDown( );
logger.fatal( "duplicate message id detected:" + message.getJMSMessageID() );
@@ -184,19 +188,35 @@
if( duplicateSignal.getCount()==0) {
fail( "Duplicate message id detected" );
}
- sendTextMessage( TEST_QUEUE_NAME, String.valueOf( i ) );
+ sendTextMessage( TEST_QUEUE_NAME, i );
}
-
+
+ logger.info("sent all " + TEST_MESSAGE_COUNT + " messages");
+
// allow some time for messages to be delivered to receivers.
- Wait.waitFor(new Wait.Condition() {
+ boolean ok = Wait.waitFor(new Wait.Condition() {
public boolean isSatisified() throws Exception {
return TEST_MESSAGE_COUNT == messages.size();
}
- });
+ }, 20*60*1000);
+ if (!ok) {
+ dumpAllThreads("--STUCK?--");
+ }
assertEquals( "Number of messages received does not match the number sent", TEST_MESSAGE_COUNT, messages.size( ) );
assertEquals( TEST_MESSAGE_COUNT, messageCount.get() );
}
+
+ private void dumpAllThreads(String prefix) {
+ Map<Thread, StackTraceElement[]> stacks = Thread.getAllStackTraces();
+ for (Entry<Thread, StackTraceElement[]> stackEntry : stacks.entrySet()) {
+ System.err.println(prefix + stackEntry.getKey());
+ for(StackTraceElement element : stackEntry.getValue()) {
+ System.err.println(" " + element);
+ }
+ }
+
+ }
private final static class ThreadedMessageReceiver implements Runnable {
private String queueName = null;