summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Washenberger <mark.washenberger@rackspace.com>2012-02-13 16:04:59 -0500
committerMark Washenberger <mark.washenberger@rackspace.com>2012-02-13 16:04:59 -0500
commit04d38feb65b06d33224d356f6db1b9202532e2ed (patch)
tree2760ef7a9be7dff9d3e4776900ede5e410a47970
parent632789c55b505e3a6cf122329eeae6c616077eba (diff)
downloadnova-04d38feb65b06d33224d356f6db1b9202532e2ed.tar.gz
nova-04d38feb65b06d33224d356f6db1b9202532e2ed.tar.xz
nova-04d38feb65b06d33224d356f6db1b9202532e2ed.zip
Use stubs in libvirt/utils get_fs_info test
This test frequently breaks for me because of a race condition where some small change will happen to the file system between when df is called and when os.statvfs is called. By refactoring the test to stubs, we can eliminate the race condition. Note that I do not modify the code under test at all in this change, so the risk of introducing a defect is zero. Change-Id: I83e4b38b25fef7e5e27fcf81b5e5a566406b05dd
-rw-r--r--nova/tests/test_libvirt.py39
1 files changed, 28 insertions, 11 deletions
diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py
index 2d50344d6..1f9dc3eb8 100644
--- a/nova/tests/test_libvirt.py
+++ b/nova/tests/test_libvirt.py
@@ -1920,17 +1920,34 @@ disk size: 4.4M''', ''))
os.unlink(dst_path)
def test_get_fs_info(self):
- # Use a 1024-byte block size (df -k) because OS X does not support
- # the -B flag
- blocksize = 1024
- stdout, stderr = utils.execute('df', '-k', '/tmp')
- info_line = ' '.join(stdout.split('\n')[1:])
- _dev, total, used, free, _percentage, _mntpnt = info_line.split()
-
- fs_info = libvirt_utils.get_fs_info('/tmp')
- self.assertEquals(int(total) * blocksize, fs_info['total'])
- self.assertEquals(int(free) * blocksize, fs_info['free'])
- self.assertEquals(int(used) * blocksize, fs_info['used'])
+
+ class FakeStatResult(object):
+
+ def __init__(self):
+ self.f_bsize = 4096
+ self.f_frsize = 4096
+ self.f_blocks = 2000
+ self.f_bfree = 1000
+ self.f_bavail = 900
+ self.f_files = 2000
+ self.f_ffree = 1000
+ self.f_favail = 900
+ self.f_flag = 4096
+ self.f_namemax = 255
+
+ self.path = None
+
+ def fake_statvfs(path):
+ self.path = path
+ return FakeStatResult()
+
+ self.stubs.Set(os, 'statvfs', fake_statvfs)
+
+ fs_info = libvirt_utils.get_fs_info('/some/file/path')
+ self.assertEquals('/some/file/path', self.path)
+ self.assertEquals(8192000, fs_info['total'])
+ self.assertEquals(3686400, fs_info['free'])
+ self.assertEquals(4096000, fs_info['used'])
def test_fetch_image(self):
self.mox.StubOutWithMock(images, 'fetch')