You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2012/03/10 20:22:37 UTC

svn commit: r1299257 [26/26] - in /qpid/branches/rg-amqp-1-0-sandbox/qpid/java: broker-plugins/ broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/ broker-plugins/access-control/src/main/java/org/apache/qpid/serve...

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTestCase.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTestCase.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTestCase.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTestCase.java Sat Mar 10 19:22:10 2012
@@ -20,26 +20,13 @@
  */
 package org.apache.qpid.test.unit.transacted;
 
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import javax.jms.DeliveryMode;
-import javax.jms.ExceptionListener;
-import javax.jms.JMSException;
-import javax.jms.Message;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Queue;
-import javax.jms.TextMessage;
-
 import junit.framework.TestCase;
 
 import org.apache.qpid.AMQException;
 import org.apache.qpid.client.AMQConnection;
 import org.apache.qpid.client.AMQConnectionURL;
 import org.apache.qpid.client.AMQQueue;
+import org.apache.qpid.client.AMQSession;
 import org.apache.qpid.framing.AMQShortString;
 import org.apache.qpid.jms.ConnectionURL;
 import org.apache.qpid.jms.Session;
@@ -47,11 +34,25 @@ import org.apache.qpid.protocol.AMQConst
 import org.apache.qpid.test.utils.QpidBrokerTestCase;
 import org.apache.qpid.util.LogMonitor;
 
+import javax.jms.DeliveryMode;
+import javax.jms.ExceptionListener;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.TextMessage;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
 /**
  * The {@link TestCase} for transaction timeout testing.
  */
 public abstract class TransactionTimeoutTestCase extends QpidBrokerTestCase implements ExceptionListener
 {
+    private static final int ALERT_MESSAGE_TOLERANCE = 6;
     public static final String VIRTUALHOST = "test";
     public static final String TEXT = "0123456789abcdefghiforgettherest";
     public static final String CHN_OPEN_TXN = "CHN-1007";
@@ -138,16 +139,21 @@ public abstract class TransactionTimeout
 
     /**
      * Send a number of messages to the queue, optionally pausing after each.
+     *
+     * Need to sync to ensure that the Broker has received the message(s) in order
+     * the test and broker start timing the idle transaction from the same point in time.
      */
     protected void send(int count, float delay) throws Exception
     {
         for (int i = 0; i < count; i++)
         {
-	        sleep(delay);
+            sleep(delay);
             Message msg = _psession.createTextMessage(TEXT);
             msg.setIntProperty("i", i);
-	        _producer.send(msg);
+            _producer.send(msg);
         }
+
+        ((AMQSession<?, ?>)_psession).sync();
     }
     
     /**
@@ -184,7 +190,7 @@ public abstract class TransactionTimeout
         }
         else
         {
-	        assertTrue(idleErr, idleMsgs.size() >= idle - 2 && idleMsgs.size() <= idle + 2);
+	        assertTrue(idleErr, idleMsgs.size() >= idle - ALERT_MESSAGE_TOLERANCE && idleMsgs.size() <= idle + ALERT_MESSAGE_TOLERANCE);
         }
         
         if (open == 0)
@@ -193,7 +199,7 @@ public abstract class TransactionTimeout
         }
         else
         {
-            assertTrue(openErr, openMsgs.size() >= open - 2 && openMsgs.size() <= open + 2);
+            assertTrue(openErr, openMsgs.size() >= open - ALERT_MESSAGE_TOLERANCE && openMsgs.size() <= open + ALERT_MESSAGE_TOLERANCE);
         }
     }
 

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/AbstractXATestCase.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/AbstractXATestCase.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/AbstractXATestCase.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/AbstractXATestCase.java Sat Mar 10 19:22:10 2012
@@ -20,9 +20,15 @@ package org.apache.qpid.test.unit.xa;
 import org.apache.qpid.dtx.XidImpl;
 import org.apache.qpid.test.utils.QpidBrokerTestCase;
 
-import javax.transaction.xa.Xid;
+import javax.jms.DeliveryMode;
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.TextMessage;
+import javax.jms.XASession;
 import javax.transaction.xa.XAResource;
-import javax.jms.*;
+import javax.transaction.xa.Xid;
 import java.util.Random;
 
 /**

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/FaultTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/FaultTest.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/FaultTest.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/FaultTest.java Sat Mar 10 19:22:10 2012
@@ -21,15 +21,20 @@ package org.apache.qpid.test.unit.xa;
  */
 
 
+import junit.framework.TestSuite;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.jms.*;
-import javax.transaction.xa.Xid;
-import javax.transaction.xa.XAResource;
+import javax.jms.Queue;
+import javax.jms.QueueConnection;
+import javax.jms.QueueSession;
+import javax.jms.Session;
+import javax.jms.XAQueueConnection;
+import javax.jms.XAQueueConnectionFactory;
+import javax.jms.XAQueueSession;
 import javax.transaction.xa.XAException;
-
-import junit.framework.TestSuite;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
 
 
 public class FaultTest extends AbstractXATestCase
@@ -113,7 +118,7 @@ public class FaultTest extends AbstractX
             _queueFactory = getConnectionFactory();
             _xaqueueConnection = _queueFactory.createXAQueueConnection("guest", "guest");
             XAQueueSession session = _xaqueueConnection.createXAQueueSession();
-            _queueConnection = _queueFactory.createQueueConnection();
+            _queueConnection = _queueFactory.createQueueConnection("guest","guest");
             _nonXASession = _queueConnection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
             init(session, _queue);
         }

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/QueueTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/QueueTest.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/QueueTest.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/QueueTest.java Sat Mar 10 19:22:10 2012
@@ -17,15 +17,26 @@
  */
 package org.apache.qpid.test.unit.xa;
 
