summaryrefslogtreecommitdiff
path: root/ironic/nova
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-07-02 19:13:26 +0000
committerGerrit Code Review <review@openstack.org>2014-07-02 19:13:26 +0000
commit650d63e0556ae2928ffce984d682fe619a12f7fe (patch)
tree8862a955c74d9b8c4258e5cd7266af68333ed2b6 /ironic/nova
parent23f473605752269fd30e7c9f0b0056bb5e55b197 (diff)
parent13e5b46ab898ab9a1a81552ef5fb6b3e601154e6 (diff)
downloadironic-650d63e0556ae2928ffce984d682fe619a12f7fe.tar.gz
Merge "Add the remaining unittests to the ClientWrapper class"
Diffstat (limited to 'ironic/nova')
-rw-r--r--ironic/nova/tests/virt/ironic/test_client_wrapper.py51
1 files changed, 48 insertions, 3 deletions
diff --git a/ironic/nova/tests/virt/ironic/test_client_wrapper.py b/ironic/nova/tests/virt/ironic/test_client_wrapper.py
index bf67233fb..ef0667aee 100644
--- a/ironic/nova/tests/virt/ironic/test_client_wrapper.py
+++ b/ironic/nova/tests/virt/ironic/test_client_wrapper.py
@@ -14,13 +14,15 @@
# under the License.
import mock
-from oslo.config import cfg
-from ironic.nova.tests.virt.ironic import utils as ironic_utils
-from ironic.nova.virt.ironic import client_wrapper
from ironicclient import client as ironic_client
+from ironicclient import exc as ironic_exception
+from oslo.config import cfg
+from nova import exception
from nova import test
+from ironic.nova.tests.virt.ironic import utils as ironic_utils
+from ironic.nova.virt.ironic import client_wrapper
CONF = cfg.CONF
@@ -32,6 +34,8 @@ class IronicClientWrapperTestCase(test.NoDBTestCase):
def setUp(self):
super(IronicClientWrapperTestCase, self).setUp()
self.icli = client_wrapper.IronicClientWrapper()
+ # Do not waste time sleeping
+ cfg.CONF.set_override('api_retry_interval', 0, 'ironic')
@mock.patch.object(client_wrapper.IronicClientWrapper, '_multi_getattr')
@mock.patch.object(client_wrapper.IronicClientWrapper, '_get_client')
@@ -77,3 +81,44 @@ class IronicClientWrapperTestCase(test.NoDBTestCase):
'ironic_url': CONF.ironic.api_endpoint}
mock_ir_cli.assert_called_once_with(CONF.ironic.api_version,
**expected)
+
+ @mock.patch.object(client_wrapper.IronicClientWrapper, '_multi_getattr')
+ @mock.patch.object(client_wrapper.IronicClientWrapper, '_get_client')
+ def test_call_fail(self, mock_get_client, mock_multi_getattr):
+ cfg.CONF.set_override('api_max_retries', 2, 'ironic')
+ test_obj = mock.Mock()
+ test_obj.side_effect = ironic_exception.HTTPServiceUnavailable
+ mock_multi_getattr.return_value = test_obj
+ mock_get_client.return_value = FAKE_CLIENT
+ self.assertRaises(exception.NovaException, self.icli.call, "node.list")
+ self.assertEqual(2, test_obj.call_count)
+
+ @mock.patch.object(client_wrapper.IronicClientWrapper, '_multi_getattr')
+ @mock.patch.object(client_wrapper.IronicClientWrapper, '_get_client')
+ def test_call_fail_unexpected_exception(self, mock_get_client,
+ mock_multi_getattr):
+ test_obj = mock.Mock()
+ test_obj.side_effect = ironic_exception.HTTPNotFound
+ mock_multi_getattr.return_value = test_obj
+ mock_get_client.return_value = FAKE_CLIENT
+ self.assertRaises(ironic_exception.HTTPNotFound, self.icli.call,
+ "node.list")
+
+ @mock.patch.object(ironic_client, 'get_client')
+ def test__get_client_unauthorized(self, mock_get_client):
+ mock_get_client.side_effect = ironic_exception.Unauthorized
+ self.assertRaises(exception.NovaException, self.icli._get_client)
+
+ @mock.patch.object(ironic_client, 'get_client')
+ def test__get_client_unexpected_exception(self, mock_get_client):
+ mock_get_client.side_effect = ironic_exception.ConnectionRefused
+ self.assertRaises(ironic_exception.ConnectionRefused,
+ self.icli._get_client)
+
+ def test__multi_getattr_good(self):
+ response = self.icli._multi_getattr(FAKE_CLIENT, "node.list")
+ self.assertEqual(FAKE_CLIENT.node.list, response)
+
+ def test__multi_getattr_fail(self):
+ self.assertRaises(AttributeError, self.icli._multi_getattr,
+ FAKE_CLIENT, "nonexistent")