diff options
Diffstat (limited to 'test/fuse_integration/posix_Makefile')
| -rw-r--r-- | test/fuse_integration/posix_Makefile | 528 |
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 |
