summaryrefslogtreecommitdiff
path: root/ironic_python_agent/tests/unit/test_utils.py
diff options
context:
space:
mode:
authorDmitry Tantsur <dtantsur@protonmail.com>2021-02-12 17:00:40 +0100
committerDmitry Tantsur <dtantsur@protonmail.com>2021-02-16 16:56:52 +0100
commit59cb08fd288a23f31e8cfdd5aa57d979c5a3daff (patch)
tree3f4b9a6b795337a776aea10525f1ea80710f27ba /ironic_python_agent/tests/unit/test_utils.py
parent13c3c60ff1716cb25d0a33e85089304ae49ef8e2 (diff)
downloadironic-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.py31
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)