-import javax.jms.*;
-import javax.transaction.xa.XAResource;
-import javax.transaction.xa.Xid;
-import javax.transaction.xa.XAException;
-
 import junit.framework.TestSuite;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.jms.DeliveryMode;
+import javax.jms.JMSException;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.QueueConnection;
+import javax.jms.QueueSession;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.jms.XAQueueConnection;
+import javax.jms.XAQueueConnectionFactory;
+import javax.jms.XAQueueSession;
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
+
 public class QueueTest extends AbstractXATestCase
 {
     /* this clas logger */
@@ -151,11 +162,12 @@ public class QueueTest extends AbstractX
             // create a standard session
             try
             {
-                _queueConnection = _queueFactory.createQueueConnection();
+                _queueConnection = _queueFactory.createQueueConnection("guest", "guest");
                 _nonXASession = _queueConnection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
             }
             catch (JMSException e)
             {
+                e.printStackTrace();
                 fail("cannot create queue session: " + e.getMessage());
             }
             init(session, _queue);
@@ -627,7 +639,8 @@ public class QueueTest extends AbstractX
                 TextMessage message1 = (TextMessage) nonXAConsumer.receive(1000);
                 if (message1 != null)
                 {
-                    fail("The queue is not empty! ");
+
+                    fail("The queue is not empty! " + message1.getLongProperty(_sequenceNumberPropertyName));
                 }
             }
             catch (JMSException e)

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/TopicTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/TopicTest.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/TopicTest.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/TopicTest.java Sat Mar 10 19:22:10 2012
@@ -17,18 +17,19 @@
  */
 package org.apache.qpid.test.unit.xa;
 
+import junit.framework.TestSuite;
+import org.apache.qpid.configuration.ClientProperties;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import javax.jms.*;
+import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
-import javax.transaction.xa.XAException;
-
-import junit.framework.TestSuite;
-
+import java.util.HashSet;
+import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
  *
  *
@@ -105,7 +106,7 @@ public class TopicTest extends AbstractX
             }
             catch (Exception e)
             {
-                fail("Exception thrown when cleaning standard connection: " + e.getStackTrace());
+                fail("Exception thrown when cleaning standard connection: " + e);
             }
         }
         super.tearDown();
