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!";