baktainer/app/spec/examples.txt

124 lines
9.5 KiB
Text
Raw Normal View History

example_id | status | run_time |
------------------------------------------------- | ------ | --------------- |
Major architectural overhaul: dependency injection, monitoring, and operational improvements This commit represents a comprehensive refactoring and enhancement of Baktainer: ## Core Architecture Improvements - Implemented comprehensive dependency injection system with DependencyContainer - Fixed critical singleton instantiation bug that was returning Procs instead of service instances - Replaced problematic Concurrent::FixedThreadPool with custom SimpleThreadPool implementation - Achieved 100% test pass rate (121 examples, 0 failures) after fixing 30+ failing tests ## New Features Implemented ### 1. Backup Rotation & Cleanup (BackupRotation) - Configurable retention policies by age, count, and disk space - Automatic cleanup with comprehensive statistics tracking - Empty directory cleanup and space monitoring ### 2. Backup Encryption (BackupEncryption) - AES-256-CBC and AES-256-GCM encryption support - Key derivation from passphrases or direct key input - Encrypted backup metadata storage ### 3. Operational Monitoring Suite - **Health Check Server**: HTTP endpoints for monitoring (/health, /status, /metrics) - **Web Dashboard**: Real-time monitoring dashboard with auto-refresh - **Prometheus Metrics**: Integration with monitoring systems - **Backup Monitor**: Comprehensive metrics tracking and performance alerts ### 4. Advanced Label Validation (LabelValidator) - Schema-based validation for all 12+ Docker labels - Engine-specific validation rules - Helpful error messages and warnings - Example generation for each database engine ### 5. Multi-Channel Notifications (NotificationSystem) - Support for Slack, Discord, Teams, webhooks, and log notifications - Event-based notifications for backups, failures, warnings, and health issues - Configurable notification thresholds ## Code Organization Improvements - Extracted responsibilities into focused classes: - ContainerValidator: Container validation logic - BackupOrchestrator: Backup workflow orchestration - FileSystemOperations: File I/O with comprehensive error handling - Configuration: Centralized environment variable management - BackupStrategy/Factory: Strategy pattern for database engines ## Testing Infrastructure - Added comprehensive unit and integration tests - Fixed timing-dependent test failures - Added RSpec coverage reporting (94.94% coverage) - Created test factories and fixtures ## Breaking Changes - Container class constructor now requires dependency injection - BackupCommand methods now use keyword arguments - Thread pool implementation changed from Concurrent to SimpleThreadPool ## Configuration New environment variables: - BT_HEALTH_SERVER_ENABLED: Enable health check server - BT_HEALTH_PORT/BT_HEALTH_BIND: Health server configuration - BT_NOTIFICATION_CHANNELS: Comma-separated notification channels - BT_ENCRYPTION_ENABLED/BT_ENCRYPTION_KEY: Backup encryption - BT_RETENTION_DAYS/COUNT: Backup retention policies This refactoring improves maintainability, testability, and adds enterprise-grade monitoring and operational features while maintaining backward compatibility for basic usage. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 22:58:26 -04:00
./spec/integration/backup_workflow_spec.rb[1:1:1] | passed | 0.00171 seconds |
./spec/integration/backup_workflow_spec.rb[1:1:2] | passed | 0.00195 seconds |
./spec/integration/backup_workflow_spec.rb[1:2:1] | passed | 0.00881 seconds |
./spec/integration/backup_workflow_spec.rb[1:2:2] | passed | 0.00956 seconds |
./spec/integration/backup_workflow_spec.rb[1:3:1] | passed | 0.00764 seconds |
./spec/integration/backup_workflow_spec.rb[1:3:2] | passed | 0.00261 seconds |
./spec/integration/backup_workflow_spec.rb[1:4:1] | passed | 0.00831 seconds |
./spec/integration/backup_workflow_spec.rb[1:4:2] | passed | 0.00211 seconds |
./spec/integration/backup_workflow_spec.rb[1:5:1] | passed | 0.52977 seconds |
./spec/integration/backup_workflow_spec.rb[1:5:2] | passed | 0.52801 seconds |
./spec/integration/backup_workflow_spec.rb[1:5:3] | passed | 0.10974 seconds |
./spec/integration/backup_workflow_spec.rb[1:6:1] | passed | 0.00171 seconds |
./spec/integration/backup_workflow_spec.rb[1:6:2] | passed | 0.00694 seconds |
./spec/integration/backup_workflow_spec.rb[1:7:1] | passed | 0.52673 seconds |
./spec/unit/backup_command_spec.rb[1:1:1] | passed | 0.00024 seconds |
./spec/unit/backup_command_spec.rb[1:1:2] | passed | 0.00026 seconds |
./spec/unit/backup_command_spec.rb[1:2:1] | passed | 0.00023 seconds |
./spec/unit/backup_command_spec.rb[1:3:1] | passed | 0.00022 seconds |
./spec/unit/backup_command_spec.rb[1:3:2] | passed | 0.00022 seconds |
./spec/unit/backup_command_spec.rb[1:4:1] | passed | 0.00069 seconds |
./spec/unit/backup_command_spec.rb[1:5:1] | passed | 0.00024 seconds |
./spec/unit/backup_command_spec.rb[1:5:2] | passed | 0.00022 seconds |
./spec/unit/backup_command_spec.rb[1:6:1] | passed | 0.00023 seconds |
./spec/unit/backup_command_spec.rb[1:7:1] | passed | 0.00026 seconds |
./spec/unit/backup_command_spec.rb[1:7:2] | passed | 0.00022 seconds |
./spec/unit/backup_command_spec.rb[1:8:1] | passed | 0.00022 seconds |
./spec/unit/backup_command_spec.rb[1:8:2] | passed | 0.00024 seconds |
./spec/unit/backup_command_spec.rb[1:8:3] | passed | 0.00022 seconds |
./spec/unit/backup_command_spec.rb[1:8:4] | passed | 0.00024 seconds |
./spec/unit/backup_command_spec.rb[1:8:5:1] | passed | 0.00039 seconds |
./spec/unit/backup_command_spec.rb[1:8:5:2] | passed | 0.00023 seconds |
./spec/unit/backup_command_spec.rb[1:8:5:3] | passed | 0.00024 seconds |
./spec/unit/backup_command_spec.rb[1:8:5:4] | passed | 0.00027 seconds |
./spec/unit/backup_command_spec.rb[1:8:5:5] | passed | 0.00026 seconds |
./spec/unit/backup_encryption_spec.rb[1:1:1] | passed | 0.00085 seconds |
./spec/unit/backup_encryption_spec.rb[1:1:2:1] | passed | 0.00067 seconds |
./spec/unit/backup_encryption_spec.rb[1:2:1:1] | passed | 0.00461 seconds |
./spec/unit/backup_encryption_spec.rb[1:2:1:2] | passed | 0.0043 seconds |
./spec/unit/backup_encryption_spec.rb[1:2:1:3] | passed | 0.00355 seconds |
./spec/unit/backup_encryption_spec.rb[1:2:2:1] | passed | 0.00081 seconds |
./spec/unit/backup_encryption_spec.rb[1:3:1:1] | passed | 0.00449 seconds |
./spec/unit/backup_encryption_spec.rb[1:3:1:2] | passed | 0.0051 seconds |
./spec/unit/backup_encryption_spec.rb[1:3:1:3] | passed | 0.00573 seconds |
./spec/unit/backup_encryption_spec.rb[1:3:2:1] | passed | 0.00437 seconds |
./spec/unit/backup_encryption_spec.rb[1:4:1:1] | passed | 0.0035 seconds |
./spec/unit/backup_encryption_spec.rb[1:4:1:2] | passed | 0.04324 seconds |
./spec/unit/backup_encryption_spec.rb[1:4:1:3] | passed | 0.04267 seconds |
./spec/unit/backup_encryption_spec.rb[1:4:2:1] | passed | 0.00067 seconds |
./spec/unit/backup_encryption_spec.rb[1:5:1:1] | passed | 0.04521 seconds |
./spec/unit/backup_encryption_spec.rb[1:5:2:1] | passed | 0.00691 seconds |
./spec/unit/backup_encryption_spec.rb[1:5:3:1] | passed | 0.00497 seconds |
./spec/unit/backup_encryption_spec.rb[1:6:1] | passed | 0.00245 seconds |
./spec/unit/backup_rotation_spec.rb[1:1:1] | passed | 0.00051 seconds |
./spec/unit/backup_rotation_spec.rb[1:1:2] | passed | 0.00073 seconds |
./spec/unit/backup_rotation_spec.rb[1:2:1:1] | passed | 0.00136 seconds |
./spec/unit/backup_rotation_spec.rb[1:2:1:2] | passed | 0.00146 seconds |
./spec/unit/backup_rotation_spec.rb[1:2:2:1] | passed | 0.00146 seconds |
./spec/unit/backup_rotation_spec.rb[1:2:2:2] | passed | 0.00181 seconds |
./spec/unit/backup_rotation_spec.rb[1:2:3:1] | passed | 0.0019 seconds |
./spec/unit/backup_rotation_spec.rb[1:2:4:1] | passed | 0.00583 seconds |
./spec/unit/backup_rotation_spec.rb[1:2:4:2] | passed | 0.00633 seconds |
./spec/unit/backup_rotation_spec.rb[1:3:1] | passed | 0.00255 seconds |
./spec/unit/backup_rotation_spec.rb[1:3:2] | passed | 0.00145 seconds |
./spec/unit/baktainer_spec.rb[1:1:1] | passed | 0.00125 seconds |
./spec/unit/baktainer_spec.rb[1:1:2] | passed | 0.00128 seconds |
./spec/unit/baktainer_spec.rb[1:1:3] | passed | 0.00131 seconds |
./spec/unit/baktainer_spec.rb[1:1:4] | passed | 0.49121 seconds |
./spec/unit/baktainer_spec.rb[1:1:5] | passed | 0.00133 seconds |
./spec/unit/baktainer_spec.rb[1:2:1] | passed | 0.00253 seconds |
./spec/unit/baktainer_spec.rb[1:2:2] | passed | 0.00184 seconds |
./spec/unit/baktainer_spec.rb[1:2:3] | passed | 0.00259 seconds |
./spec/unit/baktainer_spec.rb[1:3:1] | passed | 0.00182 seconds |
./spec/unit/baktainer_spec.rb[1:3:2] | passed | 0.00171 seconds |
./spec/unit/baktainer_spec.rb[1:3:3] | passed | 0.00189 seconds |
./spec/unit/baktainer_spec.rb[1:3:4] | passed | 0.00673 seconds |
Major architectural overhaul: dependency injection, monitoring, and operational improvements This commit represents a comprehensive refactoring and enhancement of Baktainer: ## Core Architecture Improvements - Implemented comprehensive dependency injection system with DependencyContainer - Fixed critical singleton instantiation bug that was returning Procs instead of service instances - Replaced problematic Concurrent::FixedThreadPool with custom SimpleThreadPool implementation - Achieved 100% test pass rate (121 examples, 0 failures) after fixing 30+ failing tests ## New Features Implemented ### 1. Backup Rotation & Cleanup (BackupRotation) - Configurable retention policies by age, count, and disk space - Automatic cleanup with comprehensive statistics tracking - Empty directory cleanup and space monitoring ### 2. Backup Encryption (BackupEncryption) - AES-256-CBC and AES-256-GCM encryption support - Key derivation from passphrases or direct key input - Encrypted backup metadata storage ### 3. Operational Monitoring Suite - **Health Check Server**: HTTP endpoints for monitoring (/health, /status, /metrics) - **Web Dashboard**: Real-time monitoring dashboard with auto-refresh - **Prometheus Metrics**: Integration with monitoring systems - **Backup Monitor**: Comprehensive metrics tracking and performance alerts ### 4. Advanced Label Validation (LabelValidator) - Schema-based validation for all 12+ Docker labels - Engine-specific validation rules - Helpful error messages and warnings - Example generation for each database engine ### 5. Multi-Channel Notifications (NotificationSystem) - Support for Slack, Discord, Teams, webhooks, and log notifications - Event-based notifications for backups, failures, warnings, and health issues - Configurable notification thresholds ## Code Organization Improvements - Extracted responsibilities into focused classes: - ContainerValidator: Container validation logic - BackupOrchestrator: Backup workflow orchestration - FileSystemOperations: File I/O with comprehensive error handling - Configuration: Centralized environment variable management - BackupStrategy/Factory: Strategy pattern for database engines ## Testing Infrastructure - Added comprehensive unit and integration tests - Fixed timing-dependent test failures - Added RSpec coverage reporting (94.94% coverage) - Created test factories and fixtures ## Breaking Changes - Container class constructor now requires dependency injection - BackupCommand methods now use keyword arguments - Thread pool implementation changed from Concurrent to SimpleThreadPool ## Configuration New environment variables: - BT_HEALTH_SERVER_ENABLED: Enable health check server - BT_HEALTH_PORT/BT_HEALTH_BIND: Health server configuration - BT_NOTIFICATION_CHANNELS: Comma-separated notification channels - BT_ENCRYPTION_ENABLED/BT_ENCRYPTION_KEY: Backup encryption - BT_RETENTION_DAYS/COUNT: Backup retention policies This refactoring improves maintainability, testability, and adds enterprise-grade monitoring and operational features while maintaining backward compatibility for basic usage. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 22:58:26 -04:00
./spec/unit/baktainer_spec.rb[1:4:1:1] | passed | 0.00201 seconds |
./spec/unit/baktainer_spec.rb[1:4:2:1] | passed | 0.27045 seconds |
./spec/unit/container_spec.rb[1:1:1] | passed | 0.00145 seconds |
./spec/unit/container_spec.rb[1:2:1] | passed | 0.00128 seconds |
./spec/unit/container_spec.rb[1:2:2] | passed | 0.00089 seconds |
./spec/unit/container_spec.rb[1:3:1] | passed | 0.00078 seconds |
./spec/unit/container_spec.rb[1:3:2] | passed | 0.00084 seconds |
./spec/unit/container_spec.rb[1:4:1] | passed | 0.00086 seconds |
./spec/unit/container_spec.rb[1:5:1] | passed | 0.00109 seconds |
./spec/unit/container_spec.rb[1:5:2] | passed | 0.00088 seconds |
./spec/unit/container_spec.rb[1:6:1] | passed | 0.00096 seconds |
./spec/unit/container_spec.rb[1:7:1] | passed | 0.00083 seconds |
./spec/unit/container_spec.rb[1:8:1] | passed | 0.0009 seconds |
./spec/unit/container_spec.rb[1:9:1:1] | passed | 0.00124 seconds |
./spec/unit/container_spec.rb[1:9:2:1] | passed | 0.00095 seconds |
./spec/unit/container_spec.rb[1:9:3:1] | passed | 0.00073 seconds |
./spec/unit/container_spec.rb[1:9:4:1] | passed | 0.00119 seconds |
./spec/unit/container_spec.rb[1:9:5:1] | passed | 0.00151 seconds |
./spec/unit/container_spec.rb[1:9:6:1] | passed | 0.00097 seconds |
./spec/unit/container_spec.rb[1:10:1] | passed | 0.00125 seconds |
./spec/unit/container_spec.rb[1:10:2] | passed | 0.00112 seconds |
./spec/unit/container_spec.rb[1:10:3] | passed | 0.00119 seconds |
./spec/unit/container_spec.rb[1:11:1] | passed | 0.00098 seconds |
./spec/unit/container_spec.rb[1:11:2] | passed | 0.00139 seconds |
./spec/unit/container_spec.rb[1:11:3] | passed | 0.00109 seconds |
./spec/unit/label_validator_spec.rb[1:1:1:1] | passed | 0.00039 seconds |
./spec/unit/label_validator_spec.rb[1:1:1:2] | passed | 0.0003 seconds |
./spec/unit/label_validator_spec.rb[1:1:2:1] | passed | 0.00037 seconds |
./spec/unit/label_validator_spec.rb[1:1:3:1] | passed | 0.00035 seconds |
./spec/unit/label_validator_spec.rb[1:1:4:1] | passed | 0.00245 seconds |
./spec/unit/label_validator_spec.rb[1:1:5:1] | passed | 0.00036 seconds |
./spec/unit/label_validator_spec.rb[1:1:6:1] | passed | 0.00033 seconds |
./spec/unit/label_validator_spec.rb[1:2:1] | passed | 0.00031 seconds |
./spec/unit/label_validator_spec.rb[1:2:2] | passed | 0.00026 seconds |
./spec/unit/label_validator_spec.rb[1:3:1] | passed | 0.00126 seconds |
./spec/unit/label_validator_spec.rb[1:3:2] | passed | 0.00112 seconds |
./spec/unit/label_validator_spec.rb[1:4:1] | passed | 0.00093 seconds |
./spec/unit/label_validator_spec.rb[1:4:2] | passed | 0.00034 seconds |
./spec/unit/notification_system_spec.rb[1:1:1:1] | passed | 0.00046 seconds |
./spec/unit/notification_system_spec.rb[1:1:2:1] | passed | 0.00055 seconds |
./spec/unit/notification_system_spec.rb[1:2:1] | passed | 0.00089 seconds |
./spec/unit/notification_system_spec.rb[1:3:1] | passed | 0.00095 seconds |
./spec/unit/notification_system_spec.rb[1:4:1] | passed | 0.001 seconds |
./spec/unit/notification_system_spec.rb[1:5:1] | passed | 0.02489 seconds |
./spec/unit/notification_system_spec.rb[1:6:1] | passed | 0.00487 seconds |
./spec/unit/notification_system_spec.rb[1:6:2] | passed | 0.00057 seconds |