@@ -118,6 +119,7 @@ public class TopicTest extends AbstractX
     {
         if (!isBroker08())
         {
+            setTestClientSystemProperty(ClientProperties.MAX_PREFETCH_PROP_NAME, "1");
             // lookup test queue
             try
             {
@@ -652,7 +654,12 @@ public class TopicTest extends AbstractX
                     {
 
                         message = (TextMessage) xaDurSub.receive(1000);
-                        _logger.debug(" received message: " + message.getLongProperty(_sequenceNumberPropertyName));
+
+                        if(message != null)
+                        {
+                            _logger.debug(" received message: " + message.getLongProperty(_sequenceNumberPropertyName));
+                        }
+
                         if (message == null)
                         {
                             fail("no message received! expected: " + i);
@@ -884,35 +891,40 @@ public class TopicTest extends AbstractX
                     // receive 3 message within tx1: 3, 4 and 7
                     _xaResource.start(xid1, XAResource.TMRESUME);
                     // receive messages 3, 4 and 7
+                    Set<Long> expected = new HashSet<Long>();
+                    expected.add(3L);
+                    expected.add(4L);
+                    expected.add(7L);
                     message = (TextMessage) xaDurSub.receive(1000);
                     if (message == null)
                     {
-                        fail("no message received! expected: " + 3);
+                        fail("no message received! expected one of: " + expected);
                     }
-                    else if (message.getLongProperty(_sequenceNumberPropertyName) != 3)
+                    else if (!expected.remove(message.getLongProperty(_sequenceNumberPropertyName)))
                     {
                         fail("wrong sequence number: " + message
-                                .getLongProperty(_sequenceNumberPropertyName) + " 3 was expected");
+                                .getLongProperty(_sequenceNumberPropertyName) + " expected one from " + expected);
                     }
                     message = (TextMessage) xaDurSub.receive(1000);
                     if (message == null)
                     {
-                        fail("no message received! expected: " + 4);
+                        fail("no message received! expected one of: " + expected);
                     }
-                    else if (message.getLongProperty(_sequenceNumberPropertyName) != 4)
+                    else if (!expected.remove(message.getLongProperty(_sequenceNumberPropertyName)))
                     {
+
                         fail("wrong sequence number: " + message
-                                .getLongProperty(_sequenceNumberPropertyName) + " 4 was expected");
+                                .getLongProperty(_sequenceNumberPropertyName) + " expected one from " + expected);
                     }
                     message = (TextMessage) xaDurSub.receive(1000);
                     if (message == null)
                     {
-                        fail("no message received! expected: " + 7);
+                        fail("no message received! expected one of: " + expected);
                     }
-                    else if (message.getLongProperty(_sequenceNumberPropertyName) != 7)
+                    else if (!expected.remove(message.getLongProperty(_sequenceNumberPropertyName)))
                     {
                         fail("wrong sequence number: " + message
-                                .getLongProperty(_sequenceNumberPropertyName) + " 7 was expected");
+                                .getLongProperty(_sequenceNumberPropertyName) + " expected one from " + expected);
                     }
                 }
                 catch (Exception e)
@@ -938,8 +950,18 @@ public class TopicTest extends AbstractX
 
                 try
                 {
-                    // consume messages 1 - 4
-                    //----- start xid1
+                    // consume messages: could be any from (1 - 4, 7-10)
+                    //----- start xid4
+                    Set<Long> expected = new HashSet<Long>();
+                    Set<Long> xid4msgs = new HashSet<Long>();
+                    for(long l = 1; l <= 4l; l++)
+                    {
+                        expected.add(l);
+                    }
+                    for(long l = 7; l <= 10l; l++)
+                    {
+                        expected.add(l);
+                    }
                     _xaResource.start(xid4, XAResource.TMNOFLAGS);
                     for (int i = 1; i <= 4; i++)
                     {
@@ -948,9 +970,14 @@ public class TopicTest extends AbstractX
                         {
                             fail("no message received! expected: " + i);
                         }
-                        else if (message.getLongProperty(_sequenceNumberPropertyName) != i)
+
+                        long seqNo = message.getLongProperty(_sequenceNumberPropertyName);
+                        xid4msgs.add(seqNo);
+
+                        if (!expected.remove(seqNo))
                         {
-                            fail("wrong sequence number: " + message.getLongProperty(_sequenceNumberPropertyName));
+                            fail("wrong sequence number: " + seqNo +
+                                 " expected one from " + expected);
                         }
                     }
                     _xaResource.end(xid4, XAResource.TMSUSPEND);
@@ -963,15 +990,17 @@ public class TopicTest extends AbstractX
                         {
                             fail("no message received! expected: " + i);
                         }
-                        else if (message.getLongProperty(_sequenceNumberPropertyName) != i)
+                        else if (!expected.remove(message.getLongProperty(_sequenceNumberPropertyName)))
                         {
-                            fail("wrong sequence number: " + message.getLongProperty(_sequenceNumberPropertyName));
+                            fail("wrong sequence number: " + message.getLongProperty(_sequenceNumberPropertyName)
+                                + " expected one from " + expected);
                         }
                     }
                     _xaResource.end(xid5, XAResource.TMSUSPEND);
                     // abort tx4
                     _xaResource.prepare(xid4);
                     _xaResource.rollback(xid4);
+                    expected.addAll(xid4msgs);
                     // consume messages 1-4 with tx5
                     _xaResource.start(xid5, XAResource.TMRESUME);
                     for (int i = 1; i <= 4; i++)
@@ -981,13 +1010,15 @@ public class TopicTest extends AbstractX
                         {
                             fail("no message received! expected: " + i);
                         }
-                        else if (message.getLongProperty(_sequenceNumberPropertyName) != i)
+                        else if (!expected.remove(message.getLongProperty(_sequenceNumberPropertyName)))
                         {
-                            fail("wrong sequence number: " + message.getLongProperty(_sequenceNumberPropertyName));
+                            fail("wrong sequence number: " + message.getLongProperty(_sequenceNumberPropertyName)
+                                 + " expected one from " + expected);
                         }
                     }
                     _xaResource.end(xid5, XAResource.TMSUSPEND);
                     // commit tx5
+
                     _xaResource.prepare(xid5);
                     _xaResource.commit(xid5, false);
                 }
@@ -1604,6 +1635,7 @@ public class TopicTest extends AbstractX
                 }
                 _xaResource.end(xid2, XAResource.TMSUCCESS);
                 _xaResource.commit(xid2, true);
