Completed first-draft nvp_driver tests.
This commit is contained in:
@@ -68,9 +68,9 @@ class NVPDriver(base.BaseDriver):
|
||||
conn["connection"] = aiclib.nvp.Connection(uri)
|
||||
return conn["connection"]
|
||||
|
||||
def create_network(self, tenant_id, network_name, tags=None,
|
||||
def create_network(self, context, network_name, tags=None,
|
||||
network_id=None, **kwargs):
|
||||
return self._lswitch_create(tenant_id, network_name, tags,
|
||||
return self._lswitch_create(context, network_name, tags,
|
||||
network_id, **kwargs)
|
||||
|
||||
def delete_network(self, context, network_id):
|
||||
@@ -84,8 +84,6 @@ class NVPDriver(base.BaseDriver):
|
||||
tenant_id = context.tenant_id
|
||||
lswitch = self._create_or_choose_lswitch(context, network_id)
|
||||
connection = self.get_connection()
|
||||
if not connection:
|
||||
raise
|
||||
port = connection.lswitch_port(lswitch)
|
||||
port.admin_status_enabled(status)
|
||||
tags = [dict(tag=network_id, scope="quantum_net_id"),
|
||||
|
||||
@@ -32,27 +32,43 @@ class TestNVPDriver(test_base.TestBase):
|
||||
self.context = context.get_admin_context()
|
||||
self.driver = quark.drivers.nvp_driver.NVPDriver()
|
||||
self.lswitch_uuid = "12345678-1234-1234-1234-123456781234"
|
||||
self.context.tenant_id = "tid"
|
||||
self.lport_uuid = "12345678-0000-0000-0000-123456781234"
|
||||
self.net_id = "12345678-1234-1234-1234-123412341234"
|
||||
self.port_id = "12345678-0000-0000-0000-123412341234"
|
||||
self.d_pkg = "quark.drivers.nvp_driver.NVPDriver"
|
||||
|
||||
def _create_connection(self):
|
||||
def _create_connection(self, switch_count=1):
|
||||
connection = mock.Mock()
|
||||
lswitch = self._create_lswitch()
|
||||
lswitchport = self._create_lswitch_port(self.lswitch_uuid)
|
||||
lswitchport = self._create_lswitch_port(self.lswitch_uuid,
|
||||
switch_count)
|
||||
connection.lswitch_port = mock.Mock(return_value=lswitchport)
|
||||
connection.lswitch = mock.Mock(return_value=lswitch)
|
||||
return connection
|
||||
|
||||
def _create_lswitch_port(self, switch_uuid):
|
||||
def _create_lswitch_port(self, switch_uuid, switch_count):
|
||||
port = mock.Mock()
|
||||
port.create = mock.Mock(return_value={'uuid': self.lport_uuid})
|
||||
port_query = self._create_lport_query(switch_count)
|
||||
port.query = mock.Mock(return_value=port_query)
|
||||
port.delete = mock.Mock(return_value=None)
|
||||
return port
|
||||
|
||||
def _create_lport_query(self, switch_count):
|
||||
query = mock.Mock()
|
||||
port_list = {"_relations":
|
||||
{"LogicalSwitchConfig":
|
||||
{"uuid": self.lswitch_uuid}}}
|
||||
port_query = {"results": [port_list], "result_count": switch_count}
|
||||
query.results = mock.Mock(return_value=port_query)
|
||||
return query
|
||||
|
||||
def _create_lswitch(self):
|
||||
lswitch = mock.Mock()
|
||||
lswitch.query = mock.Mock(return_value=self._create_lswitch_query())
|
||||
lswitch.create = mock.Mock(return_value={'uuid': self.lswitch_uuid})
|
||||
lswitch.delete = mock.Mock(return_value=None)
|
||||
return lswitch
|
||||
|
||||
def _create_lswitch_query(self):
|
||||
@@ -67,13 +83,55 @@ class TestNVPDriver(test_base.TestBase):
|
||||
db_api.clear_db()
|
||||
|
||||
|
||||
class TestNVPDriverCreateNetwork(TestNVPDriver):
|
||||
@contextlib.contextmanager
|
||||
def _stubs(self):
|
||||
with contextlib.nested(
|
||||
mock.patch("%s.get_connection" % self.d_pkg),
|
||||
) as (get_connection,):
|
||||
connection = self._create_connection()
|
||||
get_connection.return_value = connection
|
||||
yield connection
|
||||
|
||||
def test_create_network(self):
|
||||
with self._stubs() as (connection):
|
||||
self.driver.create_network(self.context, "test")
|
||||
self.assertTrue(connection.lswitch().create.called)
|
||||
|
||||
|
||||
class TestNVPDriverDeleteNetwork(TestNVPDriver):
|
||||
@contextlib.contextmanager
|
||||
def _stubs(self, network_exists=True):
|
||||
with contextlib.nested(
|
||||
mock.patch("%s.get_connection" % self.d_pkg),
|
||||
mock.patch("%s._lswitches_for_network" % self.d_pkg),
|
||||
) as (get_connection, switch_list):
|
||||
connection = self._create_connection()
|
||||
get_connection.return_value = connection
|
||||
if network_exists:
|
||||
ret = {"results": [{"uuid": self.lswitch_uuid}]}
|
||||
else:
|
||||
ret = {"results": []}
|
||||
switch_list().results = mock.Mock(return_value=ret)
|
||||
yield connection
|
||||
|
||||
def test_delete_network(self):
|
||||
with self._stubs() as (connection):
|
||||
self.driver.delete_network(self.context, "test")
|
||||
self.assertTrue(connection.lswitch().delete.called)
|
||||
|
||||
def test_delete_network_not_exists(self):
|
||||
with self._stubs(network_exists=False) as (connection):
|
||||
self.driver.delete_network(self.context, "test")
|
||||
self.assertFalse(connection.lswitch().delete.called)
|
||||
|
||||
|
||||
class TestNVPDriverCreatePort(TestNVPDriver):
|
||||
@contextlib.contextmanager
|
||||
def _stubs(self, has_lswitch=True):
|
||||
driver = "quark.drivers.nvp_driver.NVPDriver"
|
||||
with contextlib.nested(
|
||||
mock.patch("%s.get_connection" % driver),
|
||||
mock.patch("%s._lswitch_select_open" % driver),
|
||||
mock.patch("%s.get_connection" % self.d_pkg),
|
||||
mock.patch("%s._lswitch_select_open" % self.d_pkg),
|
||||
) as (get_connection, select_open):
|
||||
connection = self._create_connection()
|
||||
get_connection.return_value = connection
|
||||
@@ -115,3 +173,34 @@ class TestNVPDriverCreatePort(TestNVPDriver):
|
||||
status_args, kwargs = connection.lswitch_port().\
|
||||
admin_status_enabled.call_args
|
||||
self.assertTrue(False in status_args)
|
||||
|
||||
|
||||
class TestNVPDriverDeletePort(TestNVPDriver):
|
||||
@contextlib.contextmanager
|
||||
def _stubs(self, single_switch=True):
|
||||
with contextlib.nested(
|
||||
mock.patch("%s.get_connection" % self.d_pkg),
|
||||
) as (get_connection,):
|
||||
if not single_switch:
|
||||
connection = self._create_connection(switch_count=2)
|
||||
else:
|
||||
connection = self._create_connection(switch_count=1)
|
||||
get_connection.return_value = connection
|
||||
yield connection
|
||||
|
||||
def test_delete_port(self):
|
||||
with self._stubs() as (connection):
|
||||
self.driver.delete_port(self.context, self.port_id)
|
||||
self.assertTrue(connection.lswitch_port().delete.called)
|
||||
|
||||
def test_delete_port_switch_given(self):
|
||||
with self._stubs() as (connection):
|
||||
self.driver.delete_port(self.context, self.port_id,
|
||||
self.lswitch_uuid)
|
||||
self.assertFalse(connection.lswitch_port().query.called)
|
||||
self.assertTrue(connection.lswitch_port().delete.called)
|
||||
|
||||
def test_delete_port_many_switches(self):
|
||||
with self._stubs(single_switch=False):
|
||||
with self.assertRaises(Exception):
|
||||
self.driver.delete_port(self.context, self.port_id)
|
||||
|
||||
Reference in New Issue
Block a user