mirror of
https://github.com/minio/minio.git
synced 2025-11-07 12:52:58 -05:00
add verification tests for ETag on replicated content (#13857)
This commit is contained in:
@@ -28,8 +28,19 @@ set -e
|
||||
export MINIO_BROWSER=off
|
||||
export MINIO_ROOT_USER="minio"
|
||||
export MINIO_ROOT_PASSWORD="minio123"
|
||||
export MINIO_KMS_AUTO_ENCRYPTION=off
|
||||
export MINIO_PROMETHEUS_AUTH_TYPE=public
|
||||
export PATH=${GOPATH}/bin:${PATH}
|
||||
export MINIO_KMS_SECRET_KEY=my-minio-key:OSMM+vkKUTCvQs9YL/CVMIMt43HFhkUpqJxTmGl6rYw=
|
||||
unset MINIO_KMS_KES_CERT_FILE
|
||||
unset MINIO_KMS_KES_KEY_FILE
|
||||
unset MINIO_KMS_KES_ENDPOINT
|
||||
unset MINIO_KMS_KES_KEY_NAME
|
||||
|
||||
go build ./docs/debugging/s3-check-md5/
|
||||
wget -O mc https://dl.minio.io/client/mc/release/linux-amd64/mc \
|
||||
&& chmod +x mc
|
||||
wget -O mc.RELEASE.2021-03-12T03-36-59Z https://dl.minio.io/client/mc/release/linux-amd64/archive/mc.RELEASE.2021-03-12T03-36-59Z \
|
||||
&& chmod +x mc.RELEASE.2021-03-12T03-36-59Z
|
||||
|
||||
minio server --address 127.0.0.1:9001 "http://127.0.0.1:9001/tmp/multisitea/data/disterasure/xl{1...4}" \
|
||||
"http://127.0.0.1:9002/tmp/multisitea/data/disterasure/xl{5...8}" >/tmp/sitea_1.log 2>&1 &
|
||||
@@ -48,172 +59,199 @@ minio server --address 127.0.0.1:9006 "http://127.0.0.1:9005/tmp/multisitec/data
|
||||
|
||||
sleep 30
|
||||
|
||||
mc alias set sitea http://127.0.0.1:9001 minio minio123
|
||||
mc mb sitea/bucket
|
||||
mc version enable sitea/bucket
|
||||
mc mb -l sitea/olockbucket
|
||||
export MC_HOST_sitea=http://minio:minio123@127.0.0.1:9001
|
||||
export MC_HOST_siteb=http://minio:minio123@127.0.0.1:9004
|
||||
export MC_HOST_sitec=http://minio:minio123@127.0.0.1:9006
|
||||
|
||||
mc alias set siteb http://127.0.0.1:9004 minio minio123
|
||||
mc mb siteb/bucket/
|
||||
mc version enable siteb/bucket/
|
||||
mc mb -l siteb/olockbucket/
|
||||
./mc mb sitea/bucket
|
||||
./mc version enable sitea/bucket
|
||||
./mc mb -l sitea/olockbucket
|
||||
|
||||
mc alias set sitec http://127.0.0.1:9006 minio minio123
|
||||
mc mb sitec/bucket/
|
||||
mc version enable sitec/bucket/
|
||||
mc mb -l sitec/olockbucket
|
||||
./mc mb siteb/bucket/
|
||||
./mc version enable siteb/bucket/
|
||||
./mc mb -l siteb/olockbucket/
|
||||
|
||||
./mc mb sitec/bucket/
|
||||
./mc version enable sitec/bucket/
|
||||
./mc mb -l sitec/olockbucket
|
||||
|
||||
echo "adding replication config for site a -> site b"
|
||||
remote_arn=$(mc admin bucket remote add sitea/bucket/ \
|
||||
remote_arn=$(./mc admin bucket remote add sitea/bucket/ \
|
||||
http://minio:minio123@127.0.0.1:9004/bucket \
|
||||
--service "replication" --json | jq -r ".RemoteARN")
|
||||
echo "adding replication rule for a -> b : ${remote_arn}"
|
||||
sleep 1
|
||||
mc replicate add sitea/bucket/ \
|
||||
./mc replicate add sitea/bucket/ \
|
||||
--remote-bucket "${remote_arn}" \
|
||||
--replicate "existing-objects,delete,delete-marker,replica-metadata-sync"
|
||||
sleep 1
|
||||
|
||||
echo "adding replication config for site b -> site a"
|
||||
remote_arn=$(mc admin bucket remote add siteb/bucket/ \
|
||||
remote_arn=$(./mc admin bucket remote add siteb/bucket/ \
|
||||
http://minio:minio123@127.0.0.1:9001/bucket \
|
||||
--service "replication" --json | jq -r ".RemoteARN")
|
||||
sleep 1
|
||||
echo "adding replication rule for b -> a : ${remote_arn}"
|
||||
mc replicate add siteb/bucket/ \
|
||||
./mc replicate add siteb/bucket/ \
|
||||
--remote-bucket "${remote_arn}" \
|
||||
--replicate "existing-objects,delete,delete-marker,replica-metadata-sync"
|
||||
sleep 1
|
||||
|
||||
echo "adding replication config for site a -> site c"
|
||||
remote_arn=$(mc admin bucket remote add sitea/bucket/ \
|
||||
remote_arn=$(./mc admin bucket remote add sitea/bucket/ \
|
||||
http://minio:minio123@127.0.0.1:9006/bucket \
|
||||
--service "replication" --json | jq -r ".RemoteARN")
|
||||
sleep 1
|
||||
echo "adding replication rule for a -> c : ${remote_arn}"
|
||||
mc replicate add sitea/bucket/ \
|
||||
./mc replicate add sitea/bucket/ \
|
||||
--remote-bucket "${remote_arn}" \
|
||||
--replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 2
|
||||
sleep 1
|
||||
echo "adding replication config for site c -> site a"
|
||||
remote_arn=$(mc admin bucket remote add sitec/bucket/ \
|
||||
remote_arn=$(./mc admin bucket remote add sitec/bucket/ \
|
||||
http://minio:minio123@127.0.0.1:9001/bucket \
|
||||
--service "replication" --json | jq -r ".RemoteARN")
|
||||
sleep 1
|
||||
echo "adding replication rule for c -> a : ${remote_arn}"
|
||||
mc replicate add sitec/bucket/ \
|
||||
./mc replicate add sitec/bucket/ \
|
||||
--remote-bucket "${remote_arn}" \
|
||||
--replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 2
|
||||
sleep 1
|
||||
echo "adding replication config for site b -> site c"
|
||||
remote_arn=$(mc admin bucket remote add siteb/bucket/ \
|
||||
remote_arn=$(./mc admin bucket remote add siteb/bucket/ \
|
||||
http://minio:minio123@127.0.0.1:9006/bucket \
|
||||
--service "replication" --json | jq -r ".RemoteARN")
|
||||
sleep 1
|
||||
echo "adding replication rule for b -> c : ${remote_arn}"
|
||||
mc replicate add siteb/bucket/ \
|
||||
./mc replicate add siteb/bucket/ \
|
||||
--remote-bucket "${remote_arn}" \
|
||||
--replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 3
|
||||
sleep 1
|
||||
|
||||
echo "adding replication config for site c -> site b"
|
||||
remote_arn=$(mc admin bucket remote add sitec/bucket \
|
||||
remote_arn=$(././mc admin bucket remote add sitec/bucket \
|
||||
http://minio:minio123@127.0.0.1:9004/bucket \
|
||||
--service "replication" --json | jq -r ".RemoteARN")
|
||||
sleep 1
|
||||
echo "adding replication rule for c -> b : ${remote_arn}"
|
||||
mc replicate add sitec/bucket/ \
|
||||
./mc replicate add sitec/bucket/ \
|
||||
--remote-bucket "${remote_arn}" \
|
||||
--replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 3
|
||||
sleep 1
|
||||
echo "adding replication config for olockbucket site a -> site b"
|
||||
remote_arn=$(mc admin bucket remote add sitea/olockbucket/ \
|
||||
remote_arn=$(././mc admin bucket remote add sitea/olockbucket/ \
|
||||
http://minio:minio123@127.0.0.1:9004/olockbucket \
|
||||
--service "replication" --json | jq -r ".RemoteARN")
|
||||
sleep 1
|
||||
echo "adding replication rule for olockbucket a -> b : ${remote_arn}"
|
||||
mc replicate add sitea/olockbucket/ \
|
||||
./mc replicate add sitea/olockbucket/ \
|
||||
--remote-bucket "${remote_arn}" \
|
||||
--replicate "existing-objects,delete,delete-marker,replica-metadata-sync"
|
||||
sleep 1
|
||||
echo "adding replication config for site b -> site a"
|
||||
remote_arn=$(mc admin bucket remote add siteb/olockbucket/ \
|
||||
remote_arn=$(././mc admin bucket remote add siteb/olockbucket/ \
|
||||
http://minio:minio123@127.0.0.1:9001/olockbucket \
|
||||
--service "replication" --json | jq -r ".RemoteARN")
|
||||
sleep 1
|
||||
echo "adding replication rule for olockbucket b -> a : ${remote_arn}"
|
||||
mc replicate add siteb/olockbucket/ \
|
||||
./mc replicate add siteb/olockbucket/ \
|
||||
--remote-bucket "${remote_arn}" \
|
||||
--replicate "existing-objects,delete,delete-marker,replica-metadata-sync"
|
||||
sleep 1
|
||||
echo "adding replication config for olockbucket site a -> site c"
|
||||
remote_arn=$(mc admin bucket remote add sitea/olockbucket/ \
|
||||
remote_arn=$(././mc admin bucket remote add sitea/olockbucket/ \
|
||||
http://minio:minio123@127.0.0.1:9006/olockbucket \
|
||||
--service "replication" --json | jq -r ".RemoteARN")
|
||||
sleep 1
|
||||
echo "adding replication rule for olockbucket a -> c : ${remote_arn}"
|
||||
mc replicate add sitea/olockbucket/ \
|
||||
./mc replicate add sitea/olockbucket/ \
|
||||
--remote-bucket "${remote_arn}" \
|
||||
--replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 2
|
||||
sleep 1
|
||||
echo "adding replication config for site c -> site a"
|
||||
remote_arn=$(mc admin bucket remote add sitec/olockbucket/ \
|
||||
remote_arn=$(././mc admin bucket remote add sitec/olockbucket/ \
|
||||
http://minio:minio123@127.0.0.1:9001/olockbucket \
|
||||
--service "replication" --json | jq -r ".RemoteARN")
|
||||
sleep 1
|
||||
echo "adding replication rule for olockbucket c -> a : ${remote_arn}"
|
||||
mc replicate add sitec/olockbucket/ \
|
||||
./mc replicate add sitec/olockbucket/ \
|
||||
--remote-bucket "${remote_arn}" \
|
||||
--replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 2
|
||||
sleep 1
|
||||
echo "adding replication config for site b -> site c"
|
||||
remote_arn=$(mc admin bucket remote add siteb/olockbucket/ \
|
||||
remote_arn=$(././mc admin bucket remote add siteb/olockbucket/ \
|
||||
http://minio:minio123@127.0.0.1:9006/olockbucket \
|
||||
--service "replication" --json | jq -r ".RemoteARN")
|
||||
sleep 1
|
||||
echo "adding replication rule for olockbucket b -> c : ${remote_arn}"
|
||||
mc replicate add siteb/olockbucket/ \
|
||||
./mc replicate add siteb/olockbucket/ \
|
||||
--remote-bucket "${remote_arn}" \
|
||||
--replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 3
|
||||
sleep 1
|
||||
echo "adding replication config for site c -> site b"
|
||||
remote_arn=$(mc admin bucket remote add sitec/olockbucket \
|
||||
remote_arn=$(././mc admin bucket remote add sitec/olockbucket \
|
||||
http://minio:minio123@127.0.0.1:9004/olockbucket \
|
||||
--service "replication" --json | jq -r ".RemoteARN")
|
||||
sleep 1
|
||||
echo "adding replication rule for olockbucket c -> b : ${remote_arn}"
|
||||
mc replicate add sitec/olockbucket/ \
|
||||
./mc replicate add sitec/olockbucket/ \
|
||||
--remote-bucket "${remote_arn}" \
|
||||
--replicate "existing-objects,delete,delete-marker,replica-metadata-sync" --priority 3
|
||||
sleep 1
|
||||
|
||||
echo "Set default governance retention 30d"
|
||||
mc retention set --default governance 30d sitea/olockbucket
|
||||
./mc retention set --default governance 30d sitea/olockbucket
|
||||
|
||||
echo "Copying data to source sitea/bucket"
|
||||
mc cp --quiet /etc/hosts sitea/bucket
|
||||
./mc cp --encrypt "sitea/" --quiet /etc/hosts sitea/bucket
|
||||
sleep 1
|
||||
|
||||
echo "Copying data to source sitea/olockbucket"
|
||||
mc cp --quiet /etc/hosts sitea/olockbucket
|
||||
./mc cp --quiet /etc/hosts sitea/olockbucket
|
||||
sleep 1
|
||||
|
||||
echo "Verifying the metadata difference between source and target"
|
||||
if diff -pruN <(mc stat --json sitea/bucket/hosts | jq .) <(mc stat --json siteb/bucket/hosts | jq .) | grep -q 'COMPLETED\|REPLICA'; then
|
||||
if diff -pruN <(./mc stat --json sitea/bucket/hosts | jq .) <(./mc stat --json siteb/bucket/hosts | jq .) | grep -q 'COMPLETED\|REPLICA'; then
|
||||
echo "verified sitea-> COMPLETED, siteb-> REPLICA"
|
||||
fi
|
||||
|
||||
if diff -pruN <(mc stat --json sitea/bucket/hosts | jq .) <(mc stat --json sitec/bucket/hosts | jq .) | grep -q 'COMPLETED\|REPLICA'; then
|
||||
if diff -pruN <(./mc stat --json sitea/bucket/hosts | jq .) <(./mc stat --json sitec/bucket/hosts | jq .) | grep -q 'COMPLETED\|REPLICA'; then
|
||||
echo "verified sitea-> COMPLETED, sitec-> REPLICA"
|
||||
fi
|
||||
|
||||
echo "Verifying the metadata difference between source and target"
|
||||
if diff -pruN <(mc stat --json sitea/olockbucket/hosts | jq .) <(mc stat --json siteb/olockbucket/hosts | jq .) | grep -q 'COMPLETED\|REPLICA'; then
|
||||
if diff -pruN <(./mc stat --json sitea/olockbucket/hosts | jq .) <(./mc stat --json siteb/olockbucket/hosts | jq .) | grep -q 'COMPLETED\|REPLICA'; then
|
||||
echo "verified sitea-> COMPLETED, siteb-> REPLICA"
|
||||
fi
|
||||
|
||||
if diff -pruN <(mc stat --json sitea/olockbucket/hosts | jq .) <(mc stat --json sitec/olockbucket/hosts | jq .) | grep -q 'COMPLETED\|REPLICA'; then
|
||||
if diff -pruN <(./mc stat --json sitea/olockbucket/hosts | jq .) <(./mc stat --json sitec/olockbucket/hosts | jq .) | grep -q 'COMPLETED\|REPLICA'; then
|
||||
echo "verified sitea-> COMPLETED, sitec-> REPLICA"
|
||||
fi
|
||||
|
||||
sleep 5
|
||||
|
||||
head -c 221227088 </dev/urandom >200M
|
||||
./mc.RELEASE.2021-03-12T03-36-59Z cp --config-dir ~/.mc --encrypt "sitea" --quiet 200M "sitea/bucket/200M-enc-v1"
|
||||
./mc.RELEASE.2021-03-12T03-36-59Z cp --config-dir ~/.mc --quiet 200M "sitea/bucket/200M-v1"
|
||||
|
||||
./mc cp --encrypt "sitea" --quiet 200M "sitea/bucket/200M-enc-v2"
|
||||
./mc cp --quiet 200M "sitea/bucket/200M-v2"
|
||||
|
||||
sleep 10
|
||||
|
||||
echo "Verifying ETag for all objects"
|
||||
./s3-check-md5 -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9001/ -bucket bucket
|
||||
./s3-check-md5 -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9002/ -bucket bucket
|
||||
./s3-check-md5 -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9003/ -bucket bucket
|
||||
./s3-check-md5 -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9004/ -bucket bucket
|
||||
./s3-check-md5 -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9005/ -bucket bucket
|
||||
./s3-check-md5 -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9006/ -bucket bucket
|
||||
|
||||
./s3-check-md5 -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9001/ -bucket olockbucket
|
||||
./s3-check-md5 -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9002/ -bucket olockbucket
|
||||
./s3-check-md5 -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9003/ -bucket olockbucket
|
||||
./s3-check-md5 -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9004/ -bucket olockbucket
|
||||
./s3-check-md5 -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9005/ -bucket olockbucket
|
||||
./s3-check-md5 -access-key minio -secret-key minio123 -endpoint http://127.0.0.1:9006/ -bucket olockbucket
|
||||
|
||||
catch
|
||||
|
||||
Reference in New Issue
Block a user