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 2015/06/10 12:51:31 UTC

svn commit: r1684638 - in /qpid/java/trunk: broker-core/src/main/java/org/apache/qpid/server/logging/ broker-core/src/main/java/org/apache/qpid/server/model/ broker-core/src/main/java/org/apache/qpid/server/model/adapter/ broker-core/src/test/java/org/...

Author: orudyy
Date: Wed Jun 10 10:51:31 2015
New Revision: 1684638

URL: http://svn.apache.org/r1684638
Log:
QPID-6579: [Java Broker] Add the ability to dynmaically add and remove broker loggers

Added:
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/BrokerTest.java
Modified:
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractBrokerLogger.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerConsoleLoggerImpl.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractBrokerLogger.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractBrokerLogger.java?rev=1684638&r1=1684637&r2=1684638&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractBrokerLogger.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/AbstractBrokerLogger.java Wed Jun 10 10:51:31 2015
@@ -28,6 +28,7 @@ import ch.qos.logback.classic.spi.ILoggi
 import ch.qos.logback.core.Appender;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.BrokerLogger;
@@ -35,6 +36,7 @@ import org.apache.qpid.server.model.Brok
 import org.apache.qpid.server.model.ConfigurationChangeListener;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.StateTransition;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -53,6 +55,65 @@ public abstract class AbstractBrokerLogg
     }
 
     @Override
