Some checks failed
go: build dev binaries / cleanup (push) Successful in 4s
Codespell / Check for spelling errors (push) Failing after 3s
docker: build dev containers / build-rust-binaries (amd64, x86_64-unknown-linux-musl) (push) Failing after 3s
docker: build dev containers / build-dev-containers (push) Has been skipped
docker: build dev containers / build-rust-binaries (arm64, true, aarch64-unknown-linux-musl) (push) Failing after 3s
End to End / FUSE Mount (push) Failing after 2s
EC Integration Tests / EC Integration Tests (push) Failing after 30s
FUSE DLM Integration Tests / FUSE DLM Integration Tests (push) Failing after 3s
FUSE Volume Server Failover Tests / FUSE Volume Server Failover (push) Failing after 3s
FUSE Integration Tests / FUSE Integration Testing (push) Failing after 2s
FUSE P2P Peer Chunk Sharing Integration Tests / FUSE P2P Peer Chunk Sharing (push) Failing after 3s
go: build binary / Go Vet (push) Failing after 2s
go: build binary / Go Vet 32-bit (push) Failing after 3s
go: build binary / Build (push) Failing after 4s
go: build binary / Build cross-platform (freebsd/amd64) (push) Failing after 3s
go: build binary / Build cross-platform (windows/amd64) (push) Failing after 3s
go: build binary / Build cross-platform (darwin/arm64) (push) Failing after 3s
go: build binary / Build cross-platform (windows/arm64) (push) Failing after 3s
go: build binary / Test (push) Failing after 2s
go: build binary / Test 32-bit (push) Failing after 3s
helm: lint and test charts / lint-test (push) Failing after 3s
Java Client Integration Tests / Java Integration Tests (11) (push) Failing after 3s
Java Client Integration Tests / Java Integration Tests (17) (push) Failing after 3s
go: build dev binaries / build_dev_linux_windows (amd64, linux) (push) Failing after 2s
go: build dev binaries / build_dev_linux_windows (amd64, windows) (push) Failing after 3s
go: build dev binaries / build_dev_darwin (amd64, darwin) (push) Has been skipped
go: build dev binaries / build_dev_darwin (arm64, darwin) (push) Has been skipped
Java Client Unit Tests / Java Unit Tests (11) (push) Failing after 3s
Java Client Unit Tests / Java Unit Tests (17) (push) Failing after 2s
Java Client Unit Tests / Java Unit Tests (21) (push) Failing after 3s
Java Client Unit Tests / Java Unit Tests (8) (push) Failing after 3s
Kafka Quick Test (Load Test with Schema Registry) / Kafka Client Load Test (Quick) (push) Failing after 3s
Kafka Gateway Tests / Kafka Unit Tests (unit-tests-1) (push) Failing after 11s
Kafka Gateway Tests / Kafka Integration Tests (Critical) (integration-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka End-to-End Tests (with SMQ) (e2e-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka Consumer Group Tests (Highly Isolated) (consumer-group-1) (push) Failing after 2s
Kafka Gateway Tests / Kafka Client Compatibility (with SMQ) (client-compat-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka SMQ Integration Tests (Full Stack) (smq-integration-1) (push) Failing after 3s
Kafka Gateway Tests / Kafka Protocol Tests (Isolated) (protocol-1) (push) Failing after 3s
KMS Tests / KMS Provider Integration Tests (push) Failing after 2s
KMS Tests / S3 KMS End-to-End Tests (push) Failing after 3s
Master Cold Start Tests / Master Cold Start Tests (push) Failing after 4s
Metadata Subscribe Integration Tests / Metadata Subscribe Integration Tests (push) Failing after 3s
Multi-Master Tests / Multi-Master Failover Tests (push) Failing after 3s
Performance / CPU and Heap Profile (push) Failing after 2s
Performance / S3 Read/Write Benchmark (rust volume) (push) Failing after 3s
pjdfstest POSIX Compliance / pjdfstest (push) Failing after 2s
Plugin Worker Integration Tests / Plugin Worker: erasure_coding (push) Failing after 3s
Plugin Worker Integration Tests / Plugin Worker: vacuum (push) Failing after 3s
Rust Volume Server Tests / Rust Integration Tests (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 1) (push) Failing after 2s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 1) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 2) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 2) (push) Failing after 3s
Rust Volume Server Tests / Go Tests with Rust Volume (grpc - Shard 3) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Distributed Tests (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Performance Tests (push) Failing after 3s
Performance / Throughput Benchmark (go volume) (push) Failing after 3s
Performance / Throughput Benchmark (rust volume) (push) Failing after 2s
Performance / S3 Read/Write Benchmark (go volume) (push) Failing after 3s
Plugin Worker Integration Tests / Plugin Worker: volume_balance (push) Failing after 3s
PostgreSQL Gateway Tests / PostgreSQL Basic Tests (push) Failing after 3s
Rust Volume Server Tests / Rust Unit Tests (push) Failing after 2s
Rust Volume Server Tests / Go Tests with Rust Volume (http - Shard 3) (push) Failing after 3s
Rust Plugin Worker Tests / Rust Plugin Worker Build and Unit Tests (push) Failing after 3s
rust: build dev volume server binaries / cleanup (push) Successful in 3s
S3 ETag and ACL Tests / S3 ETag + ACL Integration Tests (push) Failing after 3s
S3 IAM Integration Tests / IAM Unit Tests (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (advanced) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (basic) (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Integration Tests (group) (push) Failing after 3s
S3 IAM Integration Tests / S3 IAM Integration Tests (policy-enforcement) (push) Failing after 2s
S3 IAM Integration Tests / S3 IAM Integration Tests (sts) (push) Failing after 4s
S3 Keycloak Integration Tests / S3 Keycloak Integration Tests (push) Failing after 3s
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.11) (push) Failing after 3s
S3 PyArrow Parquet Tests / Go Unit Tests (Implicit Directory) (push) Has been cancelled
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.12) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-darwin (darwin-amd64, x86_64-apple-darwin) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-darwin (darwin-arm64, aarch64-apple-darwin) (push) Has been cancelled
rust: build dev volume server binaries / build-rust-volume-dev-linux (linux-amd64, x86_64-unknown-linux-gnu) (push) Has been cancelled
S3 PyArrow Parquet Tests / PyArrow Parquet Tests (Python 3.9) (push) Has been cancelled
S3 Proxy Signature Tests / S3 Proxy Signature Verification Tests (push) Has been cancelled
S3 SDK V2 Route Disambiguation Tests / S3 SDK V2 Routing Tests (push) Has been cancelled
S3 SSE Tests / S3 SSE Integration Tests (quick) (push) Has been cancelled
S3 SSE Tests / S3 SSE Compatibility Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Metadata Persistence Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Copy Operations Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Multipart Upload Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Performance Test (push) Has been cancelled
S3 SSE Tests / S3 Volume Encryption Test (push) Has been cancelled
S3 SSE Tests / S3 SSE Integration Tests (comprehensive) (push) Has been cancelled
Spark Integration Tests / Spark Integration Tests (push) Failing after 2s
Telemetry Integration Tests / telemetry-integration-test (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 1) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 1) (push) Failing after 3s
Ceph S3 tests / Basic S3 tests (KV store) (push) Has been cancelled
Ceph S3 tests / S3 Versioning & Object Lock tests (push) Has been cancelled
S3 Policy Integration Tests / S3 Policy Unit Tests (push) Failing after 3s
Ceph S3 tests / S3 CORS tests (push) Has been cancelled
Ceph S3 tests / SeaweedFS Custom S3 Copy tests (push) Has been cancelled
Ceph S3 tests / Basic S3 tests (SQL store) (push) Has been cancelled
test s3 over https using aws-cli / awscli-tests (push) Has been cancelled
TLS Rotation Integration Tests / TLS Rotation Integration Tests (push) Has been cancelled
Vacuum Integration Tests / Vacuum Integration Tests (push) Has been cancelled
S3 Policy Integration Tests / S3 Policy Variables Integration Tests (push) Failing after 3s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (advanced-policy) (push) Failing after 3s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (basic-policy) (push) Failing after 2s
S3 Policy Integration Tests / S3 Policy Enforcement Integration Tests (contextual-policy) (push) Failing after 4s
S3 Policy Integration Tests / Trusted Proxy Detection Tests (push) Failing after 2s
S3 Policy Integration Tests / S3 Policy Shell Integration Tests (push) Failing after 3s
Samba on FUSE Integration / samba-integration (push) Failing after 2s
SFTP Integration Tests / SFTP Integration Testing (push) Failing after 3s
terraform: validate and test modules / fmt, validate, plan-level tests (push) Failing after 3s
terraform: validate and test modules / local cluster smoke test (real weed) (push) Failing after 2s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 3) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (grpc - Shard 2) (push) Failing after 3s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 2) (push) Failing after 2s
Volume Server Integration Tests / Volume Server Integration Tests (http - Shard 3) (push) Failing after 5s
mount: windows conformance / WinFsp conformance (push) Has been cancelled
mount: windows / Mount on Windows (push) Has been cancelled
312 lines
9.6 KiB
Makefile
312 lines
9.6 KiB
Makefile
# SeaweedFS FUSE Integration Testing Makefile
|
|
|
|
# Configuration
|
|
WEED_BINARY := weed
|
|
GO_VERSION := 1.26
|
|
TEST_TIMEOUT := 30m
|
|
COVERAGE_FILE := coverage.out
|
|
|
|
# Default target
|
|
.DEFAULT_GOAL := help
|
|
|
|
# Check if weed binary exists
|
|
check-binary:
|
|
@if [ ! -f "$(WEED_BINARY)" ]; then \
|
|
echo "ERROR SeaweedFS binary not found at $(WEED_BINARY)"; \
|
|
echo " Please run 'make' in the root directory first"; \
|
|
exit 1; \
|
|
fi
|
|
@echo "OK SeaweedFS binary found"
|
|
|
|
# Check FUSE installation
|
|
check-fuse:
|
|
@if command -v fusermount >/dev/null 2>&1; then \
|
|
echo "OK FUSE is installed (Linux)"; \
|
|
elif command -v umount >/dev/null 2>&1 && [ "$$(uname)" = "Darwin" ]; then \
|
|
echo "OK FUSE is available (macOS)"; \
|
|
else \
|
|
echo "ERROR FUSE not found. Please install:"; \
|
|
echo " Ubuntu/Debian: sudo apt-get install fuse"; \
|
|
echo " CentOS/RHEL: sudo yum install fuse"; \
|
|
echo " macOS: brew install macfuse"; \
|
|
exit 1; \
|
|
fi
|
|
|
|
# Check Go version
|
|
check-go:
|
|
@go version | grep -q "go1\.[2-9][0-9]" || \
|
|
go version | grep -q "go1\.2[1-9]" || \
|
|
(echo "ERROR Go $(GO_VERSION)+ required. Current: $$(go version)" && exit 1)
|
|
@echo "OK Go version check passed"
|
|
|
|
# Verify all prerequisites
|
|
check-prereqs: check-go check-fuse
|
|
@echo "✅ All prerequisites satisfied"
|
|
|
|
# Build the SeaweedFS binary (if needed)
|
|
build:
|
|
@echo "Building SeaweedFS..."
|
|
cd ../.. && make
|
|
@echo "OK Build complete"
|
|
|
|
# Initialize go module (if needed)
|
|
init-module:
|
|
@if [ ! -f go.mod ]; then \
|
|
echo "📦 Initializing Go module..."; \
|
|
go mod init seaweedfs-fuse-tests; \
|
|
go mod tidy; \
|
|
fi
|
|
|
|
# Run all tests
|
|
test: check-prereqs init-module
|
|
@echo "🧪 Running all FUSE integration tests..."
|
|
go test -v -timeout $(TEST_TIMEOUT) ./...
|
|
|
|
# Run tests with coverage
|
|
test-coverage: check-prereqs init-module
|
|
@echo "🧪 Running tests with coverage..."
|
|
go test -v -timeout $(TEST_TIMEOUT) -coverprofile=$(COVERAGE_FILE) ./...
|
|
go tool cover -html=$(COVERAGE_FILE) -o coverage.html
|
|
@echo "📊 Coverage report generated: coverage.html"
|
|
|
|
# Run specific test categories
|
|
test-basic: check-prereqs init-module
|
|
@echo "🧪 Running basic file operations tests..."
|
|
go test -v -timeout $(TEST_TIMEOUT) -run TestBasicFileOperations
|
|
|
|
test-directory: check-prereqs init-module
|
|
@echo "🧪 Running directory operations tests..."
|
|
go test -v -timeout $(TEST_TIMEOUT) -run TestDirectoryOperations
|
|
|
|
test-concurrent: check-prereqs init-module
|
|
@echo "🧪 Running concurrent operations tests..."
|
|
go test -v -timeout $(TEST_TIMEOUT) -run TestConcurrentFileOperations
|
|
|
|
test-stress: check-prereqs init-module
|
|
@echo "🧪 Running stress tests..."
|
|
go test -v -timeout $(TEST_TIMEOUT) -run TestStressOperations
|
|
|
|
test-large-files: check-prereqs init-module
|
|
@echo "🧪 Running large file tests..."
|
|
go test -v -timeout $(TEST_TIMEOUT) -run TestLargeFileOperations
|
|
|
|
# Run tests with debugging enabled
|
|
test-debug: check-prereqs init-module
|
|
@echo "🔍 Running tests with debug output..."
|
|
go test -v -timeout $(TEST_TIMEOUT) -args -debug
|
|
|
|
# Run tests and keep temp files for inspection
|
|
test-no-cleanup: check-prereqs init-module
|
|
@echo "🧪 Running tests without cleanup (for debugging)..."
|
|
go test -v -timeout $(TEST_TIMEOUT) -args -no-cleanup
|
|
|
|
# Quick smoke test
|
|
test-smoke: check-prereqs init-module
|
|
@echo "💨 Running smoke tests..."
|
|
go test -v -timeout 5m -run TestBasicFileOperations/CreateAndReadFile
|
|
|
|
# Run benchmarks
|
|
benchmark: check-prereqs init-module
|
|
@echo "📈 Running benchmarks..."
|
|
go test -v -timeout $(TEST_TIMEOUT) -bench=. -benchmem
|
|
|
|
# Validate test files compile
|
|
validate: init-module
|
|
@echo "✅ Validating test files..."
|
|
go build -o /dev/null ./...
|
|
@echo "✅ All test files compile successfully"
|
|
|
|
# Clean up generated files
|
|
clean:
|
|
@echo "🧹 Cleaning up..."
|
|
rm -f $(COVERAGE_FILE) coverage.html
|
|
rm -rf /tmp/seaweedfs_fuse_test_*
|
|
go clean -testcache
|
|
@echo "✅ Cleanup complete"
|
|
|
|
# Format Go code
|
|
fmt:
|
|
@echo "🎨 Formatting Go code..."
|
|
go fmt ./...
|
|
|
|
# Run linter
|
|
lint:
|
|
@echo "🔍 Running linter..."
|
|
@if command -v golangci-lint >/dev/null 2>&1; then \
|
|
golangci-lint run; \
|
|
else \
|
|
echo "⚠️ golangci-lint not found, running go vet instead"; \
|
|
go vet ./...; \
|
|
fi
|
|
|
|
# Run all quality checks
|
|
check: validate lint fmt
|
|
@echo "✅ All quality checks passed"
|
|
|
|
# Install development dependencies
|
|
install-deps:
|
|
@echo "📦 Installing development dependencies..."
|
|
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
|
go mod download
|
|
go mod tidy
|
|
|
|
# Quick development setup
|
|
setup: install-deps build check-prereqs
|
|
@echo "🚀 Development environment ready!"
|
|
|
|
# Docker-based testing
|
|
test-docker:
|
|
@echo "🐳 Running tests in Docker..."
|
|
docker build -t seaweedfs-fuse-tests -f Dockerfile.test ../..
|
|
docker run --rm --privileged seaweedfs-fuse-tests
|
|
|
|
# Create Docker test image
|
|
docker-build:
|
|
@echo "🐳 Building Docker test image..."
|
|
@cat > Dockerfile.test << 'EOF' ;\
|
|
FROM golang:$(GO_VERSION) ;\
|
|
RUN apt-get update && apt-get install -y fuse ;\
|
|
WORKDIR /seaweedfs ;\
|
|
COPY . . ;\
|
|
RUN make ;\
|
|
WORKDIR /seaweedfs/test/fuse ;\
|
|
RUN go mod init seaweedfs-fuse-tests && go mod tidy ;\
|
|
CMD ["make", "test"] ;\
|
|
EOF
|
|
|
|
# GitHub Actions workflow
|
|
generate-workflow:
|
|
@echo "📝 Generating GitHub Actions workflow..."
|
|
@mkdir -p ../../.github/workflows
|
|
@cat > ../../.github/workflows/fuse-integration.yml << 'EOF' ;\
|
|
name: FUSE Integration Tests ;\
|
|
;\
|
|
on: ;\
|
|
push: ;\
|
|
branches: [ master, main ] ;\
|
|
pull_request: ;\
|
|
branches: [ master, main ] ;\
|
|
;\
|
|
jobs: ;\
|
|
fuse-integration: ;\
|
|
runs-on: ubuntu-latest ;\
|
|
timeout-minutes: 45 ;\
|
|
;\
|
|
steps: ;\
|
|
- name: Checkout code ;\
|
|
uses: actions/checkout@v4 ;\
|
|
;\
|
|
- name: Set up Go ;\
|
|
uses: actions/setup-go@v4 ;\
|
|
with: ;\
|
|
go-version: '$(GO_VERSION)' ;\
|
|
;\
|
|
- name: Install FUSE ;\
|
|
run: sudo apt-get update && sudo apt-get install -y fuse ;\
|
|
;\
|
|
- name: Build SeaweedFS ;\
|
|
run: make ;\
|
|
;\
|
|
- name: Run FUSE Integration Tests ;\
|
|
run: | ;\
|
|
cd test/fuse ;\
|
|
make test ;\
|
|
;\
|
|
- name: Upload test artifacts ;\
|
|
if: failure() ;\
|
|
uses: actions/upload-artifact@v3 ;\
|
|
with: ;\
|
|
name: test-logs ;\
|
|
path: /tmp/seaweedfs_fuse_test_* ;\
|
|
EOF
|
|
@echo "✅ GitHub Actions workflow generated"
|
|
|
|
# Performance profiling
|
|
profile: check-prereqs init-module
|
|
@echo "📊 Running performance profiling..."
|
|
go test -v -timeout $(TEST_TIMEOUT) -cpuprofile cpu.prof -memprofile mem.prof -bench=.
|
|
@echo "📊 Profiles generated: cpu.prof, mem.prof"
|
|
@echo "📊 View with: go tool pprof cpu.prof"
|
|
|
|
# Memory leak detection
|
|
test-memory: check-prereqs init-module
|
|
@echo "🔍 Running memory leak detection..."
|
|
go test -v -timeout $(TEST_TIMEOUT) -race -test.memprofile mem.prof
|
|
|
|
# List available test functions
|
|
list-tests:
|
|
@echo "📋 Available test functions:"
|
|
@grep -r "^func Test" *.go | sed 's/.*func \(Test[^(]*\).*/ \1/' | sort
|
|
|
|
# Get test status and statistics
|
|
test-stats: check-prereqs init-module
|
|
@echo "📊 Test statistics:"
|
|
@go test -v ./... | grep -E "(PASS|FAIL|RUN)" | \
|
|
awk '{ \
|
|
if ($$1 == "RUN") tests++; \
|
|
else if ($$1 == "PASS") passed++; \
|
|
else if ($$1 == "FAIL") failed++; \
|
|
} END { \
|
|
printf " Total tests: %d\n", tests; \
|
|
printf " Passed: %d\n", passed; \
|
|
printf " Failed: %d\n", failed; \
|
|
printf " Success rate: %.1f%%\n", (passed/tests)*100; \
|
|
}'
|
|
|
|
# Watch for file changes and run tests
|
|
watch:
|
|
@echo "👀 Watching for changes..."
|
|
@if command -v entr >/dev/null 2>&1; then \
|
|
find . -name "*.go" | entr -c make test-smoke; \
|
|
else \
|
|
echo "⚠️ 'entr' not found. Install with: apt-get install entr"; \
|
|
echo " Falling back to manual test run"; \
|
|
make test-smoke; \
|
|
fi
|
|
|
|
# Show help
|
|
help:
|
|
@echo "SeaweedFS FUSE Integration Testing"
|
|
@echo "=================================="
|
|
@echo ""
|
|
@echo "Prerequisites:"
|
|
@echo " make check-prereqs - Check all prerequisites"
|
|
@echo " make setup - Complete development setup"
|
|
@echo " make build - Build SeaweedFS binary"
|
|
@echo ""
|
|
@echo "Testing:"
|
|
@echo " make test - Run all tests"
|
|
@echo " make test-basic - Run basic file operations tests"
|
|
@echo " make test-directory - Run directory operations tests"
|
|
@echo " make test-concurrent - Run concurrent operations tests"
|
|
@echo " make test-stress - Run stress tests"
|
|
@echo " make test-smoke - Quick smoke test"
|
|
@echo " make test-coverage - Run tests with coverage report"
|
|
@echo ""
|
|
@echo "Debugging:"
|
|
@echo " make test-debug - Run tests with debug output"
|
|
@echo " make test-no-cleanup - Keep temp files for inspection"
|
|
@echo " make profile - Performance profiling"
|
|
@echo " make test-memory - Memory leak detection"
|
|
@echo ""
|
|
@echo "Quality:"
|
|
@echo " make validate - Validate test files compile"
|
|
@echo " make lint - Run linter"
|
|
@echo " make fmt - Format code"
|
|
@echo " make check - Run all quality checks"
|
|
@echo ""
|
|
@echo "Utilities:"
|
|
@echo " make clean - Clean up generated files"
|
|
@echo " make list-tests - List available test functions"
|
|
@echo " make test-stats - Show test statistics"
|
|
@echo " make watch - Watch files and run smoke tests"
|
|
@echo ""
|
|
@echo "Docker & CI:"
|
|
@echo " make test-docker - Run tests in Docker"
|
|
@echo " make generate-workflow - Generate GitHub Actions workflow"
|
|
|
|
.PHONY: help check-prereqs check-binary check-fuse check-go build init-module \
|
|
test test-coverage test-basic test-directory test-concurrent test-stress \
|
|
test-large-files test-debug test-no-cleanup test-smoke benchmark validate \
|
|
clean fmt lint check install-deps setup test-docker docker-build \
|
|
generate-workflow profile test-memory list-tests test-stats watch |