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
79 changes: 48 additions & 31 deletions test-server/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Makefile for S3 Encryption Client Testing

.PHONY: all start-servers start-python-server start-java-server run-tests stop-servers clean ci check-env help
.PHONY: all start-servers start-python-v3-server start-java-v3-server start-go-v3-server run-tests stop-servers clean ci check-env help

# Default target
all: start-servers run-tests
Expand All @@ -10,9 +10,9 @@ ci: start-servers run-tests stop-servers


# Start Python server in background
start-python-server:
@echo "Starting Python server..."
cd python-server && \
start-python-v3-server:
@echo "Starting Python V3 server..."
cd python-v3-server && \
python -m venv .venv && \
.venv/bin/python -m ensurepip && \
.venv/bin/python -m pip install -e . && \
Expand All @@ -21,30 +21,42 @@ start-python-server:
AWS_SECRET_ACCESS_KEY="$$AWS_SECRET_ACCESS_KEY" \
AWS_SESSION_TOKEN="$$AWS_SESSION_TOKEN" \
AWS_REGION="us-west-2" \
.venv/bin/python src/main.py & echo $$! > ../python-server.pid
.venv/bin/python src/main.py & echo $$! > ../python-v3-server.pid
@echo "Python server starting..."

# Start Java server in background
start-java-server:
@echo "Starting Java server..."
cd java-server && \
start-java-v3-server:
@echo "Starting Java V3 server..."
cd 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 $$! > ../java-server.pid
./gradlew --build-cache --parallel run & echo $$! > ../java-v3-server.pid
@echo "Java server starting..."

# Start both servers in parallel
# Start Go server in background
start-go-v3-server:
@echo "Starting Go V3 server..."
cd go-v3-server && \
go mod tidy && \
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" \
go run . & echo $$! > ../go-v3-server.pid
@echo "Go server starting..."

# Start all servers in parallel
start-servers:
@echo "Starting servers in parallel..."
@$(MAKE) -j2 start-python-server start-java-server
@$(MAKE) -j3 start-python-v3-server start-java-v3-server start-go-v3-server
@echo "Waiting for servers to be ready..."
@for i in $$(seq 1 360); do \
if nc -z localhost 8080 && nc -z localhost 8081; then \
if nc -z localhost 8080 && nc -z localhost 8081 && nc -z localhost 8082; then \
echo "Ports are open, waiting for servers to initialize..."; \
sleep 5; \
echo "Both servers are ready!"; \
echo "All servers are ready!"; \
break; \
fi; \
if [ $$i -eq 360 ]; then \
Expand All @@ -66,41 +78,46 @@ run-tests:
AWS_SECRET_ACCESS_KEY="$$AWS_SECRET_ACCESS_KEY" \
AWS_SESSION_TOKEN="$$AWS_SESSION_TOKEN" \
AWS_REGION="us-west-2" \
./gradlew --build-cache --parallel integ
./gradlew --build-cache --rerun-tasks --parallel integ
@echo "Tests completed successfully"

# Stop the servers
stop-servers:
@echo "Stopping servers..."
@if [ -f python-server.pid ]; then \
kill $$(cat python-server.pid) 2>/dev/null || true; \
rm python-server.pid; \
@if [ -f python-v3-server.pid ]; then \
kill $$(cat python-v3-server.pid) 2>/dev/null || true; \
rm python-v3-server.pid; \
fi
@if [ -f java-v3-server.pid ]; then \
kill $$(cat java-v3-server.pid) 2>/dev/null || true; \
rm java-v3-server.pid; \
fi
@if [ -f java-server.pid ]; then \
kill $$(cat java-server.pid) 2>/dev/null || true; \
rm java-server.pid; \
@if [ -f go-v3-server.pid ]; then \
kill $$(cat go-v3-server.pid) 2>/dev/null || true; \
rm go-v3-server.pid; \
fi
@echo "Servers stopped"

# Clean up logs and pid files
clean: stop-servers
@echo "Cleaning up..."
@rm -f python-server.log java-server.log
@rm -f python-v3-server.log java-v3-server.log go-v3-server.log
@echo "Cleanup complete"

