You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by kr...@apache.org on 2022/02/09 17:46:09 UTC
[solr] branch branch_9_0 updated: SOLR-15991: analysis-extras module tests shouldn't rely on log4j dependency
This is an automated email from the ASF dual-hosted git repository.
krisden pushed a commit to branch branch_9_0
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/branch_9_0 by this push:
new 0e7e3e6 SOLR-15991: analysis-extras module tests shouldn't rely on log4j dependency
0e7e3e6 is described below
commit 0e7e3e6763d57cdfcd421dd7b6b78af49fe2496b
Author: Kevin Risden <kr...@apache.org>
AuthorDate: Tue Feb 8 16:13:12 2022 -0500
SOLR-15991: analysis-extras module tests shouldn't rely on log4j dependency
---
solr/CHANGES.txt | 2 +
solr/modules/analysis-extras/build.gradle | 2 -
.../solr/schema/TestICUCollationFieldUDVAS.java | 76 +++++-----------------
3 files changed, 18 insertions(+), 62 deletions(-)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 3a7c84d..d1fff32 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -516,6 +516,8 @@ and each individual module's jar will be included in its directory's lib/ folder
* SOLR-12901: Highlighting: hl.method=unified is the new default. (David Smiley)
+* SOLR-15991: analysis-extras module tests shouldn't rely on log4j dependency (Kevin Risden)
+
Bug Fixes
---------------------
* SOLR-15849: Fix the connection reset problem caused by the incorrect use of 4LW with \n when monitoring zooKeeper status (Fa Ming).
diff --git a/solr/modules/analysis-extras/build.gradle b/solr/modules/analysis-extras/build.gradle
index 5d62f9d..7da2d4b 100644
--- a/solr/modules/analysis-extras/build.gradle
+++ b/solr/modules/analysis-extras/build.gradle
@@ -42,6 +42,4 @@ dependencies {
testImplementation('org.mockito:mockito-core', {
exclude group: "net.bytebuddy", module: "byte-buddy-agent"
})
- testImplementation 'org.apache.logging.log4j:log4j-api'
- testImplementation 'org.apache.logging.log4j:log4j-core'
}
diff --git a/solr/modules/analysis-extras/src/test/org/apache/solr/schema/TestICUCollationFieldUDVAS.java b/solr/modules/analysis-extras/src/test/org/apache/solr/schema/TestICUCollationFieldUDVAS.java
index 1bbcc76..83fc584 100644
--- a/solr/modules/analysis-extras/src/test/org/apache/solr/schema/TestICUCollationFieldUDVAS.java
+++ b/solr/modules/analysis-extras/src/test/org/apache/solr/schema/TestICUCollationFieldUDVAS.java
@@ -16,28 +16,17 @@
*/
package org.apache.solr.schema;
-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.appender.WriterAppender;
-import org.apache.logging.log4j.core.config.LoggerConfig;
-import org.apache.logging.log4j.core.layout.PatternLayout;
import org.apache.lucene.util.Version;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.SolrException;
-import org.apache.solr.common.util.SuppressForbidden;
import org.apache.solr.core.XmlConfigFile;
+import org.apache.solr.util.LogListener;
import org.junit.BeforeClass;
-import java.io.StringWriter;
-import java.util.function.BooleanSupplier;
-
/**
* Tests warn/failure of {@link ICUCollationField} when schema explicitly sets
* <code>useDocValuesAsStored="true"</code>
*/
-@SuppressForbidden(reason = "test is specific to log4j2")
public class TestICUCollationFieldUDVAS extends SolrTestCaseJ4 {
private static final String ICU_FIELD_UDVAS_PROPNAME = "tests.icu_collation_field.udvas";
@@ -56,41 +45,16 @@ public class TestICUCollationFieldUDVAS extends SolrTestCaseJ4 {
@SuppressWarnings("fallthrough")
public void testInitCore() throws Exception {
final Mode mode = pickRandom(Mode.values());
- final BooleanSupplier messageLogged;
- final Runnable cleanup;
- Version useVersion = null;
+ Version useVersion;
switch (mode) {
case FAIL:
useVersion = ICUCollationField.UDVAS_FORBIDDEN_AS_OF;
- messageLogged = null;
- cleanup = null;
break;
case WARN:
useVersion = WARN_CEILING;
- // fallthrough
+ break;
case OK:
- // `OK` leaves `useVersion == null`
- final StringWriter writer = new StringWriter();
- final WriterAppender appender = WriterAppender.createAppender(
- PatternLayout
- .newBuilder()
- .withPattern("%-5p [%t]: %m%n")
- .build(),
- null, writer, "ICUCollationUdvasTest", false, true);
- appender.start();
- final Logger logger = LogManager.getLogger(XmlConfigFile.class);
- final Level level = logger.getLevel();
- final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
- final LoggerConfig config = ctx.getConfiguration().getLoggerConfig(logger.getName());
- config.setLevel(Level.WARN);
- config.addAppender(appender, Level.WARN, null);
- ctx.updateLoggers();
- messageLogged = () -> writer.toString().contains(ICUCollationField.UDVAS_MESSAGE);
- cleanup = () -> {
- config.setLevel(level);
- config.removeAppender(appender.getName());
- ctx.updateLoggers();
- };
+ useVersion = null;
break;
default:
throw new IllegalStateException();
@@ -103,43 +67,35 @@ public class TestICUCollationFieldUDVAS extends SolrTestCaseJ4 {
System.setProperty(random().nextBoolean() ? ICU_TYPE_UDVAS_PROPNAME : ICU_FIELD_UDVAS_PROPNAME, "true");
restoreLuceneMatchVersion = System.setProperty(TEST_LUCENE_MATCH_VERSION_PROPNAME, useVersion.toString());
}
- try {
+ try (LogListener warnLog = LogListener.warn(XmlConfigFile.class).substring(ICUCollationField.UDVAS_MESSAGE)){
initCore("solrconfig.xml", "schema.xml", home);
switch (mode) {
case FAIL:
fail("expected failure for version " + useVersion);
break;
case WARN:
- assertTrue("expected warning message was not logged", messageLogged.getAsBoolean());
+ assertEquals("expected warning message was not logged", 2, warnLog.getCount());
+ // Clear out the warnLog
+ warnLog.pollMessage();
+ warnLog.pollMessage();
break;
case OK:
- assertFalse("unexpected warning message was logged", messageLogged.getAsBoolean());
+ assertEquals("unexpected warning message was logged", 0, warnLog.getCount());
break;
}
} catch (SolrException ex) {
assertSame("unexpected hard failure for " + useVersion + ": " + ex, mode, Mode.FAIL);
assertTrue("unexpected failure message", getRootCause(ex).getMessage().contains(ICUCollationField.UDVAS_MESSAGE));
} finally {
- switch (mode) {
- case WARN:
- restoreSysProps(restoreLuceneMatchVersion);
- cleanup.run();
- break;
- case FAIL:
- restoreSysProps(restoreLuceneMatchVersion);
- break;
- case OK:
- // we didn't modify any sysprops, but did verify that the warning message wasn't logged, so have
- // to cleanup appenders, etc.
- cleanup.run();
- break;
- }
+ restoreSysProps(restoreLuceneMatchVersion);
}
}
private static void restoreSysProps(String restoreLuceneMatchVersion) {
- System.clearProperty(ICU_FIELD_UDVAS_PROPNAME);
- System.clearProperty(ICU_TYPE_UDVAS_PROPNAME);
- System.setProperty(TEST_LUCENE_MATCH_VERSION_PROPNAME, restoreLuceneMatchVersion);
+ if (restoreLuceneMatchVersion != null) {
+ System.clearProperty(ICU_FIELD_UDVAS_PROPNAME);
+ System.clearProperty(ICU_TYPE_UDVAS_PROPNAME);
+ System.setProperty(TEST_LUCENE_MATCH_VERSION_PROPNAME, restoreLuceneMatchVersion);
+ }
}
}