A growing test suite for S3-like object storage implementations.
This project uses the load tests framework k6 (extended with some extensions) as the basis to execute test scenarios using popular open source command line tools like aws-cli, rclone, swift-cli as well as the open source k6 module k6-jslib-aws.
This is an early-stage project and the main focus is to test proprietary object storage providers, like AWS and Digital Ocean. But we would like to include open source/self-hosted object storage providers as well, like MinIO and OpenStack Swift, so tests using the mc tool are in the roadmap.
An informal "board" can be viewed here, card descriptions might be mixed in Portuguese and English.
This tool was only tested on Linux machines with just and docker (or podman) installed.
object-storage-tests is available as two docker images:
- tag
latest
is the main tests runner with its commands and requirements. - tag
devshell
is a shell for developers to use it interactively and make contributions.
To run the test against a S3-compatible provider (we call them "remotes"), first
copy the example.config.yaml to config.yaml
and edit it to
include your credentials.
Then list the configured remotes with:
just run list-remotes
And run the tests with:
just run test <remote name>
The output of the tests, metrics and logs are stored in a folder named results
.
Note: if you are inside the devshell, or not using the OCI images, you don't need the word run
(see the "Contributing" section below)
MIT License (c) 2023 Marmotidude and AUTHORS
The easiest way to have a working developing environment is to use the provided dev-shell, using distrobox:
First assemble the distrobox with:
just assemble-dev
Then enter it with
just dev
To run the tests from inside the devshell use:
just test <remote name>
The devshell is a container with all the project tools installed, plus some extra developer tools like a code editor and a nice shell, to know more about this dev image see devshell.Dockerfile.
But you dont have to use it, feel free to install the tools used by this project:
Check Dockerfile for an up-to-date complete list.
- Luizalabs / @kikoreis / @cprov: for sponsoring @fczuardi and for supporting an open culture
- rclone: for being a powerful swiss army knife tool
- Grafana / K6: for open sourcing tools and for fostering a community around them
- NixOs: for planting the reproducible builds seeds
- Universal Blue / @castrojo / Boxkit Alpine: for promoting usability, community-driven projects and showcasing nice tools
- Microsoft / Github: for providing a great platform for developers for free