diff options
| author | yulai.li <blacktear23@gmail.com> | 2022-06-26 22:43:37 +0800 |
|---|---|---|
| committer | yulai.li <blacktear23@gmail.com> | 2022-06-26 22:43:37 +0800 |
| commit | 46e0b629e529f3aff535f90dd25eb719adf1c0d0 (patch) | |
| tree | 734125b48b6d96f8796a2b89b924312cd169ef0e /test | |
| parent | a5bd0b3a1644a77dcc0b9ff41c4ce8eb3ea0d566 (diff) | |
| parent | dc59ccd110a321db7d0b0480631aa95a3d9ba7e6 (diff) | |
| download | seaweedfs-46e0b629e529f3aff535f90dd25eb719adf1c0d0.tar.xz seaweedfs-46e0b629e529f3aff535f90dd25eb719adf1c0d0.zip | |
Update tikv client version and add one PC support
Diffstat (limited to 'test')
| -rw-r--r-- | test/s3/basic/basic_test.go | 15 | ||||
| -rw-r--r-- | test/s3/compatibility/.gitignore | 2 | ||||
| -rw-r--r-- | test/s3/compatibility/Dockerfile | 11 | ||||
| -rw-r--r-- | test/s3/compatibility/README.md | 13 | ||||
| -rwxr-xr-x | test/s3/compatibility/prepare.sh | 5 | ||||
| -rwxr-xr-x | test/s3/compatibility/run.sh | 24 | ||||
| -rw-r--r-- | test/s3/compatibility/s3tests.conf | 109 | ||||
| -rw-r--r-- | test/s3/multipart/aws_upload.go | 10 |
8 files changed, 177 insertions, 12 deletions
diff --git a/test/s3/basic/basic_test.go b/test/s3/basic/basic_test.go index 653fa1237..b2a6ae14b 100644 --- a/test/s3/basic/basic_test.go +++ b/test/s3/basic/basic_test.go @@ -2,14 +2,15 @@ package basic import ( "fmt" + "io" + "os" + "strings" + "testing" + "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" - "io/ioutil" - "os" - "strings" - "testing" ) var ( @@ -108,8 +109,8 @@ func TestListBucket(t *testing.T) { func TestListObjectV2(t *testing.T) { listObj, err := svc.ListObjectsV2(&s3.ListObjectsV2Input{ - Bucket: aws.String(Bucket), - Prefix: aws.String("foo"), + Bucket: aws.String(Bucket), + Prefix: aws.String("foo"), Delimiter: aws.String("/"), }) if err != nil { @@ -169,7 +170,7 @@ func TestObjectOp(t *testing.T) { exitErrorf("Unable to get copy object, %v", err) } - data, err := ioutil.ReadAll(getObj.Body) + data, err := io.ReadAll(getObj.Body) if err != nil { exitErrorf("Unable to read object data, %v", err) } diff --git a/test/s3/compatibility/.gitignore b/test/s3/compatibility/.gitignore new file mode 100644 index 000000000..dc3cc5207 --- /dev/null +++ b/test/s3/compatibility/.gitignore @@ -0,0 +1,2 @@ +/s3-tests +/tmp diff --git a/test/s3/compatibility/Dockerfile b/test/s3/compatibility/Dockerfile new file mode 100644 index 000000000..b2a1040cb --- /dev/null +++ b/test/s3/compatibility/Dockerfile @@ -0,0 +1,11 @@ +# the tests only support python 3.6, not newer +FROM ubuntu:latest + +RUN apt-get update && DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get install -y git-core sudo tzdata +RUN git clone https://github.com/ceph/s3-tests.git +WORKDIR s3-tests + +# we pin a certain commit +RUN git checkout 9a6a1e9f197fc9fb031b809d1e057635c2ff8d4e + +RUN ./bootstrap diff --git a/test/s3/compatibility/README.md b/test/s3/compatibility/README.md new file mode 100644 index 000000000..de1b6e9ec --- /dev/null +++ b/test/s3/compatibility/README.md @@ -0,0 +1,13 @@ +# Running S3 Compatibility tests against SeaweedFS + +This is using [the tests from CephFS](https://github.com/ceph/s3-tests). + +## Prerequisites + +- have Docker installed +- this has been executed on Mac. On Linux, the hostname in `s3tests.conf` needs to be adjusted. + +## Running tests + +- `./prepare.sh` to build the docker image +- `./run.sh` to execute all tests diff --git a/test/s3/compatibility/prepare.sh b/test/s3/compatibility/prepare.sh new file mode 100755 index 000000000..7f9c20746 --- /dev/null +++ b/test/s3/compatibility/prepare.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -ex + +docker build --progress=plain -t s3tests . diff --git a/test/s3/compatibility/run.sh b/test/s3/compatibility/run.sh new file mode 100755 index 000000000..990599df5 --- /dev/null +++ b/test/s3/compatibility/run.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +set -ex + +killall -9 weed || echo "already stopped" +rm -Rf tmp +mkdir tmp +docker stop s3test-instance || echo "already stopped" + +ulimit -n 10000 +../../../weed/weed server -filer -s3 -volume.max 0 -master.volumeSizeLimitMB 5 -dir "$(pwd)/tmp" 1>&2>weed.log & + +until curl --output /dev/null --silent --head --fail http://127.0.0.1:9333; do + printf '.' + sleep 5 +done +sleep 3 + +rm -Rf logs-full.txt logs-summary.txt +# docker run --name s3test-instance --rm -e S3TEST_CONF=s3tests.conf -v `pwd`/s3tests.conf:/s3-tests/s3tests.conf -it s3tests ./virtualenv/bin/nosetests s3tests_boto3/functional/test_s3.py:test_get_obj_tagging -v -a 'resource=object,!bucket-policy,!versioning,!encryption' +docker run --name s3test-instance --rm -e S3TEST_CONF=s3tests.conf -v "$(pwd)"/s3tests.conf:/s3-tests/s3tests.conf -it s3tests ./virtualenv/bin/nosetests s3tests_boto3/functional/test_s3.py -v -a 'resource=object,!bucket-policy,!versioning,!encryption' | sed -n -e '/botocore.hooks/!p;//q' | tee logs-summary.txt + +docker stop s3test-instance || echo "already stopped" +killall -9 weed diff --git a/test/s3/compatibility/s3tests.conf b/test/s3/compatibility/s3tests.conf new file mode 100644 index 000000000..5adb61791 --- /dev/null +++ b/test/s3/compatibility/s3tests.conf @@ -0,0 +1,109 @@ +[DEFAULT] +## this section is just used for host, port and bucket_prefix + +# host set for rgw in vstart.sh +host = host.docker.internal + +# port set for rgw in vstart.sh +port = 8333 + +## say "False" to disable TLS +is_secure = False + +## say "False" to disable SSL Verify +ssl_verify = False + +[fixtures] +## all the buckets created will start with this prefix; +## {random} will be filled with random characters to pad +## the prefix to 30 characters long, and avoid collisions +bucket prefix = yournamehere-{random}- + +[s3 main] +# main display_name set in vstart.sh +display_name = M. Tester + +# main user_idname set in vstart.sh +user_id = testid + +# main email set in vstart.sh +email = tester@ceph.com + +# zonegroup api_name for bucket location +api_name = default + +## main AWS access key +access_key = 0555b35654ad1656d804 + +## main AWS secret key +secret_key = h7GhxuBLTrlhVUyxSPUKUV8r/2EI4ngqJxD7iBdBYLhwluN30JaT3Q== + +## replace with key id obtained when secret is created, or delete if KMS not tested +#kms_keyid = 01234567-89ab-cdef-0123-456789abcdef + +[s3 alt] +# alt display_name set in vstart.sh +display_name = john.doe +## alt email set in vstart.sh +email = john.doe@example.com + +# alt user_id set in vstart.sh +user_id = 56789abcdef0123456789abcdef0123456789abcdef0123456789abcdef01234 + +# alt AWS access key set in vstart.sh +access_key = NOPQRSTUVWXYZABCDEFG + +# alt AWS secret key set in vstart.sh +secret_key = nopqrstuvwxyzabcdefghijklmnabcdefghijklm + +[s3 tenant] +# tenant display_name set in vstart.sh +display_name = testx$tenanteduser + +# tenant user_id set in vstart.sh +user_id = 9876543210abcdef0123456789abcdef0123456789abcdef0123456789abcdef + +# tenant AWS secret key set in vstart.sh +access_key = HIJKLMNOPQRSTUVWXYZA + +# tenant AWS secret key set in vstart.sh +secret_key = opqrstuvwxyzabcdefghijklmnopqrstuvwxyzab + +# tenant email set in vstart.sh +email = tenanteduser@example.com + +#following section needs to be added for all sts-tests +[iam] +#used for iam operations in sts-tests +#email from vstart.sh +email = s3@example.com + +#user_id from vstart.sh +user_id = 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef + +#access_key from vstart.sh +access_key = ABCDEFGHIJKLMNOPQRST + +#secret_key vstart.sh +secret_key = abcdefghijklmnopqrstuvwxyzabcdefghijklmn + +#display_name from vstart.sh +display_name = youruseridhere + +#following section needs to be added when you want to run Assume Role With Webidentity test +[webidentity] +#used for assume role with web identity test in sts-tests +#all parameters will be obtained from ceph/qa/tasks/keycloak.py +token=<access_token> + +aud=<obtained after introspecting token> + +sub=<obtained after introspecting token> + +azp=<obtained after introspecting token> + +user_token=<access token for a user, with attribute Department=[Engineering, Marketing>] + +thumbprint=<obtained from x509 certificate> + +KC_REALM=<name of the realm> diff --git a/test/s3/multipart/aws_upload.go b/test/s3/multipart/aws_upload.go index 8c15cf6ed..0553bd403 100644 --- a/test/s3/multipart/aws_upload.go +++ b/test/s3/multipart/aws_upload.go @@ -19,10 +19,10 @@ import ( const ( maxPartSize = int64(5 * 1024 * 1024) maxRetries = 3 - awsAccessKeyID = "Your access key" - awsSecretAccessKey = "Your secret key" - awsBucketRegion = "S3 bucket region" - awsBucketName = "newBucket" + awsAccessKeyID = "any" + awsSecretAccessKey = "any" + awsBucketRegion = "us‑west‑1" + awsBucketName = "bucket1" ) var ( @@ -37,7 +37,7 @@ func main() { if err != nil { fmt.Printf("bad credentials: %s", err) } - cfg := aws.NewConfig().WithRegion(awsBucketRegion).WithCredentials(creds).WithDisableSSL(true).WithEndpoint("localhost:8333") + cfg := aws.NewConfig().WithRegion(awsBucketRegion).WithCredentials(creds).WithDisableSSL(true).WithEndpoint("localhost:8333").WithS3ForcePathStyle(true) svc := s3.New(session.New(), cfg) file, err := os.Open(*filename) |
