| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414 |
- name: "S3 Go Tests"
- on:
- pull_request:
-
- concurrency:
- group: ${{ github.head_ref }}/s3-go-tests
- cancel-in-progress: true
- permissions:
- contents: read
- defaults:
- run:
- working-directory: weed
- jobs:
- s3-versioning-tests:
- name: S3 Versioning Tests
- runs-on: ubuntu-22.04
- timeout-minutes: 30
- strategy:
- matrix:
- test-type: ["quick", "comprehensive"]
-
- steps:
- - name: Check out code
- uses: actions/checkout@v5
- - name: Set up Go
- uses: actions/setup-go@v6
- with:
- go-version-file: 'go.mod'
- id: go
- - name: Install SeaweedFS
- run: |
- go install -buildvcs=false
- - name: Run S3 Versioning Tests - ${{ matrix.test-type }}
- timeout-minutes: 25
- working-directory: test/s3/versioning
- 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="TestBucketListReturnDataVersioning|TestVersioningBasicWorkflow|TestVersioningDeleteMarkers"
- else
- # Run all versioning tests
- make test-with-server
- fi
- - name: Show server logs on failure
- if: failure()
- working-directory: test/s3/versioning
- 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-versioning-test-logs-${{ matrix.test-type }}
- path: test/s3/versioning/weed-test*.log
- retention-days: 3
- s3-versioning-compatibility:
- name: S3 Versioning Compatibility Test
- runs-on: ubuntu-22.04
- timeout-minutes: 20
-
- steps:
- - name: Check out code
- uses: actions/checkout@v5
- - name: Set up Go
- uses: actions/setup-go@v6
- with:
- go-version-file: 'go.mod'
- id: go
- - name: Install SeaweedFS
- run: |
- go install -buildvcs=false
- - name: Run Core Versioning Test (Python s3tests equivalent)
- timeout-minutes: 15
- working-directory: test/s3/versioning
- run: |
- set -x
- echo "=== System Information ==="
- uname -a
- free -h
-
- # Run the specific test that is equivalent to the Python s3tests
- make test-with-server || {
- echo "❌ 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-versioning-compatibility-logs
- path: test/s3/versioning/weed-test*.log
- retention-days: 3
- s3-cors-compatibility:
- name: S3 CORS Compatibility Test
- runs-on: ubuntu-22.04
- timeout-minutes: 20
-
- steps:
- - name: Check out code
- uses: actions/checkout@v5
- - name: Set up Go
- uses: actions/setup-go@v6
- with:
- go-version-file: 'go.mod'
- id: go
- - name: Install SeaweedFS
- run: |
- go install -buildvcs=false
- - name: Run Core CORS Test (AWS S3 compatible)
- timeout-minutes: 15
- working-directory: test/s3/cors
- run: |
- set -x
- echo "=== System Information ==="
- uname -a
- free -h
-
- # Run the specific test that is equivalent to AWS S3 CORS behavior
- make test-with-server || {
- echo "❌ 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-cors-compatibility-logs
- path: test/s3/cors/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@v5
- - name: Set up Go
- uses: actions/setup-go@v6
- 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-cors-tests:
- name: S3 CORS Tests
- runs-on: ubuntu-22.04
- timeout-minutes: 30
- strategy:
- matrix:
- test-type: ["quick", "comprehensive"]
-
- steps:
- - name: Check out code
- uses: actions/checkout@v5
- - name: Set up Go
- uses: actions/setup-go@v6
- with:
- go-version-file: 'go.mod'
- id: go
- - name: Install SeaweedFS
- run: |
- go install -buildvcs=false
- - name: Run S3 CORS Tests - ${{ matrix.test-type }}
- timeout-minutes: 25
- working-directory: test/s3/cors
- 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="TestCORSConfigurationManagement|TestServiceLevelCORS|TestCORSBasicWorkflow"
- else
- # Run all CORS tests
- make test-with-server
- fi
- - name: Show server logs on failure
- if: failure()
- working-directory: test/s3/cors
- 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-cors-test-logs-${{ matrix.test-type }}
- path: test/s3/cors/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@v5
- - name: Set up Go
- uses: actions/setup-go@v6
- 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
- timeout-minutes: 35
- # Only run stress tests on master branch pushes to avoid overloading PR testing
- if: github.event_name == 'push' && github.ref == 'refs/heads/master'
-
- steps:
- - name: Check out code
- uses: actions/checkout@v5
- - name: Set up Go
- uses: actions/setup-go@v6
- with:
- go-version-file: 'go.mod'
- id: go
- - name: Install SeaweedFS
- run: |
- go install -buildvcs=false
- - name: Run S3 Versioning Stress Tests
- timeout-minutes: 30
- working-directory: test/s3/versioning
- run: |
- set -x
- echo "=== System Information ==="
- uname -a
- free -h
-
- # Run stress tests (concurrent operations)
- make test-versioning-stress || {
- echo "❌ Stress test failed, checking logs..."
- if [ -f weed-test.log ]; then
- echo "=== Server logs ==="
- tail -200 weed-test.log
- fi
- make clean
- exit 1
- }
- make clean
- - name: Upload stress test logs
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: s3-versioning-stress-logs
- path: test/s3/versioning/weed-test*.log
- retention-days: 7
- # Removed SSE-C integration tests and compatibility job
|