QPID-8017: [Broker-J] [BDB] Add context variable that allows the JUL logging level of JUL loggers to be overridden.
Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/835efa54 Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/835efa54 Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/835efa54 Branch: refs/heads/master Commit: 835efa54b82d9780d4f59a2363919d302b68a10d Parents: 8312b9f Author: Keith Wall <[email protected]> Authored: Thu Jan 11 13:55:04 2018 +0000 Committer: Keith Wall <[email protected]> Committed: Thu Jan 11 14:54:27 2018 +0000 ---------------------------------------------------------------------- .../store/berkeleydb/BDBPreferenceStore.java | 14 ++++- .../qpid/server/store/berkeleydb/BDBUtils.java | 21 ++++++- .../store/berkeleydb/EnvironmentFacade.java | 1 + .../StandardEnvironmentConfiguration.java | 6 +- .../berkeleydb/StandardEnvironmentFacade.java | 5 +- .../StandardEnvironmentFacadeFactory.java | 11 +++- .../berkeleydb/logging/Slf4jLoggingHandler.java | 61 +++++++++++++++++++- .../ReplicatedEnvironmentFacade.java | 25 +++++--- .../ReplicatedEnvironmentFacadeFactory.java | 13 ++++- .../StandardEnvironmentFacadeTest.java | 22 +++++-- .../ReplicatedEnvironmentFacadeTest.java | 52 +++++++++++++---- .../v1_0/store/bdb/BDBLinkStoreTest.java | 14 +++++ 12 files changed, 203 insertions(+), 42 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBPreferenceStore.java ---------------------------------------------------------------------- diff --git a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBPreferenceStore.java b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBPreferenceStore.java index aa00932..ce4790c 100644 --- a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBPreferenceStore.java +++ b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBPreferenceStore.java @@ -20,6 +20,7 @@ package org.apache.qpid.server.store.berkeleydb; import java.io.File; +import java.lang.reflect.Type; import java.util.Collection; import java.util.Map; @@ -76,9 +77,18 @@ public class BDBPreferenceStore extends AbstractBDBPreferenceStore } @Override - public int getFacadeParameter(final String parameterName, final int defaultValue) + public <T> T getFacadeParameter(final Class<T> paremeterClass, final String parameterName, final T defaultValue) { - return BDBUtils.getContextValue(parent, Integer.class, parameterName, defaultValue); + return BDBUtils.getContextValue(parent, paremeterClass, parameterName, defaultValue); + } + + @Override + public <T> T getFacadeParameter(final Class<T> paremeterClass, + final Type type, + final String parameterName, + final T defaultValue) + { + return BDBUtils.getContextValue(parent, paremeterClass, type, parameterName, defaultValue); } }); } http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUtils.java ---------------------------------------------------------------------- diff --git a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUtils.java b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUtils.java index 98fc2b3..4b87636 100644 --- a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUtils.java +++ b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUtils.java @@ -19,6 +19,7 @@ package org.apache.qpid.server.store.berkeleydb; +import java.lang.reflect.Type; import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -26,7 +27,6 @@ import java.util.regex.Pattern; import com.sleepycat.je.CacheMode; import com.sleepycat.je.CheckpointConfig; -import com.sleepycat.je.Cursor; import com.sleepycat.je.DatabaseConfig; import com.sleepycat.je.Environment; import com.sleepycat.je.EnvironmentConfig; @@ -35,7 +35,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.store.StoreException; import org.apache.qpid.server.virtualhost.berkeleydb.BDBVirtualHost; public class BDBUtils @@ -160,7 +159,7 @@ public class BDBUtils } public static <T> T getContextValue(final ConfiguredObject<?> parent, - Class<T> paremeterClass, + final Class<T> paremeterClass, final String parameterName, final T defaultValue) { @@ -173,4 +172,20 @@ public class BDBUtils return defaultValue; } } + + public static <T> T getContextValue(final ConfiguredObject<?> parent, + final Class<T> paremeterClass, + final Type type, + final String parameterName, + final T defaultValue) + { + if (parent.getContextKeys(false).contains(parameterName)) + { + return parent.getContextValue(paremeterClass, type, parameterName); + } + else + { + return defaultValue; + } + } } http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacade.java ---------------------------------------------------------------------- diff --git a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacade.java b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacade.java index 7a54b8b..fcf6d78 100644 --- a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacade.java +++ b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/EnvironmentFacade.java @@ -54,6 +54,7 @@ public interface EnvironmentFacade CacheMode CACHE_MODE_DEFAULT = CacheMode.EVICT_LN; String LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME = "qpid.bdb.je.cleaner_protected_files_limit"; int DEFAULT_LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT = 10; + String JUL_LOGGER_LEVEL_OVERRIDE = "qpid.bdb.je.jul_logger_level_override"; void upgradeIfNecessary(ConfiguredObject<?> parent); http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentConfiguration.java ---------------------------------------------------------------------- diff --git a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentConfiguration.java b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentConfiguration.java index 38fe055..c906d41 100644 --- a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentConfiguration.java +++ b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentConfiguration.java @@ -19,6 +19,7 @@ package org.apache.qpid.server.store.berkeleydb; +import java.lang.reflect.Type; import java.util.Map; import com.sleepycat.je.CacheMode; @@ -30,5 +31,8 @@ public interface StandardEnvironmentConfiguration CacheMode getCacheMode(); Map<String, String> getParameters(); - int getFacadeParameter(String parameterName, int defaultValue); + <T> T getFacadeParameter(final Class<T> paremeterClass, String parameterName, T defaultValue); + + <T> T getFacadeParameter(Class<T> paremeterClass, Type type, String parameterName, T defaultValue); + } http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java ---------------------------------------------------------------------- diff --git a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java index 460d656..271c54c 100644 --- a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java +++ b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacade.java @@ -108,10 +108,7 @@ public class StandardEnvironmentFacade implements EnvironmentFacade envConfig.setAllowCreate(true); envConfig.setTransactional(true); envConfig.setCacheMode(configuration.getCacheMode()); - int logHandlerCleanerProtectedFilesLimit = configuration.getFacadeParameter(LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME, - DEFAULT_LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT); - envConfig.setLoggingHandler(new Slf4jLoggingHandler("[" + configuration.getName() + "]", - logHandlerCleanerProtectedFilesLimit)); + envConfig.setLoggingHandler(new Slf4jLoggingHandler(configuration)); LOGGER.debug("Cache mode {}", envConfig.getCacheMode()); http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java ---------------------------------------------------------------------- diff --git a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java index 9d8eab9..08aabe2 100644 --- a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java +++ b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeFactory.java @@ -20,6 +20,7 @@ */ package org.apache.qpid.server.store.berkeleydb; +import java.lang.reflect.Type; import java.util.Map; import com.sleepycat.je.CacheMode; @@ -73,9 +74,15 @@ public class StandardEnvironmentFacadeFactory implements EnvironmentFacadeFactor } @Override - public int getFacadeParameter(final String parameterName, final int defaultValue) + public <T> T getFacadeParameter(final Class<T> clazz, final String parameterName, final T defaultValue) { - return BDBUtils.getContextValue(parent, Integer.class, parameterName, defaultValue); + return BDBUtils.getContextValue(parent, clazz, parameterName, defaultValue); + } + + @Override + public <T> T getFacadeParameter(final Class<T> paremeterClass, final Type type, final String parameterName, final T defaultValue) + { + return BDBUtils.getContextValue(parent, paremeterClass, type, parameterName, defaultValue); } }; http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/logging/Slf4jLoggingHandler.java ---------------------------------------------------------------------- diff --git a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/logging/Slf4jLoggingHandler.java b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/logging/Slf4jLoggingHandler.java index 4848346..e05dd7d 100644 --- a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/logging/Slf4jLoggingHandler.java +++ b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/logging/Slf4jLoggingHandler.java @@ -20,9 +20,16 @@ */ package org.apache.qpid.server.store.berkeleydb.logging; +import static org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.DEFAULT_LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT; +import static org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.JUL_LOGGER_LEVEL_OVERRIDE; +import static org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME; +import static org.apache.qpid.server.util.ParameterizedTypes.MAP_OF_STRING_STRING; + import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.logging.ErrorManager; @@ -37,25 +44,72 @@ import com.sleepycat.je.cleaner.Cleaner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.apache.qpid.server.store.berkeleydb.StandardEnvironmentConfiguration; + public class Slf4jLoggingHandler extends Handler { + private static final Logger LOGGER = LoggerFactory.getLogger(Slf4jLoggingHandler.class); + private static Pattern NOT_DELETED_DUE_TO_PROTECTION = Pattern.compile("Cleaner has ([0-9]+) files not deleted because they are protected.*"); private final ConcurrentMap<String,Logger> _loggers = new ConcurrentHashMap<>(); private final int _logHandlerCleanerProtectedFilesLimit; + private final String _prefix; + private final Set<java.util.logging.Logger> _overridedenLoggers = new HashSet<>(); - public Slf4jLoggingHandler(final String prefix, final int logHandlerCleanerProtectedFilesLimit) + public Slf4jLoggingHandler(final StandardEnvironmentConfiguration configuration) { + _prefix = configuration.getName(); setFormatter(new Formatter() { @Override public String format(final LogRecord record) { - return prefix + " " + formatMessage(record); + return _prefix + " " + formatMessage(record); + } + }); + + _logHandlerCleanerProtectedFilesLimit = configuration.getFacadeParameter(Integer.class, + LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME, + DEFAULT_LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT); + + final Map<String, String> levelOverrides = configuration.getFacadeParameter(Map.class, + MAP_OF_STRING_STRING, + JUL_LOGGER_LEVEL_OVERRIDE, + Collections.emptyMap()); + applyJulLoggerLevelOverrides(levelOverrides); + } + + private void applyJulLoggerLevelOverrides(final Map<String, String> julLoggerLevelOverrides) + { + julLoggerLevelOverrides.forEach((julLoggerName, julDesiredLevelString) -> { + Level julDesiredLevel; + try + { + julDesiredLevel = Level.parse(julDesiredLevelString); + } + catch (IllegalArgumentException e) + { + julDesiredLevel = null; + LOGGER.warn("Unrecognised JUL level name '{}' in JUL override for logger name '{}'", + julDesiredLevelString, julLoggerName); + } + + if (julDesiredLevel != null) + { + java.util.logging.Logger julLogger = java.util.logging.Logger.getLogger(julLoggerName); + if (julLogger.getLevel() == null || !julLogger.isLoggable(julDesiredLevel)) + { + _overridedenLoggers.add(julLogger); // Retain reference in case logger is not yet held by the class + julLogger.setLevel(julDesiredLevel); + + LOGGER.warn("JUL logger {} overridden to level {}", + julLogger.getName(), + julLogger.getLevel()); + } } }); - _logHandlerCleanerProtectedFilesLimit = logHandlerCleanerProtectedFilesLimit; } private interface MappedLevel @@ -267,6 +321,7 @@ public class Slf4jLoggingHandler extends Handler @Override public void close() throws SecurityException { + _overridedenLoggers.clear(); } } http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java ---------------------------------------------------------------------- diff --git a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java index 24d2382..c5fe0d9 100644 --- a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java +++ b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java @@ -253,13 +253,22 @@ public class ReplicatedEnvironmentFacade implements EnvironmentFacade, StateChan _configuration = configuration; - _masterTransferTimeout = configuration.getFacadeParameter(MASTER_TRANSFER_TIMEOUT_PROPERTY_NAME, DEFAULT_MASTER_TRANSFER_TIMEOUT); - _dbPingSocketTimeout = configuration.getFacadeParameter(DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME, DEFAULT_DB_PING_SOCKET_TIMEOUT); - _remoteNodeMonitorInterval = configuration.getFacadeParameter(REMOTE_NODE_MONITOR_INTERVAL_PROPERTY_NAME, DEFAULT_REMOTE_NODE_MONITOR_INTERVAL); - _remoteNodeMonitorTimeout = configuration.getFacadeParameter(REMOTE_NODE_MONITOR_TIMEOUT_PROPERTY_NAME, DEFAULT_REMOTE_NODE_MONITOR_TIMEOUT); - _environmentRestartRetryLimit = configuration.getFacadeParameter(ENVIRONMENT_RESTART_RETRY_LIMIT_PROPERTY_NAME, DEFAULT_ENVIRONMENT_RESTART_RETRY_LIMIT); - _executorShutdownTimeout = configuration.getFacadeParameter(EXECUTOR_SHUTDOWN_TIMEOUT_PROPERTY_NAME, DEFAULT_EXECUTOR_SHUTDOWN_TIMEOUT); - _logHandlerCleanerProtectedFilesLimit = _configuration.getFacadeParameter(LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME, + _masterTransferTimeout = configuration.getFacadeParameter(Integer.class, + MASTER_TRANSFER_TIMEOUT_PROPERTY_NAME, + DEFAULT_MASTER_TRANSFER_TIMEOUT); + _dbPingSocketTimeout = configuration.getFacadeParameter(Integer.class, + DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME, DEFAULT_DB_PING_SOCKET_TIMEOUT); + _remoteNodeMonitorInterval = configuration.getFacadeParameter(Integer.class, + REMOTE_NODE_MONITOR_INTERVAL_PROPERTY_NAME, DEFAULT_REMOTE_NODE_MONITOR_INTERVAL); + _remoteNodeMonitorTimeout = configuration.getFacadeParameter(Integer.class, + REMOTE_NODE_MONITOR_TIMEOUT_PROPERTY_NAME, + DEFAULT_REMOTE_NODE_MONITOR_TIMEOUT); + _environmentRestartRetryLimit = configuration.getFacadeParameter(Integer.class, + ENVIRONMENT_RESTART_RETRY_LIMIT_PROPERTY_NAME, DEFAULT_ENVIRONMENT_RESTART_RETRY_LIMIT); + _executorShutdownTimeout = configuration.getFacadeParameter(Integer.class, + EXECUTOR_SHUTDOWN_TIMEOUT_PROPERTY_NAME, DEFAULT_EXECUTOR_SHUTDOWN_TIMEOUT); + _logHandlerCleanerProtectedFilesLimit = _configuration.getFacadeParameter(Integer.class, + LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME, DEFAULT_LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT); _defaultDurability = new Durability(LOCAL_TRANSACTION_SYNCHRONIZATION_POLICY, REMOTE_TRANSACTION_SYNCHRONIZATION_POLICY, REPLICA_REPLICA_ACKNOWLEDGMENT_POLICY); @@ -1485,7 +1494,7 @@ public class ReplicatedEnvironmentFacade implements EnvironmentFacade, StateChan envConfig.setCacheMode(_configuration.getCacheMode()); - envConfig.setLoggingHandler(new Slf4jLoggingHandler("[" + _configuration.getName() + "]", _logHandlerCleanerProtectedFilesLimit)); + envConfig.setLoggingHandler(new Slf4jLoggingHandler(_configuration)); LOGGER.info("Cache mode {}", envConfig.getCacheMode()); http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java ---------------------------------------------------------------------- diff --git a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java index 1e7c607..d6f6ea4 100644 --- a/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java +++ b/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeFactory.java @@ -20,6 +20,7 @@ */ package org.apache.qpid.server.store.berkeleydb.replication; +import java.lang.reflect.Type; import java.util.Map; import com.sleepycat.je.CacheMode; @@ -112,11 +113,19 @@ public class ReplicatedEnvironmentFacadeFactory implements EnvironmentFacadeFact } @Override - public int getFacadeParameter(final String parameterName, final int defaultValue) + public <T> T getFacadeParameter(final Class<T> paremeterClass, final String parameterName, final T defaultValue) { - return BDBUtils.getContextValue(parent, Integer.class, parameterName, defaultValue); + return BDBUtils.getContextValue(parent, paremeterClass, parameterName, defaultValue); } + @Override + public <T> T getFacadeParameter(final Class<T> paremeterClass, + final Type type, + final String parameterName, + final T defaultValue) + { + return BDBUtils.getContextValue(parent, paremeterClass, type, parameterName, defaultValue); + } }; return new ReplicatedEnvironmentFacade(configuration); } http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java ---------------------------------------------------------------------- diff --git a/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java b/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java index 82fa59e..0bf6f73 100644 --- a/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java +++ b/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java @@ -20,6 +20,11 @@ */ package org.apache.qpid.server.store.berkeleydb; +import static org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.JUL_LOGGER_LEVEL_OVERRIDE; +import static org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -27,14 +32,13 @@ import java.io.File; import java.util.Collections; import java.util.Map; -import com.sleepycat.je.Transaction; - -import org.apache.qpid.test.utils.QpidTestCase; -import org.apache.qpid.server.util.FileUtils; - import com.sleepycat.je.Database; import com.sleepycat.je.DatabaseConfig; import com.sleepycat.je.EnvironmentConfig; +import com.sleepycat.je.Transaction; + +import org.apache.qpid.server.util.FileUtils; +import org.apache.qpid.test.utils.QpidTestCase; public class StandardEnvironmentFacadeTest extends QpidTestCase { @@ -147,6 +151,14 @@ public class StandardEnvironmentFacadeTest extends QpidTestCase when(sec.getName()).thenReturn(getTestName()); when(sec.getParameters()).thenReturn(map); when(sec.getStorePath()).thenReturn(_storePath.getAbsolutePath()); + when(sec.getFacadeParameter(eq(Integer.class), + eq(LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME), + anyInt())).thenReturn(0); + when(sec.getFacadeParameter(eq(Map.class), + any(), + eq(JUL_LOGGER_LEVEL_OVERRIDE), + any())).thenReturn(Collections.emptyMap()); + return new StandardEnvironmentFacade(sec); } http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java ---------------------------------------------------------------------- diff --git a/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java b/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java index 1c1c294..c822dd0 100644 --- a/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java +++ b/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java @@ -20,6 +20,18 @@ */ package org.apache.qpid.server.store.berkeleydb.replication; +import static org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.JUL_LOGGER_LEVEL_OVERRIDE; +import static org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME; +import static org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME; +import static org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.ENVIRONMENT_RESTART_RETRY_LIMIT_PROPERTY_NAME; +import static org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.EXECUTOR_SHUTDOWN_TIMEOUT_PROPERTY_NAME; +import static org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.MASTER_TRANSFER_TIMEOUT_PROPERTY_NAME; +import static org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.PERMITTED_NODE_LIST; +import static org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.REMOTE_NODE_MONITOR_INTERVAL_PROPERTY_NAME; +import static org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.REMOTE_NODE_MONITOR_TIMEOUT_PROPERTY_NAME; +import static org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.ReplicationNodeImpl; +import static org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade.getRemoteNodeState; +import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; @@ -28,6 +40,7 @@ import static org.mockito.Mockito.when; import java.io.File; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -109,7 +122,7 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase }); _storePath = TestFileUtils.createTestDirectory("bdb", true); - setTestSystemProperty(ReplicatedEnvironmentFacade.DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME, "100"); + setTestSystemProperty(DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME, "100"); } @Override @@ -778,13 +791,13 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase permittedNodes.add("localhost:" + _portHelper.getNextAvailable()); firstNode.setPermittedNodes(permittedNodes); - ReplicatedEnvironmentFacade.ReplicationNodeImpl replicationNode = new ReplicatedEnvironmentFacade.ReplicationNodeImpl(TEST_NODE_NAME, TEST_NODE_HOST_PORT); - NodeState nodeState = ReplicatedEnvironmentFacade.getRemoteNodeState(TEST_GROUP_NAME, replicationNode, 5000); + ReplicationNodeImpl replicationNode = new ReplicationNodeImpl(TEST_NODE_NAME, TEST_NODE_HOST_PORT); + NodeState nodeState = getRemoteNodeState(TEST_GROUP_NAME, replicationNode, 5000); ObjectMapper objectMapper = new ObjectMapper(); Map<String, Object> settings = objectMapper.readValue(nodeState.getAppState(), Map.class); - Collection<String> appStatePermittedNodes = (Collection<String>)settings.get(ReplicatedEnvironmentFacade.PERMITTED_NODE_LIST); + Collection<String> appStatePermittedNodes = (Collection<String>)settings.get(PERMITTED_NODE_LIST); assertEquals("Unexpected permitted nodes", permittedNodes, new HashSet<String>(appStatePermittedNodes)); } @@ -1169,14 +1182,29 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase when(node.getHelperHostPort()).thenReturn(TEST_NODE_HELPER_HOST_PORT); when(node.getHelperNodeName()).thenReturn(TEST_NODE_NAME); - when(node.getFacadeParameter(eq(ReplicatedEnvironmentFacade.MASTER_TRANSFER_TIMEOUT_PROPERTY_NAME), anyInt())).thenReturn(60000); - when(node.getFacadeParameter(eq(ReplicatedEnvironmentFacade.DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME), anyInt())).thenReturn(10000); - when(node.getFacadeParameter(eq(ReplicatedEnvironmentFacade.REMOTE_NODE_MONITOR_INTERVAL_PROPERTY_NAME), anyInt())).thenReturn(1000); - when(node.getFacadeParameter(eq(ReplicatedEnvironmentFacade.REMOTE_NODE_MONITOR_TIMEOUT_PROPERTY_NAME), anyInt())).thenReturn(1000); - when(node.getFacadeParameter(eq(ReplicatedEnvironmentFacade.ENVIRONMENT_RESTART_RETRY_LIMIT_PROPERTY_NAME), anyInt())).thenReturn(3); - when(node.getFacadeParameter(eq(ReplicatedEnvironmentFacade.EXECUTOR_SHUTDOWN_TIMEOUT_PROPERTY_NAME), anyInt())).thenReturn(10000); - - Map<String, String> repConfig = new HashMap<String, String>(); + when(node.getFacadeParameter(eq(Integer.class), + eq(MASTER_TRANSFER_TIMEOUT_PROPERTY_NAME), + anyInt())).thenReturn(60000); + when(node.getFacadeParameter(eq(Integer.class), eq(DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME), anyInt())).thenReturn( + 10000); + when(node.getFacadeParameter(eq(Integer.class), + eq(REMOTE_NODE_MONITOR_INTERVAL_PROPERTY_NAME), + anyInt())).thenReturn(1000); + when(node.getFacadeParameter(eq(Integer.class), + eq(REMOTE_NODE_MONITOR_TIMEOUT_PROPERTY_NAME), + anyInt())).thenReturn(1000); + when(node.getFacadeParameter(eq(Integer.class), + eq(ENVIRONMENT_RESTART_RETRY_LIMIT_PROPERTY_NAME), + anyInt())).thenReturn(3); + when(node.getFacadeParameter(eq(Integer.class), + eq(EXECUTOR_SHUTDOWN_TIMEOUT_PROPERTY_NAME), + anyInt())).thenReturn(10000); + when(node.getFacadeParameter(eq(Integer.class), + eq(LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME), + anyInt())).thenReturn(0); + when(node.getFacadeParameter(eq(Map.class), any(), eq(JUL_LOGGER_LEVEL_OVERRIDE), any())).thenReturn(Collections.emptyMap()); + + Map<String, String> repConfig = new HashMap<>(); repConfig.put(ReplicationConfig.REPLICA_ACK_TIMEOUT, "2 s"); repConfig.put(ReplicationConfig.INSUFFICIENT_REPLICAS_TIMEOUT, "2 s"); when(node.getReplicationParameters()).thenReturn(repConfig); http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/835efa54/broker-plugins/amqp-1-0-bdb-store/src/test/java/org/apache/qpid/server/protocol/v1_0/store/bdb/BDBLinkStoreTest.java ---------------------------------------------------------------------- diff --git a/broker-plugins/amqp-1-0-bdb-store/src/test/java/org/apache/qpid/server/protocol/v1_0/store/bdb/BDBLinkStoreTest.java b/broker-plugins/amqp-1-0-bdb-store/src/test/java/org/apache/qpid/server/protocol/v1_0/store/bdb/BDBLinkStoreTest.java index 1ff2dfd..b795d55 100644 --- a/broker-plugins/amqp-1-0-bdb-store/src/test/java/org/apache/qpid/server/protocol/v1_0/store/bdb/BDBLinkStoreTest.java +++ b/broker-plugins/amqp-1-0-bdb-store/src/test/java/org/apache/qpid/server/protocol/v1_0/store/bdb/BDBLinkStoreTest.java @@ -21,11 +21,17 @@ package org.apache.qpid.server.protocol.v1_0.store.bdb; +import static org.apache.qpid.server.store.berkeleydb.EnvironmentFacade.*; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.io.File; import java.util.Collections; +import java.util.Map; +import java.util.stream.Collectors; import com.google.common.io.Files; import com.sleepycat.je.CacheMode; @@ -33,6 +39,7 @@ import com.sleepycat.je.CacheMode; import org.apache.qpid.server.protocol.v1_0.store.LinkStore; import org.apache.qpid.server.protocol.v1_0.store.LinkStoreTestCase; import org.apache.qpid.server.store.berkeleydb.BDBEnvironmentContainer; +import org.apache.qpid.server.store.berkeleydb.EnvironmentFacade; import org.apache.qpid.server.store.berkeleydb.StandardEnvironmentConfiguration; import org.apache.qpid.server.store.berkeleydb.StandardEnvironmentFacade; import org.apache.qpid.server.util.FileUtils; @@ -51,6 +58,13 @@ public class BDBLinkStoreTest extends LinkStoreTestCase when(configuration.getStorePath()).thenReturn(_storeFolder.getAbsolutePath()); when(configuration.getCacheMode()).thenReturn(CacheMode.DEFAULT); when(configuration.getParameters()).thenReturn(Collections.emptyMap()); + when(configuration.getFacadeParameter(eq(Integer.class), + eq(LOG_HANDLER_CLEANER_PROTECTED_FILES_LIMIT_PROPERTY_NAME), + anyInt())).thenReturn(0); + when(configuration.getFacadeParameter(eq(Map.class), + any(), + eq(JUL_LOGGER_LEVEL_OVERRIDE), + any())).thenReturn(Collections.emptyMap()); _facade = new StandardEnvironmentFacade(configuration); BDBEnvironmentContainer environmentContainer = mock(BDBEnvironmentContainer.class); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
