From 47df8be6dc1e0927a7b3d690100445865dfa8675 Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Sun, 23 Jun 2024 16:24:11 +0200 Subject: test: Add benchmarks. The benchmarks can be run using 'mvn verify -Pbenchmark'. Change-Id: I13058f52bea77aa3cb4f1967126c28e1e98d1838 --- .../jsonlogging/FormatterBenchmark.java | 34 ++++++++++++++++++++++ .../googlecloud/jsonlogging/FormatterTest.java | 34 +++++++++++++--------- 2 files changed, 55 insertions(+), 13 deletions(-) create mode 100644 core/src/test/java/eu/mulk/quarkus/googlecloud/jsonlogging/FormatterBenchmark.java (limited to 'core/src/test/java') diff --git a/core/src/test/java/eu/mulk/quarkus/googlecloud/jsonlogging/FormatterBenchmark.java b/core/src/test/java/eu/mulk/quarkus/googlecloud/jsonlogging/FormatterBenchmark.java new file mode 100644 index 0000000..1a1c17c --- /dev/null +++ b/core/src/test/java/eu/mulk/quarkus/googlecloud/jsonlogging/FormatterBenchmark.java @@ -0,0 +1,34 @@ +package eu.mulk.quarkus.googlecloud.jsonlogging; + +import java.util.List; +import org.jboss.logmanager.ExtLogRecord; +import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.infra.Blackhole; + +@Warmup(iterations = 5, time = 1) +@Measurement(iterations = 10, time = 1) +@Fork(value = 1) +@State(org.openjdk.jmh.annotations.Scope.Benchmark) +public class FormatterBenchmark { + + private ExtLogRecord simpleLogRecord; + private ExtLogRecord structuredLogRecord; + private Formatter formatter; + + @Setup + public void setup() { + simpleLogRecord = FormatterTest.makeSimpleRecord(); + structuredLogRecord = FormatterTest.makeStructuredRecord(); + formatter = new Formatter(List.of(), List.of()); + } + + @Benchmark + public void simpleLogRecord(Blackhole blackhole) { + blackhole.consume(formatter.format(simpleLogRecord)); + } + + @Benchmark + public void structuredLogRecord(Blackhole blackhole) { + blackhole.consume(formatter.format(structuredLogRecord)); + } +} diff --git a/core/src/test/java/eu/mulk/quarkus/googlecloud/jsonlogging/FormatterTest.java b/core/src/test/java/eu/mulk/quarkus/googlecloud/jsonlogging/FormatterTest.java index 49cda39..91cc8e4 100644 --- a/core/src/test/java/eu/mulk/quarkus/googlecloud/jsonlogging/FormatterTest.java +++ b/core/src/test/java/eu/mulk/quarkus/googlecloud/jsonlogging/FormatterTest.java @@ -1,20 +1,19 @@ package eu.mulk.quarkus.googlecloud.jsonlogging; +import static org.junit.jupiter.api.Assertions.assertLinesMatch; + import jakarta.json.Json; +import java.util.Collection; +import java.util.List; import org.jboss.logmanager.ExtLogRecord; import org.jboss.logmanager.Level; import org.junit.jupiter.api.Test; -import java.util.Collection; -import java.util.List; - -import static org.junit.jupiter.api.Assertions.assertLinesMatch; - class FormatterTest { @Test void simpleRecord() { - var logRecord = new ExtLogRecord(Level.INFO, "Hello, world!", FormatterTest.class.getName()); + var logRecord = makeSimpleRecord(); var formatter = new Formatter(List.of(), List.of()); var formattingResult = formatter.format(logRecord); @@ -34,6 +33,10 @@ class FormatterTest { List.of(formattingResult)); } + static ExtLogRecord makeSimpleRecord() { + return new ExtLogRecord(Level.INFO, "Hello, world!", FormatterTest.class.getName()); + } + @Test void structuredRecord() { var parameterProvider = @@ -55,13 +58,7 @@ class FormatterTest { } }; - var logRecord = new ExtLogRecord(Level.INFO, "Hello, world!", FormatterTest.class.getName()); - logRecord.setParameters( - new Object[] { - (StructuredParameter) - () -> Json.createObjectBuilder().add("one", 1).add("two", 2.0).add("yes", true), - Label.of("a", "b") - }); + var logRecord = makeStructuredRecord(); var formatter = new Formatter(List.of(parameterProvider), List.of(labelProvider)); var formattingResult = formatter.format(logRecord); @@ -85,4 +82,15 @@ class FormatterTest { + "\\}\n"), List.of(formattingResult)); } + + static ExtLogRecord makeStructuredRecord() { + var logRecord = makeSimpleRecord(); + logRecord.setParameters( + new Object[] { + (StructuredParameter) + () -> Json.createObjectBuilder().add("one", 1).add("two", 2.0).add("yes", true), + Label.of("a", "b") + }); + return logRecord; + } } -- cgit v1.2.3