A small project with bash scripts for testing S3 API compability:
test_put_if_match.sh- testsIf-Matchtest_put_if_not_match.sh- testsIf-None-Matchtest_list_order.sh- tests globalLISTorder across pagination for WAL keystest_list_perf.sh- uploads many objects in parallel and measures 3 plainLISTcalls speedtest_put_perf.sh- uploads many small objects in parallel and measures average PUT time per filetest_put_perf_large.sh- sequentially uploads5x10 MiBand5x100 MiBfiles and measures average upload speed
Works with both AWS S3 and S3-compatible providers (MinIO, Ceph RGW, etc.).
awsCLI v2- S3 access (access key, secret key, region)
AWS CLI installation:
- Official install guide (all platforms): https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
- Linux: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#cliv2-linux-install
- macOS: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#cliv2-mac-install
- Windows: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#cliv2-windows-install
- Create
.envfrom the example:
cp .env.example .env- Fill required fields in
.env:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGION
ENDPOINT_URL:
- keep empty for AWS S3
- set URL for S3-compatible service, for example
http://127.0.0.1:9000
Using make:
make test-if-match
make test-if-not-match
make test-list-order
make test-list-perf
make test-put-perf
make test-put-perf-large
make s3-delete-bucketSee in .env.example.
Key variables for list tests:
CATALOG_PREFIXOBJECTS_COUNTOBJECT_KEY_WIDTHPUT_PARALLELISMLIST_RUNSSKIP_PUT_STAGECREATE_BUCKETCLEANUP_BUCKET