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.
		
		
		
		
		
			
		
			
				
					
					
						
							206 lines
						
					
					
						
							7.9 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							206 lines
						
					
					
						
							7.9 KiB
						
					
					
				| # Kafka Integration Testing Makefile - Refactored | |
| # This replaces the existing Makefile with better organization | |
|  | |
| # Configuration | |
| ifndef DOCKER_COMPOSE | |
| DOCKER_COMPOSE := $(if $(shell command -v docker-compose 2>/dev/null),docker-compose,docker compose) | |
| endif | |
| TEST_TIMEOUT ?= 10m | |
| KAFKA_BOOTSTRAP_SERVERS ?= localhost:9092 | |
| KAFKA_GATEWAY_URL ?= localhost:9093 | |
| SCHEMA_REGISTRY_URL ?= http://localhost:8081 | |
| 
 | |
| # Colors for output | |
| BLUE := \033[36m | |
| GREEN := \033[32m | |
| YELLOW := \033[33m | |
| RED := \033[31m | |
| NC := \033[0m # No Color | |
| 
 | |
| .PHONY: help setup test clean logs status | |
| 
 | |
| help: ## Show this help message | |
| 	@echo "$(BLUE)SeaweedFS Kafka Integration Testing - Refactored$(NC)" | |
| 	@echo "" | |
| 	@echo "Available targets:" | |
| 	@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "  $(GREEN)%-20s$(NC) %s\n", $$1, $$2}' $(MAKEFILE_LIST) | |
| 
 | |
| # Environment Setup | |
| setup: ## Set up test environment (Kafka + Schema Registry + SeaweedFS) | |
| 	@echo "$(YELLOW)Setting up Kafka integration test environment...$(NC)" | |
| 	@$(DOCKER_COMPOSE) up -d | |
| 	@echo "$(BLUE)Waiting for all services to be ready...$(NC)" | |
| 	@./scripts/wait-for-services.sh | |
| 	@echo "$(GREEN)Test environment ready!$(NC)" | |
| 
 | |
| setup-schemas: setup ## Set up test environment and register schemas | |
| 	@echo "$(YELLOW)Registering test schemas...$(NC)" | |
| 	@$(DOCKER_COMPOSE) --profile setup run --rm test-setup | |
| 	@echo "$(GREEN)Schemas registered!$(NC)" | |
| 
 | |
| # Test Categories | |
| test: test-unit test-integration test-e2e ## Run all tests | |
|  | |
| test-unit: ## Run unit tests | |
| 	@echo "$(YELLOW)Running unit tests...$(NC)" | |
| 	@go test -v -timeout=$(TEST_TIMEOUT) ./unit/... | |
| 
 | |
| test-integration: ## Run integration tests | |
| 	@echo "$(YELLOW)Running integration tests...$(NC)" | |
| 	@go test -v -timeout=$(TEST_TIMEOUT) ./integration/... | |
| 
 | |
| test-e2e: setup-schemas ## Run end-to-end tests | |
| 	@echo "$(YELLOW)Running end-to-end tests...$(NC)" | |
| 	@KAFKA_BOOTSTRAP_SERVERS=$(KAFKA_BOOTSTRAP_SERVERS) \ | |
| 		KAFKA_GATEWAY_URL=$(KAFKA_GATEWAY_URL) \ | |
| 		SCHEMA_REGISTRY_URL=$(SCHEMA_REGISTRY_URL) \ | |
| 		go test -v -timeout=$(TEST_TIMEOUT) ./e2e/... | |
| 
 | |
| test-docker: setup-schemas ## Run Docker integration tests | |
| 	@echo "$(YELLOW)Running Docker integration tests...$(NC)" | |
| 	@KAFKA_BOOTSTRAP_SERVERS=$(KAFKA_BOOTSTRAP_SERVERS) \ | |
| 		KAFKA_GATEWAY_URL=$(KAFKA_GATEWAY_URL) \ | |
| 		SCHEMA_REGISTRY_URL=$(SCHEMA_REGISTRY_URL) \ | |
| 		go test -v -timeout=$(TEST_TIMEOUT) ./integration/ -run Docker | |
| 
 | |
| # Schema-specific tests | |
| test-schema: setup-schemas ## Run schema registry integration tests | |
| 	@echo "$(YELLOW)Running schema registry integration tests...$(NC)" | |
| 	@SCHEMA_REGISTRY_URL=$(SCHEMA_REGISTRY_URL) \ | |
| 		go test -v -timeout=$(TEST_TIMEOUT) ./integration/ -run Schema | |
| 
 | |
| # Client-specific tests | |
| test-sarama: setup-schemas ## Run Sarama client tests | |
| 	@echo "$(YELLOW)Running Sarama client tests...$(NC)" | |
| 	@KAFKA_BOOTSTRAP_SERVERS=$(KAFKA_BOOTSTRAP_SERVERS) \ | |
| 		KAFKA_GATEWAY_URL=$(KAFKA_GATEWAY_URL) \ | |
| 		go test -v -timeout=$(TEST_TIMEOUT) ./integration/ -run Sarama | |
| 
 | |
| test-kafka-go: setup-schemas ## Run kafka-go client tests | |
| 	@echo "$(YELLOW)Running kafka-go client tests...$(NC)" | |
| 	@KAFKA_BOOTSTRAP_SERVERS=$(KAFKA_BOOTSTRAP_SERVERS) \ | |
| 		KAFKA_GATEWAY_URL=$(KAFKA_GATEWAY_URL) \ | |
| 		go test -v -timeout=$(TEST_TIMEOUT) ./integration/ -run KafkaGo | |
| 
 | |
| # Performance tests | |
| test-performance: setup-schemas ## Run performance benchmarks | |
| 	@echo "$(YELLOW)Running Kafka performance benchmarks...$(NC)" | |
| 	@KAFKA_BOOTSTRAP_SERVERS=$(KAFKA_BOOTSTRAP_SERVERS) \ | |
| 		KAFKA_GATEWAY_URL=$(KAFKA_GATEWAY_URL) \ | |
| 		SCHEMA_REGISTRY_URL=$(SCHEMA_REGISTRY_URL) \ | |
| 		go test -v -timeout=$(TEST_TIMEOUT) -bench=. ./... | |
| 
 | |
| # Development targets | |
| dev-kafka: ## Start only Kafka ecosystem for development | |
| 	@$(DOCKER_COMPOSE) up -d zookeeper kafka schema-registry | |
| 	@sleep 20 | |
| 	@$(DOCKER_COMPOSE) --profile setup run --rm test-setup | |
| 
 | |
| dev-seaweedfs: ## Start only SeaweedFS for development | |
| 	@$(DOCKER_COMPOSE) up -d seaweedfs-master seaweedfs-volume seaweedfs-filer seaweedfs-mq-broker seaweedfs-mq-agent | |
| 
 | |
| dev-gateway: dev-seaweedfs ## Start Kafka Gateway for development | |
| 	@$(DOCKER_COMPOSE) up -d kafka-gateway | |
| 
 | |
| dev-test: dev-kafka ## Quick test with just Kafka ecosystem | |
| 	@SCHEMA_REGISTRY_URL=$(SCHEMA_REGISTRY_URL) go test -v -timeout=30s ./unit/... | |
| 
 | |
| # Cleanup | |
| clean: ## Clean up test environment | |
| 	@echo "$(YELLOW)Cleaning up test environment...$(NC)" | |
| 	@$(DOCKER_COMPOSE) down -v --remove-orphans | |
| 	@docker system prune -f | |
| 	@echo "$(GREEN)Environment cleaned up!$(NC)" | |
| 
 | |
| # Monitoring and debugging | |
| logs: ## Show logs from all services | |
| 	@$(DOCKER_COMPOSE) logs --tail=50 -f | |
| 
 | |
| logs-kafka: ## Show Kafka logs | |
| 	@$(DOCKER_COMPOSE) logs --tail=100 -f kafka | |
| 
 | |
| logs-schema-registry: ## Show Schema Registry logs | |
| 	@$(DOCKER_COMPOSE) logs --tail=100 -f schema-registry | |
| 
 | |
| logs-seaweedfs: ## Show SeaweedFS logs | |
| 	@$(DOCKER_COMPOSE) logs --tail=100 -f seaweedfs-master seaweedfs-volume seaweedfs-filer seaweedfs-mq-broker seaweedfs-mq-agent | |
| 
 | |
| logs-gateway: ## Show Kafka Gateway logs | |
| 	@$(DOCKER_COMPOSE) logs --tail=100 -f kafka-gateway | |
| 
 | |
| status: ## Show status of all services | |
| 	@echo "$(BLUE)Service Status:$(NC)" | |
| 	@$(DOCKER_COMPOSE) ps | |
| 	@echo "" | |
| 	@echo "$(BLUE)Kafka Status:$(NC)" | |
| 	@curl -s http://localhost:9092 > /dev/null && echo "Kafka accessible" || echo "Kafka not accessible" | |
| 	@echo "" | |
| 	@echo "$(BLUE)Schema Registry Status:$(NC)" | |
| 	@curl -s $(SCHEMA_REGISTRY_URL)/subjects > /dev/null && echo "Schema Registry accessible" || echo "Schema Registry not accessible" | |
| 	@echo "" | |
| 	@echo "$(BLUE)Kafka Gateway Status:$(NC)" | |
| 	@nc -z localhost 9093 && echo "Kafka Gateway accessible" || echo "Kafka Gateway not accessible" | |
| 
 | |
| debug: ## Debug test environment | |
| 	@echo "$(BLUE)Debug Information:$(NC)" | |
| 	@echo "Kafka Bootstrap Servers: $(KAFKA_BOOTSTRAP_SERVERS)" | |
| 	@echo "Schema Registry URL: $(SCHEMA_REGISTRY_URL)" | |
| 	@echo "Kafka Gateway URL: $(KAFKA_GATEWAY_URL)" | |
| 	@echo "" | |
| 	@echo "Docker Compose Status:" | |
| 	@$(DOCKER_COMPOSE) ps | |
| 	@echo "" | |
| 	@echo "Network connectivity:" | |
| 	@docker network ls | grep kafka-integration-test || echo "No Kafka test network found" | |
| 	@echo "" | |
| 	@echo "Schema Registry subjects:" | |
| 	@curl -s $(SCHEMA_REGISTRY_URL)/subjects 2>/dev/null || echo "Schema Registry not accessible" | |
| 
 | |
| # Utility targets | |
| install-deps: ## Install required dependencies | |
| 	@echo "$(YELLOW)Installing test dependencies...$(NC)" | |
| 	@which docker > /dev/null || (echo "$(RED)Docker not found$(NC)" && exit 1) | |
| 	@which docker-compose > /dev/null || (echo "$(RED)Docker Compose not found$(NC)" && exit 1) | |
| 	@which curl > /dev/null || (echo "$(RED)curl not found$(NC)" && exit 1) | |
| 	@which nc > /dev/null || (echo "$(RED)netcat not found$(NC)" && exit 1) | |
| 	@echo "$(GREEN)All dependencies available$(NC)" | |
| 
 | |
| check-env: ## Check test environment setup | |
| 	@echo "$(BLUE)Environment Check:$(NC)" | |
| 	@echo "KAFKA_BOOTSTRAP_SERVERS: $(KAFKA_BOOTSTRAP_SERVERS)" | |
| 	@echo "SCHEMA_REGISTRY_URL: $(SCHEMA_REGISTRY_URL)" | |
| 	@echo "KAFKA_GATEWAY_URL: $(KAFKA_GATEWAY_URL)" | |
| 	@echo "TEST_TIMEOUT: $(TEST_TIMEOUT)" | |
| 	@make install-deps | |
| 
 | |
| # CI targets | |
| ci-test: ## Run tests in CI environment | |
| 	@echo "$(YELLOW)Running CI tests...$(NC)" | |
| 	@make setup-schemas | |
| 	@make test-unit | |
| 	@make test-integration | |
| 	@make clean | |
| 
 | |
| ci-e2e: ## Run end-to-end tests in CI | |
| 	@echo "$(YELLOW)Running CI end-to-end tests...$(NC)" | |
| 	@make test-e2e | |
| 	@make clean | |
| 
 | |
| # Interactive targets | |
| shell-kafka: ## Open shell in Kafka container | |
| 	@$(DOCKER_COMPOSE) exec kafka bash | |
| 
 | |
| shell-gateway: ## Open shell in Kafka Gateway container | |
| 	@$(DOCKER_COMPOSE) exec kafka-gateway sh | |
| 
 | |
| topics: ## List Kafka topics | |
| 	@$(DOCKER_COMPOSE) exec kafka kafka-topics --list --bootstrap-server localhost:29092 | |
| 
 | |
| create-topic: ## Create a test topic (usage: make create-topic TOPIC=my-topic) | |
| 	@$(DOCKER_COMPOSE) exec kafka kafka-topics --create --topic $(TOPIC) --bootstrap-server localhost:29092 --partitions 3 --replication-factor 1 | |
| 
 | |
| produce: ## Produce test messages (usage: make produce TOPIC=my-topic) | |
| 	@$(DOCKER_COMPOSE) exec kafka kafka-console-producer --bootstrap-server localhost:29092 --topic $(TOPIC) | |
| 
 | |
| consume: ## Consume messages (usage: make consume TOPIC=my-topic) | |
| 	@$(DOCKER_COMPOSE) exec kafka kafka-console-consumer --bootstrap-server localhost:29092 --topic $(TOPIC) --from-beginning
 |