diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2025-07-12 21:58:55 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-12 21:58:55 -0700 |
| commit | 1549ee2e154ab040e211ac7b3bc361272069abef (patch) | |
| tree | 611da8241e78a40ab4d94524117b097403b46f35 /.github | |
| parent | 687a6a6c1de0fb67b51ec9bfd1781a6c255ff695 (diff) | |
| download | seaweedfs-1549ee2e154ab040e211ac7b3bc361272069abef.tar.xz seaweedfs-1549ee2e154ab040e211ac7b3bc361272069abef.zip | |
implement PubObjectRetention and WORM (#6969)
* implement PubObjectRetention and WORM
* Update s3_worm_integration_test.go
* avoid previous buckets
* Update s3-versioning-tests.yml
* address comments
* address comments
* rename to ExtObjectLockModeKey
* only checkObjectLockPermissions if versioningEnabled
* address comments
* comments
* Revert "comments"
This reverts commit 6736434176f86c6e222b867777324b17c2de716f.
* Update s3api_object_handlers_skip.go
* Update s3api_object_retention_test.go
* add version id to ObjectIdentifier
* address comments
* add comments
* Add proper error logging for timestamp parsing failures
* address comments
* add version id to the error
* Update weed/s3api/s3api_object_retention_test.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update weed/s3api/s3api_object_retention.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* constants
* fix comments
* address comments
* address comment
* refactor out handleObjectLockAvailabilityCheck
* errors.Is ErrBucketNotFound
* better error checking
* address comments
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Diffstat (limited to '.github')
| -rw-r--r-- | .github/workflows/s3-versioning-tests.yml | 120 |
1 files changed, 118 insertions, 2 deletions
diff --git a/.github/workflows/s3-versioning-tests.yml b/.github/workflows/s3-versioning-tests.yml index a401a05c8..a34544b43 100644 --- a/.github/workflows/s3-versioning-tests.yml +++ b/.github/workflows/s3-versioning-tests.yml @@ -1,10 +1,10 @@ -name: "S3 Versioning Tests (Go)" +name: "S3 Versioning and Retention Tests (Go)" on: pull_request: concurrency: - group: ${{ github.head_ref }}/s3-versioning + group: ${{ github.head_ref }}/s3-versioning-retention cancel-in-progress: true permissions: @@ -130,6 +130,122 @@ jobs: path: test/s3/versioning/weed-test*.log retention-days: 3 + s3-retention-tests: + name: S3 Retention Tests + runs-on: ubuntu-22.04 + timeout-minutes: 30 + strategy: + matrix: + test-type: ["quick", "comprehensive"] + + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version-file: 'go.mod' + id: go + + - name: Install SeaweedFS + run: | + go install -buildvcs=false + + - name: Run S3 Retention Tests - ${{ matrix.test-type }} + timeout-minutes: 25 + working-directory: test/s3/retention + run: | + set -x + echo "=== System Information ===" + uname -a + free -h + df -h + echo "=== Starting Tests ===" + + # Run tests with automatic server management + # The test-with-server target handles server startup/shutdown automatically + if [ "${{ matrix.test-type }}" = "quick" ]; then + # Override TEST_PATTERN for quick tests only + make test-with-server TEST_PATTERN="TestBasicRetentionWorkflow|TestRetentionModeCompliance|TestLegalHoldWorkflow" + else + # Run all retention tests + make test-with-server + fi + + - name: Show server logs on failure + if: failure() + working-directory: test/s3/retention + run: | + echo "=== Server Logs ===" + if [ -f weed-test.log ]; then + echo "Last 100 lines of server logs:" + tail -100 weed-test.log + else + echo "No server log file found" + fi + + echo "=== Test Environment ===" + ps aux | grep -E "(weed|test)" || true + netstat -tlnp | grep -E "(8333|9333|8080)" || true + + - name: Upload test logs on failure + if: failure() + uses: actions/upload-artifact@v4 + with: + name: s3-retention-test-logs-${{ matrix.test-type }} + path: test/s3/retention/weed-test*.log + retention-days: 3 + + s3-retention-worm: + name: S3 Retention WORM Integration Test + runs-on: ubuntu-22.04 + timeout-minutes: 20 + + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version-file: 'go.mod' + id: go + + - name: Install SeaweedFS + run: | + go install -buildvcs=false + + - name: Run WORM Integration Tests + timeout-minutes: 15 + working-directory: test/s3/retention + run: | + set -x + echo "=== System Information ===" + uname -a + free -h + + # Run the WORM integration tests with automatic server management + # The test-with-server target handles server startup/shutdown automatically + make test-with-server TEST_PATTERN="TestWORM|TestRetentionExtendedAttributes|TestRetentionConcurrentOperations" || { + echo "❌ WORM integration test failed, checking logs..." + if [ -f weed-test.log ]; then + echo "=== Server logs ===" + tail -100 weed-test.log + fi + echo "=== Process information ===" + ps aux | grep -E "(weed|test)" || true + exit 1 + } + + - name: Upload server logs on failure + if: failure() + uses: actions/upload-artifact@v4 + with: + name: s3-retention-worm-logs + path: test/s3/retention/weed-test*.log + retention-days: 3 + s3-versioning-stress: name: S3 Versioning Stress Test runs-on: ubuntu-22.04 |
