Files
neutron/neutron/tests/unit/services/trunk/test_utils.py
Armando Migliaccio b3c2a4aeae Reduce DB hit when checking for trunk-able ports
We can hit the DB once to fetch all agent types for the
host rather than going back and forth for all the drivers
available in the deployment. That lets us save N-1 queries
where N is the number of drivers installed.

Change-Id: I5db0d73245b4e1c1bc46c063c0689ac3c5ea2bea
2016-08-16 08:09:21 -07:00

69 lines
2.8 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import mock
from neutron.services.trunk import utils
from neutron.tests.unit.plugins.ml2 import test_plugin
from neutron.tests.unit.services.trunk import fakes
class UtilsTestCase(test_plugin.Ml2PluginV2TestCase):
def test_get_agent_types_by_host_returns_empty(self):
self.assertFalse(
utils.get_agent_types_by_host(
self.context, 'foo_host'))
def test_get_agent_types_by_host_returns_agents(self):
with mock.patch("neutron.db.agents_db.AgentDbMixin.get_agents") as f:
f.return_value = [{'agent_type': 'foo_type'}]
self.assertEqual(
['foo_type'],
utils.get_agent_types_by_host(
self.context, 'foo_host'))
def _test_is_driver_compatible(self, driver, interface, agent_types):
return utils.is_driver_compatible(self.context,
driver,
interface,
agent_types)
def test_is_driver_compatible(self):
driver = fakes.FakeDriverWithAgent.create()
self.assertTrue(self._test_is_driver_compatible(
driver, 'foo_intfs', ['foo_type']))
def test_is_driver_compatible_agent_based_agent_mismatch(self):
driver = fakes.FakeDriverWithAgent.create()
self.assertFalse(self._test_is_driver_compatible(
driver, 'foo_intfs', ['foo_type_unknown']))
def test_is_driver_incompatible_because_of_interface_mismatch(self):
driver = fakes.FakeDriverWithAgent.create()
self.assertFalse(self._test_is_driver_compatible(
driver, 'not_my_interface', ['foo_type']))
def test_is_driver_compatible_agentless(self):
driver = fakes.FakeDriver.create()
self.assertTrue(self._test_is_driver_compatible(
driver, 'foo_intfs', ['foo_type']))
def test_is_driver_compatible_multiple_drivers(self):
driver1 = fakes.FakeDriverWithAgent.create()
driver2 = fakes.FakeDriver2.create()
self.assertTrue(self._test_is_driver_compatible(
driver1, 'foo_intfs', ['foo_type']))
self.assertFalse(self._test_is_driver_compatible(
driver2, 'foo_intfs', ['foo_type']))