+                _session.close();
             }
             catch (Exception e)
             {

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerHolder.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerHolder.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerHolder.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/BrokerHolder.java Sat Mar 10 19:22:10 2012
@@ -22,5 +22,7 @@ package org.apache.qpid.test.utils;
 
 public interface BrokerHolder
 {
+    String getWorkingDirectory();
     void shutdown();
+    void kill();
 }

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/ConversationFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/ConversationFactory.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/ConversationFactory.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/ConversationFactory.java Sat Mar 10 19:22:10 2012
@@ -21,11 +21,19 @@
 package org.apache.qpid.test.utils;
 
 import org.apache.log4j.Logger;
-import org.apache.qpid.test.utils.ReflectionUtils;
 
-import javax.jms.*;
-
-import java.util.*;
+import javax.jms.Connection;
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageListener;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
@@ -113,19 +121,19 @@ public class ConversationFactory
     private Session session;
 
     /** The message consumer for incoming messages. */
-    MessageConsumer consumer;
+    private MessageConsumer consumer;
 
     /** The message producer for outgoing messages. */
-    MessageProducer producer;
+    private MessageProducer producer;
 
     /** The well-known or temporary destination to receive replies on. */
-    Destination receiveDestination;
+    private Destination receiveDestination;
 
     /** Holds the queue implementation class for the reply queue. */
-    Class<? extends BlockingQueue> queueClass;
+    private Class<? extends BlockingQueue> queueClass;
 
     /** Used to hold any replies that are received outside of the context of a conversation. */
-    BlockingQueue<Message> deadLetterBox = new LinkedBlockingQueue<Message>();
+    private BlockingQueue<Message> deadLetterBox = new LinkedBlockingQueue<Message>();
 
     /* Used to hold conversation state on a per thread basis. */
     /*
@@ -143,7 +151,7 @@ public class ConversationFactory
      */
 
     /** Generates new coversation id's as needed. */
-    AtomicLong conversationIdGenerator = new AtomicLong();
+    private AtomicLong conversationIdGenerator = new AtomicLong();
 
     /**
      * Creates a conversation helper on the specified connection with the default sending destination, and listening
@@ -238,13 +246,13 @@ public class ConversationFactory
     public class Conversation
     {
         /** Holds the correlation id for the context. */
-        long conversationId;
+        private long conversationId;
 
         /**
          * Holds the send destination for the context. This will automatically be updated to the most recently received
          * reply-to destination.
          */
-        Destination sendDestination;
+        private Destination sendDestination;
 
         /**
          * Sends a message to the default sending location. The correlation id of the message will be assigned by this

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/FailoverBaseCase.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/FailoverBaseCase.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/FailoverBaseCase.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/FailoverBaseCase.java Sat Mar 10 19:22:10 2012
@@ -20,15 +20,13 @@
  */
 package org.apache.qpid.test.utils;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.qpid.client.AMQConnectionFactory;
 import org.apache.qpid.util.FileUtils;
 
 import javax.naming.NamingException;
-import javax.jms.JMSException;
-import javax.naming.NamingException;
-
-import org.apache.qpid.client.AMQConnectionFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class FailoverBaseCase extends QpidBrokerTestCase
 {
@@ -36,8 +34,6 @@ public class FailoverBaseCase extends Qp
 
     public static final long DEFAULT_FAILOVER_TIME = 10000L;
 
-    protected int failingPort;
-
     protected void setUp() throws java.lang.Exception
     {
         super.setUp();
@@ -68,15 +64,6 @@ public class FailoverBaseCase extends Qp
         return _connectionFactory;
     }
 
-    @Override
-    public void stopBroker(int port) throws Exception
-    {
-        if (isBrokerPresent(port))
-        {
-            super.stopBroker(port);
-        }
-    }
-
     public void tearDown() throws Exception
     {
         try
@@ -92,11 +79,11 @@ public class FailoverBaseCase extends Qp
         }
     }
 
-
     public void failBroker(int port)
     {
         try
         {
+            //TODO: use killBroker instead
             stopBroker(port);
         }
         catch (Exception e)
@@ -104,6 +91,4 @@ public class FailoverBaseCase extends Qp
             throw new RuntimeException(e);
         }
     }
-
-        
 }

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/InternalBrokerHolder.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/InternalBrokerHolder.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/InternalBrokerHolder.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/InternalBrokerHolder.java Sat Mar 10 19:22:10 2012
@@ -21,14 +21,17 @@
 package org.apache.qpid.test.utils;
 
 import org.apache.log4j.Logger;
+
 import org.apache.qpid.server.Broker;
 
 public class InternalBrokerHolder implements BrokerHolder
 {
     private static final Logger LOGGER = Logger.getLogger(InternalBrokerHolder.class);
+
     private final Broker _broker;
+    private final String _workingDirectory;
 
-    public InternalBrokerHolder(final Broker broker)
+    public InternalBrokerHolder(final Broker broker, String workingDirectory)
     {
         if(broker == null)
         {
@@ -36,6 +39,13 @@ public class InternalBrokerHolder implem
         }
 
         _broker = broker;
+        _workingDirectory = workingDirectory;
+    }
+
+    @Override
+    public String getWorkingDirectory()
+    {
+        return _workingDirectory;
     }
 
     public void shutdown()
@@ -47,4 +57,12 @@ public class InternalBrokerHolder implem
         LOGGER.info("Broker instance shutdown");
     }
 
+    @Override
+    public void kill()
+    {
+        // Can't kill a internal broker as we would also kill ourselves as we share the same JVM.
+        shutdown();
+    }
+
+
 }

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java Sat Mar 10 19:22:10 2012
@@ -20,32 +20,31 @@
  */
 package org.apache.qpid.test.utils;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import javax.management.JMException;
-import javax.management.MBeanException;
-import javax.management.MBeanServerConnection;
-import javax.management.MBeanServerInvocationHandler;
-import javax.management.ObjectName;
-import javax.management.MalformedObjectNameException;
-import javax.management.remote.JMXConnector;
-
 import junit.framework.TestCase;
-
 import org.apache.commons.configuration.ConfigurationException;
+
 import org.apache.qpid.management.common.JMXConnnectionFactory;
+import org.apache.qpid.management.common.mbeans.ConfigurationManagement;
+import org.apache.qpid.management.common.mbeans.LoggingManagement;
 import org.apache.qpid.management.common.mbeans.ManagedBroker;
 import org.apache.qpid.management.common.mbeans.ManagedConnection;
 import org.apache.qpid.management.common.mbeans.ManagedExchange;
-import org.apache.qpid.management.common.mbeans.LoggingManagement;
-import org.apache.qpid.management.common.mbeans.ConfigurationManagement;
 import org.apache.qpid.management.common.mbeans.ManagedQueue;
 import org.apache.qpid.management.common.mbeans.ServerInformation;
 import org.apache.qpid.management.common.mbeans.UserManagement;
 
