Skip to content

Commit 5dce825

Browse files
committed
Add benchmarks for sync clients, mock clients for different protocols and client creation.
1 parent 2785337 commit 5dce825

32 files changed

+1633
-72
lines changed

build-tools/src/main/resources/software/amazon/awssdk/spotbugs-suppressions.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,13 @@
9797
</Match>
9898

9999
<Match>
100-
<Class name="software.amazon.awssdk.benchmark.dynamodb.V1DynamoDbAttributeValue$TestItemUnmarshalling" />
100+
<Class name="software.amazon.awssdk.benchmark.marshaller.dynamodb.V1DynamoDbAttributeValue$TestItemUnmarshalling" />
101101
<Method name="utf8" />
102102
<Bug pattern="EI_EXPOSE_REP" />
103103
</Match>
104104

105105
<Match>
106-
<Class name="software.amazon.awssdk.benchmark.dynamodb.V2DynamoDbAttributeValue$TestItemUnmarshalling" />
106+
<Class name="software.amazon.awssdk.benchmark.marshaller.dynamodb.V2DynamoDbAttributeValue$TestItemUnmarshalling" />
107107
<Method name="utf8" />
108108
<Bug pattern="EI_EXPOSE_REP" />
109109
</Match>

buildspecs/benchmarks.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
version: 0.2
2+
3+
phases:
4+
build:
5+
commands:
6+
- mvn install -P quick -pl :sdk-benchmarks --am
7+
- mvn install -pl :bom-internal
8+
- cd test/sdk-benchmarks
9+
- mvn exec:exec

test/sdk-benchmarks/pom.xml

Lines changed: 201 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,39 @@
2929
<name>AWS Java SDK :: Test :: SDK Benchmarks</name>
3030
<description>Contains JMH benchmark code for the SDK</description>
3131

32-
<dependencyManagement>
33-
<dependencies>
34-
<dependency>
35-
<groupId>software.amazon.awssdk</groupId>
36-
<artifactId>bom-internal</artifactId>
37-
<version>${project.version}</version>
38-
<type>pom</type>
39-
<scope>import</scope>
40-
</dependency>
41-
</dependencies>
42-
</dependencyManagement>
32+
<properties>
33+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
34+
35+
<!--
36+
JMH version to use with this project.
37+
-->
38+
<jmh.version>1.21</jmh.version>
39+
40+
<!--
41+
Java source/target to use for compilation.
42+
-->
43+
<javac.target>1.8</javac.target>
44+
45+
<!--
46+
Name of the benchmark Uber-JAR to generate.
47+
-->
48+
<uberjar.name>benchmarks</uberjar.name>
49+
50+
<sdk-v1.version>1.11.404</sdk-v1.version>
51+
<jackson.version>2.9.6</jackson.version>
52+
<exec-maven-plugin.version>1.6.0</exec-maven-plugin.version>
53+
</properties>
4354

4455
<dependencies>
4556
<dependency>
4657
<groupId>org.openjdk.jmh</groupId>
4758
<artifactId>jmh-core</artifactId>
59+
<version>${jmh.version}</version>
4860
</dependency>
4961
<dependency>
5062
<groupId>org.openjdk.jmh</groupId>
5163
<artifactId>jmh-generator-annprocess</artifactId>
64+
<version>${jmh.version}</version>
5265
<scope>provided</scope>
5366
</dependency>
5467

@@ -57,104 +70,152 @@
5770
<artifactId>aws-java-sdk-core</artifactId>
5871
<version>${sdk-v1.version}</version>
5972
</dependency>
73+
6074
<dependency>
6175
<groupId>com.amazonaws</groupId>
6276
<artifactId>aws-java-sdk-dynamodb</artifactId>
6377
<version>${sdk-v1.version}</version>
6478
</dependency>
65-
<dependency>
66-
<groupId>com.amazonaws</groupId>
67-
<artifactId>aws-java-sdk-ec2</artifactId>
68-
<version>${sdk-v1.version}</version>
69-
</dependency>
7079

