This directory contains comprehensive integration tests for SeaweedFS S3 Server-Side Encryption with Key Management Service (SSE-KMS) using OpenBao as the KMS provider.
The integration tests verify that SeaweedFS can:
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ S3 Client โ โ SeaweedFS โ โ OpenBao โ
โ โ โ S3 API โ โ KMS โ
โโโโโโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโโโโค
โ PUT /object โโโโโถโ SSE-KMS Handler โโโโโถโ GenerateDataKey โ
โ SSEKMSKeyId: โ โ โ โ Encrypt โ
โ "test-key-123" โ โ KMS Provider: โ โ Decrypt โ
โ โ โ OpenBao โ โ Transit Engine โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
# Start OpenBao and create encryption keys
make setup-openbao
# Run all SSE-KMS tests with real KMS
make test-ssekms-integration
# Or run the full integration suite
make test-with-kms
# Verify OpenBao and SeaweedFS are running
make status-kms
| Target | Description |
|---|---|
setup-openbao |
Set up OpenBao KMS with test encryption keys |
test-with-kms |
Run all SSE tests with real KMS integration |
test-ssekms-integration |
Run only SSE-KMS tests with OpenBao |
start-full-stack |
Start SeaweedFS + OpenBao with Docker Compose |
stop-full-stack |
Stop all Docker services |
clean-kms |
Clean up KMS test environment |
status-kms |
Check status of KMS and S3 services |
dev-kms |
Set up development environment |
The setup automatically creates these encryption keys in OpenBao:
| Key Name | Purpose |
|---|---|
test-key-123 |
Basic SSE-KMS integration tests |
source-test-key-123 |
Copy operation source key |
dest-test-key-456 |
Copy operation destination key |
test-multipart-key |
Multipart upload tests |
test-kms-range-key |
Range request tests |
seaweedfs-test-key |
General SeaweedFS SSE tests |
bucket-default-key |
Default bucket encryption |
high-security-key |
High security scenarios |
performance-key |
Performance testing |
s3_kms.json){
"kms": {
"default_provider": "openbao-test",
"providers": {
"openbao-test": {
"type": "openbao",
"address": "http://openbao:8200",
"token": "root-token-for-testing",
"transit_path": "transit"
}
},
"buckets": {
"test-sse-kms-basic": {
"provider": "openbao-test"
}
}
}
}
| Variable | Default | Description |
|---|---|---|
OPENBAO_ADDR |
http://127.0.0.1:8200 |
OpenBao server address |
OPENBAO_TOKEN |
root-token-for-testing |
OpenBao root token |
S3_PORT |
8333 |
S3 API port |
TEST_TIMEOUT |
15m |
Test timeout duration |
$ make test-ssekms-integration
Setting up OpenBao for SSE-KMS testing...
โ
OpenBao setup complete!
Starting full SeaweedFS + KMS stack...
โ
Full stack running!
Running SSE-KMS integration tests with OpenBao...
=== RUN TestSSEKMSIntegrationBasic
=== RUN TestSSEKMSOpenBaoIntegration
=== RUN TestSSEKMSOpenBaoAvailability
--- PASS: TestSSEKMSIntegrationBasic (0.26s)
--- PASS: TestSSEKMSOpenBaoIntegration (0.45s)
--- PASS: TestSSEKMSOpenBaoAvailability (0.12s)
โ
SSE-KMS integration tests passed!
# Check OpenBao logs
docker-compose logs openbao
# Verify port availability
lsof -ti :8200
# Check filer logs for KMS errors
docker-compose logs seaweedfs-filer
# Verify KMS configuration
curl http://localhost:8200/v1/sys/health
# Run specific test for debugging
cd ../../../ && go test -v -timeout=30s -run TestSSEKMSOpenBaoAvailability ./test/s3/sse
# Check service status
make status-kms
# Quick setup for development
make dev-kms
# Run specific test during development
go test -v -run TestSSEKMSOpenBaoAvailability ./test/s3/sse
# Full integration test cycle
make clean-kms # Clean environment
make test-with-kms # Run comprehensive tests
make clean-kms # Clean up
# Run KMS performance benchmarks
cd ../kms && make test-benchmark
From benchmark results:
The integration is considered successful when:
This integration demonstrates that SeaweedFS SSE-KMS is production-ready with real KMS providers! ๐