All Projects → minio → mint

minio / mint

Licence: Apache-2.0 license
Collection of tests to detect overall correctness of MinIO server.

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects
java
68154 projects - #9 most used programming language
PHP
23972 projects - #3 most used programming language
python
139335 projects - #7 most used programming language
ruby
36898 projects - #4 most used programming language

Mint Slack Podman Pulls

Mint is a testing framework for Minio object server, available as a podman image. It runs correctness, benchmarking and stress tests. Following are the SDKs/tools used in correctness tests.

  • awscli
  • aws-sdk-go
  • aws-sdk-php
  • aws-sdk-ruby
  • aws-sdk-java
  • mc
  • minio-go
  • minio-java
  • minio-js
  • minio-py
  • minio-dotnet
  • s3cmd

Running Mint

Mint is run by podman run command which requires Podman to be installed. For Podman installation follow the steps here.

To run Mint with Minio Play server as test target,

$ podman run -e SERVER_ENDPOINT=play.minio.io:9000 -e ACCESS_KEY=Q3AM3UQ867SPQQA43P2F \
             -e SECRET_KEY=zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG -e ENABLE_HTTPS=1 minio/mint

After the tests are run, output is stored in /mint/log directory inside the container. To get these logs, use podman cp command. For example

podman cp <container-id>:/mint/log /tmp/logs

Mint environment variables

Below environment variables are required to be passed to the podman container. Supported environment variables:

Environment variable Description Example
SERVER_ENDPOINT Endpoint of Minio server in the format HOST:PORT; for virtual style IP:PORT play.minio.io:9000
ACCESS_KEY Access key for SERVER_ENDPOINT credentials Q3AM3UQ867SPQQA43P2F
SECRET_KEY Secret Key for SERVER_ENDPOINT credentials zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG
ENABLE_HTTPS (Optional) Set 1 to indicate to use HTTPS to access SERVER_ENDPOINT. Defaults to 0 (HTTP) 1
MINT_MODE (Optional) Set mode indicating what category of tests to be run by values core, full. Defaults to core full
DOMAIN (Optional) Value of MINIO_DOMAIN environment variable used in Minio server myminio.com
ENABLE_VIRTUAL_STYLE (Optional) Set 1 to indicate virtual style access . Defaults to 0 (Path style) 1
RUN_ON_FAIL (Optional) Set 1 to indicate execute all tests independent of failures (currently implemented for minio-go and minio-java) . Defaults to 0 1
SERVER_REGION (Optional) Set custom region for region specific tests us-west-1

Test virtual style access against Minio server

To test Minio server virtual style access with Mint, follow these steps:

  • Set a domain in your Minio server using environment variable MINIO_DOMAIN. For example export MINIO_DOMAIN=myminio.com.
  • Start Minio server.
  • Execute Mint against Minio server (with MINIO_DOMAIN set to myminio.com) using this command
$ podman run -e "SERVER_ENDPOINT=192.168.86.133:9000" -e "DOMAIN=minio.com"  \
	     -e "ACCESS_KEY=minio" -e "SECRET_KEY=minio123" -e "ENABLE_HTTPS=0" \
	     -e "ENABLE_VIRTUAL_STYLE=1" minio/mint

Mint log format

All test logs are stored in /mint/log/log.json as multiple JSON document. Below is the JSON format for every entry in the log file.

JSON field Type Description Example
name string Testing tool/SDK name "aws-sdk-php"
function string Test function name "getBucketLocation ( array $params = [] )"
args object (Optional) Key/Value map of arguments passed to test function {"Bucket":"aws-sdk-php-bucket-20341"}
duration int Time taken in milliseconds to run the test 384
status string one of PASS, FAIL or NA "PASS"
alert string (Optional) Alert message indicating test failure "I/O error on create file"
message string (Optional) Any log message "validating checksum of downloaded object"
error string Detailed error message including stack trace on status FAIL "Error executing \"CompleteMultipartUpload\" on ...

For Developers

Running Mint development code

After making changes to Mint source code a local podman image can be built/run by

$ podman build -t minio/mint . -f Dockerfile
$ podman run -e SERVER_ENDPOINT=play.minio.io:9000 -e ACCESS_KEY=Q3AM3UQ867SPQQA43P2F \
             -e SECRET_KEY=zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG \
             -e ENABLE_HTTPS=1 -e MINT_MODE=full minio/mint:latest

Adding tests with new tool/SDK

Below are the steps need to be followed

  • Create new app directory under build and run/core directories.
  • Create install.sh which does installation of required tool/SDK under app directory.
  • Any build and install time dependencies should be added to install-packages.list.
  • Build time dependencies should be added to remove-packages.list for removal to have clean Mint podman image.
  • Add run.sh in app directory under run/core which execute actual tests.

Test data

Tests may use pre-created data set to perform various object operations on Minio server. Below data files are available under /mint/data directory.

File name Size
datafile-0-b 0B
datafile-1-b 1B
datafile-1-kB 1KiB
datafile-10-kB 10KiB
datafile-33-kB 33KiB
datafile-100-kB 100KiB
datafile-1-MB 1MiB
datafile-1.03-MB 1.03MiB
datafile-5-MB 5MiB
datafile-6-MB 6MiB
datafile-10-MB 10MiB
datafile-11-MB 11MiB
datafile-65-MB 65MiB
datafile-129-MB 129MiB
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].