aboutsummaryrefslogtreecommitdiff
path: root/test/fuse_integration/posix_Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'test/fuse_integration/posix_Makefile')
-rw-r--r--test/fuse_integration/posix_Makefile528
1 files changed, 528 insertions, 0 deletions
diff --git a/test/fuse_integration/posix_Makefile b/test/fuse_integration/posix_Makefile
new file mode 100644
index 000000000..54310ff1f
--- /dev/null
+++ b/test/fuse_integration/posix_Makefile
@@ -0,0 +1,528 @@
+# SeaweedFS POSIX Compliance Testing Makefile
+
+# Configuration
+WEED_BINARY := $(shell which weed 2>/dev/null || echo "../../weed")
+GO_VERSION := 1.21
+TEST_TIMEOUT := 45m
+COVERAGE_FILE := posix_coverage.out
+REPORT_DIR := reports
+EXTERNAL_TOOLS_DIR := external_tools
+
+# Test categories
+POSIX_BASIC_TESTS := posix_compliance_test.go
+POSIX_EXTENDED_TESTS := posix_extended_test.go
+POSIX_EXTERNAL_TESTS := posix_external_test.go
+
+# Colors for output
+RED := \033[31m
+GREEN := \033[32m
+YELLOW := \033[33m
+BLUE := \033[34m
+MAGENTA := \033[35m
+CYAN := \033[36m
+WHITE := \033[37m
+RESET := \033[0m
+
+.DEFAULT_GOAL := help
+
+# Prerequisites checks
+check-binary:
+ @if [ ! -f "$(WEED_BINARY)" ]; then \
+ echo "$(RED)❌ SeaweedFS binary not found at $(WEED_BINARY)$(RESET)"; \
+ echo " Please run 'make' in the root directory first"; \
+ exit 1; \
+ fi
+ @echo "$(GREEN)✅ SeaweedFS binary found at $(WEED_BINARY)$(RESET)"
+
+check-fuse:
+ @if command -v fusermount >/dev/null 2>&1; then \
+ echo "$(GREEN)✅ FUSE is installed (Linux)$(RESET)"; \
+ elif command -v umount >/dev/null 2>&1 && [ "$$(uname)" = "Darwin" ]; then \
+ echo "$(GREEN)✅ FUSE is available (macOS)$(RESET)"; \
+ else \
+ echo "$(RED)❌ FUSE not found. Please install:$(RESET)"; \
+ 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:
+ @go version | grep -q "go1\.[2-9][0-9]" || \
+ go version | grep -q "go1\.2[1-9]" || \
+ (echo "$(RED)❌ Go $(GO_VERSION)+ required. Current: $$(go version)$(RESET)" && exit 1)
+ @echo "$(GREEN)✅ Go version check passed$(RESET)"
+
+check-prereqs: check-go check-fuse check-binary
+ @echo "$(GREEN)✅ All prerequisites satisfied$(RESET)"
+
+# Setup and initialization
+init-module:
+ @if [ ! -f go.mod ]; then \
+ echo "$(BLUE)📦 Initializing Go module...$(RESET)"; \
+ go mod init seaweedfs-posix-tests; \
+ go mod tidy; \
+ fi
+
+setup-reports:
+ @mkdir -p $(REPORT_DIR)
+ @mkdir -p $(EXTERNAL_TOOLS_DIR)
+
+setup-external-tools: setup-reports
+ @echo "$(BLUE)🛠️ Setting up external POSIX test tools...$(RESET)"
+ @$(MAKE) setup-pjdfstest
+ @$(MAKE) setup-nfstest
+ @$(MAKE) setup-fio
+
+# External tools setup
+setup-pjdfstest:
+ @if [ ! -d "$(EXTERNAL_TOOLS_DIR)/pjdfstest" ]; then \
+ echo "$(BLUE)📥 Setting up pjdfstest...$(RESET)"; \
+ cd $(EXTERNAL_TOOLS_DIR) && \
+ git clone https://github.com/pjd/pjdfstest.git && \
+ cd pjdfstest && \
+ autoreconf -ifs && \
+ ./configure && \
+ make; \
+ else \
+ echo "$(GREEN)✅ pjdfstest already setup$(RESET)"; \
+ fi
+
+setup-nfstest:
+ @echo "$(BLUE)📥 Installing nfstest...$(RESET)"
+ @pip3 install --user nfstest 2>/dev/null || \
+ echo "$(YELLOW)⚠️ nfstest installation failed. Install manually: pip3 install nfstest$(RESET)"
+
+setup-fio:
+ @if ! command -v fio >/dev/null 2>&1; then \
+ echo "$(BLUE)📥 Installing FIO...$(RESET)"; \
+ if command -v apt-get >/dev/null 2>&1; then \
+ sudo apt-get update && sudo apt-get install -y fio; \
+ elif command -v yum >/dev/null 2>&1; then \
+ sudo yum install -y fio; \
+ elif command -v brew >/dev/null 2>&1; then \
+ brew install fio; \
+ else \
+ echo "$(YELLOW)⚠️ Please install FIO manually$(RESET)"; \
+ fi; \
+ else \
+ echo "$(GREEN)✅ FIO already installed$(RESET)"; \
+ fi
+
+# Core test execution
+test-posix-basic: check-prereqs init-module setup-reports
+ @echo "$(CYAN)🧪 Running basic POSIX compliance tests...$(RESET)"
+ @if [ -n "$(TEST_MOUNT_POINT)" ]; then \
+ echo "$(BLUE)Using external mount point: $(TEST_MOUNT_POINT)$(RESET)"; \
+ TEST_MOUNT_POINT="$(TEST_MOUNT_POINT)" TEST_SKIP_CLUSTER_SETUP="true" \
+ go test -v -timeout $(TEST_TIMEOUT) -run TestPOSIXCompliance $(POSIX_BASIC_TESTS) 2>&1 | \
+ tee $(REPORT_DIR)/posix_basic_results.log; \
+ else \
+ go test -v -timeout $(TEST_TIMEOUT) -run TestPOSIXCompliance $(POSIX_BASIC_TESTS) 2>&1 | \
+ tee $(REPORT_DIR)/posix_basic_results.log; \
+ fi
+
+test-posix-extended: check-prereqs init-module setup-reports
+ @echo "$(CYAN)🧪 Running extended POSIX compliance tests...$(RESET)"
+ @if [ -n "$(TEST_MOUNT_POINT)" ]; then \
+ echo "$(BLUE)Using external mount point: $(TEST_MOUNT_POINT)$(RESET)"; \
+ TEST_MOUNT_POINT="$(TEST_MOUNT_POINT)" TEST_SKIP_CLUSTER_SETUP="true" \
+ go test -v -timeout $(TEST_TIMEOUT) -run TestPOSIXExtended $(POSIX_EXTENDED_TESTS) 2>&1 | \
+ tee $(REPORT_DIR)/posix_extended_results.log; \
+ else \
+ go test -v -timeout $(TEST_TIMEOUT) -run TestPOSIXExtended $(POSIX_EXTENDED_TESTS) 2>&1 | \
+ tee $(REPORT_DIR)/posix_extended_results.log; \
+ fi
+
+test-posix-external: check-prereqs init-module setup-reports setup-external-tools
+ @echo "$(CYAN)🧪 Running external POSIX test suite integration...$(RESET)"
+ @if [ -n "$(TEST_MOUNT_POINT)" ]; then \
+ echo "$(BLUE)Using external mount point: $(TEST_MOUNT_POINT)$(RESET)"; \
+ TEST_MOUNT_POINT="$(TEST_MOUNT_POINT)" TEST_SKIP_CLUSTER_SETUP="true" \
+ go test -v -timeout $(TEST_TIMEOUT) -run TestExternalPOSIXSuites $(POSIX_EXTERNAL_TESTS) 2>&1 | \
+ tee $(REPORT_DIR)/posix_external_results.log; \
+ else \
+ go test -v -timeout $(TEST_TIMEOUT) -run TestExternalPOSIXSuites $(POSIX_EXTERNAL_TESTS) 2>&1 | \
+ tee $(REPORT_DIR)/posix_external_results.log; \
+ fi
+
+# Comprehensive test suites
+test-posix-full: test-posix-basic test-posix-extended test-posix-external
+ @echo "$(GREEN)✅ Full POSIX compliance test suite completed$(RESET)"
+ @$(MAKE) generate-report
+
+test-posix-critical: check-prereqs init-module setup-reports
+ @echo "$(CYAN)🧪 Running critical POSIX compliance tests...$(RESET)"
+ @if [ -n "$(TEST_MOUNT_POINT)" ]; then \
+ echo "$(BLUE)Using external mount point: $(TEST_MOUNT_POINT)$(RESET)"; \
+ TEST_MOUNT_POINT="$(TEST_MOUNT_POINT)" TEST_SKIP_CLUSTER_SETUP="true" \
+ go test -v -timeout 15m \
+ -run "TestPOSIXCompliance/(FileOperations|DirectoryOperations|PermissionTests|IOOperations)" \
+ $(POSIX_BASIC_TESTS) 2>&1 | tee $(REPORT_DIR)/posix_critical_results.log; \
+ else \
+ go test -v -timeout 15m \
+ -run "TestPOSIXCompliance/(FileOperations|DirectoryOperations|PermissionTests|IOOperations)" \
+ $(POSIX_BASIC_TESTS) 2>&1 | tee $(REPORT_DIR)/posix_critical_results.log; \
+ fi
+
+test-posix-stress: check-prereqs init-module setup-reports
+ @echo "$(CYAN)🧪 Running POSIX stress tests...$(RESET)"
+ @go test -v -timeout $(TEST_TIMEOUT) \
+ -run "TestExternalPOSIXSuites/CustomPOSIXTests" \
+ $(POSIX_EXTERNAL_TESTS) 2>&1 | tee $(REPORT_DIR)/posix_stress_results.log
+
+# Performance and benchmarks
+benchmark-posix: check-prereqs init-module setup-reports
+ @echo "$(CYAN)📈 Running POSIX performance benchmarks...$(RESET)"
+ @go test -v -timeout $(TEST_TIMEOUT) -bench=. -benchmem \
+ $(POSIX_BASIC_TESTS) $(POSIX_EXTENDED_TESTS) 2>&1 | \
+ tee $(REPORT_DIR)/posix_benchmark_results.log
+
+profile-posix: check-prereqs init-module setup-reports
+ @echo "$(CYAN)📊 Running POSIX tests with profiling...$(RESET)"
+ @go test -v -timeout $(TEST_TIMEOUT) -cpuprofile $(REPORT_DIR)/posix.cpu.prof \
+ -memprofile $(REPORT_DIR)/posix.mem.prof -run TestPOSIXCompliance $(POSIX_BASIC_TESTS)
+ @echo "$(GREEN)📊 Profiles generated:$(RESET)"
+ @echo " CPU: $(REPORT_DIR)/posix.cpu.prof"
+ @echo " Memory: $(REPORT_DIR)/posix.mem.prof"
+ @echo "$(BLUE)View with: go tool pprof $(REPORT_DIR)/posix.cpu.prof$(RESET)"
+
+# Coverage analysis
+coverage-posix: check-prereqs init-module setup-reports
+ @echo "$(CYAN)📊 Running POSIX tests with coverage analysis...$(RESET)"
+ @go test -v -timeout $(TEST_TIMEOUT) -coverprofile=$(REPORT_DIR)/$(COVERAGE_FILE) \
+ $(POSIX_BASIC_TESTS) $(POSIX_EXTENDED_TESTS) $(POSIX_EXTERNAL_TESTS)
+ @go tool cover -html=$(REPORT_DIR)/$(COVERAGE_FILE) -o $(REPORT_DIR)/posix_coverage.html
+ @echo "$(GREEN)📊 Coverage report generated: $(REPORT_DIR)/posix_coverage.html$(RESET)"
+
+# External tool tests
+test-pjdfstest: setup-external-tools
+ @echo "$(CYAN)🧪 Running pjdfstest suite...$(RESET)"
+ @if [ -d "$(EXTERNAL_TOOLS_DIR)/pjdfstest" ]; then \
+ cd $(EXTERNAL_TOOLS_DIR)/pjdfstest && \
+ prove -r tests/ 2>&1 | tee ../../$(REPORT_DIR)/pjdfstest_results.log; \
+ else \
+ echo "$(RED)❌ pjdfstest not setup$(RESET)"; \
+ exit 1; \
+ fi
+
+test-nfstest-posix:
+ @echo "$(CYAN)🧪 Running nfstest_posix...$(RESET)"
+ @if command -v nfstest_posix >/dev/null 2>&1; then \
+ mkdir -p /tmp/nfstest_mount; \
+ nfstest_posix --path /tmp/nfstest_mount --verbose 2>&1 | \
+ tee $(REPORT_DIR)/nfstest_results.log; \
+ else \
+ echo "$(YELLOW)⚠️ nfstest_posix not available$(RESET)"; \
+ fi
+
+# FIO-based performance tests
+test-fio-posix: setup-reports
+ @echo "$(CYAN)🧪 Running FIO-based POSIX I/O tests...$(RESET)"
+ @$(MAKE) create-fio-configs
+ @if command -v fio >/dev/null 2>&1; then \
+ for config in $(REPORT_DIR)/fio_*.conf; do \
+ echo "$(BLUE)Running FIO config: $$config$(RESET)"; \
+ fio $$config --output=$(REPORT_DIR)/$$(basename $$config .conf)_results.log; \
+ done; \
+ else \
+ echo "$(YELLOW)⚠️ FIO not available$(RESET)"; \
+ fi
+
+create-fio-configs: setup-reports
+ @echo "$(BLUE)📝 Creating FIO test configurations...$(RESET)"
+ @cat > $(REPORT_DIR)/fio_random_rw.conf << 'EOF'
+[global]
+name=posix_random_rw
+ioengine=sync
+iodepth=1
+rw=randrw
+bs=4k
+direct=0
+size=100m
+numjobs=4
+runtime=30
+time_based
+
+[random_rw_test]
+directory=/tmp/seaweedfs_mount
+EOF
+ @cat > $(REPORT_DIR)/fio_sequential.conf << 'EOF'
+[global]
+name=posix_sequential
+ioengine=sync
+iodepth=1
+bs=1m
+direct=0
+size=500m
+runtime=60
+time_based
+
+[seq_write]
+rw=write
+directory=/tmp/seaweedfs_mount
+
+[seq_read]
+rw=read
+directory=/tmp/seaweedfs_mount
+EOF
+
+# Reporting and analysis
+generate-report: setup-reports
+ @echo "$(BLUE)📋 Generating comprehensive POSIX compliance report...$(RESET)"
+ @$(MAKE) generate-html-report
+ @$(MAKE) generate-text-report
+ @$(MAKE) generate-json-report
+
+generate-html-report:
+ @echo "$(BLUE)📄 Generating HTML report...$(RESET)"
+ @cat > $(REPORT_DIR)/posix_compliance_report.html << 'EOF'
+<!DOCTYPE html>
+<html>
+<head>
+ <title>SeaweedFS POSIX Compliance Report</title>
+ <style>
+ body { font-family: Arial, sans-serif; margin: 20px; }
+ .header { background-color: #f4f4f4; padding: 10px; border-radius: 5px; }
+ .section { margin: 20px 0; padding: 10px; border-left: 4px solid #007cba; }
+ .pass { color: green; font-weight: bold; }
+ .fail { color: red; font-weight: bold; }
+ .warn { color: orange; font-weight: bold; }
+ .info { color: blue; }
+ pre { background-color: #f4f4f4; padding: 10px; border-radius: 3px; overflow-x: auto; }
+ table { border-collapse: collapse; width: 100%; }
+ th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
+ th { background-color: #f2f2f2; }
+ </style>
+</head>
+<body>
+ <div class="header">
+ <h1>SeaweedFS POSIX Compliance Report</h1>
+ <p>Generated: $(shell date)</p>
+ <p>SeaweedFS Version: $(shell $(WEED_BINARY) version 2>/dev/null || echo "Unknown")</p>
+ </div>
+
+ <div class="section">
+ <h2>Executive Summary</h2>
+ <p>This report provides a comprehensive analysis of SeaweedFS FUSE mount POSIX compliance.</p>
+ </div>
+
+ <div class="section">
+ <h2>Test Categories</h2>
+ <table>
+ <tr><th>Category</th><th>Status</th><th>Details</th></tr>
+ <tr><td>Basic File Operations</td><td class="info">See detailed results</td><td>Create, read, write, delete operations</td></tr>
+ <tr><td>Directory Operations</td><td class="info">See detailed results</td><td>Directory lifecycle management</td></tr>
+ <tr><td>Extended Attributes</td><td class="info">See detailed results</td><td>xattr support and operations</td></tr>
+ <tr><td>File Locking</td><td class="info">See detailed results</td><td>Advisory and mandatory locking</td></tr>
+ <tr><td>Advanced I/O</td><td class="info">See detailed results</td><td>readv/writev, pread/pwrite, mmap</td></tr>
+ <tr><td>External Test Suites</td><td class="info">See detailed results</td><td>pjdfstest, nfstest integration</td></tr>
+ </table>
+ </div>
+
+ <div class="section">
+ <h2>Detailed Results</h2>
+ <p>See individual log files for detailed test results:</p>
+ <ul>
+ <li><a href="posix_basic_results.log">Basic POSIX Tests</a></li>
+ <li><a href="posix_extended_results.log">Extended POSIX Tests</a></li>
+ <li><a href="posix_external_results.log">External Test Suite Results</a></li>
+ </ul>
+ </div>
+</body>
+</html>
+EOF
+ @echo "$(GREEN)📄 HTML report generated: $(REPORT_DIR)/posix_compliance_report.html$(RESET)"
+
+generate-text-report:
+ @echo "$(BLUE)📄 Generating text report...$(RESET)"
+ @cat > $(REPORT_DIR)/posix_compliance_summary.txt << 'EOF'
+SeaweedFS POSIX Compliance Report
+=================================
+
+Generated: $(shell date)
+SeaweedFS Version: $(shell $(WEED_BINARY) version 2>/dev/null || echo "Unknown")
+
+Test Summary:
+------------
+Basic File Operations: [See posix_basic_results.log]
+Directory Operations: [See posix_basic_results.log]
+Symlink Operations: [See posix_basic_results.log]
+Permission Tests: [See posix_basic_results.log]
+Timestamp Tests: [See posix_basic_results.log]
+Extended Attributes: [See posix_extended_results.log]
+File Locking: [See posix_extended_results.log]
+Advanced I/O: [See posix_extended_results.log]
+Memory Mapping: [See posix_extended_results.log]
+External Test Suites: [See posix_external_results.log]
+
+Performance Benchmarks:
+----------------------
+[See posix_benchmark_results.log]
+
+Coverage Analysis:
+-----------------
+[See posix_coverage.html]
+
+Recommendations:
+---------------
+1. Review any test failures in the detailed logs
+2. Consider implementing missing POSIX features if critical for your use case
+3. Monitor performance characteristics for your specific workload
+4. Re-run tests periodically to catch regressions
+
+For questions or issues, please refer to the SeaweedFS documentation
+or open an issue at https://github.com/seaweedfs/seaweedfs/issues
+EOF
+ @echo "$(GREEN)📄 Text report generated: $(REPORT_DIR)/posix_compliance_summary.txt$(RESET)"
+
+generate-json-report:
+ @echo "$(BLUE)📄 Generating JSON report...$(RESET)"
+ @cat > $(REPORT_DIR)/posix_compliance_report.json << 'EOF'
+{
+ "report_type": "posix_compliance",
+ "timestamp": "$(shell date -u +"%Y-%m-%dT%H:%M:%SZ")",
+ "seaweedfs_version": "$(shell $(WEED_BINARY) version 2>/dev/null | head -n1 || echo "Unknown")",
+ "test_environment": {
+ "os": "$(shell uname -s)",
+ "arch": "$(shell uname -m)",
+ "go_version": "$(shell go version)"
+ },
+ "test_categories": {
+ "basic_file_operations": {
+ "status": "executed",
+ "log_file": "posix_basic_results.log"
+ },
+ "extended_attributes": {
+ "status": "executed",
+ "log_file": "posix_extended_results.log"
+ },
+ "external_test_suites": {
+ "status": "executed",
+ "log_file": "posix_external_results.log"
+ }
+ },
+ "summary": {
+ "total_categories": 3,
+ "executed_categories": 3,
+ "success_rate": "See individual logs for details"
+ }
+}
+EOF
+ @echo "$(GREEN)📄 JSON report generated: $(REPORT_DIR)/posix_compliance_report.json$(RESET)"
+
+# Cleanup and maintenance
+clean:
+ @echo "$(YELLOW)🧹 Cleaning up test artifacts...$(RESET)"
+ @rm -rf $(REPORT_DIR)
+ @rm -rf /tmp/seaweedfs_*_test_*
+ @go clean -testcache
+ @echo "$(GREEN)✅ Cleanup complete$(RESET)"
+
+clean-external-tools:
+ @echo "$(YELLOW)🧹 Cleaning up external tools...$(RESET)"
+ @rm -rf $(EXTERNAL_TOOLS_DIR)
+
+clean-all: clean clean-external-tools
+
+# Development and debugging
+validate:
+ @echo "$(BLUE)✅ Validating test files...$(RESET)"
+ @go build -o /dev/null ./...
+ @echo "$(GREEN)✅ All test files compile successfully$(RESET)"
+
+fmt:
+ @echo "$(BLUE)🎨 Formatting Go code...$(RESET)"
+ @go fmt ./...
+
+lint:
+ @echo "$(BLUE)🔍 Running linter...$(RESET)"
+ @if command -v golangci-lint >/dev/null 2>&1; then \
+ golangci-lint run; \
+ else \
+ echo "$(YELLOW)⚠️ golangci-lint not found, running go vet instead$(RESET)"; \
+ go vet ./...; \
+ fi
+
+# CI/CD integration
+ci-posix-tests: check-prereqs init-module setup-external-tools
+ @echo "$(CYAN)🚀 Running POSIX tests for CI/CD...$(RESET)"
+ @$(MAKE) test-posix-critical
+ @$(MAKE) generate-report
+
+# Docker-based testing
+docker-test-posix:
+ @echo "$(BLUE)🐳 Running POSIX tests in Docker...$(RESET)"
+ @docker build -f Dockerfile.posix -t seaweedfs-posix-tests ../..
+ @docker run --rm --privileged -v $(PWD)/$(REPORT_DIR):/reports seaweedfs-posix-tests
+
+# Documentation and help
+list-tests:
+ @echo "$(BLUE)📋 Available POSIX test functions:$(RESET)"
+ @grep -r "^func Test" *.go 2>/dev/null | sed 's/.*func \(Test[^(]*\).*/ \1/' | sort || echo "No test files found"
+
+test-info:
+ @echo "$(BLUE)📊 POSIX Test Information:$(RESET)"
+ @echo "Test files:"
+ @echo " - $(POSIX_BASIC_TESTS): Core POSIX compliance tests"
+ @echo " - $(POSIX_EXTENDED_TESTS): Extended POSIX feature tests"
+ @echo " - $(POSIX_EXTERNAL_TESTS): External test suite integration"
+ @echo ""
+ @echo "External tools:"
+ @echo " - pjdfstest: Comprehensive POSIX filesystem test suite"
+ @echo " - nfstest: Network filesystem POSIX API verification"
+ @echo " - FIO: Flexible I/O performance testing"
+
+help:
+ @echo "$(CYAN)SeaweedFS POSIX Compliance Testing$(RESET)"
+ @echo "=================================="
+ @echo ""
+ @echo "$(WHITE)Prerequisites:$(RESET)"
+ @echo " $(GREEN)make check-prereqs$(RESET) - Check all prerequisites"
+ @echo " $(GREEN)make setup-external-tools$(RESET) - Setup external POSIX test tools"
+ @echo ""
+ @echo "$(WHITE)Core POSIX Tests:$(RESET)"
+ @echo " $(GREEN)make test-posix-basic$(RESET) - Run basic POSIX compliance tests"
+ @echo " $(GREEN)make test-posix-extended$(RESET) - Run extended POSIX feature tests"
+ @echo " $(GREEN)make test-posix-external$(RESET) - Run external test suite integration"
+ @echo " $(GREEN)make test-posix-full$(RESET) - Run complete POSIX test suite"
+ @echo ""
+ @echo "$(WHITE)Focused Tests:$(RESET)"
+ @echo " $(GREEN)make test-posix-critical$(RESET) - Run critical POSIX compliance tests"
+ @echo " $(GREEN)make test-posix-stress$(RESET) - Run POSIX stress tests"
+ @echo ""
+ @echo "$(WHITE)Performance & Analysis:$(RESET)"
+ @echo " $(GREEN)make benchmark-posix$(RESET) - Run POSIX performance benchmarks"
+ @echo " $(GREEN)make profile-posix$(RESET) - Run tests with performance profiling"
+ @echo " $(GREEN)make coverage-posix$(RESET) - Run tests with coverage analysis"
+ @echo " $(GREEN)make test-fio-posix$(RESET) - Run FIO-based I/O performance tests"
+ @echo ""
+ @echo "$(WHITE)External Test Suites:$(RESET)"
+ @echo " $(GREEN)make test-pjdfstest$(RESET) - Run pjdfstest suite"
+ @echo " $(GREEN)make test-nfstest-posix$(RESET) - Run nfstest_posix"
+ @echo ""
+ @echo "$(WHITE)Reporting:$(RESET)"
+ @echo " $(GREEN)make generate-report$(RESET) - Generate comprehensive compliance report"
+ @echo ""
+ @echo "$(WHITE)Development:$(RESET)"
+ @echo " $(GREEN)make validate$(RESET) - Validate test file compilation"
+ @echo " $(GREEN)make fmt$(RESET) - Format Go code"
+ @echo " $(GREEN)make lint$(RESET) - Run linter"
+ @echo " $(GREEN)make list-tests$(RESET) - List available test functions"
+ @echo ""
+ @echo "$(WHITE)Maintenance:$(RESET)"
+ @echo " $(GREEN)make clean$(RESET) - Clean up test artifacts"
+ @echo " $(GREEN)make clean-all$(RESET) - Clean everything including external tools"
+ @echo ""
+ @echo "$(WHITE)CI/CD Integration:$(RESET)"
+ @echo " $(GREEN)make ci-posix-tests$(RESET) - Run POSIX tests optimized for CI/CD"
+ @echo " $(GREEN)make docker-test-posix$(RESET) - Run tests in Docker container"
+
+.PHONY: help check-prereqs check-binary check-fuse check-go init-module setup-reports \
+ setup-external-tools setup-pjdfstest setup-nfstest setup-fio \
+ test-posix-basic test-posix-extended test-posix-external test-posix-full \
+ test-posix-critical test-posix-stress benchmark-posix profile-posix coverage-posix \
+ test-pjdfstest test-nfstest-posix test-fio-posix create-fio-configs \
+ generate-report generate-html-report generate-text-report generate-json-report \
+ clean clean-external-tools clean-all validate fmt lint ci-posix-tests \
+ docker-test-posix list-tests test-info