Skip to content

Commit 51f031b

Browse files
ShubhamChaturvedi7Shubham Chaturveditexastony
authored
feat: perf-test for java (#815)
Co-authored-by: Shubham Chaturvedi <scchatur@amazon.com> Co-authored-by: Tony Knapp <5892063+texastony@users.noreply.github.com>
1 parent ac3448a commit 51f031b

File tree

10 files changed

+2523
-0
lines changed

10 files changed

+2523
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# AWS Encryption SDK Java Benchmark
2+
3+
Performance testing suite for the AWS Encryption SDK Java implementation.
4+
5+
## Quick Start
6+
7+
```bash
8+
# Build the project
9+
mvn clean compile
10+
11+
# Run benchmark
12+
mvn exec:java -Dexec.mainClass="com.amazon.esdk.benchmark.Program"
13+
14+
# Quick test (reduced iterations)
15+
mvn exec:java -Dexec.mainClass="com.amazon.esdk.benchmark.Program" -Dexec.args="--quick"
16+
```
17+
18+
## Options
19+
20+
- `--config` - Path to test configuration file (default: `../../config/test-scenarios.yaml`)
21+
- `--output` - Path to output results file (default: `../../results/raw-data/java_results.json`)
22+
- `--quick` - Run with reduced iterations for faster testing
23+
24+
## Configuration
25+
26+
Edit `../../config/test-scenarios.yaml` for test parameters:
27+
28+
- Data sizes (small/medium/large)
29+
- Iterations and concurrency levels
30+
31+
## Test Types
32+
33+
- **Throughput** - Measures encryption/decryption operations per second
34+
- **Memory** - Tracks memory usage and allocations during operations
35+
- **Concurrency** - Tests performance under concurrent load
36+
37+
## Output
38+
39+
Results saved as JSON to `../../results/raw-data/java_results.json` with:
40+
41+
- Performance metrics (ops/sec, latency percentiles)
42+
- Memory usage (peak, average, allocations, input data to memory ratio)
43+
- System information (CPU, memory, Java version)
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>com.amazon.esdk</groupId>
8+
<artifactId>esdk-performance-benchmark</artifactId>
9+
<version>1.0.0</version>
10+
<packaging>jar</packaging>
11+
12+
<properties>
13+
<maven.compiler.source>17</maven.compiler.source>
14+
<maven.compiler.target>17</maven.compiler.target>
15+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
16+
</properties>
17+
18+
<dependencies>
19+
<!-- AWS Encryption SDK -->
20+
<dependency>
21+
<groupId>com.amazonaws</groupId>
22+
<artifactId>aws-encryption-sdk-java</artifactId>
23+
<version>3.0.2</version>
24+
</dependency>
25+
26+
<!-- AWS Cryptographic Material Providers Library -->
27+
<dependency>
28+
<groupId>software.amazon.cryptography</groupId>
29+
<artifactId>aws-cryptographic-material-providers</artifactId>
30+
<version>1.11.0</version>
31+
</dependency>
32+
33+
<!-- Jackson for YAML processing -->
34+
<dependency>
35+
<groupId>com.fasterxml.jackson.core</groupId>
36+
<artifactId>jackson-databind</artifactId>
37+
<version>2.15.2</version>
38+
</dependency>
39+
<dependency>
40+
<groupId>com.fasterxml.jackson.dataformat</groupId>
41+
<artifactId>jackson-dataformat-yaml</artifactId>
42+
<version>2.15.2</version>
43+
</dependency>
44+
45+
<!-- Progress bar -->
46+
<dependency>
47+
<groupId>me.tongfei</groupId>
48+
<artifactId>progressbar</artifactId>
49+
<version>0.9.5</version>
50+
</dependency>
51+
52+
<!-- SLF4J for logging -->
53+
<dependency>
54+
<groupId>org.slf4j</groupId>
55+
<artifactId>slf4j-simple</artifactId>
56+
<version>2.0.7</version>
57+
</dependency>
58+
</dependencies>
59+
60+
<build>
61+
<plugins>
62+
<plugin>
63+
<groupId>org.apache.maven.plugins</groupId>
64+
<artifactId>maven-compiler-plugin</artifactId>
65+
<version>3.11.0</version>
66+
</plugin>
67+
68+
<plugin>
69+
<groupId>org.apache.maven.plugins</groupId>
70+
<artifactId>maven-shade-plugin</artifactId>
71+
<version>3.5.0</version>
72+
<executions>
73+
<execution>
74+
<phase>package</phase>
75+
<goals>
76+
<goal>shade</goal>
77+
</goals>
78+
<configuration>
79+
<transformers>
80+
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
81+
<mainClass>com.amazon.esdk.benchmark.Program</mainClass>
82+
</transformer>
83+
</transformers>
84+
<filters>
85+
<filter>
86+
<artifact>*:*</artifact>
87+
<excludes>
88+
<exclude>META-INF/*.SF</exclude>
89+
<exclude>META-INF/*.DSA</exclude>
90+
<exclude>META-INF/*.RSA</exclude>
91+
</excludes>
92+
</filter>
93+
</filters>
94+
</configuration>
95+
</execution>
96+
</executions>
97+
</plugin>
98+
99+
<plugin>
100+
<groupId>org.codehaus.mojo</groupId>
101+
<artifactId>exec-maven-plugin</artifactId>
102+
<version>3.1.0</version>
103+
<configuration>
104+
<mainClass>com.amazon.esdk.benchmark.Program</mainClass>
105+
</configuration>
106+
</plugin>
107+
108+
<plugin>
109+
<groupId>com.diffplug.spotless</groupId>
110+
<artifactId>spotless-maven-plugin</artifactId>
111+
<version>2.40.0</version>
112+
<configuration>
113+
<java>
114+
<googleJavaFormat />
115+
</java>
116+
</configuration>
117+
</plugin>
118+
</plugins>
119+
</build>
120+
</project>

0 commit comments

Comments
 (0)