mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2025-10-08 01:34:23 +08:00
446 lines
19 KiB
Makefile
446 lines
19 KiB
Makefile
# Kafka Client Load Test Makefile
|
||
# Provides convenient targets for running load tests against SeaweedFS Kafka Gateway
|
||
|
||
.PHONY: help build start stop restart clean test quick-test stress-test endurance-test monitor logs status
|
||
|
||
# Configuration
|
||
DOCKER_COMPOSE := docker compose
|
||
PROJECT_NAME := kafka-client-loadtest
|
||
CONFIG_FILE := config/loadtest.yaml
|
||
|
||
# Build configuration
|
||
GOARCH ?= arm64
|
||
GOOS ?= linux
|
||
|
||
# Default test parameters
|
||
TEST_MODE ?= comprehensive
|
||
TEST_DURATION ?= 300s
|
||
PRODUCER_COUNT ?= 10
|
||
CONSUMER_COUNT ?= 5
|
||
MESSAGE_RATE ?= 1000
|
||
MESSAGE_SIZE ?= 1024
|
||
|
||
# Colors for output
|
||
GREEN := \033[0;32m
|
||
YELLOW := \033[0;33m
|
||
BLUE := \033[0;34m
|
||
NC := \033[0m
|
||
|
||
help: ## Show this help message
|
||
@echo "Kafka Client Load Test Makefile"
|
||
@echo ""
|
||
@echo "Available targets:"
|
||
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " $(BLUE)%-20s$(NC) %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
||
@echo ""
|
||
@echo "Environment variables:"
|
||
@echo " TEST_MODE Test mode: producer, consumer, comprehensive (default: comprehensive)"
|
||
@echo " TEST_DURATION Test duration (default: 300s)"
|
||
@echo " PRODUCER_COUNT Number of producers (default: 10)"
|
||
@echo " CONSUMER_COUNT Number of consumers (default: 5)"
|
||
@echo " MESSAGE_RATE Messages per second per producer (default: 1000)"
|
||
@echo " MESSAGE_SIZE Message size in bytes (default: 1024)"
|
||
@echo ""
|
||
@echo "Examples:"
|
||
@echo " make test # Run default comprehensive test"
|
||
@echo " make test TEST_DURATION=10m # Run 10-minute test"
|
||
@echo " make quick-test # Run quick smoke test (rebuilds gateway)"
|
||
@echo " make stress-test # Run high-load stress test"
|
||
@echo " make test TEST_MODE=producer # Producer-only test"
|
||
@echo " make schema-test # Run schema integration test with Schema Registry"
|
||
@echo " make schema-quick-test # Run quick schema test (30s timeout)"
|
||
@echo " make schema-loadtest # Run load test with schemas enabled"
|
||
@echo " make build-binary # Build SeaweedFS binary locally for Linux"
|
||
@echo " make build-gateway # Build Kafka Gateway (builds binary + Docker image)"
|
||
@echo " make build-gateway-clean # Build Kafka Gateway with no cache (fresh build)"
|
||
|
||
build: ## Build the load test application
|
||
@echo "$(BLUE)Building load test application...$(NC)"
|
||
$(DOCKER_COMPOSE) build kafka-client-loadtest
|
||
@echo "$(GREEN)Build completed$(NC)"
|
||
|
||
build-binary: ## Build the SeaweedFS binary locally for Linux
|
||
@echo "$(BLUE)Building SeaweedFS binary locally for $(GOOS) $(GOARCH)...$(NC)"
|
||
cd ../../.. && \
|
||
CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build \
|
||
-ldflags="-s -w" \
|
||
-tags "5BytesOffset" \
|
||
-o test/kafka/kafka-client-loadtest/weed-$(GOOS)-$(GOARCH) \
|
||
weed/weed.go
|
||
@echo "$(GREEN)Binary build completed: weed-$(GOOS)-$(GOARCH)$(NC)"
|
||
|
||
build-gateway: build-binary ## Build the Kafka Gateway with latest changes
|
||
@echo "$(BLUE)Building Kafka Gateway Docker image...$(NC)"
|
||
$(DOCKER_COMPOSE) build kafka-gateway
|
||
@echo "$(GREEN)Kafka Gateway build completed$(NC)"
|
||
|
||
build-gateway-clean: build-binary ## Build the Kafka Gateway with no cache (force fresh build)
|
||
@echo "$(BLUE)Building Kafka Gateway Docker image with no cache...$(NC)"
|
||
$(DOCKER_COMPOSE) build --no-cache kafka-gateway
|
||
@echo "$(GREEN)Kafka Gateway clean build completed$(NC)"
|
||
|
||
setup: ## Set up monitoring and configuration
|
||
@echo "$(BLUE)Setting up monitoring configuration...$(NC)"
|
||
./scripts/setup-monitoring.sh
|
||
@echo "$(GREEN)Setup completed$(NC)"
|
||
|
||
start: build-gateway ## Start the infrastructure services (without load test)
|
||
@echo "$(BLUE)Starting SeaweedFS infrastructure...$(NC)"
|
||
$(DOCKER_COMPOSE) up -d \
|
||
seaweedfs-master \
|
||
seaweedfs-volume \
|
||
seaweedfs-filer \
|
||
seaweedfs-mq-broker \
|
||
kafka-gateway \
|
||
schema-registry-init \
|
||
schema-registry
|
||
@echo "$(GREEN)Infrastructure started$(NC)"
|
||
@echo "Waiting for services to be ready..."
|
||
./scripts/wait-for-services.sh wait
|
||
@echo "$(GREEN)All services are ready!$(NC)"
|
||
|
||
stop: ## Stop all services
|
||
@echo "$(BLUE)Stopping all services...$(NC)"
|
||
$(DOCKER_COMPOSE) --profile loadtest --profile monitoring down
|
||
@echo "$(GREEN)Services stopped$(NC)"
|
||
|
||
restart: stop start ## Restart all services
|
||
|
||
clean: ## Clean up all resources (containers, volumes, networks, local data)
|
||
@echo "$(YELLOW)Warning: This will remove all volumes and data!$(NC)"
|
||
@echo "Press Ctrl+C to cancel, or wait 5 seconds to continue..."
|
||
@sleep 5
|
||
@echo "$(BLUE)Cleaning up all resources...$(NC)"
|
||
$(DOCKER_COMPOSE) --profile loadtest --profile monitoring down -v --remove-orphans
|
||
docker system prune -f
|
||
@if [ -f "weed-linux-arm64" ]; then \
|
||
echo "$(BLUE)Removing local binary...$(NC)"; \
|
||
rm -f weed-linux-arm64; \
|
||
fi
|
||
@if [ -d "data" ]; then \
|
||
echo "$(BLUE)Removing ALL local data directories (including offset state)...$(NC)"; \
|
||
rm -rf data/*; \
|
||
fi
|
||
@echo "$(GREEN)Cleanup completed - all data removed$(NC)"
|
||
|
||
clean-binary: ## Clean up only the local binary
|
||
@echo "$(BLUE)Removing local binary...$(NC)"
|
||
@rm -f weed-linux-arm64
|
||
@echo "$(GREEN)Binary cleanup completed$(NC)"
|
||
|
||
status: ## Show service status
|
||
@echo "$(BLUE)Service Status:$(NC)"
|
||
$(DOCKER_COMPOSE) ps
|
||
|
||
logs: ## Show logs from all services
|
||
$(DOCKER_COMPOSE) logs -f
|
||
|
||
test: start ## Run the comprehensive load test
|
||
@echo "$(BLUE)Running Kafka client load test...$(NC)"
|
||
@echo "Mode: $(TEST_MODE), Duration: $(TEST_DURATION)"
|
||
@echo "Producers: $(PRODUCER_COUNT), Consumers: $(CONSUMER_COUNT)"
|
||
@echo "Message Rate: $(MESSAGE_RATE) msgs/sec, Size: $(MESSAGE_SIZE) bytes"
|
||
@echo ""
|
||
TEST_MODE=$(TEST_MODE) TEST_DURATION=$(TEST_DURATION) PRODUCER_COUNT=$(PRODUCER_COUNT) CONSUMER_COUNT=$(CONSUMER_COUNT) MESSAGE_RATE=$(MESSAGE_RATE) MESSAGE_SIZE=$(MESSAGE_SIZE) VALUE_TYPE=$(VALUE_TYPE) $(DOCKER_COMPOSE) --profile loadtest up --abort-on-container-exit kafka-client-loadtest
|
||
@echo "$(GREEN)Load test completed!$(NC)"
|
||
@$(MAKE) show-results
|
||
|
||
quick-test: build-gateway ## Run a quick smoke test (1 min, low load, WITH schemas)
|
||
@echo "$(BLUE)╔══════════════════════════════════════════════════════════════╗$(NC)"
|
||
@echo "$(BLUE)║ Quick Test (Low Load, WITH Schema Registry + Avro) ║$(NC)"
|
||
@echo "$(BLUE)║ - Duration: 1 minute ║$(NC)"
|
||
@echo "$(BLUE)║ - Load: 1 producer × 10 msg/sec = 10 total msg/sec ║$(NC)"
|
||
@echo "$(BLUE)║ - Message Type: Avro (with schema encoding) ║$(NC)"
|
||
@echo "$(BLUE)║ - Schema-First: Registers schemas BEFORE producing ║$(NC)"
|
||
@echo "$(BLUE)╚══════════════════════════════════════════════════════════════╝$(NC)"
|
||
@echo ""
|
||
@$(MAKE) start
|
||
@echo ""
|
||
@echo "$(BLUE)═══ Step 1: Registering schemas in Schema Registry ═══$(NC)"
|
||
@echo "$(YELLOW)[WARN] IMPORTANT: Schemas MUST be registered before producing Avro messages!$(NC)"
|
||
@./scripts/register-schemas.sh full
|
||
@echo "$(GREEN)- Schemas registered successfully$(NC)"
|
||
@echo ""
|
||
@echo "$(BLUE)═══ Step 2: Running load test with Avro messages ═══$(NC)"
|
||
@$(MAKE) test \
|
||
TEST_MODE=comprehensive \
|
||
TEST_DURATION=60s \
|
||
PRODUCER_COUNT=1 \
|
||
CONSUMER_COUNT=1 \
|
||
MESSAGE_RATE=10 \
|
||
MESSAGE_SIZE=256 \
|
||
VALUE_TYPE=avro
|
||
@echo ""
|
||
@echo "$(GREEN)╔══════════════════════════════════════════════════════════════╗$(NC)"
|
||
@echo "$(GREEN)║ Quick Test Complete! ║$(NC)"
|
||
@echo "$(GREEN)║ - Schema Registration ║$(NC)"
|
||
@echo "$(GREEN)║ - Avro Message Production ║$(NC)"
|
||
@echo "$(GREEN)║ - Message Consumption ║$(NC)"
|
||
@echo "$(GREEN)╚══════════════════════════════════════════════════════════════╝$(NC)"
|
||
|
||
standard-test: ## Run a standard load test (2 min, medium load, WITH Schema Registry + Avro)
|
||
@echo "$(BLUE)╔══════════════════════════════════════════════════════════════╗$(NC)"
|
||
@echo "$(BLUE)║ Standard Test (Medium Load, WITH Schema Registry) ║$(NC)"
|
||
@echo "$(BLUE)║ - Duration: 2 minutes ║$(NC)"
|
||
@echo "$(BLUE)║ - Load: 2 producers × 50 msg/sec = 100 total msg/sec ║$(NC)"
|
||
@echo "$(BLUE)║ - Message Type: Avro (with schema encoding) ║$(NC)"
|
||
@echo "$(BLUE)║ - IMPORTANT: Schemas registered FIRST in Schema Registry ║$(NC)"
|
||
@echo "$(BLUE)╚══════════════════════════════════════════════════════════════╝$(NC)"
|
||
@echo ""
|
||
@$(MAKE) start
|
||
@echo ""
|
||
@echo "$(BLUE)═══ Step 1: Registering schemas in Schema Registry ═══$(NC)"
|
||
@echo "$(YELLOW)Note: Schemas MUST be registered before producing Avro messages!$(NC)"
|
||
@./scripts/register-schemas.sh full
|
||
@echo "$(GREEN)- Schemas registered$(NC)"
|
||
@echo ""
|
||
@echo "$(BLUE)═══ Step 2: Running load test with Avro messages ═══$(NC)"
|
||
@$(MAKE) test \
|
||
TEST_MODE=comprehensive \
|
||
TEST_DURATION=2m \
|
||
PRODUCER_COUNT=2 \
|
||
CONSUMER_COUNT=2 \
|
||
MESSAGE_RATE=50 \
|
||
MESSAGE_SIZE=512 \
|
||
VALUE_TYPE=avro
|
||
@echo ""
|
||
@echo "$(GREEN)╔══════════════════════════════════════════════════════════════╗$(NC)"
|
||
@echo "$(GREEN)║ Standard Test Complete! ║$(NC)"
|
||
@echo "$(GREEN)╚══════════════════════════════════════════════════════════════╝$(NC)"
|
||
|
||
stress-test: ## Run a stress test (10 minutes, high load) with schemas
|
||
@echo "$(BLUE)Starting stress test with schema registration...$(NC)"
|
||
@$(MAKE) start
|
||
@echo "$(BLUE)Registering schemas with Schema Registry...$(NC)"
|
||
@./scripts/register-schemas.sh full
|
||
@echo "$(BLUE)Running stress test with registered schemas...$(NC)"
|
||
@$(MAKE) test \
|
||
TEST_MODE=comprehensive \
|
||
TEST_DURATION=10m \
|
||
PRODUCER_COUNT=20 \
|
||
CONSUMER_COUNT=10 \
|
||
MESSAGE_RATE=2000 \
|
||
MESSAGE_SIZE=2048 \
|
||
VALUE_TYPE=avro
|
||
|
||
endurance-test: ## Run an endurance test (30 minutes, sustained load) with schemas
|
||
@echo "$(BLUE)Starting endurance test with schema registration...$(NC)"
|
||
@$(MAKE) start
|
||
@echo "$(BLUE)Registering schemas with Schema Registry...$(NC)"
|
||
@./scripts/register-schemas.sh full
|
||
@echo "$(BLUE)Running endurance test with registered schemas...$(NC)"
|
||
@$(MAKE) test \
|
||
TEST_MODE=comprehensive \
|
||
TEST_DURATION=30m \
|
||
PRODUCER_COUNT=10 \
|
||
CONSUMER_COUNT=5 \
|
||
MESSAGE_RATE=1000 \
|
||
MESSAGE_SIZE=1024 \
|
||
VALUE_TYPE=avro
|
||
|
||
producer-test: ## Run producer-only load test
|
||
@$(MAKE) test TEST_MODE=producer
|
||
|
||
consumer-test: ## Run consumer-only load test (requires existing messages)
|
||
@$(MAKE) test TEST_MODE=consumer
|
||
|
||
register-schemas: start ## Register schemas with Schema Registry
|
||
@echo "$(BLUE)Registering schemas with Schema Registry...$(NC)"
|
||
@./scripts/register-schemas.sh full
|
||
@echo "$(GREEN)Schema registration completed!$(NC)"
|
||
|
||
verify-schemas: ## Verify schemas are registered in Schema Registry
|
||
@echo "$(BLUE)Verifying schemas in Schema Registry...$(NC)"
|
||
@./scripts/register-schemas.sh verify
|
||
@echo "$(GREEN)Schema verification completed!$(NC)"
|
||
|
||
list-schemas: ## List all registered schemas in Schema Registry
|
||
@echo "$(BLUE)Listing registered schemas...$(NC)"
|
||
@./scripts/register-schemas.sh list
|
||
|
||
cleanup-schemas: ## Clean up test schemas from Schema Registry
|
||
@echo "$(YELLOW)Cleaning up test schemas...$(NC)"
|
||
@./scripts/register-schemas.sh cleanup
|
||
@echo "$(GREEN)Schema cleanup completed!$(NC)"
|
||
|
||
schema-test: start ## Run schema integration test (with Schema Registry)
|
||
@echo "$(BLUE)Running schema integration test...$(NC)"
|
||
@echo "Testing Schema Registry integration with schematized topics"
|
||
@echo ""
|
||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o schema-test-linux test_schema_integration.go
|
||
docker run --rm --network kafka-client-loadtest \
|
||
-v $(PWD)/schema-test-linux:/usr/local/bin/schema-test \
|
||
alpine:3.18 /usr/local/bin/schema-test
|
||
@rm -f schema-test-linux
|
||
@echo "$(GREEN)Schema integration test completed!$(NC)"
|
||
|
||
schema-quick-test: start ## Run quick schema test (lighter version)
|
||
@echo "$(BLUE)Running quick schema test...$(NC)"
|
||
@echo "Testing basic schema functionality"
|
||
@echo ""
|
||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o schema-test-linux test_schema_integration.go
|
||
timeout 60s docker run --rm --network kafka-client-loadtest \
|
||
-v $(PWD)/schema-test-linux:/usr/local/bin/schema-test \
|
||
alpine:3.18 /usr/local/bin/schema-test || true
|
||
@rm -f schema-test-linux
|
||
@echo "$(GREEN)Quick schema test completed!$(NC)"
|
||
|
||
simple-schema-test: start ## Run simple schema test (step-by-step)
|
||
@echo "$(BLUE)Running simple schema test...$(NC)"
|
||
@echo "Step-by-step schema functionality test"
|
||
@echo ""
|
||
@mkdir -p simple-test
|
||
@cp simple_schema_test.go simple-test/main.go
|
||
cd simple-test && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ../simple-schema-test-linux .
|
||
docker run --rm --network kafka-client-loadtest \
|
||
-v $(PWD)/simple-schema-test-linux:/usr/local/bin/simple-schema-test \
|
||
alpine:3.18 /usr/local/bin/simple-schema-test
|
||
@rm -f simple-schema-test-linux
|
||
@rm -rf simple-test
|
||
@echo "$(GREEN)Simple schema test completed!$(NC)"
|
||
|
||
basic-schema-test: start ## Run basic schema test (manual schema handling without Schema Registry)
|
||
@echo "$(BLUE)Running basic schema test...$(NC)"
|
||
@echo "Testing schema functionality without Schema Registry dependency"
|
||
@echo ""
|
||
@mkdir -p basic-test
|
||
@cp basic_schema_test.go basic-test/main.go
|
||
cd basic-test && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ../basic-schema-test-linux .
|
||
timeout 60s docker run --rm --network kafka-client-loadtest \
|
||
-v $(PWD)/basic-schema-test-linux:/usr/local/bin/basic-schema-test \
|
||
alpine:3.18 /usr/local/bin/basic-schema-test
|
||
@rm -f basic-schema-test-linux
|
||
@rm -rf basic-test
|
||
@echo "$(GREEN)Basic schema test completed!$(NC)"
|
||
|
||
schema-loadtest: start ## Run load test with schemas enabled
|
||
@echo "$(BLUE)Running schema-enabled load test...$(NC)"
|
||
@echo "Mode: comprehensive with schemas, Duration: 3m"
|
||
@echo "Producers: 3, Consumers: 2, Message Rate: 50 msgs/sec"
|
||
@echo ""
|
||
TEST_MODE=comprehensive \
|
||
TEST_DURATION=3m \
|
||
PRODUCER_COUNT=3 \
|
||
CONSUMER_COUNT=2 \
|
||
MESSAGE_RATE=50 \
|
||
MESSAGE_SIZE=1024 \
|
||
SCHEMA_REGISTRY_URL=http://schema-registry:8081 \
|
||
$(DOCKER_COMPOSE) --profile loadtest up --abort-on-container-exit kafka-client-loadtest
|
||
@echo "$(GREEN)Schema load test completed!$(NC)"
|
||
@$(MAKE) show-results
|
||
|
||
monitor: setup ## Start monitoring stack (Prometheus + Grafana)
|
||
@echo "$(BLUE)Starting monitoring stack...$(NC)"
|
||
$(DOCKER_COMPOSE) --profile monitoring up -d prometheus grafana
|
||
@echo "$(GREEN)Monitoring stack started!$(NC)"
|
||
@echo ""
|
||
@echo "Access points:"
|
||
@echo " Prometheus: http://localhost:9090"
|
||
@echo " Grafana: http://localhost:3000 (admin/admin)"
|
||
|
||
monitor-stop: ## Stop monitoring stack
|
||
@echo "$(BLUE)Stopping monitoring stack...$(NC)"
|
||
$(DOCKER_COMPOSE) --profile monitoring stop prometheus grafana
|
||
@echo "$(GREEN)Monitoring stack stopped$(NC)"
|
||
|
||
test-with-monitoring: monitor start ## Run test with monitoring enabled
|
||
@echo "$(BLUE)Running load test with monitoring...$(NC)"
|
||
@$(MAKE) test
|
||
@echo ""
|
||
@echo "$(GREEN)Test completed! Check the monitoring dashboards:$(NC)"
|
||
@echo " Prometheus: http://localhost:9090"
|
||
@echo " Grafana: http://localhost:3000 (admin/admin)"
|
||
|
||
show-results: ## Show test results
|
||
@echo "$(BLUE)Test Results Summary:$(NC)"
|
||
@if $(DOCKER_COMPOSE) ps -q kafka-client-loadtest-runner >/dev/null 2>&1; then \
|
||
$(DOCKER_COMPOSE) exec -T kafka-client-loadtest-runner curl -s http://localhost:8080/stats 2>/dev/null || echo "Results not available"; \
|
||
else \
|
||
echo "Load test container not running"; \
|
||
fi
|
||
@echo ""
|
||
@if [ -d "test-results" ]; then \
|
||
echo "Detailed results saved to: test-results/"; \
|
||
ls -la test-results/ 2>/dev/null || true; \
|
||
fi
|
||
|
||
health-check: ## Check health of all services
|
||
@echo "$(BLUE)Checking service health...$(NC)"
|
||
./scripts/wait-for-services.sh check
|
||
|
||
validate-setup: ## Validate the test setup
|
||
@echo "$(BLUE)Validating test setup...$(NC)"
|
||
@echo "Checking Docker and Docker Compose..."
|
||
@docker --version
|
||
@docker compose version || docker-compose --version
|
||
@echo ""
|
||
@echo "Checking configuration file..."
|
||
@if [ -f "$(CONFIG_FILE)" ]; then \
|
||
echo "- Configuration file exists: $(CONFIG_FILE)"; \
|
||
else \
|
||
echo "x Configuration file not found: $(CONFIG_FILE)"; \
|
||
exit 1; \
|
||
fi
|
||
@echo ""
|
||
@echo "Checking scripts..."
|
||
@for script in scripts/*.sh; do \
|
||
if [ -x "$$script" ]; then \
|
||
echo "- $$script is executable"; \
|
||
else \
|
||
echo "x $$script is not executable"; \
|
||
fi; \
|
||
done
|
||
@echo "$(GREEN)Setup validation completed$(NC)"
|
||
|
||
dev-env: ## Set up development environment
|
||
@echo "$(BLUE)Setting up development environment...$(NC)"
|
||
@echo "Installing Go dependencies..."
|
||
go mod download
|
||
go mod tidy
|
||
@echo "$(GREEN)Development environment ready$(NC)"
|
||
|
||
benchmark: ## Run comprehensive benchmarking suite
|
||
@echo "$(BLUE)Running comprehensive benchmark suite...$(NC)"
|
||
@echo "This will run multiple test scenarios and collect detailed metrics"
|
||
@echo ""
|
||
@$(MAKE) quick-test
|
||
@sleep 10
|
||
@$(MAKE) standard-test
|
||
@sleep 10
|
||
@$(MAKE) stress-test
|
||
@echo "$(GREEN)Benchmark suite completed!$(NC)"
|
||
|
||
# Advanced targets
|
||
debug: ## Start services in debug mode with verbose logging
|
||
@echo "$(BLUE)Starting services in debug mode...$(NC)"
|
||
SEAWEEDFS_LOG_LEVEL=debug \
|
||
KAFKA_LOG_LEVEL=debug \
|
||
$(DOCKER_COMPOSE) up \
|
||
seaweedfs-master \
|
||
seaweedfs-volume \
|
||
seaweedfs-filer \
|
||
seaweedfs-mq-broker \
|
||
kafka-gateway \
|
||
schema-registry
|
||
|
||
attach-loadtest: ## Attach to running load test container
|
||
$(DOCKER_COMPOSE) exec kafka-client-loadtest-runner /bin/sh
|
||
|
||
exec-master: ## Execute shell in SeaweedFS master container
|
||
$(DOCKER_COMPOSE) exec seaweedfs-master /bin/sh
|
||
|
||
exec-filer: ## Execute shell in SeaweedFS filer container
|
||
$(DOCKER_COMPOSE) exec seaweedfs-filer /bin/sh
|
||
|
||
exec-gateway: ## Execute shell in Kafka gateway container
|
||
$(DOCKER_COMPOSE) exec kafka-gateway /bin/sh
|
||
|
||
# Utility targets
|
||
ps: status ## Alias for status
|
||
|
||
up: start ## Alias for start
|
||
|
||
down: stop ## Alias for stop
|
||
|
||
# Help is the default target
|
||
.DEFAULT_GOAL := help
|