+import javax.management.JMException;
+import javax.management.MBeanException;
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.remote.JMXConnector;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
 /**
  * JMX access for tests.
  */

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java Sat Mar 10 19:22:10 2012
@@ -17,43 +17,11 @@
  */
 package org.apache.qpid.test.utils;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.io.PrintStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-import javax.jms.BytesMessage;
-import javax.jms.Connection;
-import javax.jms.Destination;
-import javax.jms.JMSException;
-import javax.jms.MapMessage;
-import javax.jms.Message;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.ObjectMessage;
-import javax.jms.Queue;
-import javax.jms.Session;
-import javax.jms.StreamMessage;
-import javax.jms.TextMessage;
-import javax.jms.Topic;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
+
 import org.apache.qpid.AMQException;
 import org.apache.qpid.client.AMQConnectionFactory;
 import org.apache.qpid.client.AMQQueue;
@@ -72,6 +40,34 @@ import org.apache.qpid.url.URLSyntaxExce
 import org.apache.qpid.util.FileUtils;
 import org.apache.qpid.util.LogMonitor;
 
+import javax.jms.BytesMessage;
+import javax.jms.Connection;
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.MapMessage;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.ObjectMessage;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.StreamMessage;
+import javax.jms.TextMessage;
+import javax.jms.Topic;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
 /**
  * Qpid base class for system testing test cases.
  */
@@ -126,7 +122,6 @@ public class QpidBrokerTestCase extends 
     private static final String BROKER_LOG_PREFIX = "broker.log.prefix";
     private static final String BROKER_PERSITENT = "broker.persistent";
     private static final String BROKER_PROTOCOL_EXCLUDES = "broker.protocol.excludes";
-    
 
     // values
     protected static final String JAVA = "java";
@@ -154,7 +149,7 @@ public class QpidBrokerTestCase extends 
 
     protected File _outputFile;
 
-    protected PrintStream _brokerOutputStream;
+    protected PrintStream _testcaseOutputStream;
 
     protected Map<Integer, BrokerHolder> _brokers = new HashMap<Integer, BrokerHolder>();
 
@@ -195,10 +190,10 @@ public class QpidBrokerTestCase extends 
         super();
     }
     
-	public Logger getLogger()
-	{
-		return QpidBrokerTestCase._logger;
-	}
+    public Logger getLogger()
+    {
+        return QpidBrokerTestCase._logger;
+    }
 
     public void runBare() throws Throwable
     {
@@ -228,12 +223,12 @@ public class QpidBrokerTestCase extends 
 
             if (_interleaveBrokerLog)
             {
-            	_brokerOutputStream = out;
+                _testcaseOutputStream = out;
             }
             else
             {
-            	_brokerOutputStream = new PrintStream(new FileOutputStream(String
-    					.format("%s/TEST-%s.broker.out", _output, qname)), true);
+                _testcaseOutputStream = new PrintStream(new FileOutputStream(String
+                        .format("%s/TEST-%s.broker.out", _output, qname)), true);
             }
         }
 
@@ -278,7 +273,7 @@ public class QpidBrokerTestCase extends 
                 out.close();
                 if (!_interleaveBrokerLog)
                 {
-                	_brokerOutputStream.close();
+                    _testcaseOutputStream.close();
                 }
             }
         }
@@ -307,103 +302,6 @@ public class QpidBrokerTestCase extends 
         startBroker();
     }
 
