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)
|
conn["connection"] = aiclib.nvp.Connection(uri)
|
||||||
return conn["connection"]
|
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):
|
network_id=None, **kwargs):
|
||||||
return self._lswitch_create(tenant_id, network_name, tags,
|
return self._lswitch_create(context, network_name, tags,
|
||||||
network_id, **kwargs)
|
network_id, **kwargs)
|
||||||
|
|
||||||
def delete_network(self, context, network_id):
|
def delete_network(self, context, network_id):
|
||||||
@@ -84,8 +84,6 @@ class NVPDriver(base.BaseDriver):
|
|||||||
tenant_id = context.tenant_id
|
tenant_id = context.tenant_id
|
||||||
lswitch = self._create_or_choose_lswitch(context, network_id)
|
lswitch = self._create_or_choose_lswitch(context, network_id)
|
||||||
connection = self.get_connection()
|
connection = self.get_connection()
|
||||||
if not connection:
|
|
||||||
raise
|
|
||||||
port = connection.lswitch_port(lswitch)
|
port = connection.lswitch_port(lswitch)
|
||||||
port.admin_status_enabled(status)
|
port.admin_status_enabled(status)
|
||||||
tags = [dict(tag=network_id, scope="quantum_net_id"),
|
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.context = context.get_admin_context()
|
||||||
self.driver = quark.drivers.nvp_driver.NVPDriver()
|
self.driver = quark.drivers.nvp_driver.NVPDriver()
|
||||||
self.lswitch_uuid = "12345678-1234-1234-1234-123456781234"
|
self.lswitch_uuid = "12345678-1234-1234-1234-123456781234"
|
||||||
|
self.context.tenant_id = "tid"
|
||||||
self.lport_uuid = "12345678-0000-0000-0000-123456781234"
|
self.lport_uuid = "12345678-0000-0000-0000-123456781234"
|
||||||
self.net_id = "12345678-1234-1234-1234-123412341234"
|
self.net_id = "12345678-1234-1234-1234-123412341234"
|
||||||
self.port_id = "12345678-0000-0000-0000-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()
|
connection = mock.Mock()
|
||||||
lswitch = self._create_lswitch()
|
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_port = mock.Mock(return_value=lswitchport)
|
||||||
connection.lswitch = mock.Mock(return_value=lswitch)
|
connection.lswitch = mock.Mock(return_value=lswitch)
|
||||||
return connection
|
return connection
|
||||||
|
|
||||||
def _create_lswitch_port(self, switch_uuid):
|
def _create_lswitch_port(self, switch_uuid, switch_count):
|
||||||
port = mock.Mock()
|
port = mock.Mock()
|
||||||
port.create = mock.Mock(return_value={'uuid': self.lport_uuid})
|
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
|
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):
|
def _create_lswitch(self):
|
||||||
lswitch = mock.Mock()
|
lswitch = mock.Mock()
|
||||||
lswitch.query = mock.Mock(return_value=self._create_lswitch_query())
|
lswitch.query = mock.Mock(return_value=self._create_lswitch_query())
|
||||||
lswitch.create = mock.Mock(return_value={'uuid': self.lswitch_uuid})
|
lswitch.create = mock.Mock(return_value={'uuid': self.lswitch_uuid})
|
||||||
|
lswitch.delete = mock.Mock(return_value=None)
|
||||||
return lswitch
|
return lswitch
|
||||||
|
|
||||||
def _create_lswitch_query(self):
|
def _create_lswitch_query(self):
|
||||||
@@ -67,13 +83,55 @@ class TestNVPDriver(test_base.TestBase):
|
|||||||
db_api.clear_db()
|
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):
|
class TestNVPDriverCreatePort(TestNVPDriver):
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def _stubs(self, has_lswitch=True):
|
def _stubs(self, has_lswitch=True):
|
||||||
driver = "quark.drivers.nvp_driver.NVPDriver"
|
|
||||||
with contextlib.nested(
|
with contextlib.nested(
|
||||||
mock.patch("%s.get_connection" % driver),
|
mock.patch("%s.get_connection" % self.d_pkg),
|
||||||
mock.patch("%s._lswitch_select_open" % driver),
|
mock.patch("%s._lswitch_select_open" % self.d_pkg),
|
||||||
) as (get_connection, select_open):
|
) as (get_connection, select_open):
|
||||||
connection = self._create_connection()
|
connection = self._create_connection()
|
||||||
get_connection.return_value = connection
|
get_connection.return_value = connection
|
||||||
@@ -115,3 +173,34 @@ class TestNVPDriverCreatePort(TestNVPDriver):
|
|||||||
status_args, kwargs = connection.lswitch_port().\
|
status_args, kwargs = connection.lswitch_port().\
|
||||||
admin_status_enabled.call_args
|
admin_status_enabled.call_args
|
||||||
self.assertTrue(False in status_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