You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2017/10/14 17:20:22 UTC

[09/15] logging-log4j2 git commit: Add PropertiesUtil.reload() for unit tests

Add PropertiesUtil.reload() for unit tests


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/51f8e875
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/51f8e875
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/51f8e875

Branch: refs/heads/master
Commit: 51f8e875e528d538c2a9faf720051c4eafb5a396
Parents: 74ed4f6
Author: Matt Sicker <ma...@spr.com>
Authored: Sat Aug 26 15:02:49 2017 -0500
Committer: Matt Sicker <ma...@spr.com>
Committed: Sat Aug 26 15:50:57 2017 -0500

----------------------------------------------------------------------
 .../apache/logging/log4j/util/PropertiesUtil.java | 18 +++++++++++++++++-
 .../appender/db/jpa/AbstractJpaAppenderTest.java  |  3 +++
 .../async/AbstractAsyncThreadContextTestBase.java |  2 ++
 .../async/AsyncQueueFullPolicyFactoryTest.java    | 14 +++-----------
 4 files changed, 25 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/51f8e875/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java
index 5e87349..45438d2 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java
@@ -273,6 +273,15 @@ public final class PropertiesUtil {
     }
 
     /**
+     * Reloads all properties. This is primarily useful for unit tests.
+     *
+     * @since 2.9.1
+     */
+    public void reload() {
+        environment.reload();
+    }
+
+    /**
      * Provides support for looking up global configuration properties via environment variables, property files,
      * and system properties, in three variations:
      *
@@ -287,16 +296,23 @@ public final class PropertiesUtil {
      */
     private static class Environment {
 
+        private final Set<PropertySource> sources = new TreeSet<>(new PropertySource.Comparator());
         private final Map<CharSequence, String> literal = new ConcurrentHashMap<>();
         private final Map<CharSequence, String> normalized = new ConcurrentHashMap<>();
         private final Map<List<CharSequence>, String> tokenized = new ConcurrentHashMap<>();
 
         private Environment(final PropertySource propertySource) {
-            final Set<PropertySource> sources = new TreeSet<>(new PropertySource.Comparator());
             sources.add(propertySource);
             for (final PropertySource source : ServiceLoader.load(PropertySource.class)) {
                 sources.add(source);
             }
+            reload();
+        }
+
+        private synchronized void reload() {
+            literal.clear();
+            normalized.clear();
+            tokenized.clear();
             for (final PropertySource source : sources) {
                 source.forEach(new BiConsumer<String, String>() {
                     @Override

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/51f8e875/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractJpaAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractJpaAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractJpaAppenderTest.java
index c61af57..517e98c 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractJpaAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractJpaAppenderTest.java
@@ -31,6 +31,7 @@ import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.config.ConfigurationFactory;
 import org.apache.logging.log4j.core.config.DefaultConfiguration;
 import org.apache.logging.log4j.status.StatusLogger;
+import org.apache.logging.log4j.util.PropertiesUtil;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -52,6 +53,7 @@ public abstract class AbstractJpaAppenderTest {
 
         System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY,
                 "org/apache/logging/log4j/core/appender/db/jpa/" + configFileName);
+        PropertiesUtil.getProperties().reload();
         final LoggerContext context = LoggerContext.getContext(false);
         if (context.getConfiguration() instanceof DefaultConfiguration) {
             context.reconfigure();
@@ -68,6 +70,7 @@ public abstract class AbstractJpaAppenderTest {
             ((JpaAppender) appender).getManager().close();
         } finally {
             System.clearProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY);
+            PropertiesUtil.getProperties().reload();
             context.reconfigure();
             StatusLogger.getLogger().reset();
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/51f8e875/log4j-core/src/test/java/org/apache/logging/log4j/core/async/AbstractAsyncThreadContextTestBase.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/AbstractAsyncThreadContextTestBase.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/AbstractAsyncThreadContextTestBase.java
index 00cad14..a590c2d 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/AbstractAsyncThreadContextTestBase.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/AbstractAsyncThreadContextTestBase.java
@@ -32,6 +32,7 @@ import org.apache.logging.log4j.core.util.Constants;
 import org.apache.logging.log4j.spi.DefaultThreadContextMap;
 import org.apache.logging.log4j.spi.LoggerContext;
 import org.apache.logging.log4j.spi.ReadOnlyThreadContextMap;
+import org.apache.logging.log4j.util.PropertiesUtil;
 import org.apache.logging.log4j.util.Unbox;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -88,6 +89,7 @@ public abstract class AbstractAsyncThreadContextTestBase {
             System.clearProperty("log4j2.threadContextMap");
             final String PACKAGE = "org.apache.logging.log4j.spi.";
             System.setProperty("log4j2.threadContextMap", PACKAGE + implClassSimpleName());
+            PropertiesUtil.getProperties().reload();
             ThreadContextTestAccess.init();
         }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/51f8e875/log4j-core/src/test/java/org/apache/logging/log4j/core/async/AsyncQueueFullPolicyFactoryTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/AsyncQueueFullPolicyFactoryTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/AsyncQueueFullPolicyFactoryTest.java
index 52d97c5..964bf12 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/AsyncQueueFullPolicyFactoryTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/AsyncQueueFullPolicyFactoryTest.java
@@ -18,7 +18,7 @@ package org.apache.logging.log4j.core.async;
 
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.categories.AsyncLoggers;
-import org.junit.After;
+import org.apache.logging.log4j.util.PropertiesUtil;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -31,19 +31,11 @@ import static org.junit.Assert.*;
 @Category(AsyncLoggers.class)
 public class AsyncQueueFullPolicyFactoryTest {
 
-    @After
-    public void after() {
-        clearProperties();
-    }
-
     @Before
-    public void before() {
-        clearProperties();
-    }
-
-    private void clearProperties() {
+    public void setUp() throws Exception {
         System.clearProperty(AsyncQueueFullPolicyFactory.PROPERTY_NAME_ASYNC_EVENT_ROUTER);
         System.clearProperty(AsyncQueueFullPolicyFactory.PROPERTY_NAME_DISCARDING_THRESHOLD_LEVEL);
+        PropertiesUtil.getProperties().reload();
     }
 
     @Test