# Help target
help:
@echo "Available targets:"
@echo " all : Start servers and run tests (default, output to stdout)"
@echo " ci : Run in CI mode (start servers, run tests, stop servers)"
@echo " start-servers : Start Python and Java servers in parallel (output to stdout)"
@echo " start-python-server: Start only the Python server"
@echo " start-java-server : Start only the Java server"
@echo " run-tests : Run Java tests"
@echo " stop-servers : Stop running servers"
@echo " clean : Stop servers and clean up logs"
@echo " check-env : Check if required environment variables are set"
@echo " help : Show this help message"
@echo " all : Start servers and run tests (default, output to stdout)"
@echo " ci : Run in CI mode (start servers, run tests, stop servers)"
@echo " start-servers : Start all servers in parallel"
@echo " start-python-v3-server : Start only the Python V3 server"
@echo " start-java-v3-server : Start only the Java V3 server"
@echo " start-go-v3-server : Start only the Go V3 server"
@echo " run-tests : Run Java tests"
@echo " stop-servers : Stop running servers"
@echo " clean : Stop servers and clean up logs"
@echo " check-env : Check if required environment variables are set"
@echo " help : Show this help message"

# Check if required environment variables are set
check-env:
Expand Down
11 changes: 7 additions & 4 deletions test-server/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,14 @@ make ci
# Start Python and Java servers in parallel
make start-servers

# Start only the Python server
make start-python-server
# Start only the Python S3EC V3 server
make start-python-v3-server

# Start only the Java server
make start-java-server
# Start only the Java S3EC V3 server
make start-java-v3-server

# Start only the Go S3EC V3 server
make start-go-v3-server

# Run Java tests
make run-tests
Expand Down
23 changes: 23 additions & 0 deletions test-server/go-v3-server/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# S3EC Go V3 Test Server

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

## Overview

