summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-03-23 19:08:56 +0000
committerGerrit Code Review <review@openstack.org>2012-03-23 19:08:56 +0000
commit1c6fff4906eb7fd7af9cd507014bea20fb39b7d6 (patch)
tree51108f5372512496d91e2de085d6391b2063676b /nova/tests
parent112af23d623cbbd68bf6e09a6e507170c57abe6b (diff)
parent78f3e76d695898aaf846efb9c420e146a982e689 (diff)
Merge "Fix launching of guests where instances_path is on GlusterFS"
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/test_libvirt.py26
-rw-r--r--nova/tests/test_virt_drivers.py5
2 files changed, 31 insertions, 0 deletions
diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py
index d388a1d4f..11aadc896 100644
--- a/nova/tests/test_libvirt.py
+++ b/nova/tests/test_libvirt.py
@@ -15,6 +15,7 @@
# under the License.
import copy
+import errno
import eventlet
import mox
import os
@@ -800,6 +801,19 @@ class LibvirtConnTestCase(test.TestCase):
(check(tree), expected_result, i))
def _check_xml_and_disk_driver(self, image_meta):
+ os_open = os.open
+ directio_supported = True
+
+ def os_open_stub(path, flags, *args, **kwargs):
+ if flags & os.O_DIRECT:
+ if not directio_supported:
+ raise OSError(errno.EINVAL,
+ '%s: %s' % (os.strerror(errno.EINVAL), path))
+ flags &= ~os.O_DIRECT
+ return os_open(path, flags, *args, **kwargs)
+
+ self.stubs.Set(os, 'open', os_open_stub)
+
user_context = context.RequestContext(self.user_id, self.project_id)
instance_ref = db.instance_create(user_context, self.test_instance)
network_info = _fake_network_info(self.stubs, 1)
@@ -812,6 +826,18 @@ class LibvirtConnTestCase(test.TestCase):
for disk in disks:
self.assertEqual(disk.get("cache"), "none")
+ directio_supported = False
+
+ # The O_DIRECT availability is cached on first use in
+ # LibvirtConnection, hence we re-create it here
+ xml = connection.LibvirtConnection(True).to_xml(instance_ref,
+ network_info,
+ image_meta)
+ tree = ElementTree.fromstring(xml)
+ disks = tree.findall('./devices/disk/driver')
+ for disk in disks:
+ self.assertEqual(disk.get("cache"), "writethrough")
+
def _check_xml_and_disk_bus(self, image_meta, device_type, bus):
user_context = context.RequestContext(self.user_id, self.project_id)
instance_ref = db.instance_create(user_context, self.test_instance)
diff --git a/nova/tests/test_virt_drivers.py b/nova/tests/test_virt_drivers.py
index 8018008a6..592926597 100644
--- a/nova/tests/test_virt_drivers.py
+++ b/nova/tests/test_virt_drivers.py
@@ -451,6 +451,11 @@ class LibvirtConnTestCase(_VirtDriverTestCase):
nova.virt.libvirt.connection.libvirt_utils = fake_libvirt_utils
nova.virt.libvirt.firewall.libvirt = fakelibvirt
+ # So that the _supports_direct_io does the test based
+ # on the current working directory, instead of the
+ # default instances_path which doesn't exist
+ FLAGS.instances_path = ''
+
# Point _VirtDriverTestCase at the right module
self.driver_module = nova.virt.libvirt.connection
super(LibvirtConnTestCase, self).setUp()