mirror of
https://github.com/DeBrosOfficial/network.git
synced 2025-10-06 08:39:08 +00:00
The debug configurations and version bump changes are simple enough to be captured in the subject line alone, so no body is needed.
203 lines
7.5 KiB
Makefile
203 lines
7.5 KiB
Makefile
TEST?=./...
|
|
|
|
.PHONY: test
|
|
test:
|
|
@echo Running tests...
|
|
go test -v $(TEST)
|
|
|
|
# Gateway-focused E2E tests assume gateway and nodes are already running
|
|
# Configure via env:
|
|
# GATEWAY_BASE_URL (default http://127.0.0.1:8080)
|
|
# GATEWAY_API_KEY (required for auth-protected routes)
|
|
.PHONY: test-e2e
|
|
test-e2e:
|
|
@echo "Running gateway E2E tests (HTTP/WS only)..."
|
|
@echo "Base URL: $${GATEWAY_BASE_URL:-http://127.0.0.1:8080}"
|
|
@test -n "$$GATEWAY_API_KEY" || (echo "GATEWAY_API_KEY must be set" && exit 1)
|
|
go test -v -tags e2e ./e2e
|
|
|
|
# Network - Distributed P2P Database System
|
|
# Makefile for development and build tasks
|
|
|
|
.PHONY: build clean test run-node run-node2 run-node3 run-example deps tidy fmt vet lint clear-ports
|
|
|
|
VERSION := 0.42.1-beta
|
|
COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo unknown)
|
|
DATE ?= $(shell date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
LDFLAGS := -X 'main.version=$(VERSION)' -X 'main.commit=$(COMMIT)' -X 'main.date=$(DATE)'
|
|
|
|
# Build targets
|
|
build: deps
|
|
@echo "Building network executables (version=$(VERSION))..."
|
|
@mkdir -p bin
|
|
go build -ldflags "$(LDFLAGS)" -o bin/node ./cmd/node
|
|
go build -ldflags "$(LDFLAGS)" -o bin/network-cli cmd/cli/main.go
|
|
# Inject gateway build metadata via pkg path variables
|
|
go build -ldflags "$(LDFLAGS) -X 'git.debros.io/DeBros/network/pkg/gateway.BuildVersion=$(VERSION)' -X 'git.debros.io/DeBros/network/pkg/gateway.BuildCommit=$(COMMIT)' -X 'git.debros.io/DeBros/network/pkg/gateway.BuildTime=$(DATE)'" -o bin/gateway ./cmd/gateway
|
|
@echo "Build complete! Run ./bin/network-cli version"
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
@echo "Cleaning build artifacts..."
|
|
rm -rf bin/
|
|
rm -rf data/
|
|
@echo "Clean complete!"
|
|
|
|
# Run bootstrap node (auto-selects identity and data dir)
|
|
run-node:
|
|
@echo "Starting bootstrap node with config..."
|
|
go run ./cmd/node --config configs/bootstrap.yaml
|
|
|
|
# Run second node (regular) - requires join address of bootstrap node
|
|
# Usage: make run-node2 JOINADDR=/ip4/127.0.0.1/tcp/5001 HTTP=5002 RAFT=7002 P2P=4002
|
|
run-node2:
|
|
@echo "Starting regular node2 with config..."
|
|
go run ./cmd/node --config configs/node.yaml
|
|
|
|
# Run third node (regular) - requires join address of bootstrap node
|
|
# Usage: make run-node3 JOINADDR=/ip4/127.0.0.1/tcp/5001 HTTP=5003 RAFT=7003 P2P=4003
|
|
run-node3:
|
|
@echo "Starting regular node3 with config..."
|
|
go run ./cmd/node --config configs/node.yaml
|
|
|
|
# Run gateway HTTP server
|
|
# Usage examples:
|
|
# make run-gateway # uses defaults (:8080, namespace=default)
|
|
# GATEWAY_ADDR=":8081" make run-gateway # override listen addr via env
|
|
# GATEWAY_NAMESPACE=myapp make run-gateway # set namespace
|
|
# GATEWAY_BOOTSTRAP_PEERS="/ip4/127.0.0.1/tcp/4001/p2p/<ID>" make run-gateway
|
|
# GATEWAY_REQUIRE_AUTH=1 GATEWAY_API_KEYS="key1:ns1,key2:ns2" make run-gateway
|
|
run-gateway:
|
|
@echo "Starting gateway HTTP server..."
|
|
GATEWAY_ADDR=$(or $(ADDR),$(GATEWAY_ADDR)) \
|
|
GATEWAY_NAMESPACE=$(or $(NAMESPACE),$(GATEWAY_NAMESPACE)) \
|
|
GATEWAY_BOOTSTRAP_PEERS=$(GATEWAY_BOOTSTRAP_PEERS) \
|
|
GATEWAY_REQUIRE_AUTH=$(GATEWAY_REQUIRE_AUTH) \
|
|
GATEWAY_API_KEYS=$(GATEWAY_API_KEYS) \
|
|
go run ./cmd/gateway
|
|
|
|
# Run basic usage example
|
|
run-example:
|
|
@echo "Running basic usage example..."
|
|
go run examples/basic_usage.go
|
|
|
|
# Show how to run with flags
|
|
show-bootstrap:
|
|
@echo "Provide join address via flags, e.g.:"
|
|
@echo " make run-node2 JOINADDR=/ip4/127.0.0.1/tcp/5001 HTTP=5002 RAFT=7002 P2P=4002"
|
|
|
|
# Run network CLI
|
|
run-cli:
|
|
@echo "Running network CLI help..."
|
|
./bin/network-cli help
|
|
|
|
# Network CLI helper commands
|
|
cli-health:
|
|
@echo "Checking network health..."
|
|
./bin/network-cli health
|
|
|
|
cli-peers:
|
|
@echo "Listing network peers..."
|
|
./bin/network-cli peers
|
|
|
|
cli-status:
|
|
@echo "Getting network status..."
|
|
./bin/network-cli status
|
|
|
|
cli-storage-test:
|
|
@echo "Testing storage operations..."
|
|
@./bin/network-cli storage put test-key "Hello Network" || echo "Storage test requires running network"
|
|
@./bin/network-cli storage get test-key || echo "Storage test requires running network"
|
|
@./bin/network-cli storage list || echo "Storage test requires running network"
|
|
|
|
cli-pubsub-test:
|
|
@echo "Testing pub/sub operations..."
|
|
@./bin/network-cli pubsub publish test-topic "Hello World" || echo "PubSub test requires running network"
|
|
@./bin/network-cli pubsub topics || echo "PubSub test requires running network"
|
|
|
|
# Download dependencies
|
|
deps:
|
|
@echo "Downloading dependencies..."
|
|
go mod download
|
|
|
|
# Tidy dependencies
|
|
tidy:
|
|
@echo "Tidying dependencies..."
|
|
go mod tidy
|
|
|
|
# Format code
|
|
fmt:
|
|
@echo "Formatting code..."
|
|
go fmt ./...
|
|
|
|
# Vet code
|
|
vet:
|
|
@echo "Vetting code..."
|
|
go vet ./...
|
|
|
|
# Lint alias (lightweight for now)
|
|
lint: fmt vet
|
|
@echo "Linting complete (fmt + vet)"
|
|
|
|
# Clear common development ports
|
|
clear-ports:
|
|
@echo "Clearing common dev ports (4001/4002, 5001/5002, 7001/7002)..."
|
|
@chmod +x scripts/clear-ports.sh || true
|
|
@scripts/clear-ports.sh
|
|
|
|
# Development setup
|
|
dev-setup: deps
|
|
@echo "Setting up development environment..."
|
|
@mkdir -p data/bootstrap data/node data/node2 data/node3
|
|
@mkdir -p data/test-bootstrap data/test-node1 data/test-node2
|
|
@echo "Development setup complete!"
|
|
|
|
# Start development cluster (requires multiple terminals)
|
|
dev-cluster:
|
|
@echo "To start a development cluster, run these commands in separate terminals:"
|
|
@echo "1. make run-node # Start bootstrap node (uses configs/bootstrap.yaml)"
|
|
@echo "2. make run-node2 # Start second node (uses configs/node.yaml)"
|
|
@echo "3. make run-node3 # Start third node (uses configs/node.yaml)"
|
|
@echo "4. make run-example # Test basic functionality"
|
|
@echo "5. make cli-health # Check network health"
|
|
@echo "6. make cli-peers # List peers"
|
|
@echo "7. make cli-storage-test # Test storage"
|
|
@echo "8. make cli-pubsub-test # Test messaging"
|
|
|
|
# Full development workflow
|
|
dev: clean build test
|
|
@echo "Development workflow complete!"
|
|
|
|
# Help
|
|
help:
|
|
@echo "Available targets:"
|
|
@echo " build - Build all executables"
|
|
@echo " clean - Clean build artifacts"
|
|
@echo " test - Run tests"
|
|
@echo " run-node - Start bootstrap node"
|
|
@echo " run-node2 - Start second node (requires JOINADDR, optional HTTP/RAFT/P2P)"
|
|
@echo " run-node3 - Start third node (requires JOINADDR, optional HTTP/RAFT/P2P)"
|
|
@echo " run-gateway - Start HTTP gateway (flags via env: GATEWAY_ADDR, GATEWAY_NAMESPACE, GATEWAY_BOOTSTRAP_PEERS, GATEWAY_REQUIRE_AUTH, GATEWAY_API_KEYS)"
|
|
@echo " run-example - Run usage example"
|
|
@echo " run-cli - Run network CLI help"
|
|
@echo " show-bootstrap - Show example bootstrap usage with flags"
|
|
@echo " cli-health - Check network health"
|
|
@echo " cli-peers - List network peers"
|
|
@echo " cli-status - Get network status"
|
|
@echo " cli-storage-test - Test storage operations"
|
|
@echo " cli-pubsub-test - Test pub/sub operations"
|
|
@echo " test-multinode - Full multi-node test with 1 bootstrap + 2 nodes"
|
|
@echo " test-peer-discovery - Test peer discovery (requires running nodes)"
|
|
@echo " test-replication - Test data replication (requires running nodes)"
|
|
@echo " test-consensus - Test database consensus (requires running nodes)"
|
|
@echo " deps - Download dependencies"
|
|
@echo " tidy - Tidy dependencies"
|
|
@echo " fmt - Format code"
|
|
@echo " vet - Vet code"
|
|
@echo " lint - Lint code (fmt + vet)"
|
|
@echo " clear-ports - Clear common dev ports"
|
|
@echo " dev-setup - Setup development environment"
|
|
@echo " dev-cluster - Show cluster startup commands"
|
|
@echo " dev - Full development workflow"
|
|
@echo " help - Show this help"
|