Repository: logging-log4j2 Updated Branches: refs/heads/master 1285b1e2f -> f6f33b1d9
Kafka appender close timeout test Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/f6f33b1d Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/f6f33b1d Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/f6f33b1d Branch: refs/heads/master Commit: f6f33b1d980561fc0fc1ff148c16d4ae1b47c8f9 Parents: 1285b1e Author: Mikael Ståldal <[email protected]> Authored: Fri May 20 14:05:59 2016 +0200 Committer: Mikael Ståldal <[email protected]> Committed: Fri May 20 14:05:59 2016 +0200 ---------------------------------------------------------------------- .../kafka/KafkaAppenderCloseTimeoutTest.java | 75 ++++++++++++++++++++ .../src/test/resources/KafkaAppenderTest.xml | 14 ++-- 2 files changed, 85 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f6f33b1d/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppenderCloseTimeoutTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppenderCloseTimeoutTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppenderCloseTimeoutTest.java new file mode 100644 index 0000000..64d5b1f --- /dev/null +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppenderCloseTimeoutTest.java @@ -0,0 +1,75 @@ +/* + * 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. + */ + +package org.apache.logging.log4j.core.appender.mom.kafka; + +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.Appender; +import org.apache.logging.log4j.junit.LoggerContextRule; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Rule; +import org.junit.Test; + +public class KafkaAppenderCloseTimeoutTest { + + private static final MockProducer<byte[], byte[]> kafka = new MockProducer<byte[], byte[]>(true, null, null) { + @Override + public void close() { + try { + Thread.sleep(3000); + } catch (InterruptedException ignore) { + } + } + + @Override + public void close(long timeout, TimeUnit timeUnit) { + try { + Thread.sleep(timeUnit.toMillis(timeout)); + } catch (InterruptedException ignore) { + } + } + }; + + @BeforeClass + public static void setUpClass() throws Exception { + KafkaManager.producerFactory = new KafkaProducerFactory() { + @Override + public Producer<byte[], byte[]> newKafkaProducer(final Properties config) { + return kafka; + } + }; + } + + @Rule + public LoggerContextRule ctx = new LoggerContextRule("KafkaAppenderTest.xml"); + + @Before + public void setUp() throws Exception { + kafka.clear(); + } + + @Test(timeout = 2000) + public void testClose() throws Exception { + final Appender appender = ctx.getRequiredAppender("KafkaAppenderWithCloseTimeout"); + appender.stop(); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/f6f33b1d/log4j-core/src/test/resources/KafkaAppenderTest.xml ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/resources/KafkaAppenderTest.xml b/log4j-core/src/test/resources/KafkaAppenderTest.xml index c38196b..1bf8774 100644 --- a/log4j-core/src/test/resources/KafkaAppenderTest.xml +++ b/log4j-core/src/test/resources/KafkaAppenderTest.xml @@ -24,16 +24,22 @@ <PatternLayout pattern="[%m]"/> <Property name="bootstrap.servers">localhost:9092</Property> </Kafka> - <Kafka name="KafkaAppenderWithSerializedLayout" topic="kafka-topic"> - <SerializedLayout/> - <Property name="bootstrap.servers">localhost:9092</Property> - </Kafka> + <Kafka name="KafkaAppenderWithSerializedLayout" topic="kafka-topic"> + <SerializedLayout/> + <Property name="bootstrap.servers">localhost:9092</Property> + </Kafka> + <Kafka name="KafkaAppenderWithCloseTimeout" topic="kafka-topic"> + <SerializedLayout/> + <Property name="bootstrap.servers">localhost:9092</Property> + <Property name="timeout.ms">1000</Property> + </Kafka> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="KafkaAppender"/> <AppenderRef ref="KafkaAppenderWithLayout"/> <AppenderRef ref="KafkaAppenderWithSerializedLayout"/> + <AppenderRef ref="KafkaAppenderWithCloseTimeout"/> </Root> </Loggers> </Configuration> \ No newline at end of file
