From 9307f9703191f527fbcb9bdae22c59d8911c407d Mon Sep 17 00:00:00 2001 From: Edwin Zhai Date: Wed, 14 Jan 2015 11:10:11 +0800 Subject: [PATCH] Avoid executing ipmitool in IPMI unit test IPMI unit tests call ipmitool accidently, and sudo requirements cause tox failure. Mock the executing engine completely to fix it. Change-Id: Ifa2f13b324f1e244cc0982bf850de928e37ecca5 Closes-bug:1410411 --- ceilometer/tests/ipmi/pollsters/base.py | 7 ++++--- ceilometer/tests/ipmi/test_manager.py | 8 ++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ceilometer/tests/ipmi/pollsters/base.py b/ceilometer/tests/ipmi/pollsters/base.py index 780f8afa7..4b8e58839 100644 --- a/ceilometer/tests/ipmi/pollsters/base.py +++ b/ceilometer/tests/ipmi/pollsters/base.py @@ -44,9 +44,8 @@ class TestPollsterBase(base.BaseTestCase): nm.read_temperature_all.side_effect = self.fake_data nm.read_power_all.side_effect = self.fake_data nm.read_sensor_any.side_effect = self.fake_sensor_data - - self.mgr = manager.AgentManager() - + # We should mock the pollster first before initialize the Manager + # so that we don't trigger the sudo in pollsters' __init__(). self.useFixture(mockpatch.Patch( 'ceilometer.ipmi.platform.intel_node_manager.NodeManager', return_value=nm)) @@ -55,6 +54,8 @@ class TestPollsterBase(base.BaseTestCase): 'ceilometer.ipmi.platform.ipmi_sensor.IPMISensor', return_value=nm)) + self.mgr = manager.AgentManager() + self.pollster = self.make_pollster() def _verify_metering(self, length, expected_vol=None, node=None): diff --git a/ceilometer/tests/ipmi/test_manager.py b/ceilometer/tests/ipmi/test_manager.py index 9d4bed548..72b8f96b4 100644 --- a/ceilometer/tests/ipmi/test_manager.py +++ b/ceilometer/tests/ipmi/test_manager.py @@ -27,6 +27,10 @@ from ceilometer.tests.agent import agentbase class TestManager(base.BaseTestCase): @mock.patch('ceilometer.pipeline.setup_pipeline', mock.MagicMock()) + @mock.patch('ceilometer.ipmi.pollsters.node._Base.__init__', + mock.Mock(return_value=None)) + @mock.patch('ceilometer.ipmi.pollsters.sensor.SensorPollster.__init__', + mock.Mock(return_value=None)) def test_load_plugins(self): mgr = manager.AgentManager() self.assertIsNotNone(list(mgr.extensions)) @@ -35,6 +39,10 @@ class TestManager(base.BaseTestCase): class TestRunTasks(agentbase.BaseAgentManagerTestCase): @staticmethod + @mock.patch('ceilometer.ipmi.pollsters.node._Base.__init__', + mock.Mock(return_value=None)) + @mock.patch('ceilometer.ipmi.pollsters.sensor.SensorPollster.__init__', + mock.Mock(return_value=None)) def create_manager(): return manager.AgentManager()