The S3EC Go test server 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
go run .
```

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

The server is used as part of the testing framework to verify cross-language compatibility of the S3 Encryption Client implementations.
31 changes: 31 additions & 0 deletions test-server/go-v3-server/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
module github.com/aws/amazon-s3-encryption-client-python/test-server/go-server

go 1.21

require (
github.com/aws/amazon-s3-encryption-client-go/v3 v3.1.0
github.com/aws/aws-sdk-go-v2 v1.24.0
github.com/aws/aws-sdk-go-v2/config v1.26.1
github.com/aws/aws-sdk-go-v2/service/kms v1.27.4
github.com/aws/aws-sdk-go-v2/service/s3 v1.47.5
github.com/google/uuid v1.5.0
github.com/gorilla/mux v1.8.1
)

require (
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.16.12 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.10 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.7.2 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.9 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.9 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.9 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.9 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.18.5 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.5 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.26.5 // indirect
github.com/aws/smithy-go v1.19.0 // indirect
)
46 changes: 46 additions & 0 deletions test-server/go-v3-server/go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
github.com/aws/amazon-s3-encryption-client-go/v3 v3.1.0 h1:P4dOTmTkEb8Dj/LuAoA4bqRZZrDq4DqZQI88vdMaj18=
github.com/aws/amazon-s3-encryption-client-go/v3 v3.1.0/go.mod h1:olnwkBTbWjaJCaGOHohvJu98q40GiJZuDHLXj751mII=
github.com/aws/aws-sdk-go-v2 v1.24.0 h1:890+mqQ+hTpNuw0gGP6/4akolQkSToDJgHfQE7AwGuk=
github.com/aws/aws-sdk-go-v2 v1.24.0/go.mod h1:LNh45Br1YAkEKaAqvmE1m8FUx6a5b/V0oAKV7of29b4=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4 h1:OCs21ST2LrepDfD3lwlQiOqIGp6JiEUqG84GzTDoyJs=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4/go.mod h1:usURWEKSNNAcAZuzRn/9ZYPT8aZQkR7xcCtunK/LkJo=
github.com/aws/aws-sdk-go-v2/config v1.26.1 h1:z6DqMxclFGL3Zfo+4Q0rLnAZ6yVkzCRxhRMsiRQnD1o=
github.com/aws/aws-sdk-go-v2/config v1.26.1/go.mod h1:ZB+CuKHRbb5v5F0oJtGdhFTelmrxd4iWO1lf0rQwSAg=
github.com/aws/aws-sdk-go-v2/credentials v1.16.12 h1:v/WgB8NxprNvr5inKIiVVrXPuuTegM+K8nncFkr1usU=
github.com/aws/aws-sdk-go-v2/credentials v1.16.12/go.mod h1:X21k0FjEJe+/pauud82HYiQbEr9jRKY3kXEIQ4hXeTQ=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.10 h1:w98BT5w+ao1/r5sUuiH6JkVzjowOKeOJRHERyy1vh58=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.10/go.mod h1:K2WGI7vUvkIv1HoNbfBA1bvIZ+9kL3YVmWxeKuLQsiw=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9 h1:v+HbZaCGmOwnTTVS86Fleq0vPzOd7tnJGbFhP0stNLs=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9/go.mod h1:Xjqy+Nyj7VDLBtCMkQYOw1QYfAEZCVLrfI0ezve8wd4=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9 h1:N94sVhRACtXyVcjXxrwK1SKFIJrA9pOJ5yu2eSHnmls=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9/go.mod h1:hqamLz7g1/4EJP+GH5NBhcUMLjW+gKLQabgyz6/7WAU=
github.com/aws/aws-sdk-go-v2/internal/ini v1.7.2 h1:GrSw8s0Gs/5zZ0SX+gX4zQjRnRsMJDJ2sLur1gRBhEM=
github.com/aws/aws-sdk-go-v2/internal/ini v1.7.2/go.mod h1:6fQQgfuGmw8Al/3M2IgIllycxV7ZW7WCdVSqfBeUiCY=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.9 h1:ugD6qzjYtB7zM5PN/ZIeaAIyefPaD82G8+SJopgvUpw=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.9/go.mod h1:YD0aYBWCrPENpHolhKw2XDlTIWae2GKXT1T4o6N6hiM=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 h1:/b31bi3YVNlkzkBrm9LfpaKoaYZUxIAj4sHfOTmLfqw=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4/go.mod h1:2aGXHFmbInwgP9ZfpmdIfOELL79zhdNYNmReK8qDfdQ=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.9 h1:/90OR2XbSYfXucBMJ4U14wrjlfleq/0SB6dZDPncgmo=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.9/go.mod h1:dN/Of9/fNZet7UrQQ6kTDo/VSwKPIq94vjlU16bRARc=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.9 h1:Nf2sHxjMJR8CSImIVCONRi4g0Su3J+TSTbS7G0pUeMU=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.9/go.mod h1:idky4TER38YIjr2cADF1/ugFMKvZV7p//pVeV5LZbF0=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.9 h1:iEAeF6YC3l4FzlJPP9H3Ko1TXpdjdqWffxXjp8SY6uk=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.9/go.mod h1:kjsXoK23q9Z/tLBrckZLLyvjhZoS+AGrzqzUfEClvMM=
github.com/aws/aws-sdk-go-v2/service/kms v1.27.4 h1:c75pHGBV3h6WOsIjbJhLyOnlCPXzap45nbiP2Z5jk5M=
github.com/aws/aws-sdk-go-v2/service/kms v1.27.4/go.mod h1:D9FVDkZjkZnnFHymJ3fPVz0zOUlNSd0xcIIVmmrAac8=
github.com/aws/aws-sdk-go-v2/service/s3 v1.47.5 h1:Keso8lIOS+IzI2MkPZyK6G0LYcK3My2LQ+T5bxghEAY=
github.com/aws/aws-sdk-go-v2/service/s3 v1.47.5/go.mod h1:vADO6Jn+Rq4nDtfwNjhgR84qkZwiC6FqCaXdw/kYwjA=
github.com/aws/aws-sdk-go-v2/service/sso v1.18.5 h1:ldSFWz9tEHAwHNmjx2Cvy1MjP5/L9kNoR0skc6wyOOM=
github.com/aws/aws-sdk-go-v2/service/sso v1.18.5/go.mod h1:CaFfXLYL376jgbP7VKC96uFcU8Rlavak0UlAwk1Dlhc=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.5 h1:2k9KmFawS63euAkY4/ixVNsYYwrwnd5fIvgEKkfZFNM=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.5/go.mod h1:W+nd4wWDVkSUIox9bacmkBP5NMFQeTJ/xqNabpzSR38=
github.com/aws/aws-sdk-go-v2/service/sts v1.26.5 h1:5UYvv8JUvllZsRnfrcMQ+hJ9jNICmcgKPAO1CER25Wg=
github.com/aws/aws-sdk-go-v2/service/sts v1.26.5/go.mod h1:XX5gh4CB7wAs4KhcF46G6C8a2i7eupU19dcAAE+EydU=
github.com/aws/smithy-go v1.19.0 h1:KWFKQV80DpP3vJrrA9sVAHQ5gc2z8i4EzrLhLlWXcBM=
github.com/aws/smithy-go v1.19.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE=
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
Loading