export LD_LIBRARY_PATH=${libdir}
s3=${bindir}/s3
-tmp_bucket="test-`date | sed 's/[: ]/-/g'`"
+tmp_bucket="test-`date +%s`"
+tmpdir="tmp"
cleanup() {
- rm -fR libs3
+ rm -fR libs3 tmp
}
build() {
"$@" >> $log
}
-
-do_op() {
+check_error() {
should_succeed=$1
- shift
- op=$1
- shift
- params="$@"
- echo "# $op" "$@" | tee -a $log
- $op "$@" > .cmd.log 2>&1
- log cat .cmd.log
-
fail=`grep -c ERROR .cmd.log`
[ $fail -eq 0 ] && success=1 || success=0
if [ $success -ne $should_succeed ]; then
fi
}
+do_op() {
+ should_succeed=$1
+ shift
+ op=$1
+ shift
+ params="$@"
+ echo "# $op" "$@" | tee -a $log
+ $op "$@" > .cmd.log 2>&1
+ log cat .cmd.log
+ check_error $should_succeed
+}
+
run_s3() {
- echo $s3 "$@"
+ echo $s3 "$@" >> .cmd.log
$s3 "$@"
}
}
create_file() {
- file_name=$1
- dd if=/dev/urandom of=tmp/$file_name bs=4096 count=2048
- run_s3 put $tmp_bucket/$file_name filename=tmp/$file_name
+ filename=$1
+ dd if=/dev/urandom of=$tmpdir/$filename bs=4096 count=2048
+ run_s3 put $tmp_bucket/$filename filename=$tmpdir/$filename
}
get_file() {
- file_name=$1
+ filename=$1
+ dest_fname=$2
+ run_s3 get $tmp_bucket/$filename filename=$tmpdir/$dest_fname
+ do_op 1 diff $tmpdir/$filename $tmpdir/$dest_fname
+ rm -f $tmpdir/foo.tmp
+}
+
+get_acl() {
+ filename=$1
dest_fname=$2
- run_s3 get $tmp_bucket/$file_name filename=tmp/$dest_fname
- do_op 1 diff tmp/$file_name tmp/$dest_fname
- rm -f tmp/foo.tmp
+ run_s3 getacl $tmp_bucket/$filename filename=$tmpdir/$dest_fname
+}
+
+set_acl() {
+ filename=$1
+ src_fname=$2
+ run_s3 setacl $tmp_bucket/$filename filename=$tmpdir/$src_fname
}
delete_file() {
- file_name=$1
- run_s3 delete $tmp_bucket/$file_name
+ filename=$1
+ run_s3 delete $tmp_bucket/$filename
}
+get_anon() {
+ should_succeed=$1
+ bucket=$2
+ fname=$3
+ dest=$tmpdir/$4
+
+ echo "# get_anon $@"
+
+ url="http://$bucket.$S3_HOSTNAME/$fname"
+ wget $url -O $dest > .cmd.log 2>&1
+ res=$?
+ log cat .cmd.log
+ if [ $res -ne 0 ]; then
+ echo "ERROR: Could not fetch file anonymously (url=$url)" > .cmd.log
+ fi
+ check_error $should_succeed
+}
+
+add_acl() {
+ filename=$1
+ acl=$2
+ echo $acl >> $tmpdir/$filename
+}
main() {
log echo "****************************************************************"
init
do_op 1 create_bucket $tmp_bucket
do_op 0 create_bucket $tmp_bucket
+
do_op 1 create_file foo
do_op 1 get_file foo foo.tmp
+
+ do_op 1 get_acl foo foo.acl
+ get_anon 0 $tmp_bucket foo foo.anon
+ add_acl foo.acl "Group All Users READ"
+
+ do_op 1 set_acl foo foo.acl
+ get_anon 1 $tmp_bucket foo foo.anon
+
do_op 1 delete_file foo
do_op 1 delete_bucket $tmp_bucket
}