+    protected void postResolveChildren()
+    {
+        super.postResolveChildren();
+
+        ch.qos.logback.classic.Logger rootLogger = getRootLogger();
+        final Appender<ILoggingEvent> appender = asAppender();
+        rootLogger.addAppender(appender);
+        appender.start();
+
+        StartupAppender startupAppender = (StartupAppender) rootLogger.getAppender(StartupAppender.class.getName());
+        if (startupAppender != null)
+        {
+            startupAppender.replayAccumulatedEvents(appender);
+        }
+    }
+
+    @Override
+    public void stopLogging()
+    {
+        Appender appender = getLoggerAppender();
+        appender.stop();
+        getRootLogger().detachAppender(getName());
+    }
+
+    @StateTransition(currentState = {State.ACTIVE, State.UNINITIALIZED, State.ERRORED, State.STOPPED}, desiredState = State.DELETED)
+    private ListenableFuture<Void> doDelete()
+    {
+        final SettableFuture<Void> returnVal = SettableFuture.create();
+        closeAsync().addListener(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                setState(State.DELETED);
+                stopLogging();
+                returnVal.set(null);
+            }
+        }, getTaskExecutor().getExecutor());
+        return returnVal;
+    }
+
+    @StateTransition( currentState = { State.ERRORED, State.UNINITIALIZED, State.STOPPED }, desiredState = State.ACTIVE )
+    private ListenableFuture<Void> doActivate()
+    {
+        setState(State.ACTIVE);
+        return Futures.immediateFuture(null);
+    }
+
+    private Appender<ILoggingEvent> getLoggerAppender()
+    {
+        return getRootLogger().getAppender(getName());
+    }
+
+    private ch.qos.logback.classic.Logger getRootLogger()
+    {
+        return (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
+    }
+
+    @Override
     protected <C extends ConfiguredObject> ListenableFuture<C> addChildAsync(Class<C> childClass, Map<String, Object> attributes, ConfiguredObject... otherParents)
     {
         final ListenableFuture<C> filterFuture = getObjectFactory().createAsync(childClass, attributes, this);
@@ -112,8 +173,7 @@ public abstract class AbstractBrokerLogg
 
     protected void initializeAppender(Appender<ILoggingEvent> appender)
     {
-        ch.qos.logback.classic.Logger rootLogger =
-                (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
+        ch.qos.logback.classic.Logger rootLogger = getRootLogger();
         LoggerContext loggerContext = rootLogger.getLoggerContext();
 
         appender.setContext(loggerContext);

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerConsoleLoggerImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerConsoleLoggerImpl.java?rev=1684638&r1=1684637&r2=1684638&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerConsoleLoggerImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerConsoleLoggerImpl.java Wed Jun 10 10:51:31 2015
@@ -62,7 +62,6 @@ public class BrokerConsoleLoggerImpl ext
         encoder.start();
 
         consoleAppender.setEncoder(encoder);
-        consoleAppender.start();
 
         return consoleAppender;
     }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java?rev=1684638&r1=1684637&r2=1684638&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerFileLoggerImpl.java Wed Jun 10 10:51:31 2015
@@ -156,7 +156,6 @@ public class BrokerFileLoggerImpl extend
         encoder.setContext(loggerContext);
         encoder.start();
         appender.setEncoder(encoder);
-        appender.start();
         return appender;
     }
 

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java?rev=1684638&r1=1684637&r2=1684638&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/logging/BrokerMemoryLoggerImpl.java Wed Jun 10 10:51:31 2015
@@ -55,7 +55,6 @@ public class BrokerMemoryLoggerImpl exte
     {
         final RecordEventAppender appender = new RecordEventAppender(getMaxRecords());
         initializeAppender(appender);
-        appender.start();
         return appender;
     }
 }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java?rev=1684638&r1=1684637&r2=1684638&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerLogger.java Wed Jun 10 10:51:31 2015
@@ -28,4 +28,6 @@ public interface BrokerLogger<X extends
 {
 
     Appender<ILoggingEvent> asAppender();
+
+    void stopLogging();
 }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java?rev=1684638&r1=1684637&r2=1684638&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java Wed Jun 10 10:51:31 2015
@@ -110,7 +110,7 @@ public class BrokerAdapter extends Abstr
     private String _confidentialConfigurationEncryptionProvider;
 
     private final boolean _virtualHostPropertiesNodeEnabled;
-    private FileAppender<ILoggingEvent> _logFileAppender;
+    private Collection<BrokerLogger> _brokerLoggersToClose;
 
     @ManagedObjectFactoryConstructor
     public BrokerAdapter(Map<String, Object> attributes,
@@ -168,23 +168,19 @@ public class BrokerAdapter extends Abstr
         ch.qos.logback.classic.Logger rootLogger =
                 (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
 
-        StartupAppender startupAppender = (StartupAppender) rootLogger.getAppender(StartupAppender.class.getName());
+
         Collection<BrokerLogger> loggers = getChildren(BrokerLogger.class);
         for(BrokerLogger<?> logger : loggers)
         {
-            final Appender<ILoggingEvent> appender = logger.asAppender();
-            rootLogger.addAppender(appender);
             if(_logRecorder == null && logger instanceof BrokerMemoryLogger)
             {
+                Appender appender = rootLogger.getAppender(logger.getName());
                 _logRecorder = new LogRecorder((RecordEventAppender) appender);
-            }
-
-            if (startupAppender != null)
-            {
-                startupAppender.replayAccumulatedEvents(appender);
+                break;
             }
         }
 
+        StartupAppender startupAppender = (StartupAppender) rootLogger.getAppender(StartupAppender.class.getName());
         if (startupAppender != null)
         {
             rootLogger.detachAppender(startupAppender);
@@ -596,6 +592,13 @@ public class BrokerAdapter extends Abstr
     }
 
     @Override
+    protected ListenableFuture<Void> beforeClose()
+    {
+        _brokerLoggersToClose = getChildren(BrokerLogger.class);
+        return super.beforeClose();
+    }
+
+    @Override
     protected void onClose()
     {
         if (_reportingTimer != null)
@@ -609,17 +612,13 @@ public class BrokerAdapter extends Abstr
         {
             _logRecorder.closeLogRecorder();
         }
-        if(_logFileAppender != null)
-        {
-
-            ch.qos.logback.classic.Logger rootLogger =
-                    (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
-            rootLogger.detachAppender(_logFileAppender);
-            _logFileAppender.stop();
 
+        for (BrokerLogger<?> logger: _brokerLoggersToClose)
+        {
+            logger.stopLogging();
         }
-
     }
+
     @Override
     public SecurityManager getSecurityManager()
     {

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java?rev=1684638&r1=1684637&r2=1684638&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/logging/BrokerLoggerTest.java Wed Jun 10 10:51:31 2015
@@ -40,6 +40,7 @@ import org.apache.qpid.server.model.Brok
 import org.apache.qpid.server.model.BrokerLoggerFilter;
 import org.apache.qpid.server.model.BrokerModel;
 import org.apache.qpid.server.model.Model;
+import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.security.SecurityManager;
 import org.apache.qpid.test.utils.QpidTestCase;
 import org.slf4j.Logger;
@@ -47,6 +48,7 @@ import org.slf4j.LoggerFactory;
 
 public class BrokerLoggerTest extends QpidTestCase
 {
+    public static final String APPENDER_NAME = "test";
 
     private AbstractBrokerLogger<?> _brokerLogger;
     private ListAppender _loggerAppender;
@@ -57,10 +59,7 @@ public class BrokerLoggerTest extends Qp
     {
         super.setUp();
         _loggerAppender = new ListAppender();
-
-        ch.qos.logback.classic.Logger rootLogger =
-                (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
-        rootLogger.addAppender(_loggerAppender);
+        _loggerAppender.setName(APPENDER_NAME);
 
         _taskExecutor = new TaskExecutorImpl();
         _taskExecutor.start();
@@ -75,7 +74,7 @@ public class BrokerLoggerTest extends Qp
         doReturn(Broker.class).when(broker).getCategoryClass();
 
         Map<String, Object> attributes = new HashMap<>();
-        attributes.put("name", "test");
+        attributes.put("name", APPENDER_NAME);
         _brokerLogger = new AbstractBrokerLogger(attributes, broker)
         {
             @Override
@@ -100,7 +99,6 @@ public class BrokerLoggerTest extends Qp
 
             _loggerAppender.clearAllFilters();
 
-            _loggerAppender.stop();
             rootLogger.detachAppender(_loggerAppender);
         }
         finally
@@ -131,11 +129,8 @@ public class BrokerLoggerTest extends Qp
 
         Logger logger = LoggerFactory.getLogger("org.apache.qpid");
 
-        _loggerAppender.start();
         logger.debug("Test2");
         logger.info("Test3");
-        _loggerAppender.stop();
-
         assertLoggedEvent(false, "Test2", logger.getName(), Level.DEBUG);
         assertLoggedEvent(true, "Test3", logger.getName(), Level.INFO);
     }
@@ -150,21 +145,24 @@ public class BrokerLoggerTest extends Qp
         BrokerLoggerFilter<?> createdFilter = _brokerLogger.createChild(BrokerLoggerFilter.class, attributes);
         Logger logger = LoggerFactory.getLogger("org.apache.qpid");
 
-        _loggerAppender.start();
         logger.info("Test1");
-        _loggerAppender.stop();
-
         assertLoggedEvent(true, "Test1", logger.getName(), Level.INFO);
 
         createdFilter.delete();
 
-        _loggerAppender.start();
         logger.info("Test2");
-        _loggerAppender.stop();
-
         assertLoggedEvent(false, "Test2", logger.getName(), Level.INFO);
     }
 
+    public void testDeleteLogger()
+    {
+        ch.qos.logback.classic.Logger rootLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
+        assertNotNull("Appender not found when it should have been created", rootLogger.getAppender(_brokerLogger.getName()));
+        _brokerLogger.delete();
+        assertEquals("Unexpected state after deletion", State.DELETED, _brokerLogger.getState());
+        assertNull("Appender found when it should have been deleted", rootLogger.getAppender(_brokerLogger.getName()));
+    }
+
     private void assertLoggedEvent(boolean exists, String message, String loggerName, Level level)
     {
         List<ILoggingEvent> events;

Added: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/BrokerTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/BrokerTest.java?rev=1684638&view=auto
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/BrokerTest.java (added)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/BrokerTest.java Wed Jun 10 10:51:31 2015
@@ -0,0 +1,90 @@
+/*
+ *
+ * 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 static org.mockito.Mockito.when;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import ch.qos.logback.core.Appender;
+import org.apache.qpid.server.BrokerOptions;
+import org.apache.qpid.server.configuration.updater.CurrentThreadTaskExecutor;
+import org.apache.qpid.server.configuration.updater.TaskExecutor;
+import org.apache.qpid.server.logging.BrokerMemoryLogger;
+import org.apache.qpid.server.logging.EventLogger;
+import org.apache.qpid.server.store.ConfiguredObjectRecord;
+import org.apache.qpid.server.store.GenericRecoverer;
+import org.apache.qpid.test.utils.QpidTestCase;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BrokerTest extends QpidTestCase
+{
+    private TaskExecutor _taskExecutor;
+    private SystemConfig<JsonSystemConfigImpl> _systemConfig;
+    private ConfiguredObjectRecord _brokerEntry = mock(ConfiguredObjectRecord.class);
+    private UUID _brokerId = UUID.randomUUID();
+
+    @Override
+    public void setUp() throws Exception
+    {
+        super.setUp();
+        _taskExecutor = new CurrentThreadTaskExecutor();
+        _taskExecutor.start();
+        _systemConfig = new JsonSystemConfigImpl(_taskExecutor,
+                                                 mock(EventLogger.class),
+                                                 new BrokerOptions().convertToSystemConfigAttributes());
+
+        when(_brokerEntry.getId()).thenReturn(_brokerId);
+        when(_brokerEntry.getType()).thenReturn(Broker.class.getSimpleName());
+        Map<String, Object> attributesMap = new HashMap<String, Object>();
+        attributesMap.put(Broker.MODEL_VERSION, BrokerModel.MODEL_VERSION);
+        attributesMap.put(Broker.NAME, getName());
+
+        when(_brokerEntry.getAttributes()).thenReturn(attributesMap);
+        when(_brokerEntry.getParents()).thenReturn(Collections.singletonMap(SystemConfig.class.getSimpleName(), _systemConfig.getId()));
+        GenericRecoverer recoverer = new GenericRecoverer(_systemConfig);
+        recoverer.recover(Arrays.asList(_brokerEntry));
+    }
+
+    public void testCreateBrokerLogger()
+    {
+        Broker broker = _systemConfig.getBroker();
+        Map<String,Object> attributes = new HashMap<>();
+        final String brokerLoggerName = "TestBrokerLogger";
+        attributes.put(ConfiguredObject.NAME, brokerLoggerName);
+        attributes.put(ConfiguredObject.TYPE, BrokerMemoryLogger.TYPE);
+
+        BrokerLogger child = (BrokerLogger) broker.createChild(BrokerLogger.class, attributes);
+        assertEquals("Created BrokerLoger has unexcpected name", brokerLoggerName, child.getName());
+        assertTrue("BrokerLogger has unexpected type", child instanceof BrokerMemoryLogger);
+
+        ch.qos.logback.classic.Logger rootLogger =
+                (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
+        Appender appender = rootLogger.getAppender(brokerLoggerName);
+        assertNotNull("Appender not attached to root logger after BrokerLogger creation", appender);
+    }
+}

Modified: qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java?rev=1684638&r1=1684637&r2=1684638&view=diff
==============================================================================
--- qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java (original)
+++ qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/acl/BrokerACLTest.java Wed Jun 10 10:51:31 2015
@@ -29,8 +29,10 @@ import java.util.Map;
 
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.qpid.server.logging.BrokerMemoryLogger;
 import org.apache.qpid.server.logging.BrokerNameAndLevelFilter;
 import org.apache.qpid.server.management.plugin.servlet.rest.RestServlet;
+import org.apache.qpid.server.model.BrokerLogger;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.codehaus.jackson.JsonGenerationException;
 import org.codehaus.jackson.map.JsonMappingException;
@@ -834,6 +836,38 @@ public class BrokerACLTest extends QpidR
                 details.get(HttpManagement.HTTPS_SASL_AUTHENTICATION_ENABLED));
     }
 
+    /* === Broker Logger === */
+
+    public void testCreateBrokerLoggerAllowedDenied() throws Exception
+    {
+        getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER);
+
+        getRestTestHelper().submitRequest("brokerlogger/memory", "GET", HttpServletResponse.SC_OK);
+
+        Map<String, Object> attributes = new HashMap<>();
+        attributes.put(BrokerLogger.NAME, "testLogger1");
+        attributes.put(ConfiguredObject.TYPE, BrokerMemoryLogger.TYPE);
+
+        getRestTestHelper().submitRequest("brokerlogger", "PUT", attributes, HttpServletResponse.SC_CREATED);
+        getRestTestHelper().submitRequest("brokerlogger/testLogger1", "GET", HttpServletResponse.SC_OK);
+
+        getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER);
+        attributes.put(BrokerNameAndLevelFilter.NAME, "testLogger2");
+        getRestTestHelper().submitRequest("brokerlogger", "PUT", attributes, HttpServletResponse.SC_FORBIDDEN);
+        getRestTestHelper().submitRequest("brokerlogger/testLogger2", "GET", HttpServletResponse.SC_NOT_FOUND);
+    }
+
+    public void testDeleteBrokerLoggerAllowedDenied() throws Exception
+    {
+        getRestTestHelper().setUsernameAndPassword(DENIED_USER, DENIED_USER);
+        getRestTestHelper().submitRequest("brokerlogger/memory", "DELETE", null, HttpServletResponse.SC_FORBIDDEN);
+        getRestTestHelper().submitRequest("brokerlogger/memory", "GET", HttpServletResponse.SC_OK);
+
+        getRestTestHelper().setUsernameAndPassword(ALLOWED_USER, ALLOWED_USER);
+        getRestTestHelper().submitRequest("brokerlogger/memory", "DELETE", null, HttpServletResponse.SC_OK);
+        getRestTestHelper().submitRequest("brokerlogger/memory", "GET", HttpServletResponse.SC_NOT_FOUND);
+    }
+
     /* === Broker Logger Filters === */
 
     public void testCreateBrokerLoggerFilterAllowedDenied() throws Exception



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