mirror of
				https://github.com/kevinveenbirkenbach/computer-playbook.git
				synced 2025-10-31 18:29:21 +00:00 
			
		
		
		
	Huge role refactoring/cleanup. Other commits will propably follow. Because some bugs will exist. Still important for longrun and also for auto docs/help/slideshow generation
This commit is contained in:
		| @@ -0,0 +1,56 @@ | ||||
| import unittest | ||||
| from unittest.mock import patch | ||||
| import os | ||||
| import importlib.util | ||||
| import sys | ||||
|  | ||||
| # Dynamically load the module under test from the Ansible role's files directory | ||||
| def load_optimizer_module(): | ||||
|     module_path = os.path.abspath(os.path.join( | ||||
|         os.path.dirname(__file__), | ||||
|         '..', "..", "..","..",'roles', 'maintenance-docker-storage-optimizer', 'files', 'maintenance-docker-storage-optimizer.py' | ||||
|     )) | ||||
|     spec = importlib.util.spec_from_file_location('storage_optimizer', module_path) | ||||
|     optimizer = importlib.util.module_from_spec(spec) | ||||
|     # Register module so patch('storage_optimizer...') works | ||||
|     sys.modules[spec.name] = optimizer | ||||
|     spec.loader.exec_module(optimizer) | ||||
|     return optimizer | ||||
|  | ||||
| storage_optimizer = load_optimizer_module() | ||||
|  | ||||
| class TestHealthCheckLogic(unittest.TestCase): | ||||
|  | ||||
|     def setUp(self): | ||||
|         # Prevent sleeping delays in inline loops | ||||
|         patcher = patch('storage_optimizer.time.sleep', return_value=None) | ||||
|         self.sleep_patcher = patcher.start() | ||||
|         self.addCleanup(self.sleep_patcher.stop) | ||||
|  | ||||
|     @patch('storage_optimizer.run_command') | ||||
|     def test_has_healthcheck_true(self, mock_run): | ||||
|         mock_run.return_value = '{"Status":"starting","FailingStreak":0}' | ||||
|         self.assertTrue(storage_optimizer.has_healthcheck('container-id')) | ||||
|  | ||||
|     @patch('storage_optimizer.run_command') | ||||
|     def test_has_healthcheck_false(self, mock_run): | ||||
|         mock_run.return_value = 'null' | ||||
|         self.assertFalse(storage_optimizer.has_healthcheck('container-id')) | ||||
|  | ||||
|     @patch('storage_optimizer.get_image') | ||||
|     def test_has_container_with_database(self, mock_get_image): | ||||
|         test_cases = [ | ||||
|             ('postgres:13', True), | ||||
|             ('mariadb:latest', True), | ||||
|             ('redis:6', True), | ||||
|             ('mongo:4', True), | ||||
|             ('nginx:alpine', False), | ||||
|         ] | ||||
|         for image_name, expected in test_cases: | ||||
|             mock_get_image.return_value = image_name | ||||
|             result = storage_optimizer.has_container_with_database(['any']) | ||||
|             self.assertEqual(result, expected, | ||||
|                              f"Image {image_name} expected {expected}") | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     unittest.main() | ||||
		Reference in New Issue
	
	Block a user