diff options
author | Cédric Ollivier <cedric.ollivier@orange.com> | 2018-01-21 01:02:20 +0100 |
---|---|---|
committer | Cédric Ollivier <cedric.ollivier@orange.com> | 2018-01-21 14:53:47 +0100 |
commit | 2030e14451a072844e750318de0d5efc47d4500c (patch) | |
tree | 47e79f3244d233d6edbe11e30150185ed12a59e0 /functest/tests/unit/ci/test_check_deployment.py | |
parent | a6df43da7ab4de653eecbc9b6380d5fc7ce7bc14 (diff) |
Fully test and cover functest/ci/tier_*
It also fixes check_deployment.py and ci unit tests which were wrong
when testing exceptions.
Now ci modules are rated 10/10 and fully covered.
Change-Id: I30dca491b44cc54aa1abc0d0433c00b4dcabfdc4
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
Diffstat (limited to 'functest/tests/unit/ci/test_check_deployment.py')
-rw-r--r-- | functest/tests/unit/ci/test_check_deployment.py | 359 |
1 files changed, 223 insertions, 136 deletions
diff --git a/functest/tests/unit/ci/test_check_deployment.py b/functest/tests/unit/ci/test_check_deployment.py index fc6368e5..46dcc24c 100644 --- a/functest/tests/unit/ci/test_check_deployment.py +++ b/functest/tests/unit/ci/test_check_deployment.py @@ -7,9 +7,13 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 +# pylint: disable=missing-docstring + +import socket +import unittest + import logging import mock -import unittest from functest.ci import check_deployment @@ -18,7 +22,7 @@ __author__ = "Jose Lausuch <jose.lausuch@ericsson.com>" class CheckDeploymentTesting(unittest.TestCase): """The super class which testing classes could inherit.""" - # pylint: disable=missing-docstring + # pylint: disable=missing-docstring,too-many-public-methods logging.disable(logging.CRITICAL) @@ -38,160 +42,243 @@ class CheckDeploymentTesting(unittest.TestCase): self.os_creds.proxy_settings = proxy_settings self.deployment.os_creds = self.os_creds - def test_check_rc(self): - with mock.patch('functest.ci.check_deployment.os.path.isfile', - returns=True) as m, \ - mock.patch('six.moves.builtins.open', - mock.mock_open(read_data='OS_AUTH_URL')): + @mock.patch('socket.socket.connect', side_effect=TypeError) + def test_verify_connectivity_ko1(self, *args): + self.assertFalse(check_deployment.verify_connectivity("127.0.0.1")) + args[0].assert_called_once_with(None, 80) + + @mock.patch('socket.socket.connect', side_effect=socket.error) + def test_verify_connectivity_ko2(self, *args): + self.assertFalse( + check_deployment.verify_connectivity("http://127.0.0.1")) + args[0].assert_called_once_with("127.0.0.1", 80) + + @mock.patch('socket.socket.connect', side_effect=socket.error) + def test_verify_connectivity_ko3(self, *args): + self.assertFalse( + check_deployment.verify_connectivity("https://127.0.0.1")) + args[0].assert_called_once_with("127.0.0.1", 443) + + @mock.patch('socket.socket.connect') + def test_verify_connectivity(self, *args): + self.assertTrue( + check_deployment.verify_connectivity("https://127.0.0.1")) + args[0].assert_called_once_with("127.0.0.1", 443) + + @mock.patch('snaps.openstack.utils.keystone_utils.keystone_session', + return_value=mock.Mock( + get_token=mock.Mock(side_effect=Exception))) + def test_get_auth_token_ko(self, *args): + with self.assertRaises(Exception): + check_deployment.get_auth_token(self.os_creds) + args[0].assert_called_once_with(self.os_creds) + + @mock.patch('snaps.openstack.utils.keystone_utils.keystone_session', + return_value=mock.Mock( + get_token=mock.Mock(return_value="foo"))) + def test_get_auth_token(self, *args): + self.assertEqual(check_deployment.get_auth_token(self.os_creds), "foo") + args[0].assert_called_once_with(self.os_creds) + + @mock.patch('six.moves.builtins.open', + mock.mock_open(read_data='OS_AUTH_URL')) + @mock.patch('functest.ci.check_deployment.os.path.isfile', returns=True) + def test_check_rc(self, *args): + self.deployment.check_rc() + args[0].assert_called_once_with(self.rc_file) + + @mock.patch('functest.ci.check_deployment.os.path.isfile', + return_value=False) + def test_check_rc_missing_file(self, *args): + with self.assertRaises(Exception) as context: self.deployment.check_rc() - self.assertTrue(m.called) - - def test_check_rc_missing_file(self): - with mock.patch('functest.ci.check_deployment.os.path.isfile', - return_value=False), \ - self.assertRaises(Exception) as context: - msg = 'RC file {} does not exist!'.format(self.rc_file) - self.deployment.check_rc(self.rc_file) - self.assertTrue(msg in context) - - def test_check_rc_missing_os_auth(self): - with mock.patch('six.moves.builtins.open', - mock.mock_open(read_data='test')), \ - self.assertRaises(Exception) as context: - msg = 'OS_AUTH_URL not defined in {}.'.format(self.rc_file) - self.assertTrue(msg in context) - - def test_check_auth_endpoint(self): - with mock.patch('functest.ci.check_deployment.verify_connectivity', - return_value=True) as m,\ - mock.patch('functest.ci.check_deployment.get_auth_token', - return_value='gAAAAABaOhXGS') as mock_token: - self.deployment.check_auth_endpoint() - self.assertTrue(m.called) - self.assertTrue(mock_token.called) - - def test_check_auth_endpoint_not_reachable(self): - with mock.patch('functest.ci.check_deployment.verify_connectivity', - return_value=False) as m, \ - self.assertRaises(Exception) as context: - endpoint = self.os_creds.auth_url + args[0].assert_called_once_with(self.rc_file) + msg = 'RC file {} does not exist!'.format(self.rc_file) + self.assertTrue(msg in str(context.exception)) + + @mock.patch('six.moves.builtins.open', + mock.mock_open(read_data='test')) + @mock.patch('functest.ci.check_deployment.os.path.isfile', + return_value=True) + def test_check_rc_missing_os_auth(self, *args): + with self.assertRaises(Exception) as context: + self.deployment.check_rc() + args[0].assert_called_once_with(self.rc_file) + msg = 'OS_AUTH_URL not defined in {}.'.format(self.rc_file) + self.assertTrue(msg in str(context.exception)) + + @mock.patch('functest.ci.check_deployment.get_auth_token', + return_value='gAAAAABaOhXGS') + @mock.patch('functest.ci.check_deployment.verify_connectivity', + return_value=True) + def test_check_auth_endpoint(self, *args): + self.deployment.check_auth_endpoint() + args[0].assert_called_once_with(self.endpoint_test) + args[1].assert_called_once_with(mock.ANY) + + @mock.patch('functest.ci.check_deployment.verify_connectivity', + return_value=False) + def test_check_auth_endpoint_ko(self, *args): + with self.assertRaises(Exception) as context: self.deployment.check_auth_endpoint() - msg = "OS_AUTH_URL {} is not reachable.".format(endpoint) - self.assertTrue(m.called) - self.assertTrue(msg in context) - - def test_check_public_endpoint(self): - with mock.patch('functest.ci.check_deployment.verify_connectivity', - return_value=True) as m, \ - mock.patch('functest.ci.check_deployment.keystone_utils.' - 'get_endpoint') as n: - self.deployment.check_public_endpoint() - self.assertTrue(m.called) - self.assertTrue(n.called) - - def test_check_public_endpoint_not_reachable(self): - with mock.patch('functest.ci.check_deployment.verify_connectivity', - return_value=False) as m, \ - mock.patch('functest.ci.check_deployment.keystone_utils.' - 'get_endpoint', - return_value=self.endpoint_test) as n, \ - self.assertRaises(Exception) as context: + msg = "OS_AUTH_URL {} is not reachable.".format(self.os_creds.auth_url) + args[0].assert_called_once_with(self.os_creds.auth_url) + self.assertTrue(msg in str(context.exception)) + + @mock.patch('functest.ci.check_deployment.verify_connectivity', + return_value=True) + @mock.patch('functest.ci.check_deployment.keystone_utils.get_endpoint') + def test_check_public_endpoint(self, *args): + args[0].return_value = self.endpoint_test + self.deployment.check_public_endpoint() + args[0].assert_called_once_with( + mock.ANY, 'identity', interface='public') + args[1].assert_called_once_with(self.endpoint_test) + + @mock.patch('functest.ci.check_deployment.verify_connectivity', + return_value=False) + @mock.patch('functest.ci.check_deployment.keystone_utils.get_endpoint') + def test_check_public_endpoint_ko(self, *args): + args[0].return_value = self.endpoint_test + with self.assertRaises(Exception) as context: self.deployment.check_public_endpoint() - msg = ("Public endpoint {} is not reachable." - .format(self.mock_endpoint)) - self.assertTrue(m.called) - self.assertTrue(n.called) - self.assertTrue(msg in context) - - def test_check_service_endpoint(self): - with mock.patch('functest.ci.check_deployment.verify_connectivity', - return_value=True) as m, \ - mock.patch('functest.ci.check_deployment.keystone_utils.' - 'get_endpoint') as n: - self.deployment.check_service_endpoint(self.service_test) - self.assertTrue(m.called) - self.assertTrue(n.called) - - def test_check_service_endpoint_not_reachable(self): - with mock.patch('functest.ci.check_deployment.verify_connectivity', - return_value=False) as m, \ - mock.patch('functest.ci.check_deployment.keystone_utils.' - 'get_endpoint', - return_value=self.endpoint_test) as n, \ - self.assertRaises(Exception) as context: + args[0].assert_called_once_with( + mock.ANY, 'identity', interface='public') + args[1].assert_called_once_with(self.endpoint_test) + msg = "Public endpoint {} is not reachable.".format(self.endpoint_test) + self.assertTrue(msg in str(context.exception)) + + @mock.patch('functest.ci.check_deployment.verify_connectivity', + return_value=True) + @mock.patch('functest.ci.check_deployment.keystone_utils.get_endpoint') + def test_check_service_endpoint(self, *args): + self.deployment.check_service_endpoint(self.service_test) + args[0].assert_called_once_with( + mock.ANY, self.service_test, interface='public') + args[1].assert_called_once_with(args[0].return_value) + + @mock.patch('functest.ci.check_deployment.verify_connectivity', + return_value=False) + @mock.patch('functest.ci.check_deployment.keystone_utils.get_endpoint') + def test_check_service_endpoint_ko(self, *args): + args[0].return_value = self.endpoint_test + with self.assertRaises(Exception) as context: self.deployment.check_service_endpoint(self.service_test) - msg = "{} endpoint {} is not reachable.".format(self.service_test, - self.endpoint_test) - self.assertTrue(m.called) - self.assertTrue(n.called) - self.assertTrue(msg in context) - - def test_check_nova(self): - with mock.patch('functest.ci.check_deployment.nova_utils.nova_client', - return_value=self.client_test) as m: - self.deployment.check_nova() - self.assertTrue(m.called) + msg = "{} endpoint {} is not reachable.".format( + self.service_test, self.endpoint_test) + self.assertTrue(msg in str(context.exception)) + args[0].assert_called_once_with( + mock.ANY, self.service_test, interface='public') + args[1].assert_called_once_with(args[0].return_value) + + @mock.patch('functest.ci.check_deployment.nova_utils.nova_client') + def test_check_nova(self, mock_method): + self.deployment.check_nova() + mock_method.assert_called_once_with(mock.ANY) - def test_check_nova_fail(self): - with mock.patch('functest.ci.check_deployment.nova_utils.nova_client', - return_value=self.client_test) as m, \ - mock.patch.object(self.client_test, 'servers.list', - side_effect=Exception): + @mock.patch('functest.ci.check_deployment.nova_utils.nova_client', + return_value=mock.Mock( + servers=mock.Mock(list=mock.Mock(side_effect=Exception)))) + def test_check_nova_fail(self, mock_method): + with self.assertRaises(Exception): self.deployment.check_nova() - self.assertTrue(m.called) - self.assertRaises(Exception) + mock_method.assert_called_once_with(mock.ANY) - def test_check_neutron(self): - with mock.patch('functest.ci.check_deployment.neutron_utils.' - 'neutron_client', return_value=self.client_test) as m: - self.deployment.check_neutron() - self.assertTrue(m.called) - - def test_check_neutron_fail(self): - with mock.patch('functest.ci.check_deployment.neutron_utils.' - 'neutron_client', - return_value=self.client_test) as m, \ - mock.patch.object(self.client_test, 'list_networks', - side_effect=Exception), \ - self.assertRaises(Exception): + @mock.patch('functest.ci.check_deployment.neutron_utils.neutron_client') + def test_check_neutron(self, mock_method): + self.deployment.check_neutron() + mock_method.assert_called_once_with(mock.ANY) + + @mock.patch('functest.ci.check_deployment.neutron_utils.neutron_client', + return_value=mock.Mock( + list_networks=mock.Mock(side_effect=Exception))) + def test_check_neutron_fail(self, mock_method): + with self.assertRaises(Exception): self.deployment.check_neutron() - self.assertRaises(Exception) - self.assertTrue(m.called) + mock_method.assert_called_once_with(mock.ANY) - def test_check_glance(self): - with mock.patch('functest.ci.check_deployment.glance_utils.' - 'glance_client', return_value=self.client_test) as m: - self.deployment.check_glance() - self.assertTrue(m.called) + @mock.patch('functest.ci.check_deployment.glance_utils.glance_client') + def test_check_glance(self, mock_method): + self.deployment.check_glance() + mock_method.assert_called_once_with(mock.ANY) - def test_check_glance_fail(self): - with mock.patch('functest.ci.check_deployment.glance_utils.' - 'glance_client', return_value=self.client_test) as m, \ - mock.patch.object(self.client_test, 'images.list', - side_effect=Exception): + @mock.patch('functest.ci.check_deployment.glance_utils.glance_client', + return_value=mock.Mock( + images=mock.Mock(list=mock.Mock(side_effect=Exception)))) + def test_check_glance_fail(self, mock_method): + with self.assertRaises(Exception): self.deployment.check_glance() - self.assertRaises(Exception) - self.assertTrue(m.called) + mock_method.assert_called_once_with(mock.ANY) @mock.patch('functest.ci.check_deployment.LOGGER.info') @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.' - 'get_ext_net_name') - def test_check_extnet(self, mock_getext, mock_loginfo): - test_network = 'ext-net' - mock_getext.return_value = test_network + 'get_ext_net_name', return_value='ext-net') + def test_check_extnet(self, *args): self.deployment.check_ext_net() - self.assertTrue(mock_getext.called) - mock_loginfo.assert_called_once_with( - "External network found: %s", test_network) + args[0].assert_called_once_with(mock.ANY) + args[1].assert_called_once_with( + "External network found: %s", "ext-net") @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.' 'get_ext_net_name', return_value='') - def test_check_extnet_None(self, mock_getext): + def test_check_extnet_none(self, mock_getext): with self.assertRaises(Exception) as context: self.deployment.check_ext_net() - self.assertTrue(mock_getext.called) - msg = 'ERROR: No external networks in the deployment.' - self.assertTrue(msg in context) + self.assertTrue(mock_getext.called) + msg = 'ERROR: No external networks in the deployment.' + self.assertTrue(msg in str(context.exception)) + + @mock.patch('functest.ci.check_deployment.CheckDeployment.check_rc', + side_effect=Exception) + def test_check_all_exc1(self, *args): + with self.assertRaises(Exception): + self.deployment.check_all() + args[0].assert_called_once_with() + + @mock.patch('snaps.openstack.tests.openstack_tests.get_credentials', + side_effect=Exception) + @mock.patch('functest.ci.check_deployment.CheckDeployment.check_rc') + def test_check_all_exc2(self, *args): + with self.assertRaises(Exception): + self.deployment.check_all() + args[0].assert_called_once_with() + args[1].assert_called_once_with( + os_env_file=self.rc_file, proxy_settings_str=None, + ssh_proxy_cmd=None) + + @mock.patch('snaps.openstack.tests.openstack_tests.get_credentials', + return_value=None) + @mock.patch('functest.ci.check_deployment.CheckDeployment.check_rc') + def test_check_all_exc3(self, *args): + with self.assertRaises(Exception): + self.deployment.check_all() + args[0].assert_called_once_with() + args[1].assert_called_once_with( + os_env_file=self.rc_file, proxy_settings_str=None, + ssh_proxy_cmd=None) + + @mock.patch('functest.ci.check_deployment.CheckDeployment.check_ext_net') + @mock.patch('functest.ci.check_deployment.CheckDeployment.check_glance') + @mock.patch('functest.ci.check_deployment.CheckDeployment.check_neutron') + @mock.patch('functest.ci.check_deployment.CheckDeployment.check_nova') + @mock.patch( + 'functest.ci.check_deployment.CheckDeployment.check_service_endpoint') + @mock.patch( + 'functest.ci.check_deployment.CheckDeployment.check_public_endpoint') + @mock.patch( + 'functest.ci.check_deployment.CheckDeployment.check_auth_endpoint') + @mock.patch('snaps.openstack.tests.openstack_tests.get_credentials') + @mock.patch('functest.ci.check_deployment.CheckDeployment.check_rc') + def test_check_all(self, *args): + self.assertEqual(self.deployment.check_all(), 0) + for i in [0, 2, 3, 5, 6, 7, 8]: + args[i].assert_called_once_with() + args[1].assert_called_once_with( + os_env_file=self.rc_file, proxy_settings_str=None, + ssh_proxy_cmd=None) + calls = [mock.call('compute'), mock.call('network'), + mock.call('image')] + args[4].assert_has_calls(calls) if __name__ == "__main__": |