-    private static final class Piper extends Thread
-    {
-
-        private LineNumberReader in;
-        private PrintStream out;
-        private String ready;
-        private CountDownLatch latch;
-        private boolean seenReady;
-        private String stopped;
-        private String stopLine;
-
-        public Piper(InputStream in, PrintStream out, String ready)
-        {
-            this(in, out, ready, null);
-        }
-
-        public Piper(InputStream in, PrintStream out, String ready, String stopped)
-        {
-            this.in = new LineNumberReader(new InputStreamReader(in));
-            this.out = out;
-            this.ready = ready;
-            this.stopped = stopped;
-            this.seenReady = false;
-
-            if (this.ready != null && !this.ready.equals(""))
-            {
-                this.latch = new CountDownLatch(1);
-            }
-            else
-            {
-                this.latch = null;
-            }
-        }
-
-        public Piper(InputStream in, PrintStream out)
-        {
-            this(in, out, null);
-        }
-
-        public boolean await(long timeout, TimeUnit unit) throws InterruptedException
-        {
-            if (latch == null)
-            {
-                return true;
-            }
-            else
-            {
-                latch.await(timeout, unit);
-                return seenReady;
-            }
-        }
-
-        public void run()
-        {
-            try
-            {
-                String line;
-                while ((line = in.readLine()) != null)
-                {
-                	if (_interleaveBrokerLog)
-                	{
-                		line = _brokerLogPrefix + line;
-                	}
-                	out.println(line);
-
-                    if (latch != null && line.contains(ready))
-                    {
-                        seenReady = true;
-                        latch.countDown();
-                    }
-
-                    if (!seenReady && line.contains(stopped))
-                    {
-                        stopLine = line;
-                    }
-                }
-            }
-            catch (IOException e)
-            {
-                // this seems to happen regularly even when
-                // exits are normal
-            }
-            finally
-            {
-                if (latch != null)
-                {
-                    latch.countDown();
-                }
-            }
-        }
-
-        public String getStopLine()
-        {
-            return stopLine;
-        }
-    }
-
     /**
      * Return the management port in use by the broker on this main port
      *
@@ -489,7 +387,7 @@ public class QpidBrokerTestCase extends 
             _logger.info("starting internal broker (same JVM)");
             broker.startup(options);
 
-            _brokers.put(port, new InternalBrokerHolder(broker));
+            _brokers.put(port, new InternalBrokerHolder(broker, System.getProperty("QPID_WORK")));
         }
         else if (!_brokerType.equals(BrokerType.EXTERNAL))
         {
@@ -563,18 +461,19 @@ public class QpidBrokerTestCase extends 
             // cpp broker requires that the work directory is created
             createBrokerWork(qpidWork);
 
-            Process process = pb.start();;
+            Process process = pb.start();
 
             Piper p = new Piper(process.getInputStream(),
-            		            _brokerOutputStream,
+                                _testcaseOutputStream,
                                 System.getProperty(BROKER_READY),
-                                System.getProperty(BROKER_STOPPED));
+                                System.getProperty(BROKER_STOPPED),
+                                _interleaveBrokerLog ? _brokerLogPrefix : null);
 
             p.start();
 
             if (!p.await(30, TimeUnit.SECONDS))
             {
-                _logger.info("broker failed to become ready (" + p.ready + "):" + p.getStopLine());
+                _logger.info("broker failed to become ready (" + p.getReady() + "):" + p.getStopLine());
                 //Ensure broker has stopped
                 process.destroy();
                 cleanBrokerWork(qpidWork);
@@ -595,7 +494,7 @@ public class QpidBrokerTestCase extends 
                 // this is expect if the broker started successfully
             }
 
-            _brokers.put(port, new SpawnedBrokerHolder(process));
+            _brokers.put(port, new SpawnedBrokerHolder(process, qpidWork));
         }
     }
 
@@ -742,11 +641,31 @@ public class QpidBrokerTestCase extends 
 
     public void stopBroker(int port) throws Exception
     {
-        port = getPort(port);
+        if (isBrokerPresent(port))
+        {
+            port = getPort(port);
 
-        _logger.info("stopping broker on port : " + port);
-        BrokerHolder broker = _brokers.remove(port);
-        broker.shutdown();
+            _logger.info("stopping broker on port : " + port);
+            BrokerHolder broker = _brokers.remove(port);
+            broker.shutdown();
+        }
+    }
+
+    public void killBroker() throws Exception
+    {
+        killBroker(0);
+    }
+
+    public void killBroker(int port) throws Exception
+    {
+        if (isBrokerPresent(port))
+        {
+            port = getPort(port);
+
+            _logger.info("killing broker on port : " + port);
+            BrokerHolder broker = _brokers.remove(port);
+            broker.kill();
+        }
     }
 
     public boolean isBrokerPresent(int port) throws Exception
@@ -755,7 +674,13 @@ public class QpidBrokerTestCase extends 
 
         return _brokers.containsKey(port);
     }
-    
+
+    public BrokerHolder getBroker(int port) throws Exception
+    {
+        port = getPort(port);
+        return _brokers.get(port);
+    }
+
     /**
      * Attempt to set the Java Broker to use the BDBMessageStore for persistence
      * Falling back to the DerbyMessageStore if
@@ -984,7 +909,6 @@ public class QpidBrokerTestCase extends 
     /**
      * we assume that the environment is correctly set
      * i.e. -Djava.naming.provider.url="..//example010.properties"
-     * TODO should be a way of setting that through maven
      *
      * @return an initial context
      *
@@ -1158,13 +1082,13 @@ public class QpidBrokerTestCase extends 
     /**
      * Send messages to the given destination.
      *
-     * If session is transacted then messages will be commited before returning
+     * If session is transacted then messages will be committed before returning
      *
      * @param session the session to use for sending
      * @param destination where to send them to
      * @param count no. of messages to send
      *
-     * @return the sent messges
+     * @return the sent messages
      *
      * @throws Exception
      */
@@ -1357,6 +1281,6 @@ public class QpidBrokerTestCase extends 
 
     protected int getFailingPort()
     {
-    	return FAILING_PORT;
+        return FAILING_PORT;
     }
 }

Propchange: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Mar 10 19:22:10 2012
@@ -3,5 +3,5 @@
 /qpid/branches/java-broker-0-10/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java:795950-829653
 /qpid/branches/java-network-refactor/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java:805429-821809
 /qpid/branches/qpid-2935/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java:1061302-1072333
-/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java:1073294-1157765,1160415-1162726,1162729-1166086,1166089-1235000
+/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java:1073294-1299251
 /qpid/trunk/qpid/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java:796646-796653

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidClientConnection.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidClientConnection.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidClientConnection.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidClientConnection.java Sat Mar 10 19:22:10 2012
@@ -21,13 +21,12 @@
 
 package org.apache.qpid.test.utils;
 
-import org.apache.qpid.client.AMQConnection;
-import org.apache.qpid.client.JMSAMQException;
-import org.apache.qpid.test.utils.QpidBrokerTestCase;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import org.apache.qpid.client.AMQConnection;
+import org.apache.qpid.client.JMSAMQException;
+
 import javax.jms.Connection;
 import javax.jms.ExceptionListener;
 import javax.jms.JMSException;

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/ReflectionUtils.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/ReflectionUtils.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/ReflectionUtils.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/ReflectionUtils.java Sat Mar 10 19:22:10 2012
@@ -21,6 +21,7 @@
 package org.apache.qpid.test.utils;
 
 import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
