aboutsummaryrefslogtreecommitdiff
path: root/test/kafka/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'test/kafka/Makefile')
-rw-r--r--test/kafka/Makefile206
1 files changed, 206 insertions, 0 deletions
diff --git a/test/kafka/Makefile b/test/kafka/Makefile
new file mode 100644
index 000000000..00f7efbf7
--- /dev/null
+++ b/test/kafka/Makefile
@@ -0,0 +1,206 @@
+# 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