diff options
author | Zuul <zuul@review.opendev.org> | 2020-05-28 22:08:51 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2020-05-28 22:08:51 +0000 |
commit | 707a97270f3faedc38f5fb4cf0a093c067191ec2 (patch) | |
tree | bf8d5a2207f6a4c015f243ce4901bd1740403ecc /ironic/tests/unit | |
parent | f5d908a3fca2039eb4e21883f40ba67631b5e072 (diff) | |
parent | 6520b373f456a6392e1b0ee6fdfaa632ce0d0dc3 (diff) | |
download | ironic-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.py | 57 |
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] |