mirror of
https://github.com/luxfi/dex.git
synced 2026-09-24 00:26:31 +00:00
Drop 31 demo/benchmark/experiment one-off cmds whose coverage lives in
package tests (bench-all, dag-network, dclient, dexe2e, e2e-fix-zmq,
fix-benchmark, hybrid-auto, latency-benchmark, memory-*, mlx-memory-analysis,
multi-node, multi-node-test, nats-*, perf-test, stress-test, test-client,
zmq-*, dvenue-cancel, dvenue-custody, venueprobe, empty api-server/server/trader).
Keep production binaries: dvenue, dchain, dex-server, dex-api-server, gateway,
price-feed, monitor, persistent-server, demo (each referenced by a
Dockerfile/Makefile/script/k8s manifest or a documented entrypoint).
Consolidate cmd/dvenue + cmd/dvenue-cpu into one tag-free cmd/dvenue: the two
mains were byte-identical except a build tag and a log label; the GPU-vs-CPU
matcher is already selected inside pkg/lx by its own cgo-tagged files, so the
main needs no tag. CGO_ENABLED alone picks the matcher; one binary builds in
both modes. engine_{cgo,nocgo}.go carry only the engine display label. dvenue
now builds under the default CGO_ENABLED=0 gate (was tag-excluded before).
Dockerfile.dvenue: drop the dvenue-custody build+copy (cmd removed).
Makefile build-tools: point at real tools (price-feed, monitor) instead of the
removed cmd/trader and never-existent cmd/lx-metrics.
pkg/price: fix the three CChainSource tests. They were gated on requireLuxd
(a luxd TCP dial) but CChainSource never dials luxd — fetch() is pure simulate().
The gate skipped only when luxd was down, masking the real defect on hosts where
luxd runs. Rewrite the tests to drive the source's true contract deterministically
via src.poll() (no ticker race) and assert against the symbols the source actually
polls (cchainTokens), plus not-found for untracked symbols. Remove the dead
requireLuxd helper and its net import.
333 lines
7.6 KiB
Makefile
333 lines
7.6 KiB
Makefile
# LX Makefile
|
|
# Complete build, test, and deployment automation
|
|
|
|
SHELL := /bin/bash
|
|
.PHONY: all build test clean help
|
|
|
|
# Version and build info
|
|
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
|
|
BUILD_TIME := $(shell date -u '+%Y-%m-%d_%H:%M:%S')
|
|
GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
|
|
|
|
# Go parameters
|
|
GO := go
|
|
GOBUILD := $(GO) build
|
|
GOCLEAN := $(GO) clean
|
|
GOTEST := $(GO) test
|
|
GOGET := $(GO) get
|
|
GOMOD := $(GO) mod
|
|
GOVET := $(GO) vet
|
|
GOFMT := gofmt
|
|
|
|
# Build parameters
|
|
CGO_ENABLED ?= 0
|
|
LDFLAGS := -ldflags "-X main.Version=$(VERSION) -X main.BuildTime=$(BUILD_TIME) -X main.GitCommit=$(GIT_COMMIT)"
|
|
|
|
# Binary output
|
|
BINARY_NAME := luxd
|
|
BINARY_DIR := bin
|
|
|
|
# Test parameters
|
|
TEST_TIMEOUT := 30s
|
|
BENCH_TIME := 10s
|
|
|
|
# Default target
|
|
all: clean fmt vet test build
|
|
@echo "✅ Build complete!"
|
|
|
|
help:
|
|
@echo "LX Makefile Commands:"
|
|
@echo ""
|
|
@echo "Development:"
|
|
@echo " make build - Build all binaries"
|
|
@echo " make test - Run all tests"
|
|
@echo " make bench - Run benchmarks"
|
|
@echo " make clean - Clean build artifacts"
|
|
@echo ""
|
|
@echo "Running:"
|
|
@echo " make run - Run single node"
|
|
@echo " make run-cluster - Run 3-node cluster"
|
|
@echo ""
|
|
@echo "Quality:"
|
|
@echo " make fmt - Format code"
|
|
@echo " make vet - Run go vet"
|
|
@echo " make lint - Run linters"
|
|
@echo ""
|
|
@echo "Docker:"
|
|
@echo " make docker-build - Build Docker images"
|
|
@echo " make up - Start with docker-compose"
|
|
@echo " make down - Stop docker-compose"
|
|
|
|
# Build targets
|
|
build: build-go build-tools
|
|
|
|
build-go:
|
|
@echo "🔨 Building luxd..."
|
|
@mkdir -p $(BINARY_DIR)
|
|
@CGO_ENABLED=$(CGO_ENABLED) $(GOBUILD) $(LDFLAGS) -o $(BINARY_DIR)/$(BINARY_NAME) ./cmd/luxd
|
|
@echo "✅ luxd built successfully!"
|
|
|
|
build-cpp:
|
|
@echo "🔨 Building with C++ optimizations..."
|
|
@mkdir -p $(BINARY_DIR)
|
|
@CGO_ENABLED=1 $(GOBUILD) $(LDFLAGS) -tags cpp -o $(BINARY_DIR)/$(BINARY_NAME)-cpp ./cmd/luxd
|
|
|
|
build-gpu:
|
|
@echo "🔨 Building with GPU support..."
|
|
@mkdir -p $(BINARY_DIR)
|
|
@CGO_ENABLED=1 $(GOBUILD) $(LDFLAGS) -tags "cpp gpu mlx" -o $(BINARY_DIR)/$(BINARY_NAME)-gpu ./cmd/luxd
|
|
|
|
# FPGA build targets
|
|
build-fpga:
|
|
@echo "🔨 Building with FPGA support..."
|
|
@mkdir -p $(BINARY_DIR)
|
|
@CGO_ENABLED=1 $(GOBUILD) $(LDFLAGS) -tags "cgo fpga" -o $(BINARY_DIR)/$(BINARY_NAME)-fpga ./cmd/luxd
|
|
|
|
build-fpga-versal:
|
|
@echo "🔨 Building for AMD Versal FPGA..."
|
|
@mkdir -p $(BINARY_DIR)
|
|
@$(GOBUILD) $(LDFLAGS) -tags "fpga versal" -o $(BINARY_DIR)/$(BINARY_NAME)-versal ./cmd/luxd
|
|
|
|
build-fpga-f2:
|
|
@echo "🔨 Building for AWS F2 FPGA..."
|
|
@mkdir -p $(BINARY_DIR)
|
|
@$(GOBUILD) $(LDFLAGS) -tags "fpga awsf2" -o $(BINARY_DIR)/$(BINARY_NAME)-f2 ./cmd/luxd
|
|
|
|
build-tools:
|
|
@echo "🔨 Building tools..."
|
|
@$(GOBUILD) -o $(BINARY_DIR)/price-feed ./cmd/price-feed
|
|
@$(GOBUILD) -o $(BINARY_DIR)/monitor ./cmd/monitor
|
|
|
|
# Test targets
|
|
test:
|
|
@echo "🧪 Running tests..."
|
|
@$(GOTEST) -v -timeout $(TEST_TIMEOUT) ./pkg/lx/...
|
|
@$(GOTEST) -v -timeout $(TEST_TIMEOUT) ./pkg/api/...
|
|
@echo "✅ Tests passed!"
|
|
|
|
test-all:
|
|
@./scripts/test-all.sh
|
|
|
|
test-race:
|
|
@$(GOTEST) -race -timeout 2m ./pkg/...
|
|
|
|
# Benchmark targets
|
|
bench:
|
|
@echo "🏁 Running benchmarks..."
|
|
@$(GOTEST) -bench=. -benchmem -benchtime=$(BENCH_TIME) -run=^$$ ./pkg/lx/...
|
|
|
|
bench-all:
|
|
@./scripts/run-comprehensive-benchmark.sh
|
|
|
|
# Run targets
|
|
run:
|
|
@$(BINARY_DIR)/$(BINARY_NAME) --data-dir ~/.lxd --http-port 8080
|
|
|
|
run-cluster:
|
|
@./scripts/run-lx-cluster.sh
|
|
|
|
run-dev:
|
|
@air -c .air.toml 2>/dev/null || $(BINARY_DIR)/$(BINARY_NAME)
|
|
|
|
# Code quality
|
|
fmt:
|
|
@$(GOFMT) -s -w .
|
|
|
|
vet:
|
|
@$(GOVET) ./...
|
|
|
|
lint:
|
|
@golangci-lint run --timeout 5m 2>/dev/null || echo "Install golangci-lint for linting"
|
|
|
|
# Docker targets
|
|
docker-build:
|
|
@docker build -f docker/backend/Dockerfile -t lxdex:$(VERSION) .
|
|
|
|
up:
|
|
@docker-compose -f docker/compose.yml up -d
|
|
|
|
down:
|
|
@docker-compose -f docker/compose.yml down
|
|
|
|
logs:
|
|
@docker-compose -f docker/compose.yml logs -f
|
|
|
|
# Utility targets
|
|
deps:
|
|
@$(GOMOD) download
|
|
@$(GOMOD) tidy
|
|
|
|
clean:
|
|
@$(GOCLEAN)
|
|
@rm -rf $(BINARY_DIR)
|
|
@rm -f coverage.out coverage.html
|
|
|
|
version:
|
|
@echo "Version: $(VERSION)"
|
|
@echo "Commit: $(GIT_COMMIT)"
|
|
@echo "Built: $(BUILD_TIME)"
|
|
|
|
# CI target
|
|
ci: clean fmt vet test build
|
|
@echo "✅ CI pipeline complete!"
|
|
|
|
# 3-node benchmark (legacy compatibility)
|
|
3node-bench:
|
|
@echo "🌐 Starting 3-node FPC network benchmark..."
|
|
@./scripts/run-3node-bench.sh
|
|
@echo "✅ 3-node benchmark complete!"
|
|
|
|
# Run demo
|
|
demo:
|
|
@./scripts/demo.sh
|
|
|
|
# Test MLX acceleration
|
|
test-mlx:
|
|
@./scripts/test-mlx.sh
|
|
|
|
# Build with MLX support
|
|
build-mlx: build-gpu
|
|
|
|
# Test CUDA acceleration
|
|
test-cuda:
|
|
@./scripts/test-cuda.sh
|
|
|
|
# Docker CUDA build
|
|
docker-cuda:
|
|
@docker build -f docker/backend/Dockerfile.cuda -t lxdex-cuda:$(VERSION) .
|
|
|
|
# Ensure 100% test passing
|
|
test-100:
|
|
@./scripts/ensure-100-pass.sh
|
|
|
|
# Run performance tuning
|
|
perf-tune:
|
|
@sudo ./scripts/perf-tune.sh
|
|
|
|
# Development setup
|
|
setup:
|
|
@./scripts/setup.sh
|
|
|
|
# Install development tools
|
|
tools:
|
|
@go install github.com/cosmtrek/air@latest
|
|
@go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
|
@go install github.com/securego/gosec/v2/cmd/gosec@latest
|
|
|
|
# Generate protobuf code
|
|
proto:
|
|
@protoc --go_out=. --go_opt=paths=source_relative \
|
|
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
|
|
proto/*.proto
|
|
|
|
# SDK targets
|
|
sdk-typescript:
|
|
@cd sdk/typescript && npm install && npm run build
|
|
|
|
sdk-python:
|
|
@cd sdk/python && pip install -e .
|
|
|
|
sdk-go:
|
|
@cd sdk/go && go mod tidy && go build ./...
|
|
|
|
sdk-all: sdk-typescript sdk-python sdk-go
|
|
|
|
# Deploy targets
|
|
deploy-staging:
|
|
@./scripts/deploy.sh staging deploy
|
|
|
|
deploy-production:
|
|
@./scripts/deploy.sh production deploy
|
|
|
|
rollback:
|
|
@./scripts/deploy.sh production rollback
|
|
|
|
# Monitoring
|
|
metrics:
|
|
@open http://localhost:9090
|
|
|
|
grafana:
|
|
@open http://localhost:3001
|
|
|
|
# Performance benchmarks
|
|
bench-10gbps:
|
|
@./scripts/benchmark-10gbps.sh
|
|
|
|
bench-zmq:
|
|
@./scripts/run-zmq-benchmark.sh
|
|
|
|
bench-comprehensive:
|
|
@./scripts/run-comprehensive-benchmark.sh
|
|
|
|
# Network operations
|
|
run-testnet:
|
|
@./scripts/run-lux-testnet.sh
|
|
|
|
run-local:
|
|
@./scripts/run-local-network.sh
|
|
|
|
run-fpc:
|
|
@./scripts/run-fpc-network.sh
|
|
|
|
run-qzmq:
|
|
@./scripts/run-qzmq-network.sh
|
|
|
|
# Database operations
|
|
db-migrate:
|
|
@migrate -path migrations -database "postgres://lxdex:lxdex123@localhost:5432/lxdex?sslmode=disable" up
|
|
|
|
db-rollback:
|
|
@migrate -path migrations -database "postgres://lxdex:lxdex123@localhost:5432/lxdex?sslmode=disable" down 1
|
|
|
|
db-reset:
|
|
@migrate -path migrations -database "postgres://lxdex:lxdex123@localhost:5432/lxdex?sslmode=disable" drop -f
|
|
@make db-migrate
|
|
|
|
# Complete verification
|
|
verify-all: deps fmt vet lint test-100 bench
|
|
@echo "✅ Complete verification passed!"
|
|
|
|
# Install everything for development
|
|
install: deps tools
|
|
@echo "✅ Development environment ready!"
|
|
|
|
# Security scan
|
|
security:
|
|
@gosec -fmt json -out security-report.json ./...
|
|
|
|
# Coverage report
|
|
coverage:
|
|
@go test -v -race -coverprofile=coverage.out -covermode=atomic ./pkg/...
|
|
@go tool cover -html=coverage.out -o coverage.html
|
|
@echo "Coverage report: coverage.html"
|
|
|
|
# Production build
|
|
prod: clean verify-all build docker-build
|
|
@echo "✅ Production build complete!"
|
|
|
|
# Quick development cycle
|
|
dev: fmt test-fast build-go run-dev
|
|
|
|
# Fast tests only
|
|
test-fast:
|
|
@go test -short -timeout 30s ./pkg/...
|
|
|
|
# Integration tests
|
|
test-integration:
|
|
@go test -tags integration -timeout 5m ./test/integration/...
|
|
|
|
# E2E tests
|
|
test-e2e:
|
|
@./scripts/test-all.sh e2e
|
|
|
|
# Load testing
|
|
load-test:
|
|
@k6 run test/load/scenario.js
|
|
|
|
# Initialize project
|
|
init:
|
|
@chmod +x scripts/*.sh
|
|
@mkdir -p bin
|
|
@echo "✅ Project initialized!"
|
|
|
|
.PHONY: all build test bench clean help run docker deploy sdk db verify install init demo test-mlx test-cuda docker-cuda |