Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@
path = test-server/php-v3-server/local-php-sdk
url = git@github.com:aws/private-aws-sdk-php-staging.git
branch = s3ec/improved
[submodule "test-server/java-v3-transition-server/s3ec-staging"]
path = test-server/java-v3-transition-server/s3ec-staging
url = git@github.com:aws/private-amazon-s3-encryption-client-java-staging.git
branch = s3ec/transitional
[submodule "test-server/java-v4-server/s3ec-staging"]
path = test-server/java-v4-server/s3ec-staging
url = git@github.com:aws/private-amazon-s3-encryption-client-java-staging.git
branch = s3ec/improved
[submodule "test-server/specification"]
path = test-server/specification
url = git@github.com:awslabs/private-aws-encryption-sdk-specification-staging.git
Original file line number Diff line number Diff line change
Expand Up @@ -124,13 +124,13 @@ public class TestUtils {
servers.put(RUBY_V3, new LanguageServerTarget(RUBY_V3, "8092"));
servers.put(PHP_V3, new LanguageServerTarget(PHP_V3, "8093"));
// TODO: Create and add transition servers
// servers.put(JAVA_V3_TRANSITION, new LanguageServerTarget(JAVA_V3_TRANSITION, "8094"));
servers.put(JAVA_V3_TRANSITION, new LanguageServerTarget(JAVA_V3_TRANSITION, "8094"));
// servers.put(GO_V3_TRANSITION, new LanguageServerTarget(GO_V3_TRANSITION, "8095"));
// servers.put(NET_V2_TRANSITION, new LanguageServerTarget(NET_V2_TRANSITION, "8096"));
servers.put(CPP_V2_TRANSITION, new LanguageServerTarget(CPP_V2_TRANSITION, "8097"));
// servers.put(RUBY_V2_TRANSITION, new LanguageServerTarget(RUBY_V2_TRANSITION, "8098"));
// servers.put(PHP_V2_TRANSITION, new LanguageServerTarget(PHP_V2_TRANSITION, "8099"));

servers.put(JAVA_V4, new LanguageServerTarget(JAVA_V4, "8090"));
serverMap = filterServers(servers);
}

Expand Down
30 changes: 30 additions & 0 deletions test-server/java-v3-transition-server/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Makefile for S3 Encryption Client Testing

.PHONY: start-server stop-server wait-for-server build-s3ec

PID_FILE := server.pid
PORT := 8094

build-s3ec:
@echo "Building S3EC from source..."
cd s3ec-staging && mvn --batch-mode -no-transfer-progress clean compile
cd s3ec-staging && mvn -B -ntp install -DskipTests
@echo "S3EC build completed."

start-server: build-s3ec
@echo "Starting Java V3 server..."
AWS_ACCESS_KEY_ID="$$AWS_ACCESS_KEY_ID" \
AWS_SECRET_ACCESS_KEY="$$AWS_SECRET_ACCESS_KEY" \
AWS_SESSION_TOKEN="$$AWS_SESSION_TOKEN" \
AWS_REGION="us-west-2" \
./gradlew --build-cache --parallel run & echo $$! > $(PID_FILE)
@echo "Java V3 server starting..."

stop-server:
@if [ -f $(PID_FILE) ]; then \
kill $$(cat $(PID_FILE)) 2>/dev/null || true; \
rm $(PID_FILE); \
fi

wait-for-server:
$(MAKE) -C .. wait-for-port PORT=$(PORT)
23 changes: 23 additions & 0 deletions test-server/java-v3-transition-server/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# S3EC Java V3 Test Server

This is the Java implementation of the S3ECTestServer framework for S3EC Java V3. It provides a server implementation for testing Java S3 Encryption Client V3 functionality.

## Overview

The S3ECJavaTestServer implements the S3ECTestServer service defined in the shared Smithy model. It provides endpoints for:

- Creating S3 Encryption Clients
- Putting objects with encryption
- Getting and decrypting objects

## Usage

To run the server:

```console
gradle run
```

This will start the server running on port `8094`.

The server is used as part of the testing framework to verify cross-language compatibility of the S3 Encryption Client implementations.
55 changes: 55 additions & 0 deletions test-server/java-v3-transition-server/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
plugins {
`java-library`
id("software.amazon.smithy.gradle.smithy-base")
application
}

dependencies {
val smithyJavaVersion: String by project

smithyBuild("software.amazon.smithy.java:plugins:$smithyJavaVersion")

implementation("software.amazon.smithy:smithy-rules-engine:1.59.0")
implementation("software.amazon.smithy.java:server-netty:$smithyJavaVersion")
implementation("software.amazon.smithy.java:aws-server-restjson:$smithyJavaVersion")

// S3EC from local Maven repository (installed by mvn install)
implementation("software.amazon.encryption.s3:amazon-s3-encryption-client-java:3.4.0-TRANSITION")
}

// Use that application plugin to start the service via the `run` task.
application {
mainClass = "software.amazon.encryption.s3.S3ECJavaTestServer"
}

// Add generated Java files to the main sourceSet
afterEvaluate {
val serverPath = smithy.getPluginProjectionPath(smithy.sourceProjection.get(), "java-server-codegen")
sourceSets {
main {
java {
srcDir(serverPath)
}
}
}
}

tasks {
compileJava {
dependsOn(smithyBuild)
}
}

// Helps Intellij IDE's discover smithy models
sourceSets {
main {
java {
srcDir("../model")
}
}
}

repositories {
mavenLocal()
mavenCentral()
}
11 changes: 11 additions & 0 deletions test-server/java-v3-transition-server/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Smithy versions
smithyJavaVersion=[0,1]
smithyGradleVersion=1.1.0
smithyVersion=[1,2]

# Performance optimization settings
org.gradle.parallel=true
org.gradle.caching=true
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError
org.gradle.workers.max=4
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading
Loading