Completed first-draft nvp_driver tests.

This commit is contained in:
Justin Hammond
2013-03-20 15:54:35 -05:00
parent 237a292faf
commit b30344d80a
2 changed files with 97 additions and 10 deletions

View File

@@ -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"),

View File

@@ -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)