diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 23cee4d8..e2c43191 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,70 +21,56 @@ jobs: - name: Checkout code uses: actions/checkout@v5 with: - submodules: true + submodules: false # This is Ryan Emery's (seebees) PAT. # To grant this workflow access to a new private repo, # ask Ryan to edit this PAT's permissions to add access to a new private repo. token: ${{ secrets.PAT_FOR_PRIVATE_RUBY }} - - name: Checkout CPP code for cpp-v2-transition - uses: actions/checkout@v5 - with: - submodules: recursive - token: ${{ secrets.PAT_FOR_CPP }} - repository: awslabs/aws-sdk-cpp-staging - ref: fire-egg-dev - path: test-server/cpp-v2-transition-server/aws-sdk-cpp/ - - - name: Checkout CPP code cpp-v3 - uses: actions/checkout@v5 - with: - submodules: recursive - token: ${{ secrets.PAT_FOR_CPP }} - repository: awslabs/aws-sdk-cpp-staging - ref: fire-egg-dev - path: test-server/cpp-v3-server/aws-sdk-cpp/ + # There are a lot of submodules here + # This initializes the checkouts in parallel (--jobs) + # rather than in series the way actions/checkout@v5 does it. - - name: Checkout .NET V2 code - uses: actions/checkout@v5 - with: - token: ${{ secrets.PAT_FOR_DOTNET }} - repository: aws/private-amazon-s3-encryption-client-dotnet-staging - # This is the branch for S3EC .NET V2 - ref: v3sdk-development - path: test-server/net-v2-v3-server/s3ec-net-v2/ + - name: Get CPU count + id: cpu-count + run: echo "count=$(node -p 'require("os").cpus().length')" >> $GITHUB_OUTPUT - - name: Checkout .NET V3 code - uses: actions/checkout@v5 - with: - token: ${{ secrets.PAT_FOR_DOTNET }} - repository: aws/private-amazon-s3-encryption-client-dotnet-staging - # This is the branch for S3EC .NET V3 - ref: s3ec-v3 - path: test-server/net-v2-v3-server/s3ec-net-v3 + - name: Setup git submodules with PAT + run: | + git config --global url."https://github.com/".insteadOf "git@github.com:" + git config --global credential.helper store + echo "https://x-token-auth:${{ secrets.PAT_FOR_PRIVATE_RUBY }}@github.com" > ~/.git-credentials - - name: Checkout .NET V3 code (Transition) - uses: actions/checkout@v5 - with: - token: ${{ secrets.PAT_FOR_DOTNET }} - repository: aws/private-amazon-s3-encryption-client-dotnet-staging - # This is the branch for S3EC .NET V3 transition - ref: rishav/key-commitment - path: test-server/net-v3-transition-server/s3ec-v3-transition-branch - - - name: Checkout .NET V4 (Improved) code - uses: actions/checkout@v5 - with: - token: ${{ secrets.PAT_FOR_DOTNET }} - repository: aws/private-amazon-s3-encryption-client-dotnet-staging - # This is the branch for S3EC .NET V4 (improved) - ref: s3ec-v4-WIP - path: test-server/net-v4-server/s3ec-net-v4-improved - - - name: Set up Python - uses: actions/setup-python@v5 + - name: Cache git submodules + uses: actions/cache@v4 with: - python-version: ${{ inputs.python-version || '3.11' }} + path: | + .git/modules + test-server/*/.git + key: ${{ runner.os }}-submodules-${{ hashFiles('.gitmodules') }} + restore-keys: | + ${{ runner.os }}-submodules- + + - name: Optimize git for performance + run: | + git config --global fetch.parallel ${{ steps.cpu-count.outputs.count }} + git config --global submodule.fetchJobs ${{ steps.cpu-count.outputs.count }} + git config --global remote.origin.tagOpt --no-tags + + - name: Checkout submodules with --jobs + run: | + git submodule update --init --depth 1 --jobs ${{ steps.cpu-count.outputs.count }} + + - name: Update cpp submodules recursively with --jobs + run: | + git submodule update --init --recursive \ + --depth 1 \ + --filter=blob:none \ + --jobs ${{ steps.cpu-count.outputs.count }} \ + --force \ + test-server/cpp-v2-transition-server/aws-sdk-cpp \ + test-server/cpp-v3-server/aws-sdk-cpp \ + test-server/cpp-v2-server/aws-sdk-cpp - name: Set up Ruby uses: ruby/setup-ruby@v1 @@ -116,17 +102,39 @@ jobs: with: go-version: 1.25 - # Cache uv dependencies - - name: Cache uv dependencies - uses: actions/cache@v3 - with: - path: ~/.cache/uv - key: ${{ runner.os }}-uv-${{ hashFiles('./test-server/python-v3-server/**/pyproject.toml') }} - restore-keys: | - ${{ runner.os }}-uv- - - - name: Install Uv - run: pip install uv + - name: Install C++ dependencies + run: | + brew install libmicrohttpd nlohmann-json ossp-uuid + + # Legacy Python tests: + # - name: Set up Python + # uses: actions/setup-python@v5 + # with: + # python-version: ${{ inputs.python-version || '3.11' }} + # + # # Cache uv dependencies + # - name: Cache uv dependencies + # uses: actions/cache@v3 + # with: + # path: ~/.cache/uv + # key: ${{ runner.os }}-uv-${{ hashFiles('./test-server/python-v3-server/**/pyproject.toml') }} + # restore-keys: | + # ${{ runner.os }}-uv- + + # - name: Install Uv + # run: pip install uv + + # - name: Install dependencies + # run: make install + + # - name: Run unit tests + # run: make test-unit + + # - name: Run integration tests + # run: make test-integration + # env: + # CI_S3_BUCKET: ${{ vars.CI_S3_BUCKET }} + # CI_KMS_KEY_ALIAS: ${{ vars.CI_KMS_KEY_ALIAS }} # Cache Gradle dependencies and build outputs - name: Cache Gradle packages @@ -141,32 +149,53 @@ jobs: restore-keys: | ${{ runner.os }}-gradle- - - name: Install dependencies - run: make install - - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::370957321024:role/S3EC-Python-Github-test-role aws-region: us-west-2 - - name: Run unit tests - run: make test-unit + - name: Build the servers + run: cd test-server && make build-all-servers FILTER=ruby,go,cpp + env: + MAKEFLAGS: -j${{ steps.cpu-count.outputs.count }} + AWS_REGION: us-west-2 + + - name: Start the servers + run: cd test-server && make start-all-servers FILTER=ruby,go,cpp + env: + AWS_REGION: us-west-2 + TEST_SERVER_S3_BUCKET: ${{ vars.TEST_SERVER_S3_BUCKET }} + TEST_SERVER_KMS_KEY_ARN: ${{ vars.TEST_SERVER_KMS_KEY_ARN }} - - name: Run integration tests - run: make test-integration + - name: Wait for servers to start + run: cd test-server && make wait-all-servers FILTER=ruby,go,cpp env: - CI_S3_BUCKET: ${{ vars.CI_S3_BUCKET }} - CI_KMS_KEY_ALIAS: ${{ vars.CI_KMS_KEY_ALIAS }} + AWS_REGION: us-west-2 + TEST_SERVER_S3_BUCKET: ${{ vars.TEST_SERVER_S3_BUCKET }} + TEST_SERVER_KMS_KEY_ARN: ${{ vars.TEST_SERVER_KMS_KEY_ARN }} - - name: Run test-server tests - run: cd test-server && make ci + - name: Run run-tests + run: cd test-server && make run-tests FILTER=ruby,go,cpp env: AWS_REGION: us-west-2 TEST_SERVER_S3_BUCKET: ${{ vars.TEST_SERVER_S3_BUCKET }} TEST_SERVER_KMS_KEY_ARN: ${{ vars.TEST_SERVER_KMS_KEY_ARN }} GRADLE_OPTS: "-Dorg.gradle.daemon=true -Dorg.gradle.parallel=true -Dorg.gradle.caching=true" + - name: Upload server logs + if: always() + uses: actions/upload-artifact@v4 + with: + name: server-logs + path: | + test-server/*/server.log + test-server/*/net-v2-server.log + test-server/*/net-v3-server.log + + - name: Stop the servers + run: cd test-server && make stop-servers FILTER=ruby,go,cpp + - name: Upload results if: always() uses: actions/upload-artifact@v4 diff --git a/.gitmodules b/.gitmodules index 415ac204..51e8e255 100644 --- a/.gitmodules +++ b/.gitmodules @@ -24,10 +24,6 @@ url = git@github.com:aws/private-amazon-s3-encryption-client-java-staging.git branch = imabhichow/add-kc ; branch = s3ec/improved -[submodule "test-server/java-v4-server/specification"] - path = test-server/java-v4-server/specification - url = git@github.com:awslabs/private-aws-encryption-sdk-specification-staging.git - branch = fire-egg-staging [submodule "test-server/specification"] path = test-server/specification url = git@github.com:awslabs/private-aws-encryption-sdk-specification-staging.git @@ -56,6 +52,17 @@ path = test-server/net-v3-transition-server/s3ec-v3-transition-branch url = https://github.com/aws/private-amazon-s3-encryption-client-dotnet-staging.git branch = rishav/key-commitment +[submodule "test-server/cpp-v2-transition-server/aws-sdk-cpp"] + path = test-server/cpp-v2-transition-server/aws-sdk-cpp + url = git@github.com:awslabs/aws-sdk-cpp-staging.git + branch = fire-egg-dev +[submodule "test-server/cpp-v3-server/aws-sdk-cpp"] + path = test-server/cpp-v3-server/aws-sdk-cpp + url = git@github.com:awslabs/aws-sdk-cpp-staging.git + branch = fire-egg-dev +[submodule "test-server/cpp-v2-server/aws-sdk-cpp"] + path = test-server/cpp-v2-server/aws-sdk-cpp + url = git@github.com:awslabs/aws-sdk-cpp-staging.git [submodule "all-examples/net/v4/s3ec-v4-local"] path = all-examples/net/v4/s3ec-v4-local url = https://github.com/aws/private-amazon-s3-encryption-client-dotnet-staging.git diff --git a/test-server/Makefile b/test-server/Makefile index dc3bdad3..9b18b857 100644 --- a/test-server/Makefile +++ b/test-server/Makefile @@ -6,15 +6,36 @@ all: start-all-servers wait-all-servers run-tests # CI target for GitHub Actions -ci: start-servers run-tests stop-servers +ci: + $(MAKE) build-all-servers + $(MAKE) start-all-servers + $(MAKE) wait-all-servers + $(MAKE) run-tests + $(MAKE) stop-servers SERVER_DIRS := $(shell find . -maxdepth 1 -type d -name '*-server' | sed 's|^\./||' | $(if $(FILTER),grep -E "$$(echo '$(FILTER)' | sed 's/,/|/g')",cat) | sort) +BUILD_SERVER_TARGETS := $(addprefix build-, $(SERVER_DIRS)) START_SERVER_TARGETS := $(addprefix start-, $(SERVER_DIRS)) WAIT_SERVER_TARGETS := $(addprefix wait-, $(SERVER_DIRS)) -# Start all servers in parallel +# Build all servers in parallel +build-all-servers: export MAKEFLAGS=-j$(shell sysctl -n hw.ncpu 2>/dev/null || nproc 2>/dev/null || echo 1) +build-all-servers: $(BUILD_SERVER_TARGETS) + +$(BUILD_SERVER_TARGETS): build-%: + @if [ -f $*/Makefile ]; then \ + echo "Building server in $*..."; \ + $(MAKE) -C $* build-server; \ + else \ + echo "❌ Error: no Makefile found in $*"; \ + exit 1; \ + fi + +# Build and start all servers start-servers: + @echo "Building all servers..." + $(MAKE) build-all-servers @echo "Starting all servers..." $(MAKE) start-all-servers @echo "Waiting for servers to start..." @@ -23,7 +44,9 @@ start-servers: $(MAKE) -C $$dir wait-for-server; \ done -start-all-servers: $(START_SERVER_TARGETS) +# Start servers sequentially (no parallel execution) +start-all-servers: + @$(MAKE) MAKEFLAGS= $(START_SERVER_TARGETS) $(START_SERVER_TARGETS): start-%: @if [ -f $*/Makefile ]; then \ @@ -32,9 +55,12 @@ $(START_SERVER_TARGETS): start-%: else \ echo "❌ Error: no Makefile found in $*"; \ exit 1; \ - fi; \ + fi; -wait-all-servers: $(WAIT_SERVER_TARGETS) +wait-all-servers: + @echo "Waiting for all servers to be ready..." + $(MAKE) $(WAIT_SERVER_TARGETS) + @echo "All servers are ready!" $(WAIT_SERVER_TARGETS): wait-%: @if [ -f $*/Makefile ]; then \ @@ -43,7 +69,7 @@ $(WAIT_SERVER_TARGETS): wait-%: else \ echo "❌ Error: no Makefile found in $*"; \ exit 1; \ - fi; \ + fi; # Run the Java tests @@ -63,7 +89,7 @@ run-tests: stop-servers: @echo "Stopping servers..." @for dir in $(SERVER_DIRS); do \ - echo "Starting server in $$dir..."; \ + echo "Stopping server in $$dir..."; \ $(MAKE) -C $$dir stop-server; \ done @echo "Servers stopped" @@ -94,6 +120,7 @@ wait-for-port: echo "❌ Error: PORT is required"; \ exit 1; \ fi + @echo "Starting to wait for $$PORT to start"; @for i in $$(seq 1 $(TIMEOUT)); do \ if nc -z localhost $$PORT; then \ echo "Ports are open, waiting for servers to initialize..."; \ diff --git a/test-server/cpp-v2-server/Makefile b/test-server/cpp-v2-server/Makefile index 9e0f04b1..77357c37 100644 --- a/test-server/cpp-v2-server/Makefile +++ b/test-server/cpp-v2-server/Makefile @@ -1,31 +1,38 @@ # Makefile for S3 Encryption Client Testing -.PHONY: start-server stop-server wait-for-server +.PHONY: build-server start-server stop-server wait-for-server PID_FILE := server.pid PORT := 8085 -build/s3ec-server: - brew install libmicrohttpd nlohmann-json ossp-uuid - git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp.git +build/s3ec-server: cd aws-sdk-cpp mkdir -p build && cd build && cmake .. -start-server: | build/s3ec-server +build-server: | build/s3ec-server + @echo "Building Cpp V2 server..." + cd build && make + +start-server: @echo "Starting Cpp V2 server..." - cd build && make && \ + cd build && \ 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" \ - ./s3ec-server & echo $$! > $(PID_FILE) + ./s3ec-server > server.log 2>&1 & echo $$! > ../$(PID_FILE) @echo "Cpp V2 server starting..." stop-server: + @echo "Stopping server on port $(PORT)..." + @lsof -ti:$(PORT) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE) ]; then \ - kill $$(cat $(PID_FILE)) 2>/dev/null || true; \ - rm $(PID_FILE); \ + pkill -P $$(cat $(PID_FILE)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE)) 2>/dev/null || true; \ + rm -f $(PID_FILE); \ fi + @rm -f build/server.log + @echo "Server stopped" wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT) diff --git a/test-server/cpp-v2-server/aws-sdk-cpp b/test-server/cpp-v2-server/aws-sdk-cpp new file mode 160000 index 00000000..994384ca --- /dev/null +++ b/test-server/cpp-v2-server/aws-sdk-cpp @@ -0,0 +1 @@ +Subproject commit 994384ca8b9defe2ae60b5d3447ec5f47f7ec19f diff --git a/test-server/cpp-v2-transition-server/Makefile b/test-server/cpp-v2-transition-server/Makefile index 05803c78..16b70796 100644 --- a/test-server/cpp-v2-transition-server/Makefile +++ b/test-server/cpp-v2-transition-server/Makefile @@ -1,29 +1,37 @@ # Makefile for S3 Encryption Client Testing -.PHONY: start-server stop-server wait-for-server +.PHONY: build-server start-server stop-server wait-for-server PID_FILE := server.pid PORT := 8097 build/s3ec-server: - brew install libmicrohttpd nlohmann-json ossp-uuid mkdir -p build && cd build && cmake .. -start-server: | build/s3ec-server - @echo "Starting Cpp V2 server..." - cd build && make && \ +build-server: | build/s3ec-server + @echo "Building Cpp transition server..." + cd build && make + +start-server: + @echo "Starting Cpp transition server..." + cd build && \ 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" \ - ./s3ec-server & echo $$! > $(PID_FILE) - @echo "Cpp V2 server starting..." + ./s3ec-server > server.log 2>&1 & echo $$! > ../$(PID_FILE) + @echo "Cpp transition server starting..." stop-server: + @echo "Stopping server on port $(PORT)..." + @lsof -ti:$(PORT) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE) ]; then \ - kill $$(cat $(PID_FILE)) 2>/dev/null || true; \ - rm $(PID_FILE); \ + pkill -P $$(cat $(PID_FILE)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE)) 2>/dev/null || true; \ + rm -f $(PID_FILE); \ fi + @rm -f build/server.log + @echo "Server stopped" wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT) diff --git a/test-server/cpp-v2-transition-server/aws-sdk-cpp b/test-server/cpp-v2-transition-server/aws-sdk-cpp new file mode 160000 index 00000000..9a368aa8 --- /dev/null +++ b/test-server/cpp-v2-transition-server/aws-sdk-cpp @@ -0,0 +1 @@ +Subproject commit 9a368aa8f6bbcd75eb1180d5d76d41936c68ed6a diff --git a/test-server/cpp-v3-server/Makefile b/test-server/cpp-v3-server/Makefile index 86fc285e..46f0c9db 100644 --- a/test-server/cpp-v3-server/Makefile +++ b/test-server/cpp-v3-server/Makefile @@ -1,29 +1,37 @@ # Makefile for S3 Encryption Client Testing -.PHONY: start-server stop-server wait-for-server +.PHONY: build-server start-server stop-server wait-for-server PID_FILE := server.pid PORT := 8091 build/s3ec-server: - brew install libmicrohttpd nlohmann-json ossp-uuid mkdir -p build && cd build && cmake .. -start-server: | build/s3ec-server - @echo "Starting Cpp V2 server..." - cd build && make && \ +build-server: | build/s3ec-server + @echo "Building Cpp V3 server..." + cd build && make + +start-server: + @echo "Starting Cpp V3 server..." + cd build && \ 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" \ - ./s3ec-server & echo $$! > $(PID_FILE) - @echo "Cpp V2 server starting..." + ./s3ec-server > server.log 2>&1 & echo $$! > ../$(PID_FILE) + @echo "Cpp V3 server starting..." stop-server: + @echo "Stopping server on port $(PORT)..." + @lsof -ti:$(PORT) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE) ]; then \ - kill $$(cat $(PID_FILE)) 2>/dev/null || true; \ - rm $(PID_FILE); \ + pkill -P $$(cat $(PID_FILE)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE)) 2>/dev/null || true; \ + rm -f $(PID_FILE); \ fi + @rm -f build/server.log + @echo "Server stopped" wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT) diff --git a/test-server/cpp-v3-server/aws-sdk-cpp b/test-server/cpp-v3-server/aws-sdk-cpp new file mode 160000 index 00000000..9a368aa8 --- /dev/null +++ b/test-server/cpp-v3-server/aws-sdk-cpp @@ -0,0 +1 @@ +Subproject commit 9a368aa8f6bbcd75eb1180d5d76d41936c68ed6a diff --git a/test-server/go-v3-server/Makefile b/test-server/go-v3-server/Makefile index fb61e578..80928dbd 100644 --- a/test-server/go-v3-server/Makefile +++ b/test-server/go-v3-server/Makefile @@ -1,25 +1,33 @@ # Makefile for S3 Encryption Client Testing -.PHONY: start-server stop-server wait-for-server +.PHONY: build-server start-server stop-server wait-for-server PID_FILE := server.pid PORT := 8082 +build-server: + @echo "Building Go V3 server..." + go mod tidy + start-server: @echo "Starting 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 $$! > $(PID_FILE) + go run . > server.log 2>&1 & echo $$! > $(PID_FILE) @echo "Go V3 server starting..." stop-server: + @echo "Stopping server on port $(PORT)..." + @lsof -ti:$(PORT) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE) ]; then \ - kill $$(cat $(PID_FILE)) 2>/dev/null || true; \ - rm $(PID_FILE); \ + pkill -P $$(cat $(PID_FILE)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE)) 2>/dev/null || true; \ + rm -f $(PID_FILE); \ fi + @rm -f server.log + @echo "Server stopped" wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT) diff --git a/test-server/go-v3-transition-server/Makefile b/test-server/go-v3-transition-server/Makefile index b03ea80b..a254acdf 100644 --- a/test-server/go-v3-transition-server/Makefile +++ b/test-server/go-v3-transition-server/Makefile @@ -1,25 +1,33 @@ # Makefile for S3 Encryption Client Testing -.PHONY: start-server stop-server wait-for-server +.PHONY: build-server start-server stop-server wait-for-server PID_FILE := server.pid PORT := 8095 +build-server: + @echo "Building Go V3 Transition server..." + go mod tidy + start-server: @echo "Starting Go V3 Transition 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 $$! > $(PID_FILE) + go run . > server.log 2>&1 & echo $$! > $(PID_FILE) @echo "Go V3 Transition server starting..." stop-server: + @echo "Stopping server on port $(PORT)..." + @lsof -ti:$(PORT) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE) ]; then \ - kill $$(cat $(PID_FILE)) 2>/dev/null || true; \ - rm $(PID_FILE); \ + pkill -P $$(cat $(PID_FILE)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE)) 2>/dev/null || true; \ + rm -f $(PID_FILE); \ fi + @rm -f server.log + @echo "Server stopped" wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT) diff --git a/test-server/go-v3-transition-server/local-go-s3ec b/test-server/go-v3-transition-server/local-go-s3ec index 7a29344c..85fd30c6 160000 --- a/test-server/go-v3-transition-server/local-go-s3ec +++ b/test-server/go-v3-transition-server/local-go-s3ec @@ -1 +1 @@ -Subproject commit 7a29344cc0c431fd5ac6d0a08ce4db455d75c175 +Subproject commit 85fd30c6a7ebbef3d056991c6f3673e0e9002bcf diff --git a/test-server/go-v4-server/Makefile b/test-server/go-v4-server/Makefile index cfaf32fe..6c549db2 100644 --- a/test-server/go-v4-server/Makefile +++ b/test-server/go-v4-server/Makefile @@ -1,25 +1,33 @@ # Makefile for S3 Encryption Client Testing -.PHONY: start-server stop-server wait-for-server +.PHONY: build-server start-server stop-server wait-for-server PID_FILE := server.pid PORT := 8089 +build-server: + @echo "Building Go V4 server..." + go mod tidy + start-server: @echo "Starting Go V4 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 $$! > $(PID_FILE) + go run . > server.log 2>&1 & echo $$! > $(PID_FILE) @echo "Go V4 server starting..." stop-server: + @echo "Stopping server on port $(PORT)..." + @lsof -ti:$(PORT) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE) ]; then \ - kill $$(cat $(PID_FILE)) 2>/dev/null || true; \ - rm $(PID_FILE); \ + pkill -P $$(cat $(PID_FILE)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE)) 2>/dev/null || true; \ + rm -f $(PID_FILE); \ fi + @rm -f server.log + @echo "Server stopped" wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT) diff --git a/test-server/go-v4-server/local-go-s3ec b/test-server/go-v4-server/local-go-s3ec index 9946186d..85fd30c6 160000 --- a/test-server/go-v4-server/local-go-s3ec +++ b/test-server/go-v4-server/local-go-s3ec @@ -1 +1 @@ -Subproject commit 9946186d6b760074750a535b663d6c84c5815308 +Subproject commit 85fd30c6a7ebbef3d056991c6f3673e0e9002bcf diff --git a/test-server/java-v3-server/Makefile b/test-server/java-v3-server/Makefile index 445be2ac..692e80b3 100644 --- a/test-server/java-v3-server/Makefile +++ b/test-server/java-v3-server/Makefile @@ -1,24 +1,33 @@ # Makefile for S3 Encryption Client Testing -.PHONY: start-server stop-server wait-for-server +.PHONY: build-server start-server stop-server wait-for-server PID_FILE := server.pid PORT := 8080 +build-server: + @echo "Building Java V3 server..." + ./gradlew --build-cache --parallel build + start-server: @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) + ./gradlew --build-cache --parallel run > server.log 2>&1 & echo $$! > $(PID_FILE) @echo "Java V3 server starting..." stop-server: + @echo "Stopping server on port $(PORT)..." + @lsof -ti:$(PORT) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE) ]; then \ - kill $$(cat $(PID_FILE)) 2>/dev/null || true; \ - rm $(PID_FILE); \ + pkill -P $$(cat $(PID_FILE)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE)) 2>/dev/null || true; \ + rm -f $(PID_FILE); \ fi + @rm -f server.log + @echo "Server stopped" wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT) diff --git a/test-server/java-v3-transition-server/.duvet/config.toml b/test-server/java-v3-transition-server/.duvet/config.toml index d07014da..f29cd058 100644 --- a/test-server/java-v3-transition-server/.duvet/config.toml +++ b/test-server/java-v3-transition-server/.duvet/config.toml @@ -5,19 +5,19 @@ pattern = "s3ec-staging/*.java" # Include required specifications here [[specification]] -source = "specification/s3-encryption/client.md" +source = "../specification/s3-encryption/client.md" [[specification]] -source = "specification/s3-encryption/decryption.md" +source = "../specification/s3-encryption/decryption.md" [[specification]] -source = "specification/s3-encryption/encryption.md" +source = "../specification/s3-encryption/encryption.md" [[specification]] -source = "specification/s3-encryption/key-commitment.md" +source = "../specification/s3-encryption/key-commitment.md" [[specification]] -source = "specification/s3-encryption/key-derivation.md" +source = "../specification/s3-encryption/key-derivation.md" [[specification]] -source = "specification/s3-encryption/data-format/content-metadata.md" +source = "../specification/s3-encryption/data-format/content-metadata.md" [[specification]] -source = "specification/s3-encryption/data-format/metadata-strategy.md" +source = "../specification/s3-encryption/data-format/metadata-strategy.md" [report.html] enabled = true diff --git a/test-server/java-v3-transition-server/Makefile b/test-server/java-v3-transition-server/Makefile index 3f0358c9..5a25a8aa 100644 --- a/test-server/java-v3-transition-server/Makefile +++ b/test-server/java-v3-transition-server/Makefile @@ -1,29 +1,36 @@ # Makefile for S3 Encryption Client Testing -.PHONY: start-server stop-server wait-for-server build-s3ec +.PHONY: build-server start-server stop-server wait-for-server PID_FILE := server.pid PORT := 8094 -build-s3ec: +build-server: @echo "Building S3EC from source..." cd s3ec-staging && mvn --batch-mode -no-transfer-progress clean compile && mvn -B -ntp install -DskipTests @echo "S3EC build completed." + @echo "Building Java V3 Transition server..." + ./gradlew --build-cache --parallel build -start-server: build-s3ec +start-server: @echo "Starting Java V3 Transition 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) + ./gradlew --build-cache --parallel run > server.log 2>&1 & echo $$! > $(PID_FILE) @echo "Java V3 Transition server starting..." stop-server: + @echo "Stopping server on port $(PORT)..." + @lsof -ti:$(PORT) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE) ]; then \ - kill $$(cat $(PID_FILE)) 2>/dev/null || true; \ - rm $(PID_FILE); \ + pkill -P $$(cat $(PID_FILE)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE)) 2>/dev/null || true; \ + rm -f $(PID_FILE); \ fi + @rm -f server.log + @echo "Server stopped" wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT) @@ -32,4 +39,4 @@ duvet: duvet report view-report-mac: - open .duvet/reports/report.html \ No newline at end of file + open .duvet/reports/report.html diff --git a/test-server/java-v3-transition-server/specification b/test-server/java-v3-transition-server/specification deleted file mode 120000 index b173f708..00000000 --- a/test-server/java-v3-transition-server/specification +++ /dev/null @@ -1 +0,0 @@ -../specification \ No newline at end of file diff --git a/test-server/java-v4-server/.duvet/config.toml b/test-server/java-v4-server/.duvet/config.toml index d07014da..f29cd058 100644 --- a/test-server/java-v4-server/.duvet/config.toml +++ b/test-server/java-v4-server/.duvet/config.toml @@ -5,19 +5,19 @@ pattern = "s3ec-staging/*.java" # Include required specifications here [[specification]] -source = "specification/s3-encryption/client.md" +source = "../specification/s3-encryption/client.md" [[specification]] -source = "specification/s3-encryption/decryption.md" +source = "../specification/s3-encryption/decryption.md" [[specification]] -source = "specification/s3-encryption/encryption.md" +source = "../specification/s3-encryption/encryption.md" [[specification]] -source = "specification/s3-encryption/key-commitment.md" +source = "../specification/s3-encryption/key-commitment.md" [[specification]] -source = "specification/s3-encryption/key-derivation.md" +source = "../specification/s3-encryption/key-derivation.md" [[specification]] -source = "specification/s3-encryption/data-format/content-metadata.md" +source = "../specification/s3-encryption/data-format/content-metadata.md" [[specification]] -source = "specification/s3-encryption/data-format/metadata-strategy.md" +source = "../specification/s3-encryption/data-format/metadata-strategy.md" [report.html] enabled = true diff --git a/test-server/java-v4-server/Makefile b/test-server/java-v4-server/Makefile index 734a7808..418e0127 100644 --- a/test-server/java-v4-server/Makefile +++ b/test-server/java-v4-server/Makefile @@ -1,29 +1,36 @@ # Makefile for S3 Encryption Client Testing -.PHONY: start-server stop-server wait-for-server build-s3ec +.PHONY: build-server start-server stop-server wait-for-server PID_FILE := server.pid PORT := 8088 -build-s3ec: +build-server: @echo "Building S3EC from source..." cd s3ec-staging && mvn --batch-mode -no-transfer-progress clean compile && mvn -B -ntp install -DskipTests @echo "S3EC build completed." + @echo "Building Java V4 server..." + ./gradlew --build-cache --parallel build -start-server: build-s3ec +start-server: @echo "Starting Java V4 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) + ./gradlew --build-cache --parallel run > server.log 2>&1 & echo $$! > $(PID_FILE) @echo "Java V4 server starting..." stop-server: + @echo "Stopping server on port $(PORT)..." + @lsof -ti:$(PORT) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE) ]; then \ - kill $$(cat $(PID_FILE)) 2>/dev/null || true; \ - rm $(PID_FILE); \ + pkill -P $$(cat $(PID_FILE)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE)) 2>/dev/null || true; \ + rm -f $(PID_FILE); \ fi + @rm -f server.log + @echo "Server stopped" wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT) @@ -32,4 +39,4 @@ duvet: duvet report view-report-mac: - open .duvet/reports/report.html \ No newline at end of file + open .duvet/reports/report.html diff --git a/test-server/java-v4-server/specification b/test-server/java-v4-server/specification deleted file mode 120000 index b173f708..00000000 --- a/test-server/java-v4-server/specification +++ /dev/null @@ -1 +0,0 @@ -../specification \ No newline at end of file diff --git a/test-server/net-v2-v3-server/Makefile b/test-server/net-v2-v3-server/Makefile index e752b925..b50ae4f8 100644 --- a/test-server/net-v2-v3-server/Makefile +++ b/test-server/net-v2-v3-server/Makefile @@ -1,52 +1,58 @@ # Makefile for S3 Encryption Client .NET Testing -.PHONY: start-server stop-server wait-for-server +.PHONY: build-server start-server stop-server wait-for-server PID_FILE_NET_V2 := net-v2-server.pid PID_FILE_NET_V3 := net-v3-server.pid PORT_NET_V2 := 8083 PORT_NET_V3 := 8084 +build-server: + @echo "Building .NET V2 and V3 servers..." + rm -rf obj/v2 bin/v2 obj/v3 bin/v3 + dotnet build -p:S3EncryptionVersion=v2 -o bin/v2 -p:BaseIntermediateOutputPath=obj/v2/ + dotnet build -p:S3EncryptionVersion=v3 -o bin/v3 -p:BaseIntermediateOutputPath=obj/v3/ + start-server: $(MAKE) start-net-v2-server; \ $(MAKE) start-net-v3-server; stop-server: + @echo "Stopping .NET V2 server on port $(PORT_NET_V2)..." + @lsof -ti:$(PORT_NET_V2) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE_NET_V2) ]; then \ - kill $$(cat $(PID_FILE_NET_V2)) 2>/dev/null || true; \ - rm $(PID_FILE_NET_V2); \ + pkill -P $$(cat $(PID_FILE_NET_V2)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE_NET_V2)) 2>/dev/null || true; \ + rm -f $(PID_FILE_NET_V2); \ fi + @rm -f net-v2-server.log + @echo "Stopping .NET V3 server on port $(PORT_NET_V3)..." + @lsof -ti:$(PORT_NET_V3) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE_NET_V3) ]; then \ - kill $$(cat $(PID_FILE_NET_V3)) 2>/dev/null || true; \ - rm $(PID_FILE_NET_V3); \ + pkill -P $$(cat $(PID_FILE_NET_V3)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE_NET_V3)) 2>/dev/null || true; \ + rm -f $(PID_FILE_NET_V3); \ fi + @rm -f net-v3-server.log + @echo "Servers stopped" # Start .NET V2 server in background -# This builds first into bin/v2 and runs through dll -# to avoid simultaneous dotnet run conflict start-net-v2-server: @echo "Starting .NET V2 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" \ - rm -rf obj/v2 bin/v2 && \ - dotnet build -p:S3EncryptionVersion=v2 -o bin/v2 -p:BaseIntermediateOutputPath=obj/v2/ && \ dotnet bin/v2/NetV2V3Server.dll > net-v2-server.log 2>&1 & echo $$! > net-v2-server.pid @echo ".NET V2 server starting..." - # Start .NET V3 server in background -# This builds first into bin/v3 and runs through dll -# to avoid simultaneous dotnet run conflict start-net-v3-server: @echo "Starting .NET 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" \ - rm -rf obj/v3 bin/v3 && \ - dotnet build -p:S3EncryptionVersion=v3 -o bin/v3 -p:BaseIntermediateOutputPath=obj/v3/ && \ dotnet bin/v3/NetV2V3Server.dll > net-v3-server.log 2>&1 & echo $$! > net-v3-server.pid @echo ".NET V3 server starting..." diff --git a/test-server/net-v3-transition-server/Makefile b/test-server/net-v3-transition-server/Makefile index ca863f28..eba78e1c 100644 --- a/test-server/net-v3-transition-server/Makefile +++ b/test-server/net-v3-transition-server/Makefile @@ -1,28 +1,37 @@ # Makefile for S3 Encryption Client .NET Testing -.PHONY: start-server stop-server wait-for-server +.PHONY: build-server start-server stop-server wait-for-server PID_FILE_NET_V3_TRANSITION := net-v3-transition-server.pid PORT_NET_V3_TRANSITION := 8100 +build-server: + @echo "Building .NET V3 transition server..." + dotnet build + start-server: $(MAKE) start-net-v3-transition-server stop-server: + @echo "Stopping .NET V3 Transition server on port $(PORT_NET_V3_TRANSITION)..." + @lsof -ti:$(PORT_NET_V3_TRANSITION) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE_NET_V3_TRANSITION) ]; then \ - kill $$(cat $(PID_FILE_NET_V3_TRANSITION)) 2>/dev/null || true; \ - rm $(PID_FILE_NET_V3_TRANSITION); \ + pkill -P $$(cat $(PID_FILE_NET_V3_TRANSITION)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE_NET_V3_TRANSITION)) 2>/dev/null || true; \ + rm -f $(PID_FILE_NET_V3_TRANSITION); \ fi + @rm -f server.log + @echo "Server stopped" # Start .NET V3 transition server in background start-net-v3-transition-server: - @echo "Starting .NET V3 server..." + @echo "Starting .NET V3 transition 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" \ - dotnet run & echo $! > net-v3-transition-server.pid - @echo ".NET V3 server starting..." + dotnet run > server.log 2>&1 & echo $$! > $(PID_FILE_NET_V3_TRANSITION) + @echo ".NET V3 transition server starting..." wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT_NET_V3_TRANSITION) diff --git a/test-server/net-v3-transition-server/s3ec-v3-transition-branch b/test-server/net-v3-transition-server/s3ec-v3-transition-branch index 56008baf..ae9327f0 160000 --- a/test-server/net-v3-transition-server/s3ec-v3-transition-branch +++ b/test-server/net-v3-transition-server/s3ec-v3-transition-branch @@ -1 +1 @@ -Subproject commit 56008baf1ef63b084a01a30db69af32e870a655b +Subproject commit ae9327f0e21999ac263bc82ae553839230ee9117 diff --git a/test-server/net-v4-server/Makefile b/test-server/net-v4-server/Makefile index 49e4db32..e2df658a 100644 --- a/test-server/net-v4-server/Makefile +++ b/test-server/net-v4-server/Makefile @@ -5,14 +5,23 @@ PID_FILE_NET_V4 := net-V4-server.pid PORT_NET_V4 := 8090 +build-server: + @echo "Building .NET V4 improved server..." + dotnet build + start-server: $(MAKE) start-net-V4-server; stop-server: + @echo "Stopping .NET V4 Improved server on port $(PORT_NET_V4)..." + @lsof -ti:$(PORT_NET_V4) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE_NET_V4) ]; then \ - kill $$(cat $(PID_FILE_NET_V4)) 2>/dev/null || true; \ - rm $(PID_FILE_NET_V4); \ + pkill -P $$(cat $(PID_FILE_NET_V4)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE_NET_V4)) 2>/dev/null || true; \ + rm -f $(PID_FILE_NET_V4); \ fi + @rm -f server.log + @echo "Server stopped" # Start .NET V4 server in background # This builds first into bin/V4 and runs through dll @@ -23,7 +32,7 @@ start-net-V4-server: AWS_SECRET_ACCESS_KEY="$$AWS_SECRET_ACCESS_KEY" \ AWS_SESSION_TOKEN="$$AWS_SESSION_TOKEN" \ AWS_REGION="us-west-2" \ - dotnet run & echo $! > net-v3-transition-server.pid + dotnet run --no-build & echo $! > $(PID_FILE_NET_V4) @echo ".NET V4 server starting..." wait-for-server: diff --git a/test-server/net-v4-server/s3ec-net-v4-improved b/test-server/net-v4-server/s3ec-net-v4-improved index 691d22a5..5178af52 160000 --- a/test-server/net-v4-server/s3ec-net-v4-improved +++ b/test-server/net-v4-server/s3ec-net-v4-improved @@ -1 +1 @@ -Subproject commit 691d22a504184fd71f2dae7fd354bd669b58cc07 +Subproject commit 5178af527160bdb66cdbee4d04faa900bf8032f7 diff --git a/test-server/php-v2-server/Makefile b/test-server/php-v2-server/Makefile index adb63258..a9d04134 100644 --- a/test-server/php-v2-server/Makefile +++ b/test-server/php-v2-server/Makefile @@ -1,24 +1,33 @@ # Makefile for S3 Encryption Client Testing -.PHONY: start-server stop-server wait-for-server +.PHONY: build-server start-server stop-server wait-for-server PID_FILE := server.pid PORT := 8087 +build-server: + @echo "Building PHP V2 server..." + composer install + start-server: @echo "Starting PHP V2 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" \ - composer run start & echo $$! > $(PID_FILE) + composer run start > server.log 2>&1 & echo $$! > $(PID_FILE) @echo "PHP V2 server starting..." stop-server: + @echo "Stopping server on port $(PORT)..." + @lsof -ti:$(PORT) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE) ]; then \ - kill $$(cat $(PID_FILE)) 2>/dev/null || true; \ - rm $(PID_FILE); \ + pkill -P $$(cat $(PID_FILE)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE)) 2>/dev/null || true; \ + rm -f $(PID_FILE); \ fi + @rm -f server.log + @echo "Server stopped" wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT) diff --git a/test-server/php-v2-transition-server/Makefile b/test-server/php-v2-transition-server/Makefile index 2544679d..61eb3a84 100644 --- a/test-server/php-v2-transition-server/Makefile +++ b/test-server/php-v2-transition-server/Makefile @@ -1,24 +1,33 @@ # Makefile for S3 Encryption Client Testing -.PHONY: start-server stop-server wait-for-server +.PHONY: build-server start-server stop-server wait-for-server PID_FILE := server.pid PORT := 8099 +build-server: + @echo "Building PHP V2 Transition server..." + composer install + start-server: @echo "Starting PHP V2 Transition 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" \ - composer run start & echo $$! > $(PID_FILE) + composer run start > server.log 2>&1 & echo $$! > $(PID_FILE) @echo "PHP V2 Transition server starting..." stop-server: + @echo "Stopping server on port $(PORT)..." + @lsof -ti:$(PORT) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE) ]; then \ - kill $$(cat $(PID_FILE)) 2>/dev/null || true; \ - rm $(PID_FILE); \ + pkill -P $$(cat $(PID_FILE)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE)) 2>/dev/null || true; \ + rm -f $(PID_FILE); \ fi + @rm -f server.log + @echo "Server stopped" wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT) diff --git a/test-server/php-v2-transition-server/local-php-sdk b/test-server/php-v2-transition-server/local-php-sdk deleted file mode 120000 index 4610ddb9..00000000 --- a/test-server/php-v2-transition-server/local-php-sdk +++ /dev/null @@ -1 +0,0 @@ -../php-v3-server/local-php-sdk \ No newline at end of file diff --git a/test-server/php-v2-transition-server/local-php-sdk b/test-server/php-v2-transition-server/local-php-sdk new file mode 160000 index 00000000..8e22105d --- /dev/null +++ b/test-server/php-v2-transition-server/local-php-sdk @@ -0,0 +1 @@ +Subproject commit 8e22105d4e10d3410a0d3390b18bad74fe21be00 diff --git a/test-server/php-v2-transition-server/local-php-sdk~fireegg-test-servers b/test-server/php-v2-transition-server/local-php-sdk~fireegg-test-servers new file mode 120000 index 00000000..4610ddb9 --- /dev/null +++ b/test-server/php-v2-transition-server/local-php-sdk~fireegg-test-servers @@ -0,0 +1 @@ +../php-v3-server/local-php-sdk \ No newline at end of file diff --git a/test-server/php-v3-server/Makefile b/test-server/php-v3-server/Makefile index 0ec40802..2b9661f2 100644 --- a/test-server/php-v3-server/Makefile +++ b/test-server/php-v3-server/Makefile @@ -1,24 +1,33 @@ # Makefile for S3 Encryption Client Testing -.PHONY: start-server stop-server wait-for-server +.PHONY: build-server start-server stop-server wait-for-server PID_FILE := server.pid PORT := 8093 +build-server: + @echo "Building PHP V3 server..." + composer install + start-server: @echo "Starting PHP 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" \ - composer run start & echo $$! > $(PID_FILE) + composer run start > server.log 2>&1 & echo $$! > $(PID_FILE) @echo "PHP V3 server starting..." stop-server: + @echo "Stopping server on port $(PORT)..." + @lsof -ti:$(PORT) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE) ]; then \ - kill $$(cat $(PID_FILE)) 2>/dev/null || true; \ - rm $(PID_FILE); \ + pkill -P $$(cat $(PID_FILE)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE)) 2>/dev/null || true; \ + rm -f $(PID_FILE); \ fi + @rm -f server.log + @echo "Server stopped" wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT) diff --git a/test-server/php-v3-server/local-php-sdk b/test-server/php-v3-server/local-php-sdk index 2cb0cda2..8e22105d 160000 --- a/test-server/php-v3-server/local-php-sdk +++ b/test-server/php-v3-server/local-php-sdk @@ -1 +1 @@ -Subproject commit 2cb0cda27812fae3f16e719df4b22b5c08526148 +Subproject commit 8e22105d4e10d3410a0d3390b18bad74fe21be00 diff --git a/test-server/python-v3-server/Makefile b/test-server/python-v3-server/Makefile index 0468dc87..930c950c 100644 --- a/test-server/python-v3-server/Makefile +++ b/test-server/python-v3-server/Makefile @@ -1,28 +1,36 @@ # Makefile for S3 Encryption Client Testing -.PHONY: start-server stop-server wait-for-server +.PHONY: build-server start-server stop-server wait-for-server PID_FILE := server.pid PORT := 8081 -start-server: - @echo "Starting Python V3 server..." +build-server: + @echo "Building Python V3 server..." python -m venv .venv .venv/bin/python -m ensurepip .venv/bin/python -m pip install -e . .venv/bin/python -m pip install -e ../.. + +start-server: + @echo "Starting Python 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" \ - .venv/bin/python src/main.py & echo $$! > $(PID_FILE) + .venv/bin/python src/main.py > server.log 2>&1 & echo $$! > $(PID_FILE) @echo "Python V3 server starting..." stop-server: + @echo "Stopping server on port $(PORT)..." + @lsof -ti:$(PORT) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE) ]; then \ - kill $$(cat $(PID_FILE)) 2>/dev/null || true; \ - rm $(PID_FILE); \ + pkill -P $$(cat $(PID_FILE)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE)) 2>/dev/null || true; \ + rm -f $(PID_FILE); \ fi + @rm -f server.log + @echo "Server stopped" wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT) diff --git a/test-server/ruby-v2-server/Makefile b/test-server/ruby-v2-server/Makefile index f4297eac..e0f938fc 100644 --- a/test-server/ruby-v2-server/Makefile +++ b/test-server/ruby-v2-server/Makefile @@ -1,29 +1,37 @@ # Makefile for S3 Encryption Client Testing -.PHONY: start-server stop-server wait-for-server +.PHONY: build-server start-server stop-server wait-for-server PID_FILE := server.pid PORT := 8098 +build-server: + @echo "Building Ruby V2 server..." + bundle install + start-server: @if [ -f $(PID_FILE) ]; then \ echo "❌ Error: Server already running. Stop before starting."; \ exit 1; \ fi; @echo "Starting Ruby V2 server..." - bundle install 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" \ - PORT=$(PORT) bundle exec ruby app.rb & echo $$! > $(PID_FILE) + PORT=$(PORT) bundle exec ruby app.rb > server.log 2>&1 & echo $$! > $(PID_FILE) @echo "Ruby V2 server starting..." stop-server: + @echo "Stopping server on port $(PORT)..." + @lsof -ti:$(PORT) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE) ]; then \ - kill $$(cat $(PID_FILE)) 2>/dev/null || true; \ - rm $(PID_FILE); \ + pkill -P $$(cat $(PID_FILE)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE)) 2>/dev/null || true; \ + rm -f $(PID_FILE); \ fi + @rm -f server.log + @echo "Server stopped" wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT) diff --git a/test-server/ruby-v2-server/local-ruby-sdk b/test-server/ruby-v2-server/local-ruby-sdk index 9bffb525..582e0241 160000 --- a/test-server/ruby-v2-server/local-ruby-sdk +++ b/test-server/ruby-v2-server/local-ruby-sdk @@ -1 +1 @@ -Subproject commit 9bffb525765b2aeebd6203072bf6e94d2ab53f90 +Subproject commit 582e02418ac2c5540c48dd089a7db506712e6f94 diff --git a/test-server/ruby-v3-server/Makefile b/test-server/ruby-v3-server/Makefile index ec463bad..331abac5 100644 --- a/test-server/ruby-v3-server/Makefile +++ b/test-server/ruby-v3-server/Makefile @@ -1,29 +1,37 @@ # Makefile for S3 Encryption Client Testing -.PHONY: start-server stop-server wait-for-server +.PHONY: build-server start-server stop-server wait-for-server PID_FILE := server.pid PORT := 8092 +build-server: + @echo "Building Ruby V3 server..." + bundle install + start-server: @if [ -f $(PID_FILE) ]; then \ echo "❌ Error: Server already running. Stop before starting."; \ exit 1; \ fi; @echo "Starting Ruby V3 server..." - bundle install 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" \ - PORT=$(PORT) bundle exec ruby app.rb & echo $$! > $(PID_FILE) + PORT=$(PORT) bundle exec ruby app.rb > server.log 2>&1 & echo $$! > $(PID_FILE) @echo "Ruby V3 server starting..." stop-server: + @echo "Stopping server on port $(PORT)..." + @lsof -ti:$(PORT) | xargs kill -9 2>/dev/null || true @if [ -f $(PID_FILE) ]; then \ - kill $$(cat $(PID_FILE)) 2>/dev/null || true; \ - rm $(PID_FILE); \ + pkill -P $$(cat $(PID_FILE)) 2>/dev/null || true; \ + kill -9 $$(cat $(PID_FILE)) 2>/dev/null || true; \ + rm -f $(PID_FILE); \ fi + @rm -f server.log + @echo "Server stopped" wait-for-server: $(MAKE) -C .. wait-for-port PORT=$(PORT) diff --git a/test-server/ruby-v3-server/local-ruby-sdk b/test-server/ruby-v3-server/local-ruby-sdk index 9bffb525..582e0241 160000 --- a/test-server/ruby-v3-server/local-ruby-sdk +++ b/test-server/ruby-v3-server/local-ruby-sdk @@ -1 +1 @@ -Subproject commit 9bffb525765b2aeebd6203072bf6e94d2ab53f90 +Subproject commit 582e02418ac2c5540c48dd089a7db506712e6f94 diff --git a/test-server/specification b/test-server/specification index 129b9c5e..1f1ae8bb 160000 --- a/test-server/specification +++ b/test-server/specification @@ -1 +1 @@ -Subproject commit 129b9c5e53a8c4f6be10a52c9d3dcdf765000d78 +Subproject commit 1f1ae8bb2b7b082b87ffbf4916a9723e531b2052