You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							414 lines
						
					
					
						
							12 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							414 lines
						
					
					
						
							12 KiB
						
					
					
				| 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@v5 | |
|         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@v5 | |
|         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@v5 | |
|         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@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-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@v5 | |
|         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@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 | |
|     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@v5 | |
|         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 |