You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2013/02/19 10:35:33 UTC

svn commit: r1447646 [12/16] - in /qpid/trunk/qpid/java: ./ bdbstore/ bdbstore/jmx/src/main/java/org/apache/qpid/server/store/berkeleydb/jmx/ bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/ bdbstore/src/main/java/org/apache/qpid/ser...

Added: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/updater/TaskExecutorTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/updater/TaskExecutorTest.java?rev=1447646&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/updater/TaskExecutorTest.java (added)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/updater/TaskExecutorTest.java Tue Feb 19 09:35:28 2013
@@ -0,0 +1,296 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.configuration.updater;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.Callable;
+import java.util.concurrent.CancellationException;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+
+import javax.security.auth.Subject;
+
+import junit.framework.TestCase;
+
+import org.apache.qpid.server.logging.LogActor;
+import org.apache.qpid.server.logging.NullRootMessageLogger;
+import org.apache.qpid.server.logging.actors.CurrentActor;
+import org.apache.qpid.server.logging.actors.TestLogActor;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.security.SecurityManager;
+
+public class TaskExecutorTest extends TestCase
+{
+    private TaskExecutor _executor;
+
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        _executor = new TaskExecutor();
+    }
+
+    protected void tearDown() throws Exception
+    {
+        try
+        {
+            _executor.stopImmediately();
+        }
+        finally
+        {
+            super.tearDown();
+        }
+    }
+
+    public void testGetState()
+    {
+        assertEquals("Unxpected initial state", State.INITIALISING, _executor.getState());
+    }
+
+    public void testStart()
+    {
+        _executor.start();
+        assertEquals("Unxpected started state", State.ACTIVE, _executor.getState());
+    }
+
+    public void testStopImmediately() throws Exception
+    {
+        _executor.start();
+        final CountDownLatch submitLatch = new CountDownLatch(2);
+        final CountDownLatch waitForCallLatch = new CountDownLatch(1);
+        final BlockingQueue<Exception> submitExceptions = new LinkedBlockingQueue<Exception>();
+
+        Runnable runnable = new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                try
+                {
+                    Future<?> f = _executor.submit(new NeverEndingCallable(waitForCallLatch));
+                    submitLatch.countDown();
+                    f.get();
+                }
+                catch (Exception e)
+                {
+                    if (e instanceof ExecutionException)
+                    {
+                        e = (Exception) e.getCause();
+                    }
+                    submitExceptions.add(e);
+                }
+            }
+        };
+        new Thread(runnable).start();
+        new Thread(runnable).start();
+        assertTrue("Tasks have not been submitted", submitLatch.await(1000, TimeUnit.MILLISECONDS));
+        assertTrue("The first task has not been triggered", waitForCallLatch.await(1000, TimeUnit.MILLISECONDS));
+
+        _executor.stopImmediately();
+        assertEquals("Unxpected stopped state", State.STOPPED, _executor.getState());
+
+        Exception e = submitExceptions.poll(1000l, TimeUnit.MILLISECONDS);
+        assertNotNull("The task execution was not interrupted or cancelled", e);
+        Exception e2 = submitExceptions.poll(1000l, TimeUnit.MILLISECONDS);
+        assertNotNull("The task execution was not interrupted or cancelled", e2);
+
+        assertTrue("One of the exceptions should be CancellationException:", e2 instanceof CancellationException
+                || e instanceof CancellationException);
+        assertTrue("One of the exceptions should be InterruptedException:", e2 instanceof InterruptedException
+                || e instanceof InterruptedException);
+    }
+
+    public void testStop()
+    {
+        _executor.start();
+        _executor.stop();
+        assertEquals("Unxpected stopped state", State.STOPPED, _executor.getState());
+    }
+
+    public void testSubmitAndWait() throws Exception
+    {
+        _executor.start();
+        Object result = _executor.submitAndWait(new Callable<String>()
+        {
+            @Override
+            public String call() throws Exception
+            {
+                return "DONE";
+            }
+        });
+        assertEquals("Unexpected task execution result", "DONE", result);
+    }
+
+    public void testSubmitAndWaitInNotAuthorizedContext()
+    {
+        _executor.start();
+        Object subject = _executor.submitAndWait(new SubjectRetriever());
+        assertNull("Subject must be null", subject);
+    }
+
+    public void testSubmitAndWaitInAuthorizedContext()
+    {
+        _executor.start();
+        Subject subject = new Subject();
+        Object result = Subject.doAs(subject, new PrivilegedAction<Object>()
+        {
+            @Override
+            public Object run()
+            {
+                return _executor.submitAndWait(new SubjectRetriever());
+            }
+        });
+        assertEquals("Unexpected subject", subject, result);
+    }
+
+    public void testSubmitAndWaitInAuthorizedContextWithNullSubject()
+    {
+        _executor.start();
+        Object result = Subject.doAs(null, new PrivilegedAction<Object>()
+        {
+            @Override
+            public Object run()
+            {
+                return _executor.submitAndWait(new SubjectRetriever());
+            }
+        });
+        assertEquals("Unexpected subject", null, result);
+    }
+
+    public void testSubmitAndWaitReThrowsOriginalRuntimeException()
+    {
+        final RuntimeException exception = new RuntimeException();
+        _executor.start();
+        try
+        {
+            _executor.submitAndWait(new Callable<Void>()
+            {
+
+                @Override
+                public Void call() throws Exception
+                {
+                    throw exception;
+                }
+            });
+            fail("Exception is expected");
+        }
+        catch (Exception e)
+        {
+            assertEquals("Unexpected exception", exception, e);
+        }
+    }
+
+    public void testSubmitAndWaitPassesOriginalCheckedException()
+    {
+        final Exception exception = new Exception();
+        _executor.start();
+        try
+        {
+            _executor.submitAndWait(new Callable<Void>()
+            {
+
+                @Override
+                public Void call() throws Exception
+                {
+                    throw exception;
+                }
+            });
+            fail("Exception is expected");
+        }
+        catch (Exception e)
+        {
+            assertEquals("Unexpected exception", exception, e.getCause());
+        }
+    }
+
+    public void testSubmitAndWaitCurrentActorAndSecurityManagerSubjectAreRespected() throws Exception
+    {
+        _executor.start();
+        LogActor actor = new TestLogActor(new NullRootMessageLogger());
+        Subject subject = new Subject();
+        Subject currentSecurityManagerSubject = SecurityManager.getThreadSubject();
+        final AtomicReference<LogActor> taskLogActor = new AtomicReference<LogActor>();
+        final AtomicReference<Subject> taskSubject = new AtomicReference<Subject>();
+        try
+        {
+            CurrentActor.set(actor);
+            SecurityManager.setThreadSubject(subject);
+            _executor.submitAndWait(new Callable<Void>()
+            {
+                @Override
+                public Void call() throws Exception
+                {
+                    taskLogActor.set(CurrentActor.get());
+                    taskSubject.set(SecurityManager.getThreadSubject());
+                    return null;
+                }
+            });
+        }
+        finally
+        {
+            SecurityManager.setThreadSubject(currentSecurityManagerSubject);
+            CurrentActor.remove();
+        }
+        assertEquals("Unexpected task log actor", actor, taskLogActor.get());
+        assertEquals("Unexpected security manager subject", subject, taskSubject.get());
+    }
+
+    private class SubjectRetriever implements Callable<Subject>
+    {
+        @Override
+        public Subject call() throws Exception
+        {
+            return Subject.getSubject(AccessController.getContext());
+        }
+    }
+
+    private class NeverEndingCallable implements Callable<Void>
+    {
+        private CountDownLatch _waitLatch;
+
+        public NeverEndingCallable(CountDownLatch waitLatch)
+        {
+            super();
+            _waitLatch = waitLatch;
+        }
+
+        @Override
+        public Void call() throws Exception
+        {
+            if (_waitLatch != null)
+            {
+                _waitLatch.countDown();
+            }
+
+            // wait forever
+            synchronized (this)
+            {
+                this.wait();
+            }
+            return null;
+        }
+    }
+}

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/AbstractHeadersExchangeTestBase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/AbstractHeadersExchangeTestBase.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/AbstractHeadersExchangeTestBase.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/AbstractHeadersExchangeTestBase.java Tue Feb 19 09:35:28 2013
@@ -53,25 +53,56 @@ import org.apache.qpid.server.queue.Inco
 import org.apache.qpid.server.queue.MockStoredMessage;
 import org.apache.qpid.server.queue.QueueEntry;
 import org.apache.qpid.server.queue.SimpleAMQQueue;
