You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2022/10/12 19:35:41 UTC

[logging-log4j2] branch master updated: Adapt tests to Kafka 3.3.1

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

pkarwasz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/master by this push:
     new 7923839f50 Adapt tests to Kafka 3.3.1
7923839f50 is described below

commit 7923839f50fc82ea3054fd992037ab1fb34eda62
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Wed Oct 12 19:44:01 2022 +0200

    Adapt tests to Kafka 3.3.1
    
    Even if the `Producer` interface had some breaking changes between
    version 1.1.1 and 3.3.1, our implementation extends `KafkaProducer`,
    which hides those differences.
    
    The only obstacle for upgrading `kafka-clients` are small differences in
    tests. This PR adapts the existing tests to version 3.3.1 and provides a
    GitHub action to test the `KafkaAppender` for multiple Kafka versions.
---
 .github/workflows/log4j-kafka-test.yml             | 59 ++++++++++++++++++++++
 log4j-kafka/pom.xml                                | 19 ++++---
 .../appender/KafkaAppenderCloseTimeoutTest.java    | 23 +++++++--
 .../log4j/kafka/appender/KafkaAppenderTest.java    | 16 +++++-
 4 files changed, 105 insertions(+), 12 deletions(-)

diff --git a/.github/workflows/log4j-kafka-test.yml b/.github/workflows/log4j-kafka-test.yml
new file mode 100644
index 0000000000..29090277c8
--- /dev/null
+++ b/.github/workflows/log4j-kafka-test.yml
@@ -0,0 +1,59 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache license, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the license for the specific language governing permissions and
+# limitations under the license.
+
+name: build
+
+permissions: read-all
+
+jobs:
+
+  log4j-kafka-test:
+
+    runs-on: ubuntu-latest
+
+    strategy:
+      matrix:
+        version: [ 1.1.1, 2.8.2, 3.3.1 ]
+
+    steps:
+
+      - name: Checkout repository
+        uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748   # 3.0.1
+
+      - name: Setup JDK 11
+        uses: actions/setup-java@9519cf1382ac8dc61ad461f7f7cb45f033220189   # 3.1.1
+        with:
+          distribution: temurin
+          java-version: 11
+          java-package: jdk
+          architecture: x64
+          cache: maven
+
+      - name: Inspect environment (Linux)
+        if: runner.os == 'Linux'
+        run: env | grep '^JAVA'
+
+      - name: Maven "test"
+        timeout-minutes: 60
+        shell: bash
+        run: |
+          ./mvnw \
+            --show-version --batch-mode --errors --no-transfer-progress --fail-at-end \
+            -DtrimStackTrace=false \
+            -Dsurefire.rerunFailingTestsCount=2 \
+            -Dlog4j2.junit.fileCleanerSleepPeriodMillis=1000 \
+            -Dkafka.version=${{ matrix.version }} \
+            test
+
diff --git a/log4j-kafka/pom.xml b/log4j-kafka/pom.xml
index 814b464715..715849b54a 100644
--- a/log4j-kafka/pom.xml
+++ b/log4j-kafka/pom.xml
@@ -37,10 +37,6 @@
   </properties>
 
   <dependencies>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-api-test</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
@@ -50,11 +46,21 @@
       <groupId>org.apache.kafka</groupId>
       <artifactId>kafka-clients</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-api-test</artifactId>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core-test</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-script</artifactId>
+      <scope>test</scope>
+    </dependency>
     <!-- Required for AsyncLoggers -->
     <dependency>
       <groupId>com.lmax</groupId>
@@ -77,9 +83,8 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-script</artifactId>
-      <scope>test</scope>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
     </dependency>
   </dependencies>
   <build>
diff --git a/log4j-kafka/src/test/java/org/apache/logging/log4j/kafka/appender/KafkaAppenderCloseTimeoutTest.java b/log4j-kafka/src/test/java/org/apache/logging/log4j/kafka/appender/KafkaAppenderCloseTimeoutTest.java
index f617383ad3..7fcc621ebb 100644
--- a/log4j-kafka/src/test/java/org/apache/logging/log4j/kafka/appender/KafkaAppenderCloseTimeoutTest.java
+++ b/log4j-kafka/src/test/java/org/apache/logging/log4j/kafka/appender/KafkaAppenderCloseTimeoutTest.java
@@ -17,13 +17,16 @@
 
 package org.apache.logging.log4j.kafka.appender;
 
