diff --git a/loki-logback-appender/src/test/java/com/github/loki4j/logback/Generators.java b/loki-logback-appender/src/test/java/com/github/loki4j/logback/Generators.java index e2655d0e..b815ad6f 100644 --- a/loki-logback-appender/src/test/java/com/github/loki4j/logback/Generators.java +++ b/loki-logback-appender/src/test/java/com/github/loki4j/logback/Generators.java @@ -1,16 +1,12 @@ package com.github.loki4j.logback; import java.io.IOException; -import java.nio.ByteBuffer; -import java.nio.charset.StandardCharsets; import java.time.Instant; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.concurrent.ThreadLocalRandom; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.BiFunction; import java.util.function.Consumer; import java.util.function.Function; @@ -19,7 +15,6 @@ import org.slf4j.Marker; import com.github.loki4j.client.batch.LogRecord; -import com.github.loki4j.client.batch.LogRecordBatch; import com.github.loki4j.client.http.HttpConfig; import com.github.loki4j.client.http.Loki4jHttpClient; import com.github.loki4j.client.pipeline.PipelineConfig; @@ -28,7 +23,7 @@ import com.github.loki4j.testkit.dummy.DummyHttpClient; import com.github.loki4j.testkit.dummy.ExceptionGenerator; import com.github.loki4j.testkit.dummy.LokiHttpServerMock; -import com.github.loki4j.testkit.dummy.StringPayload; +import com.github.loki4j.testkit.dummy.StringWriter; import com.github.loki4j.testkit.dummy.DummyHttpClient.SendInvocation; import ch.qos.logback.classic.Level; @@ -46,28 +41,6 @@ public class Generators { static HttpConfig.Builder defaultHttpConfig = HttpConfig.builder(); - public static String batchToString(LogRecordBatch batch) { - var s = new StringBuilder(); - for (int i = 0; i < batch.size(); i++) { - var r = batch.get(i); - s - .append(Arrays.toString(r.stream.labels)) - .append(StringPayload.LABELS_MESSAGE_SEPARATOR) - .append(Arrays.toString(r.metadata)) - .append(StringPayload.LABELS_MESSAGE_SEPARATOR) - .append("ts=") - .append(r.timestampMs) - .append(" ") - .append(r.message) - .append('\n'); - } - return s.toString(); - } - - public static String batchToString(LogRecord[] records) { - return batchToString(new LogRecordBatch(records)); - } - public static LokiHttpServerMock lokiMock(int port) { try { return new LokiHttpServerMock(port); @@ -377,63 +350,6 @@ public static InfiniteEventIterator from(LoggingEvent[] sampleEvents) { } } - public static class StringWriter implements Writer { - private final ByteBufferFactory bf; - private ByteBuffer b; - private int size = 0; - public StringWriter(int capacity, ByteBufferFactory bufferFactory) { - bf = bufferFactory; - b = bf.allocate(capacity); - } - @Override - public void serializeBatch(LogRecordBatch batch) { - b.clear(); - var str = batchToString(batch); - var data = str.getBytes(StandardCharsets.UTF_8); - if (b.capacity() < data.length) b = bf.allocate(data.length); - b.put(data); - b.flip(); - size = data.length; - } - @Override - public int size() { - return size; - } - @Override - public void toByteBuffer(ByteBuffer buffer) { - buffer.put(b); - buffer.flip(); - } - @Override - public byte[] toByteArray() { - byte[] r = new byte[b.remaining()]; - b.get(r); - return r; - } - @Override - public void reset() { - size = 0; - b.clear(); - } - @Override - public boolean isBinary() { - return false; - } - } - - public static class FailingStringWriter extends StringWriter { - public AtomicBoolean fail = new AtomicBoolean(false); - public FailingStringWriter(int capacity, ByteBufferFactory bufferFactory) { - super(capacity, bufferFactory); - } - @Override - public void serializeBatch(LogRecordBatch batch) { - if (fail.get()) - throw new RuntimeException("Text exception"); - super.serializeBatch(batch); - } - } - public static class DummyHttpSender extends WrappingHttpSender { public DummyHttpSender() { diff --git a/loki-logback-appender/src/test/java/com/github/loki4j/logback/Loki4jAppenderTest.java b/loki-logback-appender/src/test/java/com/github/loki4j/logback/Loki4jAppenderTest.java index b71a3dcc..95c55071 100644 --- a/loki-logback-appender/src/test/java/com/github/loki4j/logback/Loki4jAppenderTest.java +++ b/loki-logback-appender/src/test/java/com/github/loki4j/logback/Loki4jAppenderTest.java @@ -10,9 +10,9 @@ import org.junit.Test; -import com.github.loki4j.logback.Generators.FailingStringWriter; import com.github.loki4j.logback.Generators.WrappingHttpSender; import com.github.loki4j.testkit.dummy.FailingHttpClient; +import com.github.loki4j.testkit.dummy.FailingStringWriter; import com.github.loki4j.testkit.dummy.StringPayload; import com.github.loki4j.testkit.dummy.SuspendableHttpClient; import com.github.loki4j.testkit.dummy.FailingHttpClient.FailureType; diff --git a/testkit/src/main/java/com/github/loki4j/testkit/dummy/FailingStringWriter.java b/testkit/src/main/java/com/github/loki4j/testkit/dummy/FailingStringWriter.java new file mode 100644 index 00000000..d5e36496 --- /dev/null +++ b/testkit/src/main/java/com/github/loki4j/testkit/dummy/FailingStringWriter.java @@ -0,0 +1,21 @@ +package com.github.loki4j.testkit.dummy; + +import java.util.concurrent.atomic.AtomicBoolean; + +import com.github.loki4j.client.batch.LogRecordBatch; +import com.github.loki4j.client.util.ByteBufferFactory; + +public class FailingStringWriter extends StringWriter { + public AtomicBoolean fail = new AtomicBoolean(false); + + public FailingStringWriter(int capacity, ByteBufferFactory bufferFactory) { + super(capacity, bufferFactory); + } + + @Override + public void serializeBatch(LogRecordBatch batch) { + if (fail.get()) + throw new RuntimeException("Text exception"); + super.serializeBatch(batch); + } +} \ No newline at end of file diff --git a/testkit/src/main/java/com/github/loki4j/testkit/dummy/StringWriter.java b/testkit/src/main/java/com/github/loki4j/testkit/dummy/StringWriter.java new file mode 100644 index 00000000..5c41ae1b --- /dev/null +++ b/testkit/src/main/java/com/github/loki4j/testkit/dummy/StringWriter.java @@ -0,0 +1,80 @@ +package com.github.loki4j.testkit.dummy; + +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; + +import java.util.Arrays; + +import com.github.loki4j.client.batch.LogRecordBatch; +import com.github.loki4j.client.util.ByteBufferFactory; +import com.github.loki4j.client.writer.Writer; + +public class StringWriter implements Writer { + private final ByteBufferFactory bf; + private ByteBuffer b; + private int size = 0; + + public StringWriter(int capacity, ByteBufferFactory bufferFactory) { + bf = bufferFactory; + b = bf.allocate(capacity); + } + + public static String batchToString(LogRecordBatch batch) { + var s = new StringBuilder(); + for (int i = 0; i < batch.size(); i++) { + var r = batch.get(i); + s + .append(Arrays.toString(r.stream.labels)) + .append(StringPayload.LABELS_MESSAGE_SEPARATOR) + .append(Arrays.toString(r.metadata)) + .append(StringPayload.LABELS_MESSAGE_SEPARATOR) + .append("ts=") + .append(r.timestampMs) + .append(" ") + .append(r.message) + .append('\n'); + } + return s.toString(); + } + + @Override + public void serializeBatch(LogRecordBatch batch) { + b.clear(); + var str = batchToString(batch); + var data = str.getBytes(StandardCharsets.UTF_8); + if (b.capacity() < data.length) + b = bf.allocate(data.length); + b.put(data); + b.flip(); + size = data.length; + } + + @Override + public int size() { + return size; + } + + @Override + public void toByteBuffer(ByteBuffer buffer) { + buffer.put(b); + buffer.flip(); + } + + @Override + public byte[] toByteArray() { + byte[] r = new byte[b.remaining()]; + b.get(r); + return r; + } + + @Override + public void reset() { + size = 0; + b.clear(); + } + + @Override + public boolean isBinary() { + return false; + } +} \ No newline at end of file