From 3206ce7c6c88ad645210056dac44da5c3e0ed1fc Mon Sep 17 00:00:00 2001 From: Ghe Rivero Date: Mon, 16 Jun 2014 10:07:06 +0000 Subject: [PATCH] Improve cache_image testing Add tests around cache_image functionality to cover other cases: - A image is already cached - A image is already cached but we use the parameter force to refresh it. Change-Id: I9739c2e0d29091d29fa170cf04d953184b8cb54d Partial-Bug: #1326849 --- .../tests/extensions/standby.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/ironic_python_agent/tests/extensions/standby.py b/ironic_python_agent/tests/extensions/standby.py index ed1e92c93..ba00bb6c1 100644 --- a/ironic_python_agent/tests/extensions/standby.py +++ b/ironic_python_agent/tests/extensions/standby.py @@ -269,6 +269,52 @@ class TestStandbyExtension(test_base.BaseTestCase): self.assertEqual('SUCCEEDED', async_result.command_status) self.assertEqual(None, async_result.command_result) + @mock.patch('ironic_python_agent.hardware.get_manager', autospec=True) + @mock.patch('ironic_python_agent.extensions.standby._write_image', + autospec=True) + @mock.patch('ironic_python_agent.extensions.standby._download_image', + autospec=True) + def test_cache_image_force(self, download_mock, write_mock, hardware_mock): + image_info = self._build_fake_image_info() + self.agent_extension.cached_image_id = image_info['id'] + download_mock.return_value = None + write_mock.return_value = None + manager_mock = hardware_mock.return_value + manager_mock.get_os_install_device.return_value = 'manager' + async_result = self.agent_extension.cache_image('cache_image', + image_info=image_info, + force=True) + async_result.join() + download_mock.assert_called_once_with(image_info) + write_mock.assert_called_once_with(image_info, 'manager') + self.assertEqual(self.agent_extension.cached_image_id, + image_info['id']) + self.assertEqual('SUCCEEDED', async_result.command_status) + self.assertEqual(None, async_result.command_result) + + @mock.patch('ironic_python_agent.hardware.get_manager', autospec=True) + @mock.patch('ironic_python_agent.extensions.standby._write_image', + autospec=True) + @mock.patch('ironic_python_agent.extensions.standby._download_image', + autospec=True) + def test_cache_image_cached(self, download_mock, write_mock, + hardware_mock): + image_info = self._build_fake_image_info() + self.agent_extension.cached_image_id = image_info['id'] + download_mock.return_value = None + write_mock.return_value = None + manager_mock = hardware_mock.return_value + manager_mock.get_os_install_device.return_value = 'manager' + async_result = self.agent_extension.cache_image('cache_image', + image_info=image_info) + async_result.join() + self.assertFalse(download_mock.called) + self.assertFalse(write_mock.called) + self.assertEqual(self.agent_extension.cached_image_id, + image_info['id']) + self.assertEqual('SUCCEEDED', async_result.command_status) + self.assertEqual(None, async_result.command_result) + @mock.patch(('ironic_python_agent.extensions.standby.' '_write_configdrive_to_partition'), autospec=True)