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 --- README.adoc | 19 ++++++ core/pom.xml | 72 +++++++++++++++++++++- .../jsonlogging/FormatterBenchmark.java | 34 ++++++++++ .../googlecloud/jsonlogging/FormatterTest.java | 34 ++++++---- pom.xml | 7 +++ 5 files changed, 152 insertions(+), 14 deletions(-) create mode 100644 core/src/test/java/eu/mulk/quarkus/googlecloud/jsonlogging/FormatterBenchmark.java diff --git a/README.adoc b/README.adoc index 6b479ca..7048262 100644 --- a/README.adoc +++ b/README.adoc @@ -446,3 +446,22 @@ Result: } } ---- + + +== Development + +=== Running the Tests + +To run the **test suite**, run: + +[source,shell] +---- +$ mvn verify +---- + +To run the **benchmarks**, run: + +[source,shell] +---- +$ mvn verify -Pbenchmark +---- diff --git a/core/pom.xml b/core/pom.xml index a75acd5..38f7ea5 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -55,11 +55,37 @@ SPDX-License-Identifier: LGPL-3.0-or-later 5.10.2 test + + + org.openjdk.jmh + jmh-core + 1.35 + test + + + org.openjdk.jmh + jmh-generator-annprocess + 1.35 + test + + + maven-compiler-plugin + + + + org.openjdk.jmh + jmh-generator-annprocess + 1.35 + + + + + maven-jar-plugin @@ -73,10 +99,54 @@ SPDX-License-Identifier: LGPL-3.0-or-later maven-surefire-plugin - 3.2.5 + + + + benchmark + + + + + + maven-surefire-plugin + + true + + + + + org.codehaus.mojo + exec-maven-plugin + + + run-benchmarks + integration-test + + exec + + + test + java + + -classpath + + org.openjdk.jmh.Main + .* + + + + + + + + + + + + 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; + } } diff --git a/pom.xml b/pom.xml index fe93b23..b346411 100644 --- a/pom.xml +++ b/pom.xml @@ -61,6 +61,7 @@ SPDX-License-Identifier: LGPL-3.0-or-later UTF-8 3.13.0 + 3.2.0 ${surefire-plugin.version} 1.6.0 1.15.0 @@ -197,6 +198,12 @@ SPDX-License-Identifier: LGPL-3.0-or-later + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + + -- cgit v1.2.3