Skip to content

Instantly share code, notes, and snippets.

@hrchu
Created November 6, 2017 08:55
Show Gist options
  • Save hrchu/368561e85d92f5ff1d4ca5bf8343d22f to your computer and use it in GitHub Desktop.
Save hrchu/368561e85d92f5ff1d4ca5bf8343d22f to your computer and use it in GitHub Desktop.
Script to test s3 service powered by s3cmd
#!/bin/bash
TEST_FILE="${PWD}/test1m"
TEST_FILE2="${PWD}/test2m"
TEST_OPT=" -c .s3cfg"
CleanEnv() {
echo "------------------------- remove all objects"
s3cmd ${TEST_OPT} ls | awk -F'/' '{ printf "%s\n",$3 }' | xargs -i s3cmd ${TEST_OPT} ls s3://{} | awk -F' ' '{printf "%s\n",$4}' | xargs -i s3cmd ${TEST_OPT} del {}
echo "------------------------- remove all buckets"
s3cmd ${TEST_OPT} ls | awk -F'/' '{ printf "%s\n",$3 }' | xargs -i s3cmd ${TEST_OPT} rb s3://{}
}
PrepareEnvironment() {
echo "------------------------- prepare: test file"
rm -rf ${TEST_FILE}
dd if=/dev/zero of=${TEST_FILE} bs=1M count=1
dd if=/dev/zero of=${TEST_FILE2} bs=1M count=2
CleanEnv
}
TestCreateBucket() {
echo "------------------------- test: create default buckets"
for x in {1..5}
do
printf '[Create bucket: test%03d]\n' $x
key=`printf 'test%03d\n' $x`;
s3cmd ${TEST_OPT} mb "s3://$key"
done
}
TestListBucket() {
echo "------------------------- test: list buckets"
s3cmd ${TEST_OPT} ls
}
TestPutObject() {
echo "------------------------- test: put object"
s3cmd ${TEST_OPT} put ${TEST_FILE2} s3://test001/test1m1
s3cmd ${TEST_OPT} put ${TEST_FILE2} s3://test001/foo/test1m1
s3cmd ${TEST_OPT} put ${TEST_FILE2} s3://test002/test1m1
s3cmd ${TEST_OPT} put ${TEST_FILE2} s3://test002/foo/test1m1
s3cmd ${TEST_OPT} ls | awk -F'/' '{ printf "%s\n",$3 }' | xargs -i s3cmd ${TEST_OPT} ls s3://{}
}
TestPutSameKeyObject() {
echo "------------------------- test: put object with same key"
s3cmd ${TEST_OPT} put ${TEST_FILE} s3://test001/test1m1
s3cmd ${TEST_OPT} put ${TEST_FILE} s3://test001/foo/test1m1
s3cmd ${TEST_OPT} put ${TEST_FILE} s3://test002/test1m1
s3cmd ${TEST_OPT} put ${TEST_FILE} s3://test002/foo/test1m1
s3cmd ${TEST_OPT} ls | awk -F'/' '{ printf "%s\n",$3 }' | xargs -i s3cmd ${TEST_OPT} ls s3://{}
}
TestGetBucketAcl() {
echo "------------------------- test: get bucket acl"
s3cmd ${TEST_OPT} info s3://test001
s3cmd ${TEST_OPT} info s3://test002
s3cmd ${TEST_OPT} info s3://test003
s3cmd ${TEST_OPT} info s3://test004
}
TestGetObjectAcl() {
echo "------------------------- test: get bucket acl"
s3cmd ${TEST_OPT} info s3://test001/test1m1
s3cmd ${TEST_OPT} info s3://test001/foo/test1m1
s3cmd ${TEST_OPT} info s3://test002/test1m1
s3cmd ${TEST_OPT} info s3://test002/foo/test1m1
}
TestDeleteAllObeject() {
echo "------------------------- test: remove all objects"
s3cmd ${TEST_OPT} ls | awk -F'/' '{ printf "%s\n",$3 }' | xargs -i s3cmd ${TEST_OPT} ls -r s3://{} | awk -F' ' '{printf "%s\n",$4}' | xargs -i s3cmd ${TEST_OPT} del {}
}
TestDeleteAllBucket() {
echo "------------------------- test: remove all buckets"
s3cmd ${TEST_OPT} ls | awk -F'/' '{ printf "%s\n",$3 }' | xargs -i s3cmd ${TEST_OPT} rb s3://{}
}
CleanEnv() {
TestDeleteAllObeject
TestDeleteAllBucket
}
main() {
PrepareEnvironment
CleanEnv
while :
do
#clear
echo " M A I N - M E N U"
echo "1. Test all"
echo "2. TestCreateBucket"
echo "3. TestListBucket"
echo "4. TestGetBucketAcl"
echo "10. TestPutObject"
echo "11. TestPutObjectWithSameKey"
echo "20. TestGetObjectAcl"
echo "30. TestDeleteAllObeject"
echo "40. TestDeleteAllBucket"
echo "z. CleanEnv"
echo "e. Exit"
echo -n "Please enter option [1 - 8, z, e]: "
read opt
case $opt in
1) echo "************ Test all *************";
TestCreateBucket
TestListBucket
TestGetBucketAcl
TestPutObject
TestGetObjectAcl
;;
2) echo "*********** TestCreateBucket";
TestCreateBucket
;;
3) echo "*********** TestListBucket";
TestListBucket
;;
4) echo "*********** TestGetBucketAcl"
TestGetBucketAcl
;;
10) echo "*********** TestPutObject";
TestPutObject
;;
11) echo "*********** TestPutObjectWithSameKey";
TestPutSameKeyObject
;;
20) echo "*********** TestPutObject";
TestGetObjectAcl
;;
30) echo "*********** TestPutObject";
TestDeleteAllObeject
;;
40) echo "*********** TestPutObject";
TestDeleteAllBucket
;;
z) echo "*********** CleanEnv";
CleanEnv
;;
e) echo "Bye $USER";
exit 1;;
*) echo "$opt is an invaild option. Please select option between 1-4 only";
echo "Press [enter] key to continue. . .";
read enterKey;;
esac
done
}
main
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment