From 4b37a36fbff3ad7a93b4afb9038f793548a6ef04 Mon Sep 17 00:00:00 2001 From: Edwin Zhai Date: Tue, 27 Jan 2015 14:20:36 +0800 Subject: [PATCH] Fix IPMI unit test to cover different platforms As execution engine is singleton, test for the 2nd platform still use the 1st platform's engine and its initialization doesn't run at all. Reset engine init flag after test for each platform to fix it. Change-Id: I73b69892b8ee429ed649741419554076379c093c Closes-Bug: #1414903 --- .../ipmi/platform/test_intel_node_manager.py | 15 +++++++++++++-- .../tests/ipmi/platform/test_ipmi_sensor.py | 18 +++++++++++++++--- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/ceilometer/tests/ipmi/platform/test_intel_node_manager.py b/ceilometer/tests/ipmi/platform/test_intel_node_manager.py index 8c8b5e268..9404e83f5 100644 --- a/ceilometer/tests/ipmi/platform/test_intel_node_manager.py +++ b/ceilometer/tests/ipmi/platform/test_intel_node_manager.py @@ -31,6 +31,12 @@ class TestNodeManager(base.BaseTestCase): utils.execute = mock.Mock(side_effect=fake_utils.execute_with_nm) self.nm = node_manager.NodeManager() + @classmethod + def tearDownClass(cls): + # reset inited to force an initialization of singleton for next test + node_manager.NodeManager()._inited = False + super(TestNodeManager, cls).tearDownClass() + def test_read_power_all(self): power = self.nm.read_power_all() @@ -54,7 +60,6 @@ class TestNodeManager(base.BaseTestCase): min_val = node_manager._hex(temperature["Minimum_value"]) cur_val = node_manager._hex(temperature["Current_value"]) - self.assertTrue(self.nm.nm_support) # see ipmi_test_data.py for raw data self.assertEqual(23, cur_val) self.assertEqual(22, min_val) @@ -69,11 +74,17 @@ class TestNonNodeManager(base.BaseTestCase): utils.execute = mock.Mock(side_effect=fake_utils.execute_without_nm) self.nm = node_manager.NodeManager() - self.nm.nm_support = False + + @classmethod + def tearDownClass(cls): + # reset inited to force an initialization of singleton for next test + node_manager.NodeManager()._inited = False + super(TestNonNodeManager, cls).tearDownClass() def test_read_power_all(self): power = self.nm.read_power_all() + self.assertFalse(self.nm.nm_support) # Non-Node Manager platform return empty data self.assertEqual({}, power) diff --git a/ceilometer/tests/ipmi/platform/test_ipmi_sensor.py b/ceilometer/tests/ipmi/platform/test_ipmi_sensor.py index 65a50795f..6cc9138cf 100644 --- a/ceilometer/tests/ipmi/platform/test_ipmi_sensor.py +++ b/ceilometer/tests/ipmi/platform/test_ipmi_sensor.py @@ -15,13 +15,12 @@ # under the License. import mock +from oslotest import base from ceilometer.ipmi.platform import ipmi_sensor from ceilometer.tests.ipmi.platform import fake_utils from ceilometer import utils -from oslotest import base - class TestIPMISensor(base.BaseTestCase): @@ -31,9 +30,16 @@ class TestIPMISensor(base.BaseTestCase): utils.execute = mock.Mock(side_effect=fake_utils.execute_with_nm) self.ipmi = ipmi_sensor.IPMISensor() + @classmethod + def tearDownClass(cls): + # reset inited to force an initialization of singleton for next test + ipmi_sensor.IPMISensor()._inited = False + super(TestIPMISensor, cls).tearDownClass() + def test_read_sensor_temperature(self): sensors = self.ipmi.read_sensor_any('Temperature') + self.assertTrue(self.ipmi.ipmi_support) # only temperature data returned. self.assertIn('Temperature', sensors) self.assertEqual(1, len(sensors)) @@ -91,11 +97,17 @@ class TestNonIPMISensor(base.BaseTestCase): utils.execute = mock.Mock(side_effect=fake_utils.execute_without_ipmi) self.ipmi = ipmi_sensor.IPMISensor() - self.ipmi.ipmi_support = False + + @classmethod + def tearDownClass(cls): + # reset inited to force an initialization of singleton for next test + ipmi_sensor.IPMISensor()._inited = False + super(TestNonIPMISensor, cls).tearDownClass() def test_read_sensor_temperature(self): sensors = self.ipmi.read_sensor_any('Temperature') + self.assertFalse(self.ipmi.ipmi_support) # Non-IPMI platform return empty data self.assertEqual({}, sensors)