@@ -225,4 +226,34 @@ public class ReflectionUtils
             throw new ReflectionUtilsException("NoSuchMethodException", e);
         }
     }
+
+    @SuppressWarnings("unchecked")
+    public static <T> T getDeclaredField(final Object obj, final String fieldName)
+    {
+        try
+        {
+            final Field field = obj.getClass().getDeclaredField(fieldName);
+            if (!field.isAccessible())
+            {
+                field.setAccessible(true);
+            }
+            return (T) field.get(obj);
+        }
+        catch (NoSuchFieldException e)
+        {
+            throw new ReflectionUtilsException("Unable to read field " + fieldName + "from object " + obj, e);
+        }
+        catch (SecurityException e)
+        {
+            throw new ReflectionUtilsException("Unable to read field " + fieldName + "from object " + obj, e);
+        }
+        catch (IllegalArgumentException e)
+        {
+            throw new ReflectionUtilsException("Unable to read field " + fieldName + "from object " + obj, e);
+        }
+        catch (IllegalAccessException e)
+        {
+            throw new ReflectionUtilsException("Unable to read field " + fieldName + "from object " + obj, e);
+        }
+    }
 }

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java Sat Mar 10 19:22:10 2012
@@ -20,15 +20,20 @@
  */
 package org.apache.qpid.test.utils;
 
+import java.io.IOException;
+
 import org.apache.log4j.Logger;
 
 public class SpawnedBrokerHolder implements BrokerHolder
 {
     private static final Logger LOGGER = Logger.getLogger(SpawnedBrokerHolder.class);
 
+    private final boolean _isWindows = String.valueOf(System.getProperty("os.name")).toLowerCase().contains("windows");
     private final Process _process;
+    private final Integer _pid;
+    private final String _workingDirectory;
 
-    public SpawnedBrokerHolder(final Process process)
+    public SpawnedBrokerHolder(final Process process, final String workingDirectory)
     {
         if(process == null)
         {
@@ -36,14 +41,87 @@ public class SpawnedBrokerHolder impleme
         }
 
         _process = process;
+        _pid = retrieveUnixPidIfPossible();
+        _workingDirectory = workingDirectory;
+    }
+
+    @Override
+    public String getWorkingDirectory()
+    {
+        return _workingDirectory;
     }
 
     public void shutdown()
     {
         LOGGER.info("Destroying broker process");
-
         _process.destroy();
 
+        reapChildProcess();
+    }
+
+    @Override
+    public void kill()
+    {
+        if (_pid == null)
+        {
+            LOGGER.info("Destroying broker process");
+            _process.destroy();
+        }
+        else
+        {
+            LOGGER.info("Killing broker process with PID " + _pid);
+            sendSigkillForImmediateShutdown(_pid);
+        }
+
+        reapChildProcess();
+    }
+
+    private void sendSigkillForImmediateShutdown(Integer pid)
+    {
+        boolean killSuccessful = false;
+        try
+        {
+            final Process killProcess = Runtime.getRuntime().exec("kill -KILL " + pid);
+            killProcess.waitFor();
+            killSuccessful = killProcess.exitValue() == 0;
+        }
+        catch (IOException e)
+        {
+            LOGGER.error("Error whilst killing process " + _pid, e);
+        }
+        catch (InterruptedException e)
+        {
+            Thread.currentThread().interrupt();
+        }
+        finally
+        {
+            if (!killSuccessful)
+            {
+                _process.destroy();
+            }
+        }
+    }
+
+    private Integer retrieveUnixPidIfPossible()
+    {
+        if(!_isWindows)
+        {
+            try
+            {
+                Integer pid = ReflectionUtils.getDeclaredField(_process, "pid");
+                LOGGER.info("PID " + pid);
+                return pid;
+            }
+            catch (ReflectionUtilsException e)
+            {
+                LOGGER.warn("Could not get pid for process, Broker process shutdown will be ungraceful");
+            }
+        }
+        return null;
+    }
+
+    private void reapChildProcess()
+    {
         try
         {
             _process.waitFor();
@@ -51,8 +129,21 @@ public class SpawnedBrokerHolder impleme
         }
         catch (InterruptedException e)
         {
-            LOGGER.error("Interrupted whilst waiting for process destruction");
+            LOGGER.error("Interrupted whilst waiting for process shutdown");
             Thread.currentThread().interrupt();
         }
+        finally
+        {
+            try
+            {
+                _process.getInputStream().close();
+                _process.getErrorStream().close();
+                _process.getOutputStream().close();
+            }
+            catch (IOException e)
+            {
+            }
+        }
     }
+
 }

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/util/ClasspathScanner.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/util/ClasspathScanner.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/util/ClasspathScanner.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/util/ClasspathScanner.java Sat Mar 10 19:22:10 2012
@@ -20,13 +20,18 @@
  */
 package org.apache.qpid.util;
 
+import org.apache.log4j.Logger;
+
 import java.io.File;
