2025-07-13 23:12:59 -04:00
|
|
|
example_id | status | run_time |
|
|
|
|
------------------------------------------------- | ------ | --------------- |
|
2025-07-15 11:48:37 -04:00
|
|
|
./spec/integration/backup_workflow_spec.rb[1:1:1] | passed | 0.00318 seconds |
|
|
|
|
./spec/integration/backup_workflow_spec.rb[1:1:2] | passed | 0.00332 seconds |
|
|
|
|
./spec/integration/backup_workflow_spec.rb[1:2:1] | passed | 0.00772 seconds |
|
|
|
|
./spec/integration/backup_workflow_spec.rb[1:2:2] | passed | 0.00195 seconds |
|
|
|
|
./spec/integration/backup_workflow_spec.rb[1:3:1] | passed | 0.00807 seconds |
|
|
|
|
./spec/integration/backup_workflow_spec.rb[1:3:2] | passed | 0.00176 seconds |
|
|
|
|
./spec/integration/backup_workflow_spec.rb[1:4:1] | passed | 0.00917 seconds |
|
|
|
|
./spec/integration/backup_workflow_spec.rb[1:4:2] | passed | 0.00357 seconds |
|
|
|
|
./spec/integration/backup_workflow_spec.rb[1:5:1] | passed | 0.52901 seconds |
|
|
|
|
./spec/integration/backup_workflow_spec.rb[1:5:2] | passed | 0.52794 seconds |
|
|
|
|
./spec/integration/backup_workflow_spec.rb[1:5:3] | passed | 0.1106 seconds |
|
|
|
|
./spec/integration/backup_workflow_spec.rb[1:6:1] | passed | 0.00659 seconds |
|
|
|
|
./spec/integration/backup_workflow_spec.rb[1:6:2] | passed | 0.00855 seconds |
|
|
|
|
./spec/integration/backup_workflow_spec.rb[1:7:1] | passed | 0.52686 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:1:1] | passed | 0.00056 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:1:2] | passed | 0.00049 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:2:1] | passed | 0.00033 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:3:1] | passed | 0.00034 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:3:2] | passed | 0.00029 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:4:1] | passed | 0.00058 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:5:1] | passed | 0.00028 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:5:2] | passed | 0.00029 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:6:1] | passed | 0.00028 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:7:1] | passed | 0.00058 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:7:2] | passed | 0.00062 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:8:1] | passed | 0.00031 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:8:2] | passed | 0.00035 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:8:3] | passed | 0.00033 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:8:4] | passed | 0.00032 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:8:5:1] | passed | 0.00032 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:8:5:2] | passed | 0.00029 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:8:5:3] | passed | 0.0003 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:8:5:4] | passed | 0.00029 seconds |
|
|
|
|
./spec/unit/backup_command_spec.rb[1:8:5:5] | passed | 0.00032 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:1:1] | passed | 0.00139 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:1:2:1] | passed | 0.00134 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:2:1:1] | passed | 0.0678 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:2:1:2] | passed | 0.00836 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:2:1:3] | passed | 0.00863 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:2:2:1] | passed | 0.00101 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:3:1:1] | passed | 0.0058 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:3:1:2] | passed | 0.00739 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:3:1:3] | passed | 0.00706 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:3:2:1] | passed | 0.00177 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:4:1:1] | passed | 0.00528 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/backup_encryption_spec.rb[1:4:1:2] | passed | 0.04324 seconds |
|
2025-07-15 11:48:37 -04:00
|
|
|
./spec/unit/backup_encryption_spec.rb[1:4:1:3] | passed | 0.04443 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:4:2:1] | passed | 0.00081 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:5:1:1] | passed | 0.04693 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:5:2:1] | passed | 0.00543 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:5:3:1] | passed | 0.0056 seconds |
|
|
|
|
./spec/unit/backup_encryption_spec.rb[1:6:1] | passed | 0.00104 seconds |
|
|
|
|
./spec/unit/backup_rotation_spec.rb[1:1:1] | passed | 0.00072 seconds |
|
|
|
|
./spec/unit/backup_rotation_spec.rb[1:1:2] | passed | 0.00056 seconds |
|
|
|
|
./spec/unit/backup_rotation_spec.rb[1:2:1:1] | passed | 0.00149 seconds |
|
|
|
|
./spec/unit/backup_rotation_spec.rb[1:2:1:2] | passed | 0.00151 seconds |
|
|
|
|
./spec/unit/backup_rotation_spec.rb[1:2:2:1] | passed | 0.00182 seconds |
|
|
|
|
./spec/unit/backup_rotation_spec.rb[1:2:2:2] | passed | 0.00202 seconds |
|
|
|
|
./spec/unit/backup_rotation_spec.rb[1:2:3:1] | passed | 0.00213 seconds |
|
|
|
|
./spec/unit/backup_rotation_spec.rb[1:2:4:1] | passed | 0.00553 seconds |
|
|
|
|
./spec/unit/backup_rotation_spec.rb[1:2:4:2] | passed | 0.00519 seconds |
|
|
|
|
./spec/unit/backup_rotation_spec.rb[1:3:1] | passed | 0.00282 seconds |
|
|
|
|
./spec/unit/backup_rotation_spec.rb[1:3:2] | passed | 0.00133 seconds |
|
|
|
|
./spec/unit/baktainer_spec.rb[1:1:1] | passed | 0.00138 seconds |
|
|
|
|
./spec/unit/baktainer_spec.rb[1:1:2] | passed | 0.00142 seconds |
|
|
|
|
./spec/unit/baktainer_spec.rb[1:1:3] | passed | 0.00135 seconds |
|
|
|
|
./spec/unit/baktainer_spec.rb[1:1:4] | passed | 0.26515 seconds |
|
|
|
|
./spec/unit/baktainer_spec.rb[1:1:5] | passed | 0.00123 seconds |
|
|
|
|
./spec/unit/baktainer_spec.rb[1:2:1] | passed | 0.00213 seconds |
|
|
|
|
./spec/unit/baktainer_spec.rb[1:2:2] | passed | 0.00345 seconds |
|
|
|
|
./spec/unit/baktainer_spec.rb[1:2:3] | passed | 0.00271 seconds |
|
|
|
|
./spec/unit/baktainer_spec.rb[1:3:1] | passed | 0.00177 seconds |
|
|
|
|
./spec/unit/baktainer_spec.rb[1:3:2] | passed | 0.00193 seconds |
|
|
|
|
./spec/unit/baktainer_spec.rb[1:3:3] | passed | 0.00191 seconds |
|
|
|
|
./spec/unit/baktainer_spec.rb[1:3:4] | passed | 0.00255 seconds |
|
|
|
|
./spec/unit/baktainer_spec.rb[1:4:1:1] | passed | 0.00216 seconds |
|
|
|
|
./spec/unit/baktainer_spec.rb[1:4:2:1] | passed | 0.35042 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:1:1] | passed | 0.00112 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:2:1] | passed | 0.00086 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:2:2] | passed | 0.00088 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:3:1] | passed | 0.00091 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:3:2] | passed | 0.00097 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:4:1] | passed | 0.00088 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:5:1] | passed | 0.00088 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:5:2] | passed | 0.00094 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:6:1] | passed | 0.0009 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:7:1] | passed | 0.00102 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:8:1] | passed | 0.00142 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:9:1:1] | passed | 0.00101 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:9:2:1] | passed | 0.00097 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:9:3:1] | passed | 0.0008 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:9:4:1] | passed | 0.00132 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:9:5:1] | passed | 0.00163 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:9:6:1] | passed | 0.00138 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:10:1] | passed | 0.00183 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:10:2] | passed | 0.00127 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:10:3] | passed | 0.00606 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:11:1] | passed | 0.00107 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:11:2] | passed | 0.00147 seconds |
|
|
|
|
./spec/unit/container_spec.rb[1:11:3] | passed | 0.00129 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/label_validator_spec.rb[1:1:1:1] | passed | 0.00039 seconds |
|
2025-07-15 11:48:37 -04:00
|
|
|
./spec/unit/label_validator_spec.rb[1:1:1:2] | passed | 0.00036 seconds |
|
|
|
|
./spec/unit/label_validator_spec.rb[1:1:2:1] | passed | 0.00035 seconds |
|
|
|
|
./spec/unit/label_validator_spec.rb[1:1:3:1] | passed | 0.00042 seconds |
|
|
|
|
./spec/unit/label_validator_spec.rb[1:1:4:1] | passed | 0.00039 seconds |
|
|
|
|
./spec/unit/label_validator_spec.rb[1:1:5:1] | passed | 0.00044 seconds |
|
|
|
|
./spec/unit/label_validator_spec.rb[1:1:6:1] | passed | 0.00134 seconds |
|
|
|
|
./spec/unit/label_validator_spec.rb[1:2:1] | passed | 0.0022 seconds |
|
|
|
|
./spec/unit/label_validator_spec.rb[1:2:2] | passed | 0.00105 seconds |
|
|
|
|
./spec/unit/label_validator_spec.rb[1:3:1] | passed | 0.00068 seconds |
|
|
|
|
./spec/unit/label_validator_spec.rb[1:3:2] | passed | 0.00117 seconds |
|
|
|
|
./spec/unit/label_validator_spec.rb[1:4:1] | passed | 0.00032 seconds |
|
|
|
|
./spec/unit/label_validator_spec.rb[1:4:2] | passed | 0.00032 seconds |
|
|
|
|
./spec/unit/notification_system_spec.rb[1:1:1:1] | passed | 0.00106 seconds |
|
|
|
|
./spec/unit/notification_system_spec.rb[1:1:2:1] | passed | 0.00358 seconds |
|
|
|
|
./spec/unit/notification_system_spec.rb[1:2:1] | passed | 0.03763 seconds |
|
|
|
|
./spec/unit/notification_system_spec.rb[1:3:1] | passed | 0.00117 seconds |
|
|
|
|
./spec/unit/notification_system_spec.rb[1:4:1] | passed | 0.00228 seconds |
|
|
|
|
./spec/unit/notification_system_spec.rb[1:5:1] | passed | 0.00097 seconds |
|
|
|
|
./spec/unit/notification_system_spec.rb[1:6:1] | passed | 0.00058 seconds |
|
|
|
|
./spec/unit/notification_system_spec.rb[1:6:2] | passed | 0.00062 seconds |
|