This is an automated email from the ASF dual-hosted git repository.

epugh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git

commit e1eb09b22e594200d5628bdfdaf88e324eadbbea
Author: Kevin Risden <[email protected]>
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 7cf58e6..92dfaf6 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -573,6 +573,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);
+    }
   }
 }

Reply via email to