Skip to content

Commit

Permalink
Minor refactoring in tests
Browse files Browse the repository at this point in the history
  • Loading branch information
nehaev committed Oct 19, 2024
1 parent 7e68a05 commit 7efb507
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 86 deletions.
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;
Expand All @@ -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;
Expand All @@ -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);
Expand Down Expand Up @@ -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<DummyHttpClient> {

public DummyHttpSender() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
}

0 comments on commit 7efb507

Please sign in to comment.