diff options
| author | chrislu <chris.lu@gmail.com> | 2025-07-18 14:46:32 -0700 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2025-07-18 14:46:32 -0700 |
| commit | b63855560aa85d944c1c68475a744dc8ab31b6be (patch) | |
| tree | 55ae81d2479114ea867efcad2331645a9c1a29d6 | |
| parent | 9f8e0257b0c13a58be731519addd83bbff0967b6 (diff) | |
| download | seaweedfs-b63855560aa85d944c1c68475a744dc8ab31b6be.tar.xz seaweedfs-b63855560aa85d944c1c68475a744dc8ab31b6be.zip | |
add s3 tests for object lock and retention
| -rw-r--r-- | .github/workflows/s3tests.yml | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/.github/workflows/s3tests.yml b/.github/workflows/s3tests.yml index 75f9b7437..8aac04802 100644 --- a/.github/workflows/s3tests.yml +++ b/.github/workflows/s3tests.yml @@ -213,6 +213,71 @@ jobs: # Clean up data directory rm -rf "$WEED_DATA_DIR" || true + - name: Run S3 Object Lock and Retention tests + timeout-minutes: 15 + env: + S3TEST_CONF: /__w/seaweedfs/seaweedfs/docker/compose/s3tests.conf + shell: bash + run: | + cd /__w/seaweedfs/seaweedfs/weed + go install -buildvcs=false + set -x + # Create clean data directory for this test run + export WEED_DATA_DIR="/tmp/seaweedfs-objectlock-$(date +%s)" + mkdir -p "$WEED_DATA_DIR" + weed -v 0 server -filer -filer.maxMB=64 -s3 -ip.bind 0.0.0.0 \ + -dir="$WEED_DATA_DIR" \ + -master.raftHashicorp -master.electionTimeout 1s -master.volumeSizeLimitMB=1024 \ + -volume.max=100 -volume.preStopSeconds=1 -s3.port=8000 -metricsPort=9324 \ + -s3.allowEmptyFolder=false -s3.allowDeleteBucketNotEmpty=true -s3.config=../docker/compose/s3.json & + pid=$! + sleep 10 + cd /s3-tests + sed -i "s/assert prefixes == \['foo%2B1\/', 'foo\/', 'quux%20ab\/'\]/assert prefixes == \['foo\/', 'foo%2B1\/', 'quux%20ab\/'\]/" s3tests_boto3/functional/test_s3.py + tox -- \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_lock \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_lock_invalid_bucket \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_lock_enable_after_create \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_lock_with_days_and_years \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_lock_invalid_days \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_lock_invalid_years \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_lock_invalid_mode \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_lock_invalid_status \ + s3tests_boto3/functional/test_s3.py::test_object_lock_suspend_versioning \ + s3tests_boto3/functional/test_s3.py::test_object_lock_get_obj_lock \ + s3tests_boto3/functional/test_s3.py::test_object_lock_get_obj_lock_invalid_bucket \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention_invalid_bucket \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention_invalid_mode \ + s3tests_boto3/functional/test_s3.py::test_object_lock_get_obj_retention \ + s3tests_boto3/functional/test_s3.py::test_object_lock_get_obj_retention_iso8601 \ + s3tests_boto3/functional/test_s3.py::test_object_lock_get_obj_retention_invalid_bucket \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention_versionid \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention_override_default_retention \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention_increase_period \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention_shorten_period \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention_shorten_period_bypass \ + s3tests_boto3/functional/test_s3.py::test_object_lock_delete_object_with_retention \ + s3tests_boto3/functional/test_s3.py::test_object_lock_delete_multipart_object_with_retention \ + s3tests_boto3/functional/test_s3.py::test_object_lock_delete_object_with_retention_and_marker \ + s3tests_boto3/functional/test_s3.py::test_object_lock_multi_delete_object_with_retention \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_legal_hold \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_legal_hold_invalid_bucket \ + s3tests_boto3/functional/test_s3.py::test_object_lock_put_legal_hold_invalid_status \ + s3tests_boto3/functional/test_s3.py::test_object_lock_get_legal_hold \ + s3tests_boto3/functional/test_s3.py::test_object_lock_get_legal_hold_invalid_bucket \ + s3tests_boto3/functional/test_s3.py::test_object_lock_delete_object_with_legal_hold_on \ + s3tests_boto3/functional/test_s3.py::test_object_lock_delete_multipart_object_with_legal_hold_on \ + s3tests_boto3/functional/test_s3.py::test_object_lock_delete_object_with_legal_hold_off \ + s3tests_boto3/functional/test_s3.py::test_object_lock_get_obj_metadata \ + s3tests_boto3/functional/test_s3.py::test_object_lock_uploading_obj \ + s3tests_boto3/functional/test_s3.py::test_object_lock_changing_mode_from_governance_with_bypass \ + s3tests_boto3/functional/test_s3.py::test_object_lock_changing_mode_from_governance_without_bypass \ + s3tests_boto3/functional/test_s3.py::test_object_lock_changing_mode_from_compliance + kill -9 $pid || true + # Clean up data directory + rm -rf "$WEED_DATA_DIR" || true + - name: Run SeaweedFS Custom S3 Copy tests timeout-minutes: 10 shell: bash |
