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.
		
		
		
		
		
			
		
			
				
					
					
						
							97 lines
						
					
					
						
							2.8 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							97 lines
						
					
					
						
							2.8 KiB
						
					
					
				
								.PHONY: build run clean test deps proto integration-test test-all
							 | 
						|
								
							 | 
						|
								# Build the telemetry server
							 | 
						|
								build:
							 | 
						|
									go build -o telemetry-server .
							 | 
						|
								
							 | 
						|
								# Run the server in development mode
							 | 
						|
								run:
							 | 
						|
									go run . -port=8080 -dashboard=true -cleanup=1h -max-age=24h
							 | 
						|
								
							 | 
						|
								# Run the server in production mode
							 | 
						|
								run-prod:
							 | 
						|
									./telemetry-server -port=8080 -dashboard=true -cleanup=24h -max-age=720h
							 | 
						|
								
							 | 
						|
								# Clean build artifacts
							 | 
						|
								clean:
							 | 
						|
									rm -f telemetry-server
							 | 
						|
									rm -f ../test/telemetry-server-test.log
							 | 
						|
									go clean
							 | 
						|
								
							 | 
						|
								# Run unit tests
							 | 
						|
								test:
							 | 
						|
									go test ./...
							 | 
						|
								
							 | 
						|
								# Run integration tests
							 | 
						|
								integration-test:
							 | 
						|
									@echo "🧪 Running telemetry integration tests..."
							 | 
						|
									cd ../../ && go run telemetry/test/integration.go
							 | 
						|
								
							 | 
						|
								# Run all tests (unit + integration)
							 | 
						|
								test-all: test integration-test
							 | 
						|
								
							 | 
						|
								# Install dependencies
							 | 
						|
								deps:
							 | 
						|
									go mod download
							 | 
						|
									go mod tidy
							 | 
						|
								
							 | 
						|
								# Generate protobuf code (requires protoc)
							 | 
						|
								proto:
							 | 
						|
									cd .. && protoc --go_out=. --go_opt=paths=source_relative proto/telemetry.proto
							 | 
						|
								
							 | 
						|
								# Build Docker image
							 | 
						|
								docker-build:
							 | 
						|
									docker build -t seaweedfs-telemetry .
							 | 
						|
								
							 | 
						|
								# Run with Docker
							 | 
						|
								docker-run:
							 | 
						|
									docker run -p 8080:8080 seaweedfs-telemetry -port=8080 -dashboard=true
							 | 
						|
								
							 | 
						|
								# Development with auto-reload (requires air: go install github.com/cosmtrek/air@latest)
							 | 
						|
								dev:
							 | 
						|
									air
							 | 
						|
								
							 | 
						|
								# Check if protoc is available
							 | 
						|
								check-protoc:
							 | 
						|
									@which protoc > /dev/null || (echo "protoc is required for proto generation. Install from https://grpc.io/docs/protoc-installation/" && exit 1)
							 | 
						|
								
							 | 
						|
								# Full development setup
							 | 
						|
								setup: check-protoc deps proto build
							 | 
						|
								
							 | 
						|
								# Run a quick smoke test
							 | 
						|
								smoke-test: build
							 | 
						|
									@echo "🔥 Running smoke test..."
							 | 
						|
									@timeout 10s ./telemetry-server -port=18081 > /dev/null 2>&1 & \
							 | 
						|
									SERVER_PID=$$!; \
							 | 
						|
									sleep 2; \
							 | 
						|
									if curl -s http://localhost:18081/health > /dev/null; then \
							 | 
						|
										echo "✅ Smoke test passed - server responds to health check"; \
							 | 
						|
									else \
							 | 
						|
										echo "❌ Smoke test failed - server not responding"; \
							 | 
						|
										exit 1; \
							 | 
						|
									fi; \
							 | 
						|
									kill $$SERVER_PID 2>/dev/null || true
							 | 
						|
								
							 | 
						|
								# Continuous integration target
							 | 
						|
								ci: deps proto build test integration-test
							 | 
						|
									@echo "🎉 All CI tests passed!"
							 | 
						|
								
							 | 
						|
								# Help
							 | 
						|
								help:
							 | 
						|
									@echo "Available targets:"
							 | 
						|
									@echo "  build           - Build the telemetry server binary"
							 | 
						|
									@echo "  run             - Run server in development mode"
							 | 
						|
									@echo "  run-prod        - Run server in production mode"
							 | 
						|
									@echo "  clean           - Clean build artifacts"
							 | 
						|
									@echo "  test            - Run unit tests"
							 | 
						|
									@echo "  integration-test- Run integration tests"
							 | 
						|
									@echo "  test-all        - Run all tests (unit + integration)"
							 | 
						|
									@echo "  deps            - Install Go dependencies"
							 | 
						|
									@echo "  proto           - Generate protobuf code"
							 | 
						|
									@echo "  docker-build    - Build Docker image"
							 | 
						|
									@echo "  docker-run      - Run with Docker"
							 | 
						|
									@echo "  dev             - Run with auto-reload (requires air)"
							 | 
						|
									@echo "  smoke-test      - Quick server health check"
							 | 
						|
									@echo "  setup           - Full development setup"
							 | 
						|
									@echo "  ci              - Continuous integration (all tests)"
							 | 
						|
									@echo "  help            - Show this help" 
							 |