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.
		
		
		
		
		
			
		
			
				
					
					
						
							124 lines
						
					
					
						
							4.2 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							124 lines
						
					
					
						
							4.2 KiB
						
					
					
				| name: "Kafka Quick Test (Load Test with Schema Registry)" | |
|  | |
| on: | |
|   push: | |
|     branches: [ master ] | |
|   pull_request: | |
|     branches: [ master ] | |
|   workflow_dispatch:  # Allow manual trigger | |
|  | |
| concurrency: | |
|   group: ${{ github.head_ref }}/kafka-quicktest | |
|   cancel-in-progress: true | |
|  | |
| permissions: | |
|   contents: read | |
|  | |
| jobs: | |
|   kafka-client-quicktest: | |
|     name: Kafka Client Load Test (Quick) | |
|     runs-on: ubuntu-latest | |
|     timeout-minutes: 15 | |
|     steps: | |
|     - name: Check out code | |
|       uses: actions/checkout@v4 | |
|  | |
|     - name: Set up Go 1.x | |
|       uses: actions/setup-go@v5 | |
|       with: | |
|         go-version: ^1.24 | |
|         cache: true | |
|         cache-dependency-path: | | |
|                     **/go.sum | |
|       id: go | |
|  | |
|     - name: Set up Docker Buildx | |
|       uses: docker/setup-buildx-action@v3 | |
|  | |
|     - name: Install dependencies | |
|       run: | | |
|         # Ensure make is available | |
|         sudo apt-get update -qq | |
|         sudo apt-get install -y make         | |
|  | |
|     - name: Validate test setup | |
|       working-directory: test/kafka/kafka-client-loadtest | |
|       run: | | |
|                 make validate-setup | |
|  | |
|     - name: Run quick-test | |
|       working-directory: test/kafka/kafka-client-loadtest | |
|       run: | | |
|         # Run the quick-test target which includes: | |
|         # 1. Building the gateway | |
|         # 2. Starting all services (SeaweedFS, MQ broker, Schema Registry) | |
|         # 3. Registering Avro schemas | |
|         # 4. Running a 1-minute load test with Avro messages | |
|         # Override GOARCH to build for AMD64 (GitHub Actions runners are x86_64) | |
|         GOARCH=amd64 make quick-test         | |
|       env: | |
|         # Docker Compose settings | |
|         COMPOSE_HTTP_TIMEOUT: 300 | |
|         DOCKER_CLIENT_TIMEOUT: 300 | |
|         # Test parameters (set by quick-test, but can override) | |
|         TEST_DURATION: 60s | |
|         PRODUCER_COUNT: 1 | |
|         CONSUMER_COUNT: 1 | |
|         MESSAGE_RATE: 10 | |
|         VALUE_TYPE: avro | |
|  | |
|     - name: Show test results | |
|       if: always() | |
|       working-directory: test/kafka/kafka-client-loadtest | |
|       run: | | |
|         echo "=========================================" | |
|         echo "Test Results" | |
|         echo "=========================================" | |
|         make show-results || echo "Could not retrieve results"         | |
|  | |
|     - name: Show service logs on failure | |
|       if: failure() | |
|       working-directory: test/kafka/kafka-client-loadtest | |
|       run: | | |
|         echo "=========================================" | |
|         echo "Service Logs" | |
|         echo "=========================================" | |
|          | |
|         echo "Checking running containers..." | |
|         docker compose ps || true | |
|          | |
|         echo "=========================================" | |
|         echo "Master Logs" | |
|         echo "=========================================" | |
|         docker compose logs --tail=100 seaweedfs-master 2>&1 || echo "No master logs available" | |
|          | |
|         echo "=========================================" | |
|         echo "MQ Broker Logs (Last 100 lines)" | |
|         echo "=========================================" | |
|         docker compose logs --tail=100 seaweedfs-mq-broker 2>&1 || echo "No broker logs available" | |
|          | |
|         echo "=========================================" | |
|         echo "Kafka Gateway Logs (FULL - Critical for debugging)" | |
|         echo "=========================================" | |
|         docker compose logs kafka-gateway 2>&1 || echo "ERROR: Could not retrieve kafka-gateway logs" | |
|          | |
|         echo "=========================================" | |
|         echo "Schema Registry Logs (FULL)" | |
|         echo "=========================================" | |
|         docker compose logs schema-registry 2>&1 || echo "ERROR: Could not retrieve schema-registry logs" | |
|          | |
|         echo "=========================================" | |
|         echo "Load Test Logs" | |
|         echo "=========================================" | |
|         docker compose logs --tail=100 kafka-client-loadtest 2>&1 || echo "No loadtest logs available"         | |
|  | |
|     - name: Cleanup | |
|       if: always() | |
|       working-directory: test/kafka/kafka-client-loadtest | |
|       run: | | |
|         # Stop containers first | |
|         docker compose --profile loadtest --profile monitoring down -v --remove-orphans || true | |
|         # Clean up data with sudo to handle Docker root-owned files | |
|         sudo rm -rf data/* || true | |
|         # Clean up binary | |
|         rm -f weed-linux-* || true        
 |