summaryrefslogtreecommitdiff
path: root/ironic/tests/unit
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-05-28 22:08:51 +0000
committerGerrit Code Review <review@openstack.org>2020-05-28 22:08:51 +0000
commit707a97270f3faedc38f5fb4cf0a093c067191ec2 (patch)
treebf8d5a2207f6a4c015f243ce4901bd1740403ecc /ironic/tests/unit
parentf5d908a3fca2039eb4e21883f40ba67631b5e072 (diff)
parent6520b373f456a6392e1b0ee6fdfaa632ce0d0dc3 (diff)
downloadironic-707a97270f3faedc38f5fb4cf0a093c067191ec2.tar.gz
Merge "New configuration parameter to use ipmitool retries"
Diffstat (limited to 'ironic/tests/unit')
-rw-r--r--ironic/tests/unit/drivers/modules/test_ipmitool.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/ironic/tests/unit/drivers/modules/test_ipmitool.py b/ironic/tests/unit/drivers/modules/test_ipmitool.py
index b62435499..c7dd502a4 100644
--- a/ironic/tests/unit/drivers/modules/test_ipmitool.py
+++ b/ironic/tests/unit/drivers/modules/test_ipmitool.py
@@ -1042,6 +1042,63 @@ class IPMIToolPrivateMethodTestCase(
mock_support.assert_called_once_with('timing')
mock_exec.assert_called_once_with(*args)
+ @mock.patch.object(ipmi, '_is_option_supported', autospec=True)
+ @mock.patch.object(ipmi, '_make_password_file', _make_password_file_stub)
+ @mock.patch.object(utils, 'execute', autospec=True)
+ def test__exec_ipmitool_with_ironic_retries(
+ self, mock_exec, mock_support):
+ args = [
+ 'ipmitool',
+ '-I', 'lanplus',
+ '-H', self.info['address'],
+ '-L', self.info['priv_level'],
+ '-U', self.info['username'],
+ '-v',
+ '-R', '1',
+ '-N', '1',
+ '-f', awesome_password_filename,
+ 'A', 'B', 'C',
+ ]
+
+ mock_support.return_value = True
+ mock_exec.return_value = (None, None)
+
+ self.config(use_ipmitool_retries=False, group='ipmi')
+
+ ipmi._exec_ipmitool(self.info, 'A B C')
+
+ mock_support.assert_called_once_with('timing')
+ mock_exec.assert_called_once_with(*args)
+
+ @mock.patch.object(ipmi, '_is_option_supported', autospec=True)
+ @mock.patch.object(ipmi, '_make_password_file', _make_password_file_stub)
+ @mock.patch.object(utils, 'execute', autospec=True)
+ def test__exec_ipmitool_with_ironic_retries_multiple(
+ self, mock_exec, mock_support):
+
+ mock_exec.side_effect = [
+ processutils.ProcessExecutionError(
+ stderr="Unknown"
+ ),
+ processutils.ProcessExecutionError(
+ stderr="Unknown"
+ ),
+ processutils.ProcessExecutionError(
+ stderr="Unknown"
+ ),
+ ]
+
+ self.config(min_command_interval=1, group='ipmi')
+ self.config(command_retry_timeout=3, group='ipmi')
+ self.config(use_ipmitool_retries=False, group='ipmi')
+
+ self.assertRaises(processutils.ProcessExecutionError,
+ ipmi._exec_ipmitool,
+ self.info, 'A B C')
+
+ mock_support.assert_called_once_with('timing')
+ self.assertEqual(3, mock_exec.call_count)
+
def test__exec_ipmitool_wait(self):
mock_popen = mock.MagicMock()
mock_popen.poll.side_effect = [1, 1, 1, 1, 1]