summaryrefslogtreecommitdiff
path: root/ironic_python_agent/tests
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-07-06 18:08:14 +0000
committerGerrit Code Review <review@openstack.org>2020-07-06 18:08:14 +0000
commit2e9620a2c072e27972bbb68d6f491ab71d181f42 (patch)
tree7f4d7e4c2802761a53e03bf6f42d999e8cf94482 /ironic_python_agent/tests
parent621872561087695ec8bb5f93d00384b691b0c366 (diff)
parentc76b8b2c217d57680baec977b374e821304198f9 (diff)
downloadironic-python-agent-2e9620a2c072e27972bbb68d6f491ab71d181f42.tar.gz
Merge "Limit Inspection->Lookup->Heartbeat lag"
Diffstat (limited to 'ironic_python_agent/tests')
-rw-r--r--ironic_python_agent/tests/unit/base.py2
-rw-r--r--ironic_python_agent/tests/unit/test_agent.py4
-rw-r--r--ironic_python_agent/tests/unit/test_hardware.py19
-rw-r--r--ironic_python_agent/tests/unit/test_inspector.py14
4 files changed, 37 insertions, 2 deletions
diff --git a/ironic_python_agent/tests/unit/base.py b/ironic_python_agent/tests/unit/base.py
index 94196985..7d14821f 100644
--- a/ironic_python_agent/tests/unit/base.py
+++ b/ironic_python_agent/tests/unit/base.py
@@ -24,6 +24,7 @@ from oslo_config import fixture as config_fixture
from oslotest import base as test_base
from ironic_python_agent.extensions import base as ext_base
+from ironic_python_agent import hardware
from ironic_python_agent import utils
CONF = cfg.CONF
@@ -60,6 +61,7 @@ class IronicAgentTest(test_base.BaseTestCase):
self.patch(utils, 'execute', do_not_call)
ext_base._EXT_MANAGER = None
+ hardware._CACHED_HW_INFO = None
def _set_config(self):
self.cfg_fixture = self.useFixture(config_fixture.Config(CONF))
diff --git a/ironic_python_agent/tests/unit/test_agent.py b/ironic_python_agent/tests/unit/test_agent.py
index bb691377..6c461ab4 100644
--- a/ironic_python_agent/tests/unit/test_agent.py
+++ b/ironic_python_agent/tests/unit/test_agent.py
@@ -517,7 +517,7 @@ class TestBaseAgent(ironic_agent_base.IronicAgentTest):
mock_inspector.assert_called_once_with()
- self.assertFalse(mock_wait.called)
+ self.assertTrue(mock_wait.called)
self.assertFalse(mock_dispatch.called)
@mock.patch('ironic_lib.mdns.get_endpoint', autospec=True)
@@ -572,7 +572,7 @@ class TestBaseAgent(ironic_agent_base.IronicAgentTest):
wsgi_server.start.assert_called_once_with()
self.assertFalse(mock_inspector.called)
- self.assertFalse(mock_wait.called)
+ self.assertTrue(mock_wait.called)
self.assertFalse(mock_dispatch.called)
@mock.patch.object(time, 'time', autospec=True)
diff --git a/ironic_python_agent/tests/unit/test_hardware.py b/ironic_python_agent/tests/unit/test_hardware.py
index 29a46939..367c82dc 100644
--- a/ironic_python_agent/tests/unit/test_hardware.py
+++ b/ironic_python_agent/tests/unit/test_hardware.py
@@ -4356,3 +4356,22 @@ class TestVersions(base.IronicAgentTest):
self.assertRaises(errors.VersionMismatch,
hardware.check_versions,
{'not_specific': '1'})
+
+
+@mock.patch('ironic_python_agent.hardware.dispatch_to_managers',
+ autospec=True)
+class TestListHardwareInfo(base.IronicAgentTest):
+
+ def test_caching(self, mock_dispatch):
+ fake_info = {'I am': 'hardware'}
+ mock_dispatch.return_value = fake_info
+
+ self.assertEqual(fake_info, hardware.list_hardware_info())
+ self.assertEqual(fake_info, hardware.list_hardware_info())
+ mock_dispatch.assert_called_once_with('list_hardware_info')
+
+ self.assertEqual(fake_info,
+ hardware.list_hardware_info(use_cache=False))
+ self.assertEqual(fake_info, hardware.list_hardware_info())
+ mock_dispatch.assert_called_with('list_hardware_info')
+ self.assertEqual(2, mock_dispatch.call_count)
diff --git a/ironic_python_agent/tests/unit/test_inspector.py b/ironic_python_agent/tests/unit/test_inspector.py
index cac0edf1..4c464185 100644
--- a/ironic_python_agent/tests/unit/test_inspector.py
+++ b/ironic_python_agent/tests/unit/test_inspector.py
@@ -252,6 +252,20 @@ class TestCollectDefault(BaseDiscoverTest):
mock_dispatch.assert_called_once_with('list_hardware_info')
mock_wait_for_dhcp.assert_called_once_with()
+ def test_cache_hardware_info(self, mock_dispatch, mock_wait_for_dhcp,
+ mock_get_mgrs):
+ mgrs = [{'name': 'extra', 'version': '1.42'},
+ {'name': 'generic', 'version': '1.1'}]
+ mock_dispatch.return_value = self.inventory
+ mock_get_mgrs.return_value = [
+ mock.Mock(**{'get_version.return_value': item}) for item in mgrs
+ ]
+
+ inspector.collect_default(self.data, self.failures)
+ inspector.collect_default(self.data, self.failures)
+ # Hardware is cached, so only one call is made
+ mock_dispatch.assert_called_once_with('list_hardware_info')
+
def test_no_root_disk(self, mock_dispatch, mock_wait_for_dhcp,
mock_get_mgrs):
mgrs = [{'name': 'extra', 'version': '1.42'},