+import java.time.Duration;
 import java.util.Properties;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.kafka.clients.producer.MockProducer;
 import org.apache.kafka.clients.producer.Producer;
-import org.apache.logging.log4j.core.test.categories.Appenders;
+import org.apache.kafka.common.serialization.ByteArraySerializer;
+import org.apache.kafka.common.serialization.Serializer;
 import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.test.categories.Appenders;
 import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
 import org.junit.Before;
 import org.junit.BeforeClass;
@@ -34,20 +37,34 @@ import org.junit.experimental.categories.Category;
 @Category(Appenders.Kafka.class)
 public class KafkaAppenderCloseTimeoutTest {
 
-    private static final MockProducer<byte[], byte[]> kafka = new MockProducer<byte[], byte[]>(true, null, null) {
+    private static final Serializer<byte[]> SERIALIZER = new ByteArraySerializer();
+
+    private static final MockProducer<byte[], byte[]> kafka = new MockProducer<byte[], byte[]>(true, SERIALIZER,
+            SERIALIZER) {
         @Override
         public void close() {
             try {
                 Thread.sleep(3000);
             } catch (InterruptedException ignore) {
+                // NOP
             }
         }
 
-        @Override
+        // @Override in version 3.3.1
+        public void close(Duration timeout) {
+            try {
+                Thread.sleep(timeout.toMillis());
+            } catch (InterruptedException ignore) {
+                // NOP
+            }
+        }
+
+        // @Override in version 1.1.1
         public void close(long timeout, TimeUnit timeUnit) {
             try {
                 Thread.sleep(timeUnit.toMillis(timeout));
             } catch (InterruptedException ignore) {
+                // NOP
             }
         }
     };
diff --git a/log4j-kafka/src/test/java/org/apache/logging/log4j/kafka/appender/KafkaAppenderTest.java b/log4j-kafka/src/test/java/org/apache/logging/log4j/kafka/appender/KafkaAppenderTest.java
index 2fd7d4f0b3..4436ea2bfe 100644
--- a/log4j-kafka/src/test/java/org/apache/logging/log4j/kafka/appender/KafkaAppenderTest.java
+++ b/log4j-kafka/src/test/java/org/apache/logging/log4j/kafka/appender/KafkaAppenderTest.java
@@ -22,14 +22,18 @@ import java.io.IOException;
 import java.io.ObjectInput;
 import java.nio.charset.StandardCharsets;
 import java.text.SimpleDateFormat;
+import java.time.Duration;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.kafka.clients.producer.MockProducer;
 import org.apache.kafka.clients.producer.Producer;
 import org.apache.kafka.clients.producer.ProducerRecord;
+import org.apache.kafka.common.serialization.ByteArraySerializer;
+import org.apache.kafka.common.serialization.Serializer;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.test.categories.Appenders;
 import org.apache.logging.log4j.core.Appender;
@@ -49,12 +53,20 @@ import static org.junit.Assert.*;
 @Category(Appenders.Kafka.class)
 public class KafkaAppenderTest {
 
-    private static final MockProducer<byte[], byte[]> kafka = new MockProducer<byte[], byte[]>(true, null, null) {
+    private static final Serializer<byte[]> SERIALIZER = new ByteArraySerializer();
 
-        @Override
+    private static final MockProducer<byte[], byte[]> kafka = new MockProducer<byte[], byte[]>(true, SERIALIZER,
+            SERIALIZER) {
+
+        // @Override in version 1.1.1
         public void close(final long timeout, final TimeUnit timeUnit) {
+            // Intentionally do not close in order to reuse
         }
 
+        // @Override in version 3.3.1
+        public void close(final Duration timeout) {
+            // Intentionally do no close in order to reuse
+        }
     };
 
     private static final String LOG_MESSAGE = "Hello, world!";