GithubHelp home page GithubHelp logo

isabella232 / mint Goto Github PK

View Code? Open in Web Editor NEW

This project forked from minio/mint

0.0 0.0 0.0 4.41 MB

Collection of tests to detect overall correctness of MinIO server.

Shell 39.96% PHP 14.22% Ruby 11.66% JavaScript 0.69% Go 15.48% Java 17.82% Dockerfile 0.17%

mint's Introduction

This project is deprecated all code has been moved to https://github.com/minio/minio/tree/master/mint

Mint Slack Docker Pulls

Mint is a testing framework for Minio object server, available as a docker 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
  • worm

Running Mint

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

To run Mint with Minio Play server as test target,

$ docker 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 docker cp command. For example

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

Mint environment variables

Below environment variables are required to be passed to the docker 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 of access SERVER_ENDPOINT Q3AM3UQ867SPQQA43P2F
SECRET_KEY Secret Key of access SERVER_ENDPOINT 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 or worm. 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

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
$ docker 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 docker image can be built/run by

$ docker build -t minio/mint . -f Dockerfile.dev
$ docker 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

In case of Worm Mode, start your server with configuration MINT_MODE set to worm. Build/Run of local docker image for Worm mode, is to be tested against your server configuration, by

### Adding tests with new tool/SDK

Below are the steps need to be followed

* Create new app directory under [build](https://github.com/minio/mint/tree/master/build) and [run/core](https://github.com/minio/mint/tree/master/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](https://github.com/minio/mint/blob/master/install-packages.list).
* Build time dependencies should be added to [remove-packages.list](https://github.com/minio/mint/blob/master/remove-packages.list) for removal to have clean Mint docker 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 |

mint's People

Contributors

balamurugana avatar cartermcclellan avatar deekoder avatar donatello avatar ebozduman avatar halfcrazy avatar harshavardhana avatar kannappanr avatar krisis avatar nitisht avatar poornas avatar praveenrajmani avatar sinhaashish avatar vadmeste avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.