-import java.util.*;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.apache.log4j.Logger;
-
 /**
  * An ClasspathScanner scans the classpath for classes that implement an interface or extend a base class and have names
  * that match a regular expression.

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/util/LogMonitor.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/util/LogMonitor.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/util/LogMonitor.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/systests/src/main/java/org/apache/qpid/util/LogMonitor.java Sat Mar 10 19:22:10 2012
@@ -30,8 +30,8 @@ import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.LineNumberReader;
-import java.util.List;
 import java.util.LinkedList;
+import java.util.List;
 
 /**
  * Utility to simplify the monitoring of Log4j file output

Propchange: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Sat Mar 10 19:22:10 2012
@@ -0,0 +1,7 @@
+/qpid/branches/0.5.x-dev/qpid/java/tools:886720-886722,887145,892761,894875,916304,916325,930288,931179
+/qpid/branches/0.5.x-dev/tools:886720-886722
+/qpid/branches/java-broker-0-10/qpid/java/tools:795950-829653
+/qpid/branches/java-network-refactor/qpid/java/tools:805429-821809
+/qpid/branches/qpid-2935/qpid/java/tools:1061302-1072333
+/qpid/trunk/qpid/java/tools:1073294-1299251
+/qpid/trunk/qpid/tools:796646-796653,1080001-1085000

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/testkit/Receiver.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/testkit/Receiver.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/testkit/Receiver.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/testkit/Receiver.java Sat Mar 10 19:22:10 2012
@@ -70,13 +70,13 @@ import org.apache.qpid.client.AMQConnect
  */
 public class Receiver extends Client implements MessageListener
 {
-	long msg_count = 0;
-	int sequence = 0;
-	boolean syncRcv = Boolean.getBoolean("sync_rcv");
-	boolean jmsDurableSub = Boolean.getBoolean("jms_durable_sub");
-	boolean checkForDups = Boolean.getBoolean("check_for_dups");
-	MessageConsumer consumer;
-    List<Integer> duplicateMessages = new ArrayList<Integer>();
+	private long msg_count = 0;
+	private int sequence = 0;
+	private boolean syncRcv = Boolean.getBoolean("sync_rcv");
+	private boolean jmsDurableSub = Boolean.getBoolean("jms_durable_sub");
+	private boolean checkForDups = Boolean.getBoolean("check_for_dups");
+	private MessageConsumer consumer;
+    private List<Integer> duplicateMessages = new ArrayList<Integer>();
     
     public Receiver(Connection con,String addr) throws Exception
     {

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/tools/JNDICheck.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/tools/JNDICheck.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/tools/JNDICheck.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/tools/JNDICheck.java Sat Mar 10 19:22:10 2012
@@ -70,8 +70,8 @@ public class JNDICheck
 
     private static String JAVA_NAMING = "java.naming.factory.initial";
 
-    Context _context = null;
-    Hashtable _environment = null;
+    private Context _context = null;
+    private Hashtable _environment = null;
 
     public JNDICheck(String propertyFile)
     {

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/tools/LatencyTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/tools/LatencyTest.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/tools/LatencyTest.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/tools/LatencyTest.java Sat Mar 10 19:22:10 2012
@@ -56,24 +56,24 @@ import org.apache.qpid.thread.Threading;
 
 public class LatencyTest extends PerfBase implements MessageListener
 {
-    MessageProducer producer;
-    MessageConsumer consumer;
-    Message msg;
-    byte[] payload;
-    long maxLatency = 0;
-    long minLatency = Long.MAX_VALUE;
-    long totalLatency = 0;  // to calculate avg latency.
-    int rcvdMsgCount = 0;
-    double stdDev = 0;
-    double avgLatency = 0;
-    boolean warmup_mode = true;
-    boolean transacted = false;
-    int transSize = 0;
-
-    final List<Long> latencies;
-    final Lock lock = new ReentrantLock();
-    final Condition warmedUp;
-    final Condition testCompleted;
+    private MessageProducer producer;
+    private MessageConsumer consumer;
+    private Message msg;
+    private byte[] payload;
+    private long maxLatency = 0;
+    private long minLatency = Long.MAX_VALUE;
+    private long totalLatency = 0;  // to calculate avg latency.
+    private int rcvdMsgCount = 0;
+    private double stdDev = 0;
+    private double avgLatency = 0;
+    private boolean warmup_mode = true;
+    private boolean transacted = false;
+    private int transSize = 0;
+
+    private final List<Long> latencies;
+    private final Lock lock = new ReentrantLock();
+    private final Condition warmedUp;
+    private final Condition testCompleted;
 
     public LatencyTest()
     {

Modified: qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/tools/QpidBench.java
URL: http://svn.apache.org/viewvc/qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/tools/QpidBench.java?rev=1299257&r1=1299256&r2=1299257&view=diff
==============================================================================
--- qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/tools/QpidBench.java (original)
+++ qpid/branches/rg-amqp-1-0-sandbox/qpid/java/tools/src/main/java/org/apache/qpid/tools/QpidBench.java Sat Mar 10 19:22:10 2012
@@ -689,7 +689,7 @@ public class QpidBench
     {
         org.apache.qpid.transport.Connection conn =
             new org.apache.qpid.transport.Connection();
-        conn.connect(opts.broker, opts.port, null, "guest", "guest",false);
+        conn.connect(opts.broker, opts.port, null, "guest", "guest", false, null);
         return conn;
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org