-import org.apache.qpid.server.registry.ApplicationRegistry;
 import org.apache.qpid.server.store.StoredMessage;
 import org.apache.qpid.server.subscription.Subscription;
-import org.apache.qpid.server.util.InternalBrokerBaseCase;
+import org.apache.qpid.server.util.BrokerTestHelper;
+import org.apache.qpid.server.virtualhost.VirtualHost;
+import org.apache.qpid.test.utils.QpidTestCase;
 
-public class AbstractHeadersExchangeTestBase extends InternalBrokerBaseCase
+public class AbstractHeadersExchangeTestBase extends QpidTestCase
 {
     private static final Logger _log = Logger.getLogger(AbstractHeadersExchangeTestBase.class);
 
     private final HeadersExchange exchange = new HeadersExchange();
-    protected final Set<TestQueue> queues = new HashSet<TestQueue>();
-
+    private final Set<TestQueue> queues = new HashSet<TestQueue>();
+    private VirtualHost _virtualHost;
     private int count;
 
+    @Override
+    public void setUp() throws Exception
+    {
+        super.setUp();
+        BrokerTestHelper.setUp();
+        _virtualHost = BrokerTestHelper.createVirtualHost(getClass().getName());
+    }
+
+    @Override
+    public void tearDown() throws Exception
+    {
+        try
+        {
+            if (_virtualHost != null)
+            {
+                _virtualHost.close();
+            }
+        }
+        finally
+        {
+            BrokerTestHelper.tearDown();
+            super.tearDown();
+        }
+    }
+
     public void testDoNothing()
     {
         // this is here only to make junit under Eclipse happy
     }
 
+    public VirtualHost getVirtualHost()
+    {
+        return _virtualHost;
+    }
+
     protected TestQueue bindDefault(String... bindings) throws AMQException
     {
         String queueName = "Queue" + (++count);
@@ -92,7 +123,7 @@ public class AbstractHeadersExchangeTest
 
     private TestQueue bind(String key, String queueName, Map<String,Object> args) throws AMQException
     {
-        TestQueue queue = new TestQueue(new AMQShortString(queueName));
+        TestQueue queue = new TestQueue(new AMQShortString(queueName), _virtualHost);
         queues.add(queue);
         exchange.onBind(new Binding(null, key, queue, exchange, args));
         return queue;
@@ -273,10 +304,10 @@ public class AbstractHeadersExchangeTest
             return getNameShortString().toString();
         }
 
-        public TestQueue(AMQShortString name) throws AMQException
+        public TestQueue(AMQShortString name, VirtualHost host) throws AMQException
         {
-            super(UUIDGenerator.generateRandomUUID(), name, false, new AMQShortString("test"), true, false,ApplicationRegistry.getInstance().getVirtualHostRegistry().getVirtualHost("test"), Collections.EMPTY_MAP);
-            ApplicationRegistry.getInstance().getVirtualHostRegistry().getVirtualHost("test").getQueueRegistry().registerQueue(this);
+            super(UUIDGenerator.generateRandomUUID(), name, false, new AMQShortString("test"), true, false, host, Collections.EMPTY_MAP);
+            host.getQueueRegistry().registerQueue(this);
         }
 
 

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/HeadersExchangeTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/HeadersExchangeTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/HeadersExchangeTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/HeadersExchangeTest.java Tue Feb 19 09:35:28 2013
@@ -23,8 +23,7 @@ package org.apache.qpid.server.exchange;
 import org.apache.qpid.AMQException;
 import org.apache.qpid.server.protocol.AMQProtocolSession;
 import org.apache.qpid.server.protocol.InternalTestProtocolSession;
-import org.apache.qpid.server.registry.ApplicationRegistry;
-import org.apache.qpid.server.virtualhost.VirtualHost;
+import org.apache.qpid.server.util.BrokerTestHelper;
 
 public class HeadersExchangeTest extends AbstractHeadersExchangeTestBase
 {
@@ -34,10 +33,15 @@ public class HeadersExchangeTest extends
     public void setUp() throws Exception
     {
         super.setUp();
-        // Just use the first vhost.
-        VirtualHost
-                virtualHost = ApplicationRegistry.getInstance().getVirtualHostRegistry().getVirtualHosts().iterator().next();
-        _protocolSession = new InternalTestProtocolSession(virtualHost);
+        BrokerTestHelper.setUp();
+        _protocolSession = new InternalTestProtocolSession(getVirtualHost(), BrokerTestHelper.createBrokerMock());
+    }
+
+    @Override
+    public void tearDown() throws Exception
+    {
+        BrokerTestHelper.tearDown();
+        super.tearDown();
     }
 
     public void testSimple() throws AMQException

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/TopicExchangeTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/TopicExchangeTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/TopicExchangeTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/exchange/TopicExchangeTest.java Tue Feb 19 09:35:28 2013
@@ -31,36 +31,49 @@ import org.apache.qpid.server.binding.Bi
 import org.apache.qpid.server.message.AMQMessage;
 import org.apache.qpid.server.message.MessageMetaData;
 import org.apache.qpid.server.model.UUIDGenerator;
-import org.apache.qpid.server.protocol.InternalTestProtocolSession;
 import org.apache.qpid.server.queue.AMQQueue;
 import org.apache.qpid.server.queue.AMQQueueFactory;
 import org.apache.qpid.server.queue.BaseQueue;
 import org.apache.qpid.server.queue.IncomingMessage;
-import org.apache.qpid.server.registry.ApplicationRegistry;
 import org.apache.qpid.server.store.MemoryMessageStore;
 import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.util.InternalBrokerBaseCase;
+import org.apache.qpid.server.util.BrokerTestHelper;
 import org.apache.qpid.server.virtualhost.VirtualHost;
+import org.apache.qpid.test.utils.QpidTestCase;
 
-public class TopicExchangeTest extends InternalBrokerBaseCase
+public class TopicExchangeTest extends QpidTestCase
 {
 
     private TopicExchange _exchange;
-
     private VirtualHost _vhost;
     private MessageStore _store;
 
-    private InternalTestProtocolSession _protocolSession;
-
 
     @Override
     public void setUp() throws Exception
     {
         super.setUp();
+        BrokerTestHelper.setUp();
         _exchange = new TopicExchange();
-        _vhost = ApplicationRegistry.getInstance().getVirtualHostRegistry().getVirtualHosts().iterator().next();
+        _vhost = BrokerTestHelper.createVirtualHost(getName());
         _store = new MemoryMessageStore();
-        _protocolSession = new InternalTestProtocolSession(_vhost);
+    }
+
+    @Override
+    public void tearDown() throws Exception
+    {
+        try
+        {
+            if (_vhost != null)
+            {
+                _vhost.close();
+            }
+        }
+        finally
+        {
+            BrokerTestHelper.tearDown();
+            super.tearDown();
+        }
     }
 
     public void testNoRoute() throws AMQException

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/UnitTestMessageLogger.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/UnitTestMessageLogger.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/UnitTestMessageLogger.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/UnitTestMessageLogger.java Tue Feb 19 09:35:28 2013
@@ -20,7 +20,6 @@
  */
 package org.apache.qpid.server.logging;
 
-import org.apache.qpid.server.configuration.ServerConfiguration;
 
 import java.util.LinkedList;
 import java.util.List;
@@ -34,9 +33,9 @@ public class UnitTestMessageLogger exten
 
     }
 
-    public UnitTestMessageLogger(ServerConfiguration config)
+    public UnitTestMessageLogger(boolean statusUpdatesEnabled)
     {
-        super(config);
+        super(statusUpdatesEnabled);
     }
 
     public void rawMessage(String message, String logHierarchy)

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/AMQPChannelActorTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/AMQPChannelActorTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/AMQPChannelActorTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/AMQPChannelActorTest.java Tue Feb 19 09:35:28 2013
@@ -20,9 +20,8 @@
  */
 package org.apache.qpid.server.logging.actors;
 
-import org.apache.commons.configuration.ConfigurationException;
-
-import org.apache.qpid.AMQException;
+import org.apache.qpid.server.AMQChannel;
+import org.apache.qpid.server.util.BrokerTestHelper;
 
 import java.util.List;
 
@@ -38,24 +37,17 @@ import java.util.List;
 public class AMQPChannelActorTest extends BaseConnectionActorTestCase
 {
 
-    @Override
-    public void configure()
+    public void setUp()
     {
-        // Prevent defaulting Logging to ON
+        // do nothing
     }
-    
 
-    @Override
-    public void createBroker() throws Exception
+    private void setUpNow() throws Exception
     {
-        //prevent auto-broker startup
-    }
+        super.setUp();
+        AMQChannel channel = BrokerTestHelper.createChannel(1, getSession());
 
-    private void startBrokerNow() throws Exception
-    {
-        super.createBroker();
-
-        _amqpActor = new AMQPChannelActor(getChannel(), _rootLogger);
+        setAmqpActor(new AMQPChannelActor(channel, getRootLogger()));
     }
 
 
@@ -68,13 +60,11 @@ public class AMQPChannelActorTest extend
      */
     public void testChannel() throws Exception
     {
-        getConfigXml().setProperty("status-updates", "ON");
-
-        startBrokerNow();
+        setUpNow();
 
-        final String message = sendTestLogMessage(_amqpActor);
+        final String message = sendTestLogMessage(getAmqpActor());
 
-        List<Object> logs = _rawLogger.getLogMessages();
+        List<Object> logs = getRawLogger().getLogMessages();
 
         assertEquals("Message log size not as expected.", 1, logs.size());
 
@@ -95,128 +85,22 @@ public class AMQPChannelActorTest extend
         // Verify that the logged message contains the 'ch:1' marker
         assertTrue("Message was not logged as part of channel 1" + logs.get(0),
                    logs.get(0).toString().contains("/ch:1"));
-
-    }
-
-    /**
-     * Test that if logging is configured to be off in the configuration that
-     * no logging is presented
-     * @throws ConfigurationException
-     * @throws AMQException
-     */
-    public void testChannelLoggingOFF() throws Exception, AMQException
-    {
-        getConfigXml().setProperty("status-updates", "OFF");
-
-        // Start the broker now.
-        startBrokerNow();
-
-        sendTestLogMessage(_amqpActor);
-
-        List<Object> logs = _rawLogger.getLogMessages();
-
-        assertEquals("Message log size not as expected.", 0, logs.size());
-
-    }
-
-      /**
-     * Test that if logging is configured to be off in the configuration that
-     * no logging is presented
-     * @throws ConfigurationException
-     * @throws AMQException
-     */
-    public void testChannelLoggingOfF() throws Exception, AMQException
-    {
-        getConfigXml().setProperty("status-updates", "OfF");
-
-        startBrokerNow();
-
-        sendTestLogMessage(_amqpActor);
-
-        List<Object> logs = _rawLogger.getLogMessages();
-
-        assertEquals("Message log size not as expected.", 0, logs.size());
-
-    }
-
-    /**
-     * Test that if logging is configured to be off in the configuration that
-     * no logging is presented
-     * @throws ConfigurationException
-     * @throws AMQException
-     */
-    public void testChannelLoggingOff() throws Exception, AMQException
-    {
-        getConfigXml().setProperty("status-updates", "Off");
-
-        startBrokerNow();
-
-        sendTestLogMessage(_amqpActor);
-
-        List<Object> logs = _rawLogger.getLogMessages();
-
-        assertEquals("Message log size not as expected.", 0, logs.size());
-
     }
 
     /**
-     * Test that if logging is configured to be off in the configuration that
+     * Test that if logging is configured to be off via system property that
      * no logging is presented
-     * @throws ConfigurationException
-     * @throws AMQException
      */
-    public void testChannelLoggingofF() throws Exception, AMQException
+    public void testChannelLoggingOFF() throws Exception
     {
-        getConfigXml().setProperty("status-updates", "ofF");
+        setStatusUpdatesEnabled(false);
 
-        startBrokerNow();
+        setUpNow();
 
-        sendTestLogMessage(_amqpActor);
+        sendTestLogMessage(getAmqpActor());
 
-        List<Object> logs = _rawLogger.getLogMessages();
+        List<Object> logs = getRawLogger().getLogMessages();
 
         assertEquals("Message log size not as expected.", 0, logs.size());
-
     }
-
-    /**
-     * Test that if logging is configured to be off in the configuration that
-     * no logging is presented
-     * @throws ConfigurationException
-     * @throws AMQException
-     */
-    public void testChannelLoggingoff() throws Exception, AMQException
-    {
-        getConfigXml().setProperty("status-updates", "off");
-
-        startBrokerNow();
-
-        sendTestLogMessage(_amqpActor);
-
-        List<Object> logs = _rawLogger.getLogMessages();
-
-        assertEquals("Message log size not as expected.", 0, logs.size());
-
-    }
-
-    /**
-     * Test that if logging is configured to be off in the configuration that
-     * no logging is presented
-     * @throws ConfigurationException
-     * @throws AMQException
-     */
-    public void testChannelLoggingoFf() throws Exception, AMQException
-    {        
-        getConfigXml().setProperty("status-updates", "oFf");
-
-        startBrokerNow();
-
-        sendTestLogMessage(_amqpActor);
-
-        List<Object> logs = _rawLogger.getLogMessages();
-
-        assertEquals("Message log size not as expected.", 0, logs.size());
-
-    }
-
 }

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/AMQPConnectionActorTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/AMQPConnectionActorTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/AMQPConnectionActorTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/AMQPConnectionActorTest.java Tue Feb 19 09:35:28 2013
@@ -38,16 +38,9 @@ import java.util.List;
 public class AMQPConnectionActorTest extends BaseConnectionActorTestCase
 {
     @Override
-    public void configure()
+    public void setUp()
     {
-        // Prevent defaulting Logging to ON
-    }
-
-
-    @Override
-    public void createBroker()
-    {
-        //Prevent auto-broker startup
+        //Prevent logger creation
     }
 
     /**
@@ -60,13 +53,11 @@ public class AMQPConnectionActorTest ext
      */
     public void testConnection() throws Exception
     {
-        getConfigXml().setProperty("status-updates", "ON");
-
-        super.createBroker();
+        super.setUp();
 
         final String message = sendLogMessage();
 
-        List<Object> logs = _rawLogger.getLogMessages();
+        List<Object> logs = getRawLogger().getLogMessages();
 
         assertEquals("Message log size not as expected.", 1, logs.size());
 
@@ -90,14 +81,13 @@ public class AMQPConnectionActorTest ext
 
     public void testConnectionLoggingOff() throws Exception, AMQException
     {
-        getConfigXml().setProperty("status-updates", "OFF");
+        setStatusUpdatesEnabled(false);
 
-        // Start the broker now.
-        super.createBroker();
+        super.setUp();
 
         sendLogMessage();
 
-        List<Object> logs = _rawLogger.getLogMessages();
+        List<Object> logs = getRawLogger().getLogMessages();
 
         assertEquals("Message log size not as expected.", 0, logs.size());
 
@@ -107,7 +97,7 @@ public class AMQPConnectionActorTest ext
     {
         final String message = "test logging";
 
-        _amqpActor.message(new LogSubject()
+        getAmqpActor().message(new LogSubject()
         {
             public String toLogString()
             {

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/BaseActorTestCase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/BaseActorTestCase.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/BaseActorTestCase.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/BaseActorTestCase.java Tue Feb 19 09:35:28 2013
@@ -20,39 +20,39 @@
  */
 package org.apache.qpid.server.logging.actors;
 
-import org.apache.qpid.server.configuration.ServerConfiguration;
 import org.apache.qpid.server.logging.LogActor;
 import org.apache.qpid.server.logging.LogMessage;
 import org.apache.qpid.server.logging.LogSubject;
 import org.apache.qpid.server.logging.RootMessageLogger;
 import org.apache.qpid.server.logging.UnitTestMessageLogger;
-import org.apache.qpid.server.util.InternalBrokerBaseCase;
+import org.apache.qpid.test.utils.QpidTestCase;
 
-public class BaseActorTestCase extends InternalBrokerBaseCase
+public class BaseActorTestCase extends QpidTestCase
 {
-    protected LogActor _amqpActor;
-    protected UnitTestMessageLogger _rawLogger;
-    protected RootMessageLogger _rootLogger;
+    private boolean _statusUpdatesEnabled = true;
+    private LogActor _amqpActor;
+    private UnitTestMessageLogger _rawLogger;
+    private RootMessageLogger _rootLogger;
 
     @Override
-    public void configure()
+    public void setUp() throws Exception
     {
-        getConfiguration().getConfig().setProperty(ServerConfiguration.STATUS_UPDATES, "on");
-    }
-
-    @Override
-    public void createBroker() throws Exception
-    {
-        super.createBroker();
-
-        _rawLogger = new UnitTestMessageLogger(getConfiguration());
+        super.setUp();
+        CurrentActor.removeAll();
+        CurrentActor.setDefault(null);
+        _rawLogger = new UnitTestMessageLogger(_statusUpdatesEnabled);
         _rootLogger = _rawLogger;
     }
 
+    @Override
     public void tearDown() throws Exception
     {
-        _rawLogger.clearLogMessages();
-
+        if(_rawLogger != null)
+        {
+            _rawLogger.clearLogMessages();
+        }
+        CurrentActor.removeAll();
+        CurrentActor.setDefault(null);
         super.tearDown();
     }
 
@@ -87,4 +87,34 @@ public class BaseActorTestCase extends I
         });
     }
 
+    public boolean isStatusUpdatesEnabled()
+    {
+        return _statusUpdatesEnabled;
+    }
+
+    public void setStatusUpdatesEnabled(boolean statusUpdatesEnabled)
+    {
+        _statusUpdatesEnabled = statusUpdatesEnabled;
+    }
+
+    public LogActor getAmqpActor()
+    {
+        return _amqpActor;
+    }
+
+    public void setAmqpActor(LogActor amqpActor)
+    {
+        _amqpActor = amqpActor;
+    }
+
+    public UnitTestMessageLogger getRawLogger()
+    {
+        return _rawLogger;
+    }
+
+    public RootMessageLogger getRootLogger()
+    {
+        return _rootLogger;
+    }
+
 }

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/BaseConnectionActorTestCase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/BaseConnectionActorTestCase.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/BaseConnectionActorTestCase.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/BaseConnectionActorTestCase.java Tue Feb 19 09:35:28 2013
@@ -20,14 +20,43 @@
  */
 package org.apache.qpid.server.logging.actors;
 
+import org.apache.qpid.server.protocol.AMQProtocolSession;
+import org.apache.qpid.server.util.BrokerTestHelper;
+
 public class BaseConnectionActorTestCase extends BaseActorTestCase
 {
+    private AMQProtocolSession _session;
 
     @Override
-    public void createBroker() throws Exception
+    public void setUp() throws Exception
     {
-        super.createBroker();
+        super.setUp();
+        BrokerTestHelper.setUp();
+        _session = BrokerTestHelper.createSession();
+
+        setAmqpActor(new AMQPConnectionActor(_session, getRootLogger()));
+    }
 
-        _amqpActor = new AMQPConnectionActor(getSession(), _rootLogger);
+    @Override
+    public void tearDown() throws Exception
+    {
+        try
+        {
+            if (_session != null)
+            {
+                _session.getVirtualHost().close();
+            }
+        }
+        finally
+        {
+            BrokerTestHelper.tearDown();
+            super.tearDown();
+        }
     }
+
+    public AMQProtocolSession getSession()
+    {
+        return _session;
+    }
+
 }

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/CurrentActorTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/CurrentActorTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/CurrentActorTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/CurrentActorTest.java Tue Feb 19 09:35:28 2013
@@ -70,12 +70,7 @@ public class CurrentActorTest extends Ba
      */
     public void testLIFO() throws AMQException, ConfigurationException
     {
-        // This test only needs the local objects created, _session etc.
-        // So stopping the broker and making them useless will not affect the
-        // test, but the extra actors the test broker adds will so by stopping
-        // we remove the session actor and so all is good.
-        stopBroker();
-        
+        assertTrue("Unexpected actor: " + CurrentActor.get(), CurrentActor.get() instanceof TestLogActor);
         AMQPConnectionActor connectionActor = new AMQPConnectionActor(getSession(),
                                                                       new NullRootMessageLogger());
 

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/HttpManagementActorTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/HttpManagementActorTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/HttpManagementActorTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/HttpManagementActorTest.java Tue Feb 19 09:35:28 2013
@@ -34,10 +34,10 @@ public class HttpManagementActorTest ext
     private static final String SUFFIX = "(" + IP + ":" + PORT + ")] ";
 
     @Override
-    public void createBroker() throws Exception
+    public void setUp() throws Exception
     {
-        super.createBroker();
-        _amqpActor = new HttpManagementActor(_rootLogger, IP, PORT);
+        super.setUp();
+        setAmqpActor(new HttpManagementActor(getRootLogger(), IP, PORT));
     }
 
     public void testSubjectPrincipalNameAppearance()
@@ -48,13 +48,13 @@ public class HttpManagementActorTest ext
         {
             public String run()
             {
-                return sendTestLogMessage(_amqpActor);
+                return sendTestLogMessage(getAmqpActor());
             }
         });
 
         assertNotNull("Test log message is not created!", message);
 
-        List<Object> logs = _rawLogger.getLogMessages();
+        List<Object> logs = getRawLogger().getLogMessages();
         assertEquals("Message log size not as expected.", 1, logs.size());
 
         String logMessage = logs.get(0).toString();
@@ -74,7 +74,7 @@ public class HttpManagementActorTest ext
 
     private void assertLogMessageWithoutPrincipal()
     {
-        String message = _amqpActor.getLogMessage();
+        String message = getAmqpActor().getLogMessage();
         assertEquals("Unexpected log message", "[mng:" + AbstractManagementActor.UNKNOWN_PRINCIPAL + SUFFIX, message);
     }
 
@@ -85,7 +85,7 @@ public class HttpManagementActorTest ext
         {
             public String run()
             {
-                return _amqpActor.getLogMessage();
+                return getAmqpActor().getLogMessage();
             }
         });
 

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/ManagementActorTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/ManagementActorTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/ManagementActorTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/ManagementActorTest.java Tue Feb 19 09:35:28 2013
@@ -35,10 +35,10 @@ public class ManagementActorTest extends
     private String _threadName;
 
     @Override
-    public void createBroker() throws Exception
+    public void setUp() throws Exception
     {
-        super.createBroker();
-        _amqpActor = new ManagementActor(_rootLogger);
+        super.setUp();
+        setAmqpActor(new ManagementActor(getRootLogger()));
 
         // Set the thread name to be the same as a RMI JMX Connection would use
         _threadName = Thread.currentThread().getName();
@@ -57,14 +57,14 @@ public class ManagementActorTest extends
      *
      * The test sends a message then verifies that it entered the logs.
      *
-     * The log message should be fully repalaced (no '{n}' values) and should
+     * The log message should be fully replaced (no '{n}' values) and should
      * not contain any channel identification.
      */
     public void testConnection()
     {
-        final String message = sendTestLogMessage(_amqpActor);
+        final String message = sendTestLogMessage(getAmqpActor());
 
-        List<Object> logs = _rawLogger.getLogMessages();
+        List<Object> logs = getRawLogger().getLogMessages();
 
         assertEquals("Message log size not as expected.", 1, logs.size());
 
@@ -101,14 +101,14 @@ public class ManagementActorTest extends
         {
             public String run()
             {
-                return sendTestLogMessage(_amqpActor);
+                return sendTestLogMessage(getAmqpActor());
             }
         });
 
         // Verify that the log message was created
         assertNotNull("Test log message is not created!", message);
 
-        List<Object> logs = _rawLogger.getLogMessages();
+        List<Object> logs = getRawLogger().getLogMessages();
 
         // Verify that at least one log message was added to log
         assertEquals("Message log size not as expected.", 1, logs.size());
@@ -130,8 +130,8 @@ public class ManagementActorTest extends
     public void testGetLogMessageWithoutSubjectButWithActorPrincipal()
     {
         String principalName = "my_principal";
-        _amqpActor = new ManagementActor(_rootLogger, principalName);
-        String message = _amqpActor.getLogMessage();
+        setAmqpActor(new ManagementActor(getRootLogger(), principalName));
+        String message = getAmqpActor().getLogMessage();
         assertEquals("Unexpected log message", "[mng:" + principalName + "(" + IP + ")] ", message);
     }
 
@@ -149,7 +149,7 @@ public class ManagementActorTest extends
         assertLogMessageInRMIThreadWithPrincipal("RMI TCP Connection(1)-" + IP, "my_principal");
 
         Thread.currentThread().setName("RMI TCP Connection(2)-" + IP );
-        String message = _amqpActor.getLogMessage();
+        String message = getAmqpActor().getLogMessage();
         assertEquals("Unexpected log message", "[mng:N/A(" + IP + ")] ", message);
 
         assertLogMessageWithoutPrincipal("TEST");
@@ -158,14 +158,14 @@ public class ManagementActorTest extends
     private void assertLogMessageInRMIThreadWithoutPrincipal(String threadName)
     {
         Thread.currentThread().setName(threadName );
-        String message = _amqpActor.getLogMessage();
+        String message = getAmqpActor().getLogMessage();
         assertEquals("Unexpected log message", "[mng:N/A(" + IP + ")] ", message);
     }
 
     private void assertLogMessageWithoutPrincipal(String threadName)
     {
         Thread.currentThread().setName(threadName );
-        String message = _amqpActor.getLogMessage();
+        String message = getAmqpActor().getLogMessage();
         assertEquals("Unexpected log message", "[" + threadName +"] ", message);
     }
 
@@ -177,7 +177,7 @@ public class ManagementActorTest extends
         {
             public String run()
             {
-                return _amqpActor.getLogMessage();
+                return getAmqpActor().getLogMessage();
             }
         });
 

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/QueueActorTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/QueueActorTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/QueueActorTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/QueueActorTest.java Tue Feb 19 09:35:28 2013
@@ -22,14 +22,16 @@ package org.apache.qpid.server.logging.a
 
 import java.util.List;
 
+import org.apache.qpid.server.util.BrokerTestHelper;
+
 public class QueueActorTest extends BaseConnectionActorTestCase
 {
 
     @Override
-    public void createBroker() throws Exception
+    public void setUp() throws Exception
     {
-        super.createBroker();
-        _amqpActor = new QueueActor(getQueue(), _rootLogger);
+        super.setUp();
+        setAmqpActor(new QueueActor(BrokerTestHelper.createQueue(getName(), getSession().getVirtualHost()), getRootLogger()));
     }
 
     /**
@@ -42,9 +44,9 @@ public class QueueActorTest extends Base
      */
     public void testQueueActor()
     {
-        final String message = sendTestLogMessage(_amqpActor);
+        final String message = sendTestLogMessage(getAmqpActor());
 
-        List<Object> logs = _rawLogger.getLogMessages();
+        List<Object> logs = getRawLogger().getLogMessages();
 
         assertEquals("Message log size not as expected.", 1, logs.size());
 

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/SubscriptionActorTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/SubscriptionActorTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/SubscriptionActorTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/actors/SubscriptionActorTest.java Tue Feb 19 09:35:28 2013
@@ -21,6 +21,7 @@
 package org.apache.qpid.server.logging.actors;
 
 import org.apache.qpid.server.subscription.MockSubscription;
+import org.apache.qpid.server.util.BrokerTestHelper;
 
 import java.util.List;
 
@@ -37,15 +38,15 @@ public class SubscriptionActorTest exten
 {
 
     @Override
-    public void createBroker() throws Exception
+    public void setUp() throws Exception
     {
-        super.createBroker();
+        super.setUp();
 
         MockSubscription mockSubscription = new MockSubscription();
 
-        mockSubscription.setQueue(getQueue(), false);
+        mockSubscription.setQueue(BrokerTestHelper.createQueue(getName(), getSession().getVirtualHost()), false);
 
-        _amqpActor = new SubscriptionActor(_rootLogger, mockSubscription);
+        setAmqpActor(new SubscriptionActor(getRootLogger(), mockSubscription));
     }
 
     /**
@@ -58,9 +59,9 @@ public class SubscriptionActorTest exten
      */
     public void testSubscription()
     {
-        final String message = sendTestLogMessage(_amqpActor);
+        final String message = sendTestLogMessage(getAmqpActor());
 
-        List<Object> logs = _rawLogger.getLogMessages();
+        List<Object> logs = getRawLogger().getLogMessages();
 
         assertEquals("Message log size not as expected.", 1, logs.size());
 

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/messages/AbstractTestMessages.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/messages/AbstractTestMessages.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/messages/AbstractTestMessages.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/messages/AbstractTestMessages.java Tue Feb 19 09:35:28 2013
@@ -29,11 +29,12 @@ import org.apache.qpid.server.logging.Lo
 import org.apache.qpid.server.logging.UnitTestMessageLogger;
 import org.apache.qpid.server.logging.actors.TestLogActor;
 import org.apache.qpid.server.logging.subjects.TestBlankSubject;
-import org.apache.qpid.server.util.InternalBrokerBaseCase;
+import org.apache.qpid.server.util.BrokerTestHelper;
+import org.apache.qpid.test.utils.QpidTestCase;
 
 import java.util.List;
 
-public abstract class AbstractTestMessages extends InternalBrokerBaseCase
+public abstract class AbstractTestMessages extends QpidTestCase
 {
     protected Configuration _config = new PropertiesConfiguration();
     protected LogMessage _logMessage = null;
@@ -49,6 +50,14 @@ public abstract class AbstractTestMessag
         _logger = new UnitTestMessageLogger();
 
         _actor = new TestLogActor(_logger);
+        BrokerTestHelper.setUp();
+    }
+
+    @Override
+    public void tearDown() throws Exception
+    {
+        BrokerTestHelper.tearDown();
+        super.tearDown();
     }
 
     protected List<Object> performLog()

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/messages/ExchangeMessagesTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/messages/ExchangeMessagesTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/messages/ExchangeMessagesTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/messages/ExchangeMessagesTest.java Tue Feb 19 09:35:28 2013
@@ -21,7 +21,7 @@
 package org.apache.qpid.server.logging.messages;
 
 import org.apache.qpid.server.exchange.Exchange;
-import org.apache.qpid.server.registry.ApplicationRegistry;
+import org.apache.qpid.server.util.BrokerTestHelper;
 
 import java.util.List;
 
@@ -30,12 +30,9 @@ import java.util.List;
  */
 public class ExchangeMessagesTest extends AbstractTestMessages
 {
-    public void testExchangeCreated_Transient()
+    public void testExchangeCreated_Transient() throws Exception
     {
-        // Get the Default Exchange on the Test Vhost for testing
-        Exchange exchange = ApplicationRegistry.getInstance().
-                getVirtualHostRegistry().getVirtualHost("test").
-                getExchangeRegistry().getDefaultExchange();
+        Exchange exchange = BrokerTestHelper.createExchange("test");
 
         String type = exchange.getTypeShortString().toString();
         String name = exchange.getNameShortString().toString();
@@ -48,12 +45,9 @@ public class ExchangeMessagesTest extend
         validateLogMessage(log, "EXH-1001", expected);
     }
 
-    public void testExchangeCreated_Persistent()
+    public void testExchangeCreated_Persistent() throws Exception
     {
-        // Get the Default Exchange on the Test Vhost for testing
-        Exchange exchange = ApplicationRegistry.getInstance().
-                getVirtualHostRegistry().getVirtualHost("test").
-                getExchangeRegistry().getDefaultExchange();
+        Exchange exchange = BrokerTestHelper.createExchange("test");
 
         String type = exchange.getTypeShortString().toString();
         String name = exchange.getNameShortString().toString();
@@ -76,12 +70,9 @@ public class ExchangeMessagesTest extend
         validateLogMessage(log, "EXH-1002", expected);
     }
 
-    public void testExchangeDiscardedMessage()
+    public void testExchangeDiscardedMessage() throws Exception
     {
-        // Get the Default Exchange on the Test Vhost for testing
-        final Exchange exchange = ApplicationRegistry.getInstance().
-                getVirtualHostRegistry().getVirtualHost("test").
-                getExchangeRegistry().getDefaultExchange();
+        Exchange exchange = BrokerTestHelper.createExchange("test");
 
         final String name = exchange.getNameShortString().toString();
         final String routingKey = "routingKey";

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/AbstractTestLogSubject.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/AbstractTestLogSubject.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/AbstractTestLogSubject.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/AbstractTestLogSubject.java Tue Feb 19 09:35:28 2013
@@ -20,21 +20,19 @@
  */
 package org.apache.qpid.server.logging.subjects;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.PropertiesConfiguration;
 
 import org.apache.qpid.framing.AMQShortString;
-import org.apache.qpid.server.configuration.ServerConfiguration;
 import org.apache.qpid.server.exchange.Exchange;
 import org.apache.qpid.server.logging.LogActor;
 import org.apache.qpid.server.logging.LogMessage;
 import org.apache.qpid.server.logging.LogSubject;
 import org.apache.qpid.server.logging.UnitTestMessageLogger;
+import org.apache.qpid.server.logging.actors.CurrentActor;
 import org.apache.qpid.server.logging.actors.TestLogActor;
 import org.apache.qpid.server.queue.AMQQueue;
-import org.apache.qpid.server.util.InternalBrokerBaseCase;
+import org.apache.qpid.server.util.BrokerTestHelper;
 import org.apache.qpid.server.virtualhost.VirtualHost;
+import org.apache.qpid.test.utils.QpidTestCase;
 
 import java.util.List;
 
@@ -49,29 +47,39 @@ import java.util.List;
  * The resulting log file is then validated.
  *
  */
-public abstract class AbstractTestLogSubject extends InternalBrokerBaseCase
+public abstract class AbstractTestLogSubject extends QpidTestCase
 {
-    protected Configuration _config = new PropertiesConfiguration();
     protected LogSubject _subject = null;
 
     @Override
     public void setUp() throws Exception
     {
         super.setUp();
-
-        _config.setProperty(ServerConfiguration.STATUS_UPDATES, "ON");
+        BrokerTestHelper.setUp();
     }
 
+    @Override
+    public void tearDown() throws Exception
+    {
+        BrokerTestHelper.tearDown();
+        try
+        {
+            CurrentActor.removeAll();
+        }
+        finally
+        {
+            super.tearDown();
+        }
+    }
 
-    protected List<Object> performLog() throws ConfigurationException
+    protected List<Object> performLog(boolean statusUpdatesEnabled)
     {
         if (_subject == null)
         {
             throw new NullPointerException("LogSubject has not been set");
         }
 
-        ServerConfiguration serverConfig = new ServerConfiguration(_config);
-        UnitTestMessageLogger logger = new UnitTestMessageLogger(serverConfig);
+        UnitTestMessageLogger logger = new UnitTestMessageLogger(statusUpdatesEnabled);
 
         LogActor actor = new TestLogActor(logger);
 
@@ -247,11 +255,10 @@ public abstract class AbstractTestLogSub
     /**
      * Test that when Logging occurs a single log statement is provided
      *
-     * @throws ConfigurationException
      */
-    public void testEnabled() throws ConfigurationException
+    public void testEnabled()
     {
-        List<Object> logs = performLog();
+        List<Object> logs = performLog(true);
 
         assertEquals("Log has incorrect message count", 1, logs.size());
 
@@ -267,15 +274,11 @@ public abstract class AbstractTestLogSub
     protected abstract void validateLogStatement(String message);
 
     /**
-     * Ensure that when status-updates are off this does not perform logging
-     *
-     * @throws ConfigurationException
+     * Ensure that when status updates are off this does not perform logging
      */
-    public void testDisabled() throws ConfigurationException
+    public void testDisabled()
     {
-        _config.setProperty(ServerConfiguration.STATUS_UPDATES, "OFF");
-
-        List<Object> logs = performLog();
+        List<Object> logs = performLog(false);
 
         assertEquals("Log has incorrect message count", 0, logs.size());
     }

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/BindingLogSubjectTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/BindingLogSubjectTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/BindingLogSubjectTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/BindingLogSubjectTest.java Tue Feb 19 09:35:28 2013
@@ -24,7 +24,7 @@ import org.apache.qpid.framing.AMQShortS
 import org.apache.qpid.server.exchange.Exchange;
 import org.apache.qpid.server.queue.AMQQueue;
 import org.apache.qpid.server.queue.MockAMQQueue;
-import org.apache.qpid.server.registry.ApplicationRegistry;
+import org.apache.qpid.server.util.BrokerTestHelper;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 
 /**
@@ -38,13 +38,12 @@ public class BindingLogSubjectTest exten
     private Exchange _exchange;
     private VirtualHost _testVhost;
 
+    @Override
     public void setUp() throws Exception
     {
         super.setUp();
 
-        _testVhost = ApplicationRegistry.getInstance().getVirtualHostRegistry().
-                getVirtualHost("test");
-        // Configure items for subjectCreation
+        _testVhost = BrokerTestHelper.createVirtualHost("test");
         _routingKey = new AMQShortString("RoutingKey");
         _exchange = _testVhost.getExchangeRegistry().getDefaultExchange();
         _queue = new MockAMQQueue("BindingLogSubjectTest");
@@ -53,6 +52,16 @@ public class BindingLogSubjectTest exten
         _subject = new BindingLogSubject(String.valueOf(_routingKey), _exchange, _queue);
     }
 
+    @Override
+    public void tearDown() throws Exception
+    {
+        if (_testVhost != null)
+        {
+            _testVhost.close();
+        }
+        super.tearDown();
+    }
+
     /**
      * Validate that the logged Subject  message is as expected:
      * MESSAGE [Blank][vh(/test)/ex(direct/<<default>>)/qu(BindingLogSubjectTest)/rk(RoutingKey)] <Log Message>

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/ChannelLogSubjectTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/ChannelLogSubjectTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/ChannelLogSubjectTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/ChannelLogSubjectTest.java Tue Feb 19 09:35:28 2013
@@ -34,6 +34,7 @@ public class ChannelLogSubjectTest exten
     {
         super.setUp();
 
+
         AMQChannel channel = new AMQChannel(getSession(), _channelID, getSession().getVirtualHost().getMessageStore());
 
         _subject = new ChannelLogSubject(channel);

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubjectTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubjectTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubjectTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/ConnectionLogSubjectTest.java Tue Feb 19 09:35:28 2013
@@ -20,17 +20,34 @@
  */
 package org.apache.qpid.server.logging.subjects;
 
+import org.apache.qpid.server.protocol.InternalTestProtocolSession;
+import org.apache.qpid.server.util.BrokerTestHelper;
+
 /**
  * Validate ConnectionLogSubjects are logged as expected
  */
 public class ConnectionLogSubjectTest extends AbstractTestLogSubject
 {
 
+    private InternalTestProtocolSession _session;
+
+    @Override
     public void setUp() throws Exception
     {
         super.setUp();
 
-        _subject = new ConnectionLogSubject(getSession());
+        _session = BrokerTestHelper.createSession("test");
+        _subject = new ConnectionLogSubject(_session);
+    }
+
+    @Override
+    public void tearDown() throws Exception
+    {
+        if (_session != null)
+        {
+            _session.getVirtualHost().close();
+        }
+        super.tearDown();
     }
 
     /**
@@ -40,7 +57,12 @@ public class ConnectionLogSubjectTest ex
      */
     protected void validateLogStatement(String message)
     {
-        verifyConnection(getSession().getSessionID(), "InternalTestProtocolSession", "127.0.0.1:1", "test", message);
+        verifyConnection(_session.getSessionID(), "InternalTestProtocolSession", "127.0.0.1:1", "test", message);
+    }
+
+    public InternalTestProtocolSession getSession()
+    {
+        return _session;
     }
 
 }

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubjectTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubjectTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubjectTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubjectTest.java Tue Feb 19 09:35:28 2013
@@ -21,7 +21,7 @@
 package org.apache.qpid.server.logging.subjects;
 
 import org.apache.qpid.server.exchange.Exchange;
-import org.apache.qpid.server.registry.ApplicationRegistry;
+import org.apache.qpid.server.util.BrokerTestHelper;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 
 
@@ -33,17 +33,27 @@ public class ExchangeLogSubjectTest exte
     private Exchange _exchange;
     private VirtualHost _testVhost;
 
+    @Override
     public void setUp() throws Exception
     {
         super.setUp();
 
-        _testVhost = ApplicationRegistry.getInstance().getVirtualHostRegistry().
-                getVirtualHost("test");
+        _testVhost = BrokerTestHelper.createVirtualHost("test");
 
         _exchange = _testVhost.getExchangeRegistry().getDefaultExchange();
         _subject = new ExchangeLogSubject(_exchange,_testVhost);
     }
 
+    @Override
+    public void tearDown() throws Exception
+    {
+        if (_testVhost != null)
+        {
+            _testVhost.close();
+        }
+        super.tearDown();
+    }
+
     /**
      * Validate that the logged Subject  message is as expected:
      * MESSAGE [Blank][vh(/test)/ex(direct/<<default>>)] <Log Message>

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/MessageStoreLogSubjectTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/MessageStoreLogSubjectTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/MessageStoreLogSubjectTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/MessageStoreLogSubjectTest.java Tue Feb 19 09:35:28 2013
@@ -20,7 +20,7 @@
  */
 package org.apache.qpid.server.logging.subjects;
 
-import org.apache.qpid.server.registry.ApplicationRegistry;
+import org.apache.qpid.server.util.BrokerTestHelper;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 
 /**
@@ -30,16 +30,26 @@ public class MessageStoreLogSubjectTest 
 {
     private VirtualHost _testVhost;
 
+    @Override
     public void setUp() throws Exception
     {
         super.setUp();
 
-        _testVhost = ApplicationRegistry.getInstance().getVirtualHostRegistry().
-                getVirtualHost("test");
+        _testVhost = BrokerTestHelper.createVirtualHost("test");
 
         _subject = new MessageStoreLogSubject(_testVhost, _testVhost.getMessageStore().getClass().getSimpleName());
     }
 
+    @Override
+    public void tearDown() throws Exception
+    {
+        if (_testVhost != null)
+        {
+            _testVhost.close();
+        }
+        super.tearDown();
+    }
+
     /**
      * Validate that the logged Subject  message is as expected:
      * MESSAGE [Blank][vh(/test)/ms(MemoryMessageStore)] <Log Message>

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/QueueLogSubjectTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/QueueLogSubjectTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/QueueLogSubjectTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/QueueLogSubjectTest.java Tue Feb 19 09:35:28 2013
@@ -22,7 +22,7 @@ package org.apache.qpid.server.logging.s
 
 import org.apache.qpid.server.queue.AMQQueue;
 import org.apache.qpid.server.queue.MockAMQQueue;
-import org.apache.qpid.server.registry.ApplicationRegistry;
+import org.apache.qpid.server.util.BrokerTestHelper;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 
 /**
@@ -39,8 +39,7 @@ public class QueueLogSubjectTest extends
     {
         super.setUp();
 
-        _testVhost = ApplicationRegistry.getInstance().getVirtualHostRegistry().
-                getVirtualHost("test");
+        _testVhost = BrokerTestHelper.createVirtualHost("test");
 
         _queue = new MockAMQQueue("QueueLogSubjectTest");
         ((MockAMQQueue) _queue).setVirtualHost(_testVhost);
@@ -48,6 +47,16 @@ public class QueueLogSubjectTest extends
         _subject = new QueueLogSubject(_queue);
     }
 
+    @Override
+    public void tearDown() throws Exception
+    {
+        if (_testVhost != null)
+        {
+            _testVhost.close();
+        }
+        super.tearDown();
+    }
+
     /**
      * Validate that the logged Subject  message is as expected:
      * MESSAGE [Blank][vh(/test)/qu(QueueLogSubjectTest)] <Log Message>

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/SubscriptionLogSubjectTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/SubscriptionLogSubjectTest.java?rev=1447646&r1=1447645&r2=1447646&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/SubscriptionLogSubjectTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/logging/subjects/SubscriptionLogSubjectTest.java Tue Feb 19 09:35:28 2013
@@ -23,12 +23,13 @@ package org.apache.qpid.server.logging.s
 import org.apache.qpid.framing.AMQShortString;
 import org.apache.qpid.server.AMQChannel;
 import org.apache.qpid.server.flow.LimitlessCreditManager;
+import org.apache.qpid.server.protocol.InternalTestProtocolSession;
 import org.apache.qpid.server.queue.AMQQueue;
 import org.apache.qpid.server.queue.MockAMQQueue;
-import org.apache.qpid.server.registry.ApplicationRegistry;
 import org.apache.qpid.server.subscription.Subscription;
 import org.apache.qpid.server.subscription.SubscriptionFactory;
 import org.apache.qpid.server.subscription.SubscriptionFactoryImpl;
+import org.apache.qpid.server.util.BrokerTestHelper;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 
 /**
@@ -42,23 +43,24 @@ public class SubscriptionLogSubjectTest 
     private int _channelID = 1;
     private Subscription _subscription;
 
+    @Override
     public void setUp() throws Exception
     {
         super.setUp();
 
-        _testVhost = ApplicationRegistry.getInstance().getVirtualHostRegistry().
-                getVirtualHost("test");
+        InternalTestProtocolSession session = BrokerTestHelper.createSession();
+        _testVhost = session.getVirtualHost();
 
         _queue = new MockAMQQueue("SubscriptionLogSubjectTest");
         ((MockAMQQueue) _queue).setVirtualHost(_testVhost);
 
-        AMQChannel channel = new AMQChannel(getSession(), _channelID, getSession().getVirtualHost().getMessageStore());
+        AMQChannel channel = new AMQChannel(session, _channelID, _testVhost.getMessageStore());
 
-        getSession().addChannel(channel);
+        session.addChannel(channel);
 
         SubscriptionFactory factory = new SubscriptionFactoryImpl();
 
-        _subscription = factory.createSubscription(_channelID, getSession(), new AMQShortString("cTag"),
+        _subscription = factory.createSubscription(_channelID, session, new AMQShortString("cTag"),
                                                    false, null, false,
                                                    new LimitlessCreditManager());
 
@@ -67,6 +69,16 @@ public class SubscriptionLogSubjectTest 
         _subject = new SubscriptionLogSubject(_subscription);
     }
 
+    @Override
+    public void tearDown() throws Exception
+    {
+        if (_testVhost != null)
+        {
+            _testVhost.close();
+        }
+        super.tearDown();
+    }
+
     /**
      * Validate that the logged Subject  message is as expected:
      * MESSAGE [Blank][sub:0(vh(/test)/qu(SubscriptionLogSubjectTest))] <Log Message>

Added: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/model/BrokerShutdownTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/model/BrokerShutdownTest.java?rev=1447646&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/model/BrokerShutdownTest.java (added)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/model/BrokerShutdownTest.java Tue Feb 19 09:35:28 2013
@@ -0,0 +1,216 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.model;
+
+import static org.mockito.Mockito.mock;
+
+import org.apache.qpid.server.configuration.ConfigurationEntry;
+import org.apache.qpid.server.configuration.ConfigurationEntryStore;
+import org.apache.qpid.server.configuration.ConfiguredObjectRecoverer;
+import org.apache.qpid.server.configuration.RecovererProvider;
+import org.apache.qpid.server.configuration.startup.DefaultRecovererProvider;
+import org.apache.qpid.server.logging.LogRecorder;
+import org.apache.qpid.server.logging.RootMessageLogger;
+import org.apache.qpid.server.model.AuthenticationProvider;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.configuration.updater.TaskExecutor;
+import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
+import org.apache.qpid.server.security.auth.manager.PlainPasswordFileAuthenticationManagerFactory;
+import org.apache.qpid.server.stats.StatisticsGatherer;
+import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
+import org.apache.qpid.test.utils.QpidTestCase;
+import org.apache.qpid.test.utils.TestFileUtils;
+
+import java.io.File;
+import java.security.Provider;
+import java.security.Security;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * QPID-1390 : Test to validate that the AuthenticationManger can successfully unregister any new SASL providers when
+ * the broker is stopped.
+ */
+public class BrokerShutdownTest extends QpidTestCase
+{
+    private Provider[] _defaultProviders;
+    private Broker _broker;
+    private TaskExecutor _taskExecutor;
+
+    @Override
+    public void setUp() throws Exception
+    {
+        // Get default providers
+        _defaultProviders = Security.getProviders();
+
+        super.setUp();
+
+        _taskExecutor = new TaskExecutor();
+        _taskExecutor.start();
+
+        // Startup the new broker and register the new providers
+        _broker = startBroker();
+    }
+
+    @Override
+    public void tearDown() throws Exception
+    {
+        try
+        {
+            super.tearDown();
+        }
+        finally
+        {
+            if (_taskExecutor != null)
+            {
+                _taskExecutor.stopImmediately();
+            }
+        }
+
+    }
+
+    private Broker startBroker() throws Exception
+    {
+        // test store with only broker and authentication provider entries
+        ConfigurationEntryStore store = new ConfigurationEntryStore()
+        {
+            private UUID _brokerId = UUID.randomUUID();
+            private UUID _authenticationProviderId = UUID.randomUUID();
+
+            @Override
+            public ConfigurationEntry getRootEntry()
+            {
+                return new ConfigurationEntry(_brokerId, Broker.class.getSimpleName(), Collections.<String, Object> emptyMap(),
+                        Collections.singleton(_authenticationProviderId), this);
+            }
+
+            @Override
+            public ConfigurationEntry getEntry(UUID id)
+            {
+                if (_authenticationProviderId.equals(id))
+                {
+                    File file = TestFileUtils.createTempFile(BrokerShutdownTest.this, ".db.users");
+                    Map<String, Object> attributes = new HashMap<String, Object>();
+                    attributes.put(AuthenticationManagerFactory.ATTRIBUTE_TYPE, PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE);
+                    attributes.put(PlainPasswordFileAuthenticationManagerFactory.ATTRIBUTE_PATH, file.getAbsolutePath());
+                    return new ConfigurationEntry(_authenticationProviderId, AuthenticationProvider.class.getSimpleName(), attributes,
+                            Collections.<UUID> emptySet(), this);
+                }
+                return null;
+            }
+
+            @Override
+            public void save(ConfigurationEntry... entries)
+            {
+            }
+
+            @Override
+            public UUID[] remove(UUID... entryIds)
+            {
+                return null;
+            }
+
+            @Override
+            public void open(String storeLocation)
+            {
+            }
+
+        };
+
+        // mocking the required object
+        StatisticsGatherer statisticsGatherer = mock(StatisticsGatherer.class);
+        VirtualHostRegistry virtualHostRegistry = mock(VirtualHostRegistry.class);
+        LogRecorder logRecorder = mock(LogRecorder.class);
+        RootMessageLogger rootMessageLogger = mock(RootMessageLogger.class);
+
+        // recover the broker from the store
+        RecovererProvider provider = new DefaultRecovererProvider(statisticsGatherer, virtualHostRegistry, logRecorder, rootMessageLogger, _taskExecutor);
+        ConfiguredObjectRecoverer<? extends ConfiguredObject> brokerRecoverer = provider.getRecoverer(Broker.class.getSimpleName());
+
+        Broker broker = (Broker) brokerRecoverer.create(provider, store.getRootEntry());
+
+        // start broker
+        broker.setDesiredState(State.INITIALISING, State.ACTIVE);
+        return broker;
+    }
+
+    private void stopBroker()
+    {
+        _broker.setDesiredState(State.ACTIVE, State.STOPPED);
+    }
+
+    /**
+     * QPID-1399 : Ensure that the Authentication manager unregisters any SASL providers created during
+     * broker start-up.
+     *
+     */
+    public void testAuthenticationMangerCleansUp() throws Exception
+    {
+
+        // Get the providers after initialisation
+        Provider[] providersAfterInitialisation = Security.getProviders();
+
+        // Find the additions
+        List<Provider> additions = new LinkedList<Provider>();
+        for (Provider afterInit : providersAfterInitialisation)
+        {
+            boolean found = false;
+            for (Provider defaultProvider : _defaultProviders)
+            {
+                if (defaultProvider == afterInit)
+                {
+                    found = true;
+                    break;
+                }
+            }
+
+            // Record added registies
+            if (!found)
+            {
+                additions.add(afterInit);
+            }
+        }
+
+        assertFalse("No new SASL mechanisms added by initialisation.", additions.isEmpty());
+
+        // Close the registry which will perform the close the
+        // AuthenticationManager
+        stopBroker();
+
+        // Validate that the SASL plugins have been removed.
+        Provider[] providersAfterClose = Security.getProviders();
+
+        assertTrue("No providers unregistered", providersAfterInitialisation.length > providersAfterClose.length);
+
+        // Ensure that the additions are not still present after close().
+        for (Provider afterClose : providersAfterClose)
+        {
+            assertFalse("Added provider not unregistered", additions.contains(afterClose));
+        }
+    }
+
+}

Added: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactoryTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactoryTest.java?rev=1447646&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactoryTest.java (added)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/model/adapter/AuthenticationProviderFactoryTest.java Tue Feb 19 09:35:28 2013
@@ -0,0 +1,85 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.model.adapter;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import junit.framework.TestCase;
+
+import org.apache.qpid.server.configuration.ConfigurationEntry;
+import org.apache.qpid.server.model.AuthenticationProvider;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.PasswordCredentialManagingAuthenticationProvider;
+import org.apache.qpid.server.plugin.AuthenticationManagerFactory;
+import org.apache.qpid.server.plugin.QpidServiceLoader;
+import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
+import org.apache.qpid.server.security.auth.manager.PrincipalDatabaseAuthenticationManager;
+
+public class AuthenticationProviderFactoryTest extends TestCase
+{
+
+    public void testCreatePasswordCredentialManagingAuthenticationProvider()
+    {
+        AuthenticationProvider provider = testForFactory(mock(PrincipalDatabaseAuthenticationManager.class));
+        assertTrue("The created provider should match the factory's AuthenticationManager type",
+                provider instanceof PasswordCredentialManagingAuthenticationProvider);
+    }
+
+    public void testCreateNonPasswordCredentialManagingAuthenticationProvider()
+    {
+        AuthenticationProvider provider = testForFactory(mock(AuthenticationManager.class));
+        assertFalse("The created provider should match the factory's AuthenticationManager type",
+                provider instanceof PasswordCredentialManagingAuthenticationProvider);
+    }
+
+    @SuppressWarnings("unchecked")
+    private AuthenticationProvider testForFactory(AuthenticationManager authenticationManager)
+    {
+        UUID id = UUID.randomUUID();
+        Map<String, Object> attributes = new HashMap<String, Object>();
+
+        QpidServiceLoader<AuthenticationManagerFactory> authManagerFactoryServiceLoader = mock(QpidServiceLoader.class);
+        AuthenticationManagerFactory authenticationManagerFactory = mock(AuthenticationManagerFactory.class);
+        ConfigurationEntry configurationEntry = mock(ConfigurationEntry.class);
+
+        when(configurationEntry.getId()).thenReturn(id);
+        Broker broker = mock(Broker.class);
+
+        when(authManagerFactoryServiceLoader.atLeastOneInstanceOf(AuthenticationManagerFactory.class)).thenReturn(
+                Collections.singleton(authenticationManagerFactory));
+        when(authenticationManagerFactory.createInstance(attributes)).thenReturn(authenticationManager);
+
+        AuthenticationProviderFactory providerFactory = new AuthenticationProviderFactory(authManagerFactoryServiceLoader);
+        AuthenticationProvider provider = providerFactory.create(id, broker, attributes, null);
+
+        assertNotNull("Provider is not created", provider);
+        assertEquals("Unexpected ID", id, provider.getId());
+
+        return provider;
+    }
+
+}



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