@@ -441,10 +441,107 @@ The tool provides detailed error messages for common issues:
4414414 .  ** Memory** : Tool streams data to minimize memory usage
4424425 .  ** Compression** : Multi-core zstd scales with CPU cores
443443
444+ ## 🧪 Testing  
445+ 
446+ The project includes a comprehensive test suite covering:
447+ 
448+ -  ** Cache Operations** : Row count and file metadata caching, TTL expiration, legacy migration
449+ -  ** Configuration Validation** : Required fields, default values, date formats
450+ -  ** Process Management** : PID file operations, task tracking, process status checks
451+ 
452+ Run tests with:
453+ 
454+ ``` bash 
455+ #  Run all tests
456+ go test  ./...
457+ 
458+ #  Run with verbose output
459+ go test  -v ./...
460+ 
461+ #  Run with coverage
462+ go test  -cover ./...
463+ 
464+ #  Run specific tests
465+ go test  -run TestPartitionCache ./cmd
466+ ``` 
467+ 
468+ ## 🐳 Docker Support  
469+ 
470+ Build and run with Docker:
471+ 
472+ ``` bash 
473+ #  Build the Docker image
474+ docker build -t postgresql-archiver . 
475+ 
476+ #  Run with environment variables
477+ docker run --rm \
478+   -e ARCHIVE_DB_HOST=host.docker.internal \
479+   -e ARCHIVE_DB_USER=myuser \
480+   -e ARCHIVE_DB_PASSWORD=mypass \
481+   -e ARCHIVE_DB_NAME=mydb \
482+   -e ARCHIVE_S3_ENDPOINT=https://s3.example.com \
483+   -e ARCHIVE_S3_BUCKET=my-bucket \
484+   -e ARCHIVE_S3_ACCESS_KEY=key \
485+   -e ARCHIVE_S3_SECRET_KEY=secret \
486+   -e ARCHIVE_TABLE=events \
487+   postgresql-archiver
488+ 
489+ #  Run with config file
490+ docker run --rm \
491+   -v ~ /.postgresql-archiver.yaml:/root/.postgresql-archiver.yaml \
492+   postgresql-archiver
493+ ``` 
494+ 
495+ ## 🔧 Development  
496+ 
497+ ### Prerequisites  
498+ 
499+ -  Go 1.21+
500+ -  PostgreSQL database for testing
501+ -  S3-compatible storage for testing
502+ 
503+ ### Building from Source  
504+ 
505+ ``` bash 
506+ #  Clone the repository
507+ git clone https://github.com/airframesio/postgresql-archiver.git
508+ cd  postgresql-archiver
509+ 
510+ #  Install dependencies
511+ go mod download
512+ 
513+ #  Build the binary
514+ go build -o postgresql-archiver
515+ 
516+ #  Run tests
517+ go test  ./...
518+ 
519+ #  Build for different platforms
520+ GOOS=linux GOARCH=amd64 go build -o postgresql-archiver-linux-amd64
521+ GOOS=darwin GOARCH=arm64 go build -o postgresql-archiver-darwin-arm64
522+ GOOS=windows GOARCH=amd64 go build -o postgresql-archiver.exe
523+ ``` 
524+ 
525+ ### CI/CD  
526+ 
527+ The project uses GitHub Actions for continuous integration:
528+ 
529+ -  ** Test Matrix** : Tests on Go 1.21.x and 1.22.x
530+ -  ** Platforms** : Linux, macOS, Windows
531+ -  ** Coverage** : Runs tests with coverage reporting
532+ -  ** Linting** : Ensures code quality with golangci-lint
533+ -  ** Binary Builds** : Creates binaries for multiple platforms
534+ 
444535## 🤝 Contributing  
445536
446537Contributions are welcome! Please feel free to submit a Pull Request.
447538
539+ 1 .  Fork the repository
540+ 2 .  Create your feature branch (` git checkout -b feature/amazing-feature ` )
541+ 3 .  Commit your changes (` git commit -m 'Add some amazing feature' ` )
542+ 4 .  Push to the branch (` git push origin feature/amazing-feature ` )
543+ 5 .  Open a Pull Request
544+ 
448545## 📄 License  
449546
450547MIT License - see LICENSE file for details
0 commit comments