This is an automated email from the ASF dual-hosted git repository.
dsmiley pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new 88c7edd1299 SOLR-18107: Test fix testLogLevelHandlerOutput (#4146)
88c7edd1299 is described below
commit 88c7edd1299f64a36752730de5080e98172cb4e8
Author: David Smiley <[email protected]>
AuthorDate: Fri Feb 20 23:44:26 2026 -0500
SOLR-18107: Test fix testLogLevelHandlerOutput (#4146)
---
.../solr/handler/admin/LoggingHandlerTest.java | 44 +++++++++++++---------
1 file changed, 26 insertions(+), 18 deletions(-)
diff --git
a/solr/core/src/test/org/apache/solr/handler/admin/LoggingHandlerTest.java
b/solr/core/src/test/org/apache/solr/handler/admin/LoggingHandlerTest.java
index 0726bec92b4..a4063b25f0e 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/LoggingHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/LoggingHandlerTest.java
@@ -21,6 +21,7 @@ import java.util.List;
import java.util.Map;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.solr.SolrTestCaseJ4;
@@ -66,9 +67,16 @@ public class LoggingHandlerTest extends SolrTestCaseJ4 {
final Configuration config = ctx.getConfiguration();
+ // Create and hold strong references to loggers to prevent GC from
removing them
+ // during test execution (Log4j2 uses weak references internally)
+ Logger parentLogger = LogManager.getLogger(PARENT_LOGGER_NAME);
+ Logger aLogger = LogManager.getLogger(A_LOGGER_NAME);
+ Logger bLogger = LogManager.getLogger(B_LOGGER_NAME);
+ Logger bxLogger = LogManager.getLogger(BX_LOGGER_NAME);
+
{ // sanity check our setup...
- // did anybody break the anotations?
+ // did anybody break the annotations?
assertNotNull(this.getClass().getAnnotation(LogLevel.class));
final String annotationConfig =
this.getClass().getAnnotation(LogLevel.class).value();
assertTrue("WTF: " + annotationConfig,
annotationConfig.startsWith(PARENT_LOGGER_NAME));
@@ -88,11 +96,11 @@ public class LoggingHandlerTest extends SolrTestCaseJ4 {
config.getLoggerConfig(logger));
}
- // Either explicit, or inherited, effictive logger values...
- for (String logger :
- Arrays.asList(PARENT_LOGGER_NAME, A_LOGGER_NAME, B_LOGGER_NAME,
BX_LOGGER_NAME)) {
- assertEquals(Level.DEBUG, LogManager.getLogger(logger).getLevel());
- }
+ // Either explicit, or inherited, effective logger values...
+ assertEquals(Level.DEBUG, parentLogger.getLevel());
+ assertEquals(Level.DEBUG, aLogger.getLevel());
+ assertEquals(Level.DEBUG, bLogger.getLevel());
+ assertEquals(Level.DEBUG, bxLogger.getLevel());
}
SolrClient client = new EmbeddedSolrServer(h.getCore());
@@ -130,18 +138,18 @@ public class LoggingHandlerTest extends SolrTestCaseJ4 {
assertLoggerLevel(updatedLoggerLevel, B_LOGGER_NAME, "TRACE", true);
assertLoggerLevel(updatedLoggerLevel, BX_LOGGER_NAME, "TRACE", false);
- // check directly with log4j what it's (updated) config has...
+ // check directly with log4j what its (updated) config has...
assertEquals(Level.DEBUG,
config.getLoggerConfig(PARENT_LOGGER_NAME).getExplicitLevel());
assertEquals(Level.TRACE,
config.getLoggerConfig(B_LOGGER_NAME).getExplicitLevel());
assertEquals(
"Unexpected config for BX ... expected B's config",
config.getLoggerConfig(B_LOGGER_NAME),
config.getLoggerConfig(BX_LOGGER_NAME));
- // ...and what it's effective values
- assertEquals(Level.DEBUG,
LogManager.getLogger(PARENT_LOGGER_NAME).getLevel());
- assertEquals(Level.DEBUG,
LogManager.getLogger(A_LOGGER_NAME).getLevel());
- assertEquals(Level.TRACE,
LogManager.getLogger(B_LOGGER_NAME).getLevel());
- assertEquals(Level.TRACE,
LogManager.getLogger(BX_LOGGER_NAME).getLevel());
+ // ...and what its effective values are
+ assertEquals(Level.DEBUG, parentLogger.getLevel());
+ assertEquals(Level.DEBUG, aLogger.getLevel());
+ assertEquals(Level.TRACE, bLogger.getLevel());
+ assertEquals(Level.TRACE, bxLogger.getLevel());
}
{ // UNSET
@@ -161,7 +169,7 @@ public class LoggingHandlerTest extends SolrTestCaseJ4 {
assertLoggerLevel(removedLoggerLevel, B_LOGGER_NAME, "DEBUG", false);
assertLoggerLevel(removedLoggerLevel, BX_LOGGER_NAME, "DEBUG", false);
- // check directly with log4j what it's (updated) config has...
+ // check directly with log4j what its (updated) config has...
//
// NOTE: LoggingHandler must not actually "remove" the LoggerConfig for
B on 'unset'
// (it might have already been defined in log4j's original config for
some other reason,
@@ -176,11 +184,11 @@ public class LoggingHandlerTest extends SolrTestCaseJ4 {
"Unexpected config for BX ... expected B's config",
config.getLoggerConfig(B_LOGGER_NAME),
config.getLoggerConfig(BX_LOGGER_NAME));
- // ...and what it's effective values
- assertEquals(Level.DEBUG,
LogManager.getLogger(PARENT_LOGGER_NAME).getLevel());
- assertEquals(Level.DEBUG,
LogManager.getLogger(A_LOGGER_NAME).getLevel());
- assertEquals(Level.DEBUG,
LogManager.getLogger(B_LOGGER_NAME).getLevel());
- assertEquals(Level.DEBUG,
LogManager.getLogger(BX_LOGGER_NAME).getLevel());
+ // ...and what its effective values are
+ assertEquals(Level.DEBUG, parentLogger.getLevel());
+ assertEquals(Level.DEBUG, aLogger.getLevel());
+ assertEquals(Level.DEBUG, bLogger.getLevel());
+ assertEquals(Level.DEBUG, bxLogger.getLevel());
}
}