7180
<dependency>
7281
<groupId>software.amazon.awssdk</groupId>
7382
<artifactId>dynamodb</artifactId>
7483
<version>${awsjavasdk.version}</version>
7584
</dependency>
85+
86+
<dependency>
87+
<groupId>com.amazonaws</groupId>
88+
<artifactId>aws-java-sdk-ec2</artifactId>
89+
<version>${sdk-v1.version}</version>
90+
</dependency>
91+
7692
<dependency>
7793
<groupId>software.amazon.awssdk</groupId>
7894
<artifactId>ec2</artifactId>
7995
<version>${awsjavasdk.version}</version>
8096
</dependency>
97+
8198
<dependency>
8299
<groupId>software.amazon.awssdk</groupId>
83100
<artifactId>aws-query-protocol</artifactId>
84101
<version>${awsjavasdk.version}</version>
85102
</dependency>
103+
86104
<dependency>
87105
<groupId>software.amazon.awssdk</groupId>
88106
<artifactId>aws-json-protocol</artifactId>
89107
<version>${awsjavasdk.version}</version>
90108
</dependency>
109+
91110
<dependency>
92111
<groupId>software.amazon.awssdk</groupId>
93112
<artifactId>protocol-core</artifactId>
94113
<version>${awsjavasdk.version}</version>
95114
</dependency>
115+
96116
<dependency>
97117
<groupId>software.amazon.awssdk</groupId>
98118
<artifactId>sdk-core</artifactId>
99119
<version>${awsjavasdk.version}</version>
100120
</dependency>
121+
101122
<dependency>
102123
<groupId>software.amazon.awssdk</groupId>
103124
<artifactId>http-client-spi</artifactId>
104125
<version>${awsjavasdk.version}</version>
105126
</dependency>
127+
<dependency>
128+
<groupId>software.amazon.awssdk</groupId>
129+
<artifactId>url-connection-client</artifactId>
130+
<version>${awsjavasdk.version}</version>
131+
</dependency>
132+
<dependency>
133+
<groupId>software.amazon.awssdk</groupId>
134+
<artifactId>regions</artifactId>
135+
<version>${awsjavasdk.version}</version>
136+
</dependency>
137+
<dependency>
138+
<groupId>software.amazon.awssdk</groupId>
139+
<artifactId>auth</artifactId>
140+
<version>${awsjavasdk.version}</version>
141+
</dependency>
142+
<dependency>
143+
<groupId>software.amazon.awssdk</groupId>
144+
<artifactId>apache-client</artifactId>
145+
<version>${awsjavasdk.version}</version>
146+
</dependency>
147+
<dependency>
148+
<groupId>software.amazon.awssdk</groupId>
149+
<artifactId>protocol-tests</artifactId>
150+
<version>${awsjavasdk.version}</version>
151+
<scope>compile</scope>
152+
</dependency>
153+
<dependency>
154+
<groupId>org.slf4j</groupId>
155+
<artifactId>slf4j-log4j12</artifactId>
156+
<version>1.7.25</version>
157+
</dependency>
158+
<dependency>
159+
<groupId>org.eclipse.jetty</groupId>
160+
<artifactId>jetty-servlet</artifactId>
161+
<version>9.2.22.v20170606</version>
162+
</dependency>
106163

107164
</dependencies>
108165

109-
<properties>
110-
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
111-
<uberjar.name>benchmarks</uberjar.name>
112-
113-
<sdk-v1.version>1.11.404</sdk-v1.version>
114-
<jackson.version>2.9.8</jackson.version>
115-
</properties>
166+
<dependencyManagement>
167+
<dependencies>
168+
<dependency>
169+
<groupId>com.fasterxml.jackson.core</groupId>
170+
<artifactId>jackson-databind</artifactId>
171+
<version>${jackson.version}</version>
172+
</dependency>
173+
<dependency>
174+
<groupId>com.fasterxml.jackson.core</groupId>
175+
<artifactId>jackson-core</artifactId>
176+
<version>${jackson.version}</version>
177+
</dependency>
178+
<dependency>
179+
<groupId>com.fasterxml.jackson.core</groupId>
180+
<artifactId>jackson-annotations</artifactId>
181+
<version>2.9.0</version>
182+
</dependency>
183+
<dependency>
184+
<groupId>software.amazon.awssdk</groupId>
185+
<artifactId>bom-internal</artifactId>
186+
<version>${awsjavasdk.version}</version>
187+
<type>pom</type>
188+
<scope>import</scope>
189+
</dependency>
190+
</dependencies>
191+
</dependencyManagement>
116192

