diff --git a/spring-data-mongodb-benchmarks/pom.xml b/spring-data-mongodb-benchmarks/pom.xml index 21d537eda..bb4389ae9 100644 --- a/spring-data-mongodb-benchmarks/pom.xml +++ b/spring-data-mongodb-benchmarks/pom.xml @@ -1,91 +1,112 @@ + 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 - 1.10.5.BUILD-SNAPSHOT - ../pom.xml - + + org.springframework.data + spring-data-mongodb-parent + 1.10.5.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 + false + - - - ${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 64f9e1bd5..54875e677 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 @@ -127,7 +127,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 9df33ba77..0b892bfce 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,13 +15,17 @@ */ 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.Charset; import java.util.Collection; import org.openjdk.jmh.results.RunResult; +import org.springframework.core.env.StandardEnvironment; import org.springframework.util.CollectionUtils; /** @@ -38,30 +42,45 @@ class HttpResultsWriter implements ResultsWriter { } @Override + @SneakyThrows public void write(Collection results) { if (CollectionUtils.isEmpty(results)) { return; } + 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(1000); + connection.setReadTimeout(1000); + connection.setDoOutput(true); + connection.setRequestMethod("POST"); + + 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); + + OutputStream output = null; try { - - URLConnection connection = new URL(url).openConnection(); - connection.setConnectTimeout(1000); - connection.setDoOutput(true); - connection.setRequestProperty("Content-Type", "application/json"); - - OutputStream output = null; - try { - output = connection.getOutputStream(); - output.write(ResultsWriter.Utils.jsonifyResults(results).getBytes(Charset.forName("UTF-8"))); - } finally { - if (output != null) { - output.close(); - } + output = connection.getOutputStream(); + output.write(ResultsWriter.Utils.jsonifyResults(results).getBytes(Charset.forName("UTF-8"))); + } finally { + if (output != null) { + output.close(); } - } 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 3f56c5f19..6f702dcd5 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 = null; @@ -71,6 +74,9 @@ class MongoResultsWriter implements ResultsWriter { BasicDBObject sink = new BasicDBObject(); 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")); @@ -81,7 +87,6 @@ class MongoResultsWriter implements ResultsWriter { } client.close(); - } /** @@ -117,13 +122,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 10c2326a4..53f15fc5a 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.Charset; @@ -57,10 +59,11 @@ 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(), Charset.forName("UTF-8")); } }