charm-nova-cloud-controller/unit_tests/test_nova_cc_utils.py

109 lines
3.9 KiB
Python

from mock import patch, call
from copy import deepcopy
from unit_tests.test_utils import CharmTestCase
import hooks.nova_cc_utils as utils
TO_PATCH = [
'config',
'get_os_codename_package',
'relation_ids',
'_save_script_rc',
]
SCRIPTRC_ENV_VARS = {
'OPENSTACK_PORT_MCASTPORT': 5404,
'OPENSTACK_SERVICE_API_EC2': 'nova-api-ec2',
'OPENSTACK_SERVICE_API_OS_COMPUTE': 'nova-api-os-compute',
'OPENSTACK_SERVICE_CERT': 'nova-cert',
'OPENSTACK_SERVICE_CONDUCTOR': 'nova-conductor',
'OPENSTACK_SERVICE_OBJECTSTORE': 'nova-objectstore',
'OPENSTACK_SERVICE_SCHEDULER': 'nova-scheduler',
}
class NovaCCUtilsTests(CharmTestCase):
def setUp(self):
super(NovaCCUtilsTests, self).setUp(utils, TO_PATCH)
self.config.side_effect = self.test_config.get
def test_resource_map_quantum(self):
self.relation_ids.return_value = []
self.test_config.set('network-manager', 'Quantum')
_map = utils.resource_map()
confs = [
'/etc/quantum/quantum.conf',
'/etc/quantum/api-paste.ini'
]
[self.assertIn(q_conf, _map.keys()) for q_conf in confs]
def test_resource_map_nova_volume(self):
self.relation_ids.return_value = ['nova-volume-service:0']
_map = utils.resource_map()
self.assertIn('nova-api-os-volume',
_map['/etc/nova/nova.conf']['services'])
def test_determine_packages_quantum(self):
self.relation_ids.return_value = []
self.test_config.set('network-manager', 'Quantum')
pkgs = utils.determine_packages()
self.assertIn('quantum-server', pkgs)
def test_determine_packages_nova_volume(self):
self.relation_ids.return_value = ['nova-volume-service:0']
pkgs = utils.determine_packages()
self.assertIn('nova-api-os-volume', pkgs)
def test_determine_packages_base(self):
self.relation_ids.return_value = []
pkgs = utils.determine_packages()
ex = list(set(utils.BASE_PACKAGES + utils.BASE_SERVICES))
self.assertEquals(ex, pkgs)
@patch.object(utils, 'restart_map')
def test_determine_ports(self, restart_map):
restart_map.return_value = {
'/etc/nova/nova.conf': ['nova-api-os-compute', 'nova-api-ec2'],
'/etc/quantum/quantum.conf': ['quantum-server'],
}
ports = utils.determine_ports()
ex = [8773, 8774, 9696]
self.assertEquals(ex, sorted(ports))
def test_save_script_rc_base(self):
self.relation_ids.return_value = []
utils.save_script_rc()
self._save_script_rc.called_with(**SCRIPTRC_ENV_VARS)
def test_save_script_quantum(self):
self.relation_ids.return_value = []
self.test_config.set('network-manager', 'Quantum')
utils.save_script_rc()
_ex = deepcopy(SCRIPTRC_ENV_VARS)
_ex['OPENSTACK_SERVICE_API_QUANTUM'] = 'quantum-server'
self._save_script_rc.called_with(**_ex)
def test_save_script_nova_volume(self):
self.relation_ids.return_value = ['nvol:0']
utils.save_script_rc()
_ex = deepcopy(SCRIPTRC_ENV_VARS)
_ex['OPENSTACK_SERVICE_API_OS_VOL'] = 'nova-api-os-volume'
self._save_script_rc.called_with(**_ex)
def test_determine_volume_service_essex(self):
self.get_os_codename_package.return_value = 'essex'
self.assertEquals('nova-volume', utils.volume_service())
def test_determine_volume_service_folsom_cinder(self):
self.get_os_codename_package.return_value = 'folsom'
self.relation_ids.return_value = ['cinder:0']
self.assertEquals('cinder', utils.volume_service())
def test_determine_volume_service_folsom_nova_vol(self):
self.get_os_codename_package.return_value = 'folsom'
self.relation_ids.return_value = []
self.assertEquals('nova-volume', utils.volume_service())
def test_determine_volume_service_grizzly_and_beyond(self):
pass