aboutsummaryrefslogtreecommitdiff
path: root/script/test-smoke.sh
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2021-04-28 11:35:10 +0200
committerQuentin Dufour <quentin@deuxfleurs.fr>2021-05-02 14:59:58 +0200
commitef4d6e782a67bd422489d643e8807eaf7fb853c4 (patch)
treeafb0e2c60837e52e808002fc643a2c87ed2c4c93 /script/test-smoke.sh
parenta981244f11af13f3dcebb9f399ab18d7e484014f (diff)
downloadgarage-ef4d6e782a67bd422489d643e8807eaf7fb853c4.tar.gz
garage-ef4d6e782a67bd422489d643e8807eaf7fb853c4.zip
Add minio & rclone to our functional teststest/more-clients
It is now possible to configure which clients you do not want to test with the env variable SKIP_XXX=1, XXX being the client name. eg. SKIP_S3CMD=1 ./script/test-smoke.sh
Diffstat (limited to 'script/test-smoke.sh')
-rwxr-xr-xscript/test-smoke.sh133
1 files changed, 81 insertions, 52 deletions
diff --git a/script/test-smoke.sh b/script/test-smoke.sh
index 16ab3807..e8d41ed3 100755
--- a/script/test-smoke.sh
+++ b/script/test-smoke.sh
@@ -1,22 +1,23 @@
#!/bin/bash
set -ex
-shopt -s expand_aliases
export LC_ALL=C.UTF-8
export LANG=C.UTF-8
SCRIPT_FOLDER="`dirname \"$0\"`"
REPO_FOLDER="${SCRIPT_FOLDER}/../"
+GARAGE_DEBUG="${REPO_FOLDER}/target/debug/"
+GARAGE_RELEASE="${REPO_FOLDER}/target/release/"
+PATH="${GARAGE_DEBUG}:${GARAGE_RELEASE}:$PATH"
-echo "setup"
+echo "⏳ Setup"
cargo build
${SCRIPT_FOLDER}/dev-clean.sh
${SCRIPT_FOLDER}/dev-cluster.sh > /tmp/garage.log 2>&1 &
${SCRIPT_FOLDER}/dev-configure.sh
${SCRIPT_FOLDER}/dev-bucket.sh
-source ${SCRIPT_FOLDER}/dev-env-aws.sh
-source ${SCRIPT_FOLDER}/dev-env-s3cmd.sh
+which garage
garage status
garage key list
garage bucket list
@@ -25,58 +26,86 @@ dd if=/dev/urandom of=/tmp/garage.1.rnd bs=1k count=2 # No multipart, inline sto
dd if=/dev/urandom of=/tmp/garage.2.rnd bs=1M count=5 # No multipart but file will be chunked
dd if=/dev/urandom of=/tmp/garage.3.rnd bs=1M count=10 # by default, AWS starts using multipart at 8MB
-echo "s3 api testing..."
-awsgrg --version
-s3cmd --version
-python3 --version
+echo "🧪 S3 API testing..."
+
+# AWS
+if [ -z "$SKIP_AWS" ]; then
+ echo "🛠️ Testing with awscli"
+ source ${SCRIPT_FOLDER}/dev-env-aws.sh
+ for idx in $(seq 1 3); do
+ aws s3 cp "/tmp/garage.$idx.rnd" "s3://eprouvette/&+-é\"/garage.$idx.aws"
+ aws s3 ls s3://eprouvette
+ aws s3 cp "s3://eprouvette/&+-é\"/garage.$idx.aws" "/tmp/garage.$idx.dl"
+ diff /tmp/garage.$idx.rnd /tmp/garage.$idx.dl
+ rm /tmp/garage.$idx.dl
+ aws s3 rm "s3://eprouvette/&+-é\"/garage.$idx.aws"
+ done
+fi
+
+# S3CMD
+if [ -z "$SKIP_S3CMD" ]; then
+ echo "🛠️ Testing with s3cmd"
+ source ${SCRIPT_FOLDER}/dev-env-s3cmd.sh
+ for idx in $(seq 1 3); do
+ s3cmd put "/tmp/garage.$idx.rnd" "s3://eprouvette/&+-é\"/garage.$idx.s3cmd"
+ s3cmd ls s3://eprouvette
+ s3cmd get "s3://eprouvette/&+-é\"/garage.$idx.s3cmd" "/tmp/garage.$idx.dl"
+ diff /tmp/garage.$idx.rnd /tmp/garage.$idx.dl
+ rm /tmp/garage.$idx.dl
+ s3cmd rm "s3://eprouvette/&+-é\"/garage.$idx.s3cmd"
+ done
+fi
+
+# Minio Client
+if [ -z "$SKIP_MC" ]; then
+ echo "🛠️ Testing with mc (minio client)"
+ source ${SCRIPT_FOLDER}/dev-env-mc.sh
+ for idx in $(seq 1 3); do
+ mc cp "/tmp/garage.$idx.rnd" "garage/eprouvette/&+-é\"/garage.$idx.mc"
+ mc ls garage/eprouvette
+ mc cp "garage/eprouvette/&+-é\"/garage.$idx.mc" "/tmp/garage.$idx.dl"
+ diff /tmp/garage.$idx.rnd /tmp/garage.$idx.dl
+ rm /tmp/garage.$idx.dl
+ mc rm "garage/eprouvette/&+-é\"/garage.$idx.mc"
+ done
+fi
+
+# RClone
+if [ -z "$SKIP_RCLONE" ]; then
+ echo "🛠️ Testing with rclone"
+ source ${SCRIPT_FOLDER}/dev-env-rclone.sh
+ for idx in $(seq 1 3); do
+ cp /tmp/garage.$idx.rnd /tmp/garage.$idx.dl
+ rclone copy "/tmp/garage.$idx.dl" "garage:eprouvette/&+-é\"/"
+ rm /tmp/garage.$idx.dl
+ rclone ls garage:eprouvette
+ rclone copy "garage:eprouvette/&+-é\"/garage.$idx.dl" "/tmp/"
+ diff /tmp/garage.$idx.rnd /tmp/garage.$idx.dl
+ rm /tmp/garage.$idx.dl
+ rclone delete "garage:eprouvette/&+-é\"/garage.$idx.dl"
+ done
+fi
-for idx in $(seq 1 3); do
- # AWS sends
- awsgrg cp "/tmp/garage.$idx.rnd" "s3://eprouvette/&+-é\"/garage.$idx.aws"
-
- awsgrg ls s3://eprouvette
-
- awsgrg cp "s3://eprouvette/&+-é\"/garage.$idx.aws" "/tmp/garage.$idx.dl"
- diff /tmp/garage.$idx.rnd /tmp/garage.$idx.dl
- rm /tmp/garage.$idx.dl
-
- s3grg get "s3://eprouvette/&+-é\"/garage.$idx.aws" "/tmp/garage.$idx.dl"
- diff /tmp/garage.$idx.rnd /tmp/garage.$idx.dl
- rm /tmp/garage.$idx.dl
-
- awsgrg rm "s3://eprouvette/&+-é\"/garage.$idx.aws"
-
- # S3CMD sends
- s3grg put "/tmp/garage.$idx.rnd" "s3://eprouvette/&+-é\"/garage.$idx.s3cmd"
-
- s3grg ls s3://eprouvette
-
- s3grg get "s3://eprouvette/&+-é\"/garage.$idx.s3cmd" "/tmp/garage.$idx.dl"
- diff /tmp/garage.$idx.rnd /tmp/garage.$idx.dl
- rm /tmp/garage.$idx.dl
-
- awsgrg cp "s3://eprouvette/&+-é\"/garage.$idx.s3cmd" "/tmp/garage.$idx.dl"
- diff /tmp/garage.$idx.rnd /tmp/garage.$idx.dl
- rm /tmp/garage.$idx.dl
-
- s3grg rm "s3://eprouvette/&+-é\"/garage.$idx.s3cmd"
-done
rm /tmp/garage.{1,2,3}.rnd
-echo "website testing"
-echo "<h1>hello world</h1>" > /tmp/garage-index.html
-awsgrg cp /tmp/garage-index.html s3://eprouvette/index.html
-[ `curl -s -o /dev/null -w "%{http_code}" --header "Host: eprouvette.garage.tld" http://127.0.0.1:3923/ ` == 404 ]
-garage bucket website --allow eprouvette
-[ `curl -s -o /dev/null -w "%{http_code}" --header "Host: eprouvette.garage.tld" http://127.0.0.1:3923/ ` == 200 ]
-garage bucket website --deny eprouvette
-[ `curl -s -o /dev/null -w "%{http_code}" --header "Host: eprouvette.garage.tld" http://127.0.0.1:3923/ ` == 404 ]
-awsgrg rm s3://eprouvette/index.html
-rm /tmp/garage-index.html
-
-echo "teardown"
+if [ -z "$SKIP_AWS" ]; then
+ echo "🧪 Website Testing"
+ echo "<h1>hello world</h1>" > /tmp/garage-index.html
+ aws s3 cp /tmp/garage-index.html s3://eprouvette/index.html
+ [ `curl -s -o /dev/null -w "%{http_code}" --header "Host: eprouvette.garage.tld" http://127.0.0.1:3923/ ` == 404 ]
+ garage bucket website --allow eprouvette
+ [ `curl -s -o /dev/null -w "%{http_code}" --header "Host: eprouvette.garage.tld" http://127.0.0.1:3923/ ` == 200 ]
+ garage bucket website --deny eprouvette
+ [ `curl -s -o /dev/null -w "%{http_code}" --header "Host: eprouvette.garage.tld" http://127.0.0.1:3923/ ` == 404 ]
+ aws s3 rm s3://eprouvette/index.html
+ rm /tmp/garage-index.html
+fi
+
+echo "🏁 Teardown"
+AWS_ACCESS_KEY_ID=`cat /tmp/garage.s3 |cut -d' ' -f1`
+AWS_SECRET_ACCESS_KEY=`cat /tmp/garage.s3 |cut -d' ' -f2`
garage bucket deny --read --write eprouvette --key $AWS_ACCESS_KEY_ID
garage bucket delete --yes eprouvette
garage key delete --yes $AWS_ACCESS_KEY_ID
-echo "success"
+echo "✅ Success"