diff options
| author | Dmitry Tantsur <dtantsur@protonmail.com> | 2021-02-12 17:00:40 +0100 |
|---|---|---|
| committer | Dmitry Tantsur <dtantsur@protonmail.com> | 2021-02-16 16:56:52 +0100 |
| commit | 59cb08fd288a23f31e8cfdd5aa57d979c5a3daff (patch) | |
| tree | 3f4b9a6b795337a776aea10525f1ea80710f27ba /ironic_python_agent/tests/unit/test_utils.py | |
| parent | 13c3c60ff1716cb25d0a33e85089304ae49ef8e2 (diff) | |
| download | ironic-python-agent-59cb08fd288a23f31e8cfdd5aa57d979c5a3daff.tar.gz | |
New deploy step for injecting arbitrary files
This change adds a deploy step inject_files that adds a flexible
way to inject files into the instance.
Change-Id: I0e70a2cbc13744195c9493a48662e465ec010dbe
Story: #2008611
Task: #41794
Diffstat (limited to 'ironic_python_agent/tests/unit/test_utils.py')
| -rw-r--r-- | ironic_python_agent/tests/unit/test_utils.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/ironic_python_agent/tests/unit/test_utils.py b/ironic_python_agent/tests/unit/test_utils.py index 3dd7a5cb..51a0291a 100644 --- a/ironic_python_agent/tests/unit/test_utils.py +++ b/ironic_python_agent/tests/unit/test_utils.py @@ -27,6 +27,7 @@ from ironic_lib import disk_utils from ironic_lib import utils as ironic_utils from oslo_concurrency import processutils from oslo_serialization import base64 +import requests import testtools from ironic_python_agent import errors @@ -1132,3 +1133,33 @@ class TestCopyConfigFromVmedia(testtools.TestCase): mock.call(mock.ANY, '/etc/ironic-python-agent/ironic.crt'), mock.call(mock.ANY, '/etc/ironic-python-agent.d/ironic.conf'), ], any_order=True) + + +@mock.patch.object(requests, 'get', autospec=True) +class TestStreamingClient(ironic_agent_base.IronicAgentTest): + + def test_ok(self, mock_get): + client = utils.StreamingClient() + self.assertTrue(client.verify) + self.assertIsNone(client.cert) + + with client("http://url") as result: + response = mock_get.return_value.__enter__.return_value + self.assertIs(result, response.iter_content.return_value) + + mock_get.assert_called_once_with("http://url", verify=True, cert=None, + stream=True, timeout=60) + response.iter_content.assert_called_once_with(1024 * 1024) + + def test_retries(self, mock_get): + self.config(image_download_connection_retries=1, + image_download_connection_retry_interval=1) + mock_get.side_effect = requests.ConnectionError + + client = utils.StreamingClient() + self.assertRaises(errors.CommandExecutionError, + client("http://url").__enter__) + + mock_get.assert_called_with("http://url", verify=True, cert=None, + stream=True, timeout=60) + self.assertEqual(2, mock_get.call_count) |