117193
<build>
118-
<plugins>
119-
<plugin>
120-
<groupId>org.apache.maven.plugins</groupId>
121-
<artifactId>maven-shade-plugin</artifactId>
122-
<version>2.2</version>
123-
<executions>
124-
<execution>
125-
<phase>package</phase>
126-
<goals>
127-
<goal>shade</goal>
128-
</goals>
129-
<configuration>
130-
<finalName>${uberjar.name}</finalName>
131-
<transformers>
132-
<transformer
133-
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
134-
<mainClass>org.openjdk.jmh.Main</mainClass>
135-
</transformer>
136-
</transformers>
137-
<filters>
138-
<filter>
139-
<!--
140-
Shading signed JARs will fail without this.
141-
http://stackoverflow.com/questions/999489/invalid-signature-file-when-attempting-to-run-a-jar
142-
-->
143-
<artifact>*:*</artifact>
144-
<excludes>
145-
<exclude>META-INF/*.SF</exclude>
146-
<exclude>META-INF/*.DSA</exclude>
147-
<exclude>META-INF/*.RSA</exclude>
148-
</excludes>
149-
</filter>
150-
</filters>
151-
</configuration>
152-
</execution>
153-
</executions>
154-
</plugin>
155-
</plugins>
194+
<resources>
195+
<resource>
196+
<directory>src/main/resources</directory>
197+
</resource>
198+
</resources>
156199
<pluginManagement>
157200
<plugins>
201+
<plugin>
202+
<groupId>org.apache.maven.plugins</groupId>
203+
<artifactId>maven-compiler-plugin</artifactId>
204+
<version>3.1</version>
205+
<!-- Override the configuration in the parent-->
206+
<configuration combine.self="override">
207+
<compilerVersion>${javac.target}</compilerVersion>
208+
<source>${javac.target}</source>
209+
<target>${javac.target}</target>
210+
</configuration>
211+
<executions>
212+
<execution>
213+
<id>compile</id>
214+
<phase>none</phase>
215+
</execution>
216+
</executions>
217+
<inherited>false</inherited>
218+
</plugin>
158219
<plugin>
159220
<artifactId>maven-clean-plugin</artifactId>
160221
<version>2.5</version>
@@ -193,6 +254,85 @@
193254
</plugin>
194255
</plugins>
195256
</pluginManagement>
257+
<plugins>
258+
<plugin>
259+
<groupId>org.apache.maven.plugins</groupId>
260+
<artifactId>maven-compiler-plugin</artifactId>
261+
</plugin>
262+
<plugin>
263+
<groupId>org.apache.maven.plugins</groupId>
264+
<artifactId>maven-shade-plugin</artifactId>
265+
<version>2.2</version>
266+
<executions>
267+
<execution>
268+
<phase>package</phase>
269+
<goals>
270+
<goal>shade</goal>
271+
</goals>
272+
<configuration>
273+
<finalName>${uberjar.name}</finalName>
274+
<transformers>
275+
<transformer
276+
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
277+
<mainClass>org.openjdk.jmh.Main</mainClass>
278+
</transformer>
279+
</transformers>
280+
<filters>
281+
<filter>
282+
<!--
283+
Shading signed JARs will fail without this.
284+
http://stackoverflow.com/questions/999489/invalid-signature-file-when-attempting-to-run-a-jar
285+
-->
286+
<artifact>*:*</artifact>
287+
<excludes>
288+
<exclude>META-INF/*.SF</exclude>
289+
<exclude>META-INF/*.DSA</exclude>
290+
<exclude>META-INF/*.RSA</exclude>
291+
</excludes>
292+
</filter>
293+
</filters>
294+
</configuration>
295+
</execution>
296+
</executions>
297+
</plugin>
298+
<plugin>
299+
<groupId>org.codehaus.mojo</groupId>
300+
<!-- Need to use exec not java see:http://mail.openjdk.java.net/pipermail/jmh-dev/2014-July/001192.html, https://stackoverflow.com/questions/15013651/using-maven-execexec-with-arguments -->
301+
<artifactId>exec-maven-plugin</artifactId>
302+
<version>${exec-maven-plugin.version}</version>
303+
<configuration>
304+
<executable>java</executable>
305+
<arguments>
306+
<argument>-classpath</argument>
307+
<classpath/>
308+
<argument>software.amazon.awssdk.benchmark.BenchmarkRunner</argument>
309+
</arguments>
310+
</configuration>
311+
</plugin>
312+
<plugin>
313+
<groupId>com.github.spotbugs</groupId>
314+
<artifactId>spotbugs-maven-plugin</artifactId>
315+
<configuration>
316+
<!-- Skipping spotbugs for the generated JMH classes-->
317+
<skip>true</skip>
318+
</configuration>
319+
</plugin>
320+
<plugin>
321+
<groupId>org.apache.maven.plugins</groupId>
322+
<artifactId>maven-dependency-plugin</artifactId>
323+
<executions>
324+
<execution>
325+
<goals>
326+
<goal>analyze-only</goal>
327+
</goals>
328+
</execution>
329+
</executions>
330+
<configuration>
331+
<!-- Skipping maven dependencies analysis to speed up the build -->
332+
<skip>true</skip>
333+
</configuration>
334+
</plugin>
335+
</plugins>
196336
</build>
197337

198338
</project>

0 commit comments

Comments
 (0)