diff --git a/nova/tests/baremetal/test_driver.py b/nova/tests/baremetal/test_driver.py index f0172537..3b0295a9 100644 --- a/nova/tests/baremetal/test_driver.py +++ b/nova/tests/baremetal/test_driver.py @@ -22,6 +22,7 @@ from oslo.config import cfg +from nova.compute import power_state from nova import exception from nova import test from nova.tests.baremetal.db import base as bm_db_base @@ -327,3 +328,36 @@ class BareMetalDriverWithDBTestCase(bm_db_base.BMDBTestCase): self.driver.destroy(**node2['destroy_params']) self.assertEqual([], self.driver.list_instances()) + + def test_get_info_no_such_node(self): + node = self._create_node() + self.assertRaises(exception.InstanceNotFound, + self.driver.get_info, + node['instance']) + + def test_get_info_ok(self): + node = self._create_node() + db.bm_node_associate_and_update(self.context, node['node']['uuid'], + {'instance_uuid': node['instance']['uuid'], + 'instance_name': node['instance']['hostname'], + 'task_state': baremetal_states.ACTIVE}) + res = self.driver.get_info(node['instance']) + self.assertEqual(res['state'], power_state.RUNNING) + + def test_get_info_with_defunct_pm(self): + # test fix for bug 1178378 + node = self._create_node() + db.bm_node_associate_and_update(self.context, node['node']['uuid'], + {'instance_uuid': node['instance']['uuid'], + 'instance_name': node['instance']['hostname'], + 'task_state': baremetal_states.ACTIVE}) + + # fake the power manager and don't get a power state + self.mox.StubOutWithMock(fake.FakePowerManager, 'is_power_on') + fake.FakePowerManager.is_power_on().AndReturn(None) + self.mox.ReplayAll() + + res = self.driver.get_info(node['instance']) + # prior to the fix, returned power_state was SHUTDOWN + self.assertEqual(res['state'], power_state.NOSTATE) + self.mox.VerifyAll() diff --git a/nova/tests/baremetal/test_ipmi.py b/nova/tests/baremetal/test_ipmi.py index faf800a4..01bb58d8 100644 --- a/nova/tests/baremetal/test_ipmi.py +++ b/nova/tests/baremetal/test_ipmi.py @@ -85,13 +85,24 @@ class BareMetalIPMITestCase(test.TestCase): self.ipmi._exec_ipmitool('A B C') self.mox.VerifyAll() - def test_is_power(self): + def test_is_power_on_ok(self): self.mox.StubOutWithMock(self.ipmi, '_exec_ipmitool') self.ipmi._exec_ipmitool("power status").AndReturn( ["Chassis Power is on\n"]) self.mox.ReplayAll() - self.ipmi._is_power("on") + res = self.ipmi.is_power_on() + self.assertEqual(res, True) + self.mox.VerifyAll() + + def test_is_power_no_answer(self): + self.mox.StubOutWithMock(self.ipmi, '_exec_ipmitool') + self.ipmi._exec_ipmitool("power status").AndReturn( + ["Fake reply\n"]) + self.mox.ReplayAll() + + res = self.ipmi.is_power_on() + self.assertEqual(res, None) self.mox.VerifyAll() def test_power_already_on(self):