More unit tests
This commit is contained in:
@@ -42,7 +42,8 @@ def get_l3ha():
|
|||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def get_dvr():
|
def get_dvr():
|
||||||
if config('enable-dvr'):
|
if config('enable-dvr'):
|
||||||
if os_release('neutron-server') < 'juno':
|
if os_release('neutron-server') < 'juno':
|
||||||
@@ -52,12 +53,12 @@ def get_dvr():
|
|||||||
log('Disabling DVR, enable-dvr requires the use of the vxlan'
|
log('Disabling DVR, enable-dvr requires the use of the vxlan'
|
||||||
'overlay network')
|
'overlay network')
|
||||||
return False
|
return False
|
||||||
if not get_l2population():
|
|
||||||
log('Disabling DVR, l2-population must be enabled to use dvr')
|
|
||||||
return False
|
|
||||||
if get_l3ha():
|
if get_l3ha():
|
||||||
log('Disabling DVR, enable-l3ha must be disabled with dvr')
|
log('Disabling DVR, enable-l3ha must be disabled with dvr')
|
||||||
return False
|
return False
|
||||||
|
if not get_l2population():
|
||||||
|
log('Disabling DVR, l2-population must be enabled to use dvr')
|
||||||
|
return False
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|||||||
@@ -3,15 +3,131 @@ from mock import patch
|
|||||||
import neutron_api_context as context
|
import neutron_api_context as context
|
||||||
import charmhelpers
|
import charmhelpers
|
||||||
TO_PATCH = [
|
TO_PATCH = [
|
||||||
|
'config',
|
||||||
|
'determine_api_port',
|
||||||
|
'determine_apache_port',
|
||||||
|
'log',
|
||||||
|
'os_release',
|
||||||
'relation_get',
|
'relation_get',
|
||||||
'relation_ids',
|
'relation_ids',
|
||||||
'related_units',
|
'related_units',
|
||||||
'config',
|
|
||||||
'determine_api_port',
|
|
||||||
'determine_apache_port'
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class GeneralTests(CharmTestCase):
|
||||||
|
def setUp(self):
|
||||||
|
super(GeneralTests, self).setUp(context, TO_PATCH)
|
||||||
|
self.relation_get.side_effect = self.test_relation.get
|
||||||
|
self.config.side_effect = self.test_config.get
|
||||||
|
|
||||||
|
def test_l2population(self):
|
||||||
|
self.test_config.set('l2-population', True)
|
||||||
|
self.test_config.set('neutron-plugin', 'ovs')
|
||||||
|
self.assertEquals(context.get_l2population(), True)
|
||||||
|
|
||||||
|
def test_l2population_nonovs(self):
|
||||||
|
self.test_config.set('l2-population', True)
|
||||||
|
self.test_config.set('neutron-plugin', 'nsx')
|
||||||
|
self.assertEquals(context.get_l2population(), False)
|
||||||
|
|
||||||
|
def test_get_overlay_network_type(self):
|
||||||
|
self.test_config.set('overlay-network-type', 'gre')
|
||||||
|
self.assertEquals(context.get_overlay_network_type(), 'gre')
|
||||||
|
|
||||||
|
def test_get_overlay_network_type_unsupported(self):
|
||||||
|
self.test_config.set('overlay-network-type', 'tokenring')
|
||||||
|
with self.assertRaises(Exception) as _exceptctxt:
|
||||||
|
context.get_overlay_network_type()
|
||||||
|
self.assertEqual(_exceptctxt.exception.message,
|
||||||
|
'Unsupported overlay-network-type')
|
||||||
|
|
||||||
|
def test_get_l3ha(self):
|
||||||
|
self.test_config.set('enable-l3ha', True)
|
||||||
|
self.test_config.set('overlay-network-type', 'gre')
|
||||||
|
self.test_config.set('neutron-plugin', 'ovs')
|
||||||
|
self.test_config.set('l2-population', False)
|
||||||
|
self.os_release.return_value = 'juno'
|
||||||
|
self.assertEquals(context.get_l3ha(), True)
|
||||||
|
|
||||||
|
def test_get_l3ha_prejuno(self):
|
||||||
|
self.test_config.set('enable-l3ha', True)
|
||||||
|
self.test_config.set('overlay-network-type', 'gre')
|
||||||
|
self.test_config.set('neutron-plugin', 'ovs')
|
||||||
|
self.test_config.set('l2-population', False)
|
||||||
|
self.os_release.return_value = 'icehouse'
|
||||||
|
self.assertEquals(context.get_l3ha(), False)
|
||||||
|
|
||||||
|
def test_get_l3ha_l2pop(self):
|
||||||
|
self.test_config.set('enable-l3ha', True)
|
||||||
|
self.test_config.set('overlay-network-type', 'gre')
|
||||||
|
self.test_config.set('neutron-plugin', 'ovs')
|
||||||
|
self.test_config.set('l2-population', True)
|
||||||
|
self.os_release.return_value = 'juno'
|
||||||
|
self.assertEquals(context.get_l3ha(), False)
|
||||||
|
|
||||||
|
def test_get_l3ha_badoverlay(self):
|
||||||
|
self.test_config.set('enable-l3ha', True)
|
||||||
|
self.test_config.set('overlay-network-type', 'tokenring')
|
||||||
|
self.test_config.set('neutron-plugin', 'ovs')
|
||||||
|
self.test_config.set('l2-population', False)
|
||||||
|
self.os_release.return_value = 'juno'
|
||||||
|
self.assertEquals(context.get_l3ha(), False)
|
||||||
|
|
||||||
|
def test_get_dvr(self):
|
||||||
|
self.test_config.set('enable-dvr', True)
|
||||||
|
self.test_config.set('enable-l3ha', False)
|
||||||
|
self.test_config.set('overlay-network-type', 'vxlan')
|
||||||
|
self.test_config.set('neutron-plugin', 'ovs')
|
||||||
|
self.test_config.set('l2-population', True)
|
||||||
|
self.os_release.return_value = 'juno'
|
||||||
|
self.assertEquals(context.get_dvr(), True)
|
||||||
|
|
||||||
|
def test_get_dvr_explicit_off(self):
|
||||||
|
self.test_config.set('enable-dvr', False)
|
||||||
|
self.test_config.set('enable-l3ha', False)
|
||||||
|
self.test_config.set('overlay-network-type', 'vxlan')
|
||||||
|
self.test_config.set('neutron-plugin', 'ovs')
|
||||||
|
self.test_config.set('l2-population', True)
|
||||||
|
self.os_release.return_value = 'juno'
|
||||||
|
self.assertEquals(context.get_dvr(), False)
|
||||||
|
|
||||||
|
def test_get_dvr_prejuno(self):
|
||||||
|
self.test_config.set('enable-dvr', True)
|
||||||
|
self.test_config.set('enable-l3ha', False)
|
||||||
|
self.test_config.set('overlay-network-type', 'vxlan')
|
||||||
|
self.test_config.set('neutron-plugin', 'ovs')
|
||||||
|
self.test_config.set('l2-population', True)
|
||||||
|
self.os_release.return_value = 'icehouse'
|
||||||
|
self.assertEquals(context.get_dvr(), False)
|
||||||
|
|
||||||
|
def test_get_dvr_gre(self):
|
||||||
|
self.test_config.set('enable-dvr', True)
|
||||||
|
self.test_config.set('enable-l3ha', False)
|
||||||
|
self.test_config.set('overlay-network-type', 'gre')
|
||||||
|
self.test_config.set('neutron-plugin', 'ovs')
|
||||||
|
self.test_config.set('l2-population', True)
|
||||||
|
self.os_release.return_value = 'juno'
|
||||||
|
self.assertEquals(context.get_dvr(), False)
|
||||||
|
|
||||||
|
def test_get_dvr_l3ha_on(self):
|
||||||
|
self.test_config.set('enable-dvr', True)
|
||||||
|
self.test_config.set('enable-l3ha', True)
|
||||||
|
self.test_config.set('overlay-network-type', 'vxlan')
|
||||||
|
self.test_config.set('neutron-plugin', 'ovs')
|
||||||
|
self.test_config.set('l2-population', False)
|
||||||
|
self.os_release.return_value = 'juno'
|
||||||
|
self.assertEquals(context.get_dvr(), False)
|
||||||
|
|
||||||
|
def test_get_dvr_l2pop(self):
|
||||||
|
self.test_config.set('enable-dvr', True)
|
||||||
|
self.test_config.set('enable-l3ha', False)
|
||||||
|
self.test_config.set('overlay-network-type', 'vxlan')
|
||||||
|
self.test_config.set('neutron-plugin', 'ovs')
|
||||||
|
self.test_config.set('l2-population', False)
|
||||||
|
self.os_release.return_value = 'juno'
|
||||||
|
self.assertEquals(context.get_dvr(), False)
|
||||||
|
|
||||||
|
|
||||||
class IdentityServiceContext(CharmTestCase):
|
class IdentityServiceContext(CharmTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@@ -153,6 +269,7 @@ class NeutronCCContextTest(CharmTestCase):
|
|||||||
ctxt_data = {
|
ctxt_data = {
|
||||||
'debug': True,
|
'debug': True,
|
||||||
'enable_dvr': False,
|
'enable_dvr': False,
|
||||||
|
'l3_ha': False,
|
||||||
'external_network': 'bob',
|
'external_network': 'bob',
|
||||||
'neutron_bind_port': self.api_port,
|
'neutron_bind_port': self.api_port,
|
||||||
'verbose': True,
|
'verbose': True,
|
||||||
@@ -172,6 +289,7 @@ class NeutronCCContextTest(CharmTestCase):
|
|||||||
ctxt_data = {
|
ctxt_data = {
|
||||||
'debug': True,
|
'debug': True,
|
||||||
'enable_dvr': False,
|
'enable_dvr': False,
|
||||||
|
'l3_ha': False,
|
||||||
'external_network': 'bob',
|
'external_network': 'bob',
|
||||||
'neutron_bind_port': self.api_port,
|
'neutron_bind_port': self.api_port,
|
||||||
'verbose': True,
|
'verbose': True,
|
||||||
@@ -182,6 +300,32 @@ class NeutronCCContextTest(CharmTestCase):
|
|||||||
with patch.object(napi_ctxt, '_ensure_packages'):
|
with patch.object(napi_ctxt, '_ensure_packages'):
|
||||||
self.assertEquals(ctxt_data, napi_ctxt())
|
self.assertEquals(ctxt_data, napi_ctxt())
|
||||||
|
|
||||||
|
@patch.object(context.NeutronCCContext, 'network_manager')
|
||||||
|
@patch.object(context.NeutronCCContext, 'plugin')
|
||||||
|
@patch('__builtin__.__import__')
|
||||||
|
def test_neutroncc_context_l3ha(self, _import, plugin, nm):
|
||||||
|
plugin.return_value = None
|
||||||
|
self.test_config.set('enable-l3ha', True)
|
||||||
|
self.test_config.set('overlay-network-type', 'gre')
|
||||||
|
self.test_config.set('neutron-plugin', 'ovs')
|
||||||
|
self.test_config.set('l2-population', False)
|
||||||
|
self.os_release.return_value = 'juno'
|
||||||
|
ctxt_data = {
|
||||||
|
'debug': True,
|
||||||
|
'enable_dvr': False,
|
||||||
|
'l3_ha': True,
|
||||||
|
'external_network': 'bob',
|
||||||
|
'neutron_bind_port': self.api_port,
|
||||||
|
'verbose': True,
|
||||||
|
'l2_population': False,
|
||||||
|
'overlay_network_type': 'gre',
|
||||||
|
'max_l3_agents_per_router': 2,
|
||||||
|
'min_l3_agents_per_router': 2,
|
||||||
|
}
|
||||||
|
napi_ctxt = context.NeutronCCContext()
|
||||||
|
with patch.object(napi_ctxt, '_ensure_packages'):
|
||||||
|
self.assertEquals(ctxt_data, napi_ctxt())
|
||||||
|
|
||||||
@patch.object(context.NeutronCCContext, 'network_manager')
|
@patch.object(context.NeutronCCContext, 'network_manager')
|
||||||
@patch.object(context.NeutronCCContext, 'plugin')
|
@patch.object(context.NeutronCCContext, 'plugin')
|
||||||
@patch('__builtin__.__import__')
|
@patch('__builtin__.__import__')
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ TO_PATCH = [
|
|||||||
'execd_preinstall',
|
'execd_preinstall',
|
||||||
'filter_installed_packages',
|
'filter_installed_packages',
|
||||||
'get_dvr',
|
'get_dvr',
|
||||||
|
'get_l3ha',
|
||||||
'get_l2population',
|
'get_l2population',
|
||||||
'get_overlay_network_type',
|
'get_overlay_network_type',
|
||||||
'is_relation_made',
|
'is_relation_made',
|
||||||
@@ -276,10 +277,48 @@ class NeutronAPIHooksTests(CharmTestCase):
|
|||||||
_relation_data = {
|
_relation_data = {
|
||||||
'neutron-security-groups': False,
|
'neutron-security-groups': False,
|
||||||
'enable-dvr': False,
|
'enable-dvr': False,
|
||||||
|
'enable-l3ha': False,
|
||||||
'l2-population': False,
|
'l2-population': False,
|
||||||
'overlay-network-type': 'vxlan',
|
'overlay-network-type': 'vxlan',
|
||||||
}
|
}
|
||||||
self.get_dvr.return_value = False
|
self.get_dvr.return_value = False
|
||||||
|
self.get_l3ha.return_value = False
|
||||||
|
self.get_l2population.return_value = False
|
||||||
|
self.get_overlay_network_type.return_value = 'vxlan'
|
||||||
|
self._call_hook('neutron-plugin-api-relation-joined')
|
||||||
|
self.relation_set.assert_called_with(
|
||||||
|
relation_id=None,
|
||||||
|
**_relation_data
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_neutron_plugin_api_relation_joined_dvr(self):
|
||||||
|
_relation_data = {
|
||||||
|
'neutron-security-groups': False,
|
||||||
|
'enable-dvr': True,
|
||||||
|
'enable-l3ha': False,
|
||||||
|
'l2-population': True,
|
||||||
|
'overlay-network-type': 'vxlan',
|
||||||
|
}
|
||||||
|
self.get_dvr.return_value = True
|
||||||
|
self.get_l3ha.return_value = False
|
||||||
|
self.get_l2population.return_value = True
|
||||||
|
self.get_overlay_network_type.return_value = 'vxlan'
|
||||||
|
self._call_hook('neutron-plugin-api-relation-joined')
|
||||||
|
self.relation_set.assert_called_with(
|
||||||
|
relation_id=None,
|
||||||
|
**_relation_data
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_neutron_plugin_api_relation_joined_l3ha(self):
|
||||||
|
_relation_data = {
|
||||||
|
'neutron-security-groups': False,
|
||||||
|
'enable-dvr': False,
|
||||||
|
'enable-l3ha': True,
|
||||||
|
'l2-population': False,
|
||||||
|
'overlay-network-type': 'vxlan',
|
||||||
|
}
|
||||||
|
self.get_dvr.return_value = False
|
||||||
|
self.get_l3ha.return_value = True
|
||||||
self.get_l2population.return_value = False
|
self.get_l2population.return_value = False
|
||||||
self.get_overlay_network_type.return_value = 'vxlan'
|
self.get_overlay_network_type.return_value = 'vxlan'
|
||||||
self._call_hook('neutron-plugin-api-relation-joined')
|
self._call_hook('neutron-plugin-api-relation-joined')
|
||||||
|
|||||||
Reference in New Issue
Block a user