summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-01-02 17:45:17 +0000
committerGerrit Code Review <review@openstack.org>2013-01-02 17:45:17 +0000
commit865565e166609e6073686bd881594099f9502b82 (patch)
tree38f064db89ffcbd9a4a2c8c484c01afb04a75c03 /nova/tests
parent1c6f047094a9008a0c15231053906837c8e6cc41 (diff)
parent0279d846abd20904fa5a1d357fac6727005a2943 (diff)
Merge "Fix tests/baremetal/test_driver.py"
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/baremetal/test_driver.py271
1 files changed, 128 insertions, 143 deletions
diff --git a/nova/tests/baremetal/test_driver.py b/nova/tests/baremetal/test_driver.py
index b12336da0..d060d3a5d 100644
--- a/nova/tests/baremetal/test_driver.py
+++ b/nova/tests/baremetal/test_driver.py
@@ -1,3 +1,7 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+# coding=utf-8
+
+# Copyright 2012 Hewlett-Packard Development Company, L.P.
# Copyright (c) 2012 NTT DOCOMO, INC.
# Copyright (c) 2011 University of Southern California / ISI
# All Rights Reserved.
@@ -15,180 +19,161 @@
# under the License.
"""
-Tests for baremetal driver.
+Tests for the base baremetal driver class.
"""
-from nova import exception
+import mox
+
from nova.openstack.common import cfg
-from nova.tests.baremetal.db import base
-from nova.tests.baremetal.db import utils
+
+from nova import exception
+from nova import test
+
+from nova.tests.baremetal.db import base as bm_db_base
+from nova.tests.baremetal.db import utils as bm_db_utils
from nova.tests.image import fake as fake_image
-from nova.tests import test_virt_drivers
-from nova.tests import utils as test_utils
+from nova.tests import utils
+
from nova.virt.baremetal import baremetal_states
from nova.virt.baremetal import db
from nova.virt.baremetal import driver as bm_driver
-from nova.virt.baremetal import volume_driver
-from nova.virt.firewall import NoopFirewallDriver
-
+from nova.virt.baremetal import fake
+from nova.virt import firewall
CONF = cfg.CONF
-
-class FakeVifDriver(object):
-
- def plug(self, instance, vif):
- pass
-
- def unplug(self, instance, vif):
- pass
-
-FakeFirewallDriver = NoopFirewallDriver
-
-
-class FakeVolumeDriver(volume_driver.VolumeDriver):
- def __init__(self, virtapi):
- super(FakeVolumeDriver, self).__init__(virtapi)
- self._initiator = "testtesttest"
-
-
-NODE = utils.new_bm_node(cpus=2, memory_mb=4096, service_host="host1")
-NICS = [
- {'address': '01:23:45:67:89:01', 'datapath_id': '0x1', 'port_no': 1, },
- {'address': '01:23:45:67:89:02', 'datapath_id': '0x2', 'port_no': 2, },
- ]
-
-
-def class_path(class_):
- return class_.__module__ + '.' + class_.__name__
-
-
COMMON_FLAGS = dict(
- firewall_driver=class_path(FakeFirewallDriver),
+ firewall_driver='nova.virt.baremetal.fake.FakeFirewallDriver',
+ host='test_host',
)
BAREMETAL_FLAGS = dict(
- driver='nova.virt.baremetal.fake.Fake',
- host=NODE['service_host'],
- instance_type_extra_specs=['cpu_arch:test'],
+ driver='nova.virt.baremetal.fake.FakeDriver',
+ instance_type_extra_specs=['cpu_arch:test', 'test_spec:test_value'],
power_manager='nova.virt.baremetal.fake.FakePowerManager',
- sql_connection='sqlite:///:memory:',
- vif_driver=class_path(FakeVifDriver),
- volume_driver=class_path(FakeVolumeDriver),
+ vif_driver='nova.virt.baremetal.fake.FakeVifDriver',
+ volume_driver='nova.virt.baremetal.fake.FakeVolumeDriver',
group='baremetal',
)
-def _create_baremetal_stuff():
- context = test_utils.get_test_admin_context()
- node = db.bm_node_create(context, NODE)
- for nic in NICS:
- db.bm_interface_create(context,
- node['id'],
- nic['address'],
- nic['datapath_id'],
- nic['port_no'])
- return node
-
-
-class BaremetalDriverSpawnTestCase(base.Database):
+class BareMetalDriverNoDBTestCase(test.TestCase):
def setUp(self):
- super(BaremetalDriverSpawnTestCase, self).setUp()
+ super(BareMetalDriverNoDBTestCase, self).setUp()
self.flags(**COMMON_FLAGS)
self.flags(**BAREMETAL_FLAGS)
- fake_image.stub_out_image_service(self.stubs)
+ self.driver = bm_driver.BareMetalDriver(None)
- self.node = _create_baremetal_stuff()
- self.node_id = self.node['id']
+ def test_validate_driver_loading(self):
+ self.assertTrue(isinstance(self.driver.driver,
+ fake.FakeDriver))
+ self.assertTrue(isinstance(self.driver.vif_driver,
+ fake.FakeVifDriver))
+ self.assertTrue(isinstance(self.driver.volume_driver,
+ fake.FakeVolumeDriver))
+ self.assertTrue(isinstance(self.driver.firewall_driver,
+ fake.FakeFirewallDriver))
- self.context = test_utils.get_test_admin_context()
- self.instance = test_utils.get_test_instance()
- self.network_info = test_utils.get_test_network_info()
- self.block_device_info = None
- self.image_meta = test_utils.get_test_image_info(None, self.instance)
- self.driver = bm_driver.BareMetalDriver(None)
- self.kwargs = dict(
- context=self.context,
- instance=self.instance,
- image_meta=self.image_meta,
- injected_files=[('/foo', 'bar'), ('/abc', 'xyz')],
- admin_password='testpass',
- network_info=self.network_info,
- block_device_info=self.block_device_info)
- self.addCleanup(fake_image.FakeImageService_reset)
- def test_ok(self):
- self.instance['node'] = str(self.node_id)
- self.driver.spawn(**self.kwargs)
- node = db.bm_node_get(self.context, self.node_id)
- self.assertEqual(node['instance_uuid'], self.instance['uuid'])
- self.assertEqual(node['task_state'], baremetal_states.ACTIVE)
-
- def test_without_node(self):
- self.assertRaises(
- exception.NovaException,
- self.driver.spawn,
- **self.kwargs)
-
- def test_node_not_found(self):
- self.instance['node'] = "123456789"
- self.assertRaises(
- exception.InstanceNotFound,
- self.driver.spawn,
- **self.kwargs)
-
- def test_node_in_use(self):
- self.instance['node'] = str(self.node_id)
- db.bm_node_update(self.context, self.node_id,
- {'instance_uuid': 'something'})
- self.assertRaises(
- exception.NovaException,
- self.driver.spawn,
- **self.kwargs)
-
-
-class BaremetalDriverTestCase(test_virt_drivers._VirtDriverTestCase,
- base.Database):
+class BareMetalDriverWithDBTestCase(bm_db_base.BMDBTestCase):
def setUp(self):
- super(BaremetalDriverTestCase, self).setUp()
- self.driver_module = 'nova.virt.baremetal.BareMetalDriver'
+ super(BareMetalDriverWithDBTestCase, self).setUp()
self.flags(**COMMON_FLAGS)
- self.node = _create_baremetal_stuff()
- self.node_id = self.node['id']
+ self.flags(**BAREMETAL_FLAGS)
+
fake_image.stub_out_image_service(self.stubs)
+ self.context = utils.get_test_admin_context()
+ self.driver = bm_driver.BareMetalDriver(None)
+ self.node_info = bm_db_utils.new_bm_node(
+ id=123,
+ service_host='test_host',
+ cpus=2,
+ memory_mb=2048,
+ )
+ self.nic_info = [
+ {'address': '01:23:45:67:89:01', 'datapath_id': '0x1',
+ 'port_no': 1},
+ {'address': '01:23:45:67:89:02', 'datapath_id': '0x2',
+ 'port_no': 2},
+ ]
self.addCleanup(fake_image.FakeImageService_reset)
- def _get_running_instance(self):
- instance_ref = test_utils.get_test_instance()
- instance_ref['node'] = str(self.node_id)
- network_info = test_utils.get_test_network_info()
- image_info = test_utils.get_test_image_info(None, instance_ref)
- self.connection.spawn(self.ctxt, instance_ref, image_info,
- [], 'herp', network_info=network_info)
- return instance_ref, network_info
-
- def test_loading_baremetal_drivers(self):
- from nova.virt.baremetal import fake
- drv = bm_driver.BareMetalDriver(None)
- self.assertTrue(isinstance(drv.baremetal_nodes, fake.Fake))
- self.assertTrue(isinstance(drv._vif_driver, FakeVifDriver))
- self.assertTrue(isinstance(drv._firewall_driver, FakeFirewallDriver))
- self.assertTrue(isinstance(drv._volume_driver, FakeVolumeDriver))
+ def _create_node(self):
+ self.node = db.bm_node_create(self.context, self.node_info)
+ for nic in self.nic_info:
+ db.bm_interface_create(
+ self.context,
+ self.node['id'],
+ nic['address'],
+ nic['datapath_id'],
+ nic['port_no'],
+ )
+ self.test_instance = utils.get_test_instance()
+ self.test_instance['node'] = self.node['id']
+ self.spawn_params = dict(
+ admin_password='test_pass',
+ block_device_info=None,
+ context=self.context,
+ image_meta=utils.get_test_image_info(None,
+ self.test_instance),
+ injected_files=[('/fake/path', 'hello world')],
+ instance=self.test_instance,
+ network_info=utils.get_test_network_info(),
+ )
def test_get_host_stats(self):
- self.flags(instance_type_extra_specs=['cpu_arch:x86_64',
- 'x:123',
- 'y:456', ])
- drv = bm_driver.BareMetalDriver(None)
- cap_list = drv.get_host_stats()
- self.assertTrue(isinstance(cap_list, list))
- self.assertEqual(len(cap_list), 1)
- cap = cap_list[0]
- self.assertEqual(cap['cpu_arch'], 'x86_64')
- self.assertEqual(cap['x'], '123')
- self.assertEqual(cap['y'], '456')
- self.assertEqual(cap['hypervisor_type'], 'baremetal')
- self.assertEqual(cap['driver'],
- 'nova.virt.baremetal.fake.Fake')
+ self._create_node()
+ stats = self.driver.get_host_stats()
+ self.assertTrue(isinstance(stats, list))
+ self.assertEqual(len(stats), 1)
+ stats = stats[0]
+ self.assertEqual(stats['cpu_arch'], 'test')
+ self.assertEqual(stats['test_spec'], 'test_value')
+ self.assertEqual(stats['hypervisor_type'], 'baremetal')
+ self.assertEqual(stats['hypervisor_hostname'], '123')
+ self.assertEqual(stats['host'], 'test_host')
+ self.assertEqual(stats['vcpus'], 2)
+ self.assertEqual(stats['host_memory_total'], 2048)
+
+ def test_spawn_ok(self):
+ self._create_node()
+ self.driver.spawn(**self.spawn_params)
+ row = db.bm_node_get(self.context, self.node['id'])
+ self.assertEqual(row['task_state'], baremetal_states.ACTIVE)
+
+ def test_spawn_node_in_use(self):
+ self._create_node()
+ db.bm_node_update(self.context, self.node['id'],
+ {'instance_uuid': '1234-5678'})
+
+ self.assertRaises(exception.NovaException,
+ self.driver.spawn, **self.spawn_params)
+
+ row = db.bm_node_get(self.context, self.node['id'])
+ self.assertEqual(row['task_state'], None)
+
+ def test_spawn_node_not_found(self):
+ self._create_node()
+ db.bm_node_update(self.context, self.node['id'],
+ {'id': 9876})
+
+ self.assertRaises(exception.InstanceNotFound,
+ self.driver.spawn, **self.spawn_params)
+
+ row = db.bm_node_get(self.context, 9876)
+ self.assertEqual(row['task_state'], None)
+
+ def test_spawn_fails(self):
+ self._create_node()
+
+ self.mox.StubOutWithMock(fake.FakePowerManager, 'activate_node')
+ fake.FakePowerManager.activate_node().AndRaise(test.TestingException)
+ self.mox.ReplayAll()
+
+ self.assertRaises(test.TestingException,
+ self.driver.spawn, **self.spawn_params)
+
+ row = db.bm_node_get(self.context, self.node['id'])
+ self.assertEqual(row['task_state'], baremetal_states.ERROR)