diff --git a/spring-data-mongodb-benchmarks/pom.xml b/spring-data-mongodb-benchmarks/pom.xml index 53999e476..494925fb6 100644 --- a/spring-data-mongodb-benchmarks/pom.xml +++ b/spring-data-mongodb-benchmarks/pom.xml @@ -1,91 +1,111 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - 4.0.0 + 4.0.0 - - org.springframework.data - spring-data-mongodb-parent - 2.0.0.BUILD-SNAPSHOT - ../pom.xml - + + org.springframework.data + spring-data-mongodb-parent + 2.0.0.BUILD-SNAPSHOT + ../pom.xml + - spring-data-mongodb-benchmarks - jar + spring-data-mongodb-benchmarks + jar - Spring Data MongoDB - Microbenchmarks + Spring Data MongoDB - Microbenchmarks - - true - false - + + + true + - - - ${project.groupId} - spring-data-mongodb - ${project.version} - - - junit - junit - ${junit} - compile - - - org.openjdk.jmh - jmh-core - ${jmh.version} - - - org.openjdk.jmh - jmh-generator-annprocess - ${jmh.version} - provided - - + - + + ${project.groupId} + spring-data-mongodb + ${project.version} + - - benchmarks - - false - - - + + junit + junit + ${junit} + compile + - - - - maven-jar-plugin - - - default-jar - never - - - - - maven-surefire-plugin - - ${project.build.sourceDirectory} - ${project.build.outputDirectory} - - **/AbstractMicrobenchmark.java - **/*$*.class - **/generated/*.class - - - **/*Benchmark* - - - ${project.build.directory}/reports/performance - ${project.version} - - - - - + + org.openjdk.jmh + jmh-core + ${jmh.version} + + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh.version} + provided + + + + + + + + benchmarks + + false + + + + + + + + pl.project13.maven + git-commit-id-plugin + 2.2.2 + + + + revision + + + + + + maven-jar-plugin + + + default-jar + never + + + + + maven-surefire-plugin + + ${project.build.sourceDirectory} + ${project.build.outputDirectory} + + **/AbstractMicrobenchmark.java + **/*$*.class + **/generated/*.class + + + **/*Benchmark* + + + ${project.build.directory}/reports/performance + ${project.version} + ${git.dirty} + ${git.commit.id} + ${git.branch} + + + + + diff --git a/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterBenchmark.java b/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterBenchmark.java index 0c5785da7..b51c8ccfc 100644 --- a/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterBenchmark.java +++ b/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterBenchmark.java @@ -126,7 +126,7 @@ public class MappingMongoConverterBenchmark extends AbstractMicrobenchmark { } @Benchmark // DATAMONGO-1720 - public Customer readObjectWith2tPropertiesAnd1NestedObject() { + public Customer readObjectWith2PropertiesAnd1NestedObject() { return converter.read(Customer.class, documentWith2PropertiesAnd1Nested); } diff --git a/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/HttpResultsWriter.java b/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/HttpResultsWriter.java index 06584c7c5..8c9504102 100644 --- a/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/HttpResultsWriter.java +++ b/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/HttpResultsWriter.java @@ -15,7 +15,10 @@ */ package org.springframework.data.mongodb.microbenchmark; +import lombok.SneakyThrows; + import java.io.OutputStream; +import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.nio.charset.StandardCharsets; @@ -23,6 +26,7 @@ import java.time.Duration; import java.util.Collection; import org.openjdk.jmh.results.RunResult; +import org.springframework.core.env.StandardEnvironment; import org.springframework.util.CollectionUtils; /** @@ -39,24 +43,39 @@ class HttpResultsWriter implements ResultsWriter { } @Override + @SneakyThrows public void write(Collection results) { if (CollectionUtils.isEmpty(results)) { return; } - try { + StandardEnvironment env = new StandardEnvironment(); + + String projectVersion = env.getProperty("project.version", "unknown"); + String gitBranch = env.getProperty("git.branch", "unknown"); + String gitDirty = env.getProperty("git.dirty", "no"); + String gitCommitId = env.getProperty("git.commit.id", "unknown"); + + HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); + connection.setConnectTimeout((int) Duration.ofSeconds(1).toMillis()); + connection.setReadTimeout((int) Duration.ofSeconds(1).toMillis()); + connection.setDoOutput(true); + connection.setRequestMethod("POST"); - URLConnection connection = new URL(url).openConnection(); - connection.setConnectTimeout((int) Duration.ofSeconds(1).toMillis()); - connection.setDoOutput(true); - connection.setRequestProperty("Content-Type", "application/json"); + connection.setRequestProperty("Content-Type", "application/json"); + connection.addRequestProperty("X-Project-Version", projectVersion); + connection.addRequestProperty("X-Git-Branch", gitBranch); + connection.addRequestProperty("X-Git-Dirty", gitDirty); + connection.addRequestProperty("X-Git-Commit-Id", gitCommitId); + + try (OutputStream output = connection.getOutputStream()) { + output.write(ResultsWriter.jsonifyResults(results).getBytes(StandardCharsets.UTF_8)); + } - try (OutputStream output = connection.getOutputStream()) { - output.write(ResultsWriter.jsonifyResults(results).getBytes(StandardCharsets.UTF_8)); - } - } catch (Exception e) { - throw new RuntimeException(e); + if (connection.getResponseCode() >= 400) { + throw new IllegalStateException( + String.format("Status %d %s", connection.getResponseCode(), connection.getResponseMessage())); } } } diff --git a/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/MongoResultsWriter.java b/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/MongoResultsWriter.java index 3a3ab4388..4c069a7c6 100644 --- a/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/MongoResultsWriter.java +++ b/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/MongoResultsWriter.java @@ -52,6 +52,9 @@ class MongoResultsWriter implements ResultsWriter { StandardEnvironment env = new StandardEnvironment(); String projectVersion = env.getProperty("project.version", "unknown"); + String gitBranch = env.getProperty("git.branch", "unknown"); + String gitDirty = env.getProperty("git.dirty", "no"); + String gitCommitId = env.getProperty("git.commit.id", "unknown"); MongoClientURI uri = new MongoClientURI(this.uri); MongoClient client = new MongoClient(uri); @@ -65,6 +68,9 @@ class MongoResultsWriter implements ResultsWriter { Document sink = new Document(); sink.append("_version", projectVersion); + sink.append("_branch", gitBranch); + sink.append("_commit", gitCommitId); + sink.append("_dirty", gitDirty); sink.append("_method", extractBenchmarkName(dbo.get("benchmark").toString())); sink.append("_date", now); sink.append("_snapshot", projectVersion.toLowerCase().contains("snapshot")); @@ -75,7 +81,6 @@ class MongoResultsWriter implements ResultsWriter { } client.close(); - } /** @@ -113,13 +118,13 @@ class MongoResultsWriter implements ResultsWriter { return sanitized; } - private String extractClass(String source) { + private static String extractClass(String source) { String tmp = source.substring(0, source.lastIndexOf('.')); return tmp.substring(tmp.lastIndexOf(".") + 1); } - private String extractBenchmarkName(String source) { + private static String extractBenchmarkName(String source) { return source.substring(source.lastIndexOf(".") + 1); } diff --git a/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/ResultsWriter.java b/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/ResultsWriter.java index e06896318..3aaaee665 100644 --- a/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/ResultsWriter.java +++ b/spring-data-mongodb-benchmarks/src/main/java/org/springframework/data/mongodb/microbenchmark/ResultsWriter.java @@ -15,6 +15,8 @@ */ package org.springframework.data.mongodb.microbenchmark; +import lombok.SneakyThrows; + import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.nio.charset.StandardCharsets; @@ -54,10 +56,12 @@ interface ResultsWriter { * @return json string representation of results. * @see org.openjdk.jmh.results.format.JSONResultFormat */ + @SneakyThrows static String jsonifyResults(Collection results) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ResultFormatFactory.getInstance(ResultFormatType.JSON, new PrintStream(baos)).writeOut(results); + ResultFormatFactory.getInstance(ResultFormatType.JSON, new PrintStream(baos, true, "UTF-8")).writeOut(results); + return new String(baos.toByteArray(), StandardCharsets.UTF_8); } }