qemu-iotests: make create_image() common
Both 030 and 041 use create_image(). Move it to iotests.py. Also drop ImageStreamingTestCase since the class now has no methods. Suggested-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
3a3918c396
commit
2499a096a2
|
@ -22,30 +22,16 @@ import time
|
||||||
import os
|
import os
|
||||||
import iotests
|
import iotests
|
||||||
from iotests import qemu_img, qemu_io
|
from iotests import qemu_img, qemu_io
|
||||||
import struct
|
|
||||||
|
|
||||||
backing_img = os.path.join(iotests.test_dir, 'backing.img')
|
backing_img = os.path.join(iotests.test_dir, 'backing.img')
|
||||||
mid_img = os.path.join(iotests.test_dir, 'mid.img')
|
mid_img = os.path.join(iotests.test_dir, 'mid.img')
|
||||||
test_img = os.path.join(iotests.test_dir, 'test.img')
|
test_img = os.path.join(iotests.test_dir, 'test.img')
|
||||||
|
|
||||||
class ImageStreamingTestCase(iotests.QMPTestCase):
|
class TestSingleDrive(iotests.QMPTestCase):
|
||||||
'''Abstract base class for image streaming test cases'''
|
|
||||||
|
|
||||||
def create_image(self, name, size):
|
|
||||||
file = open(name, 'w')
|
|
||||||
i = 0
|
|
||||||
while i < size:
|
|
||||||
sector = struct.pack('>l504xl', i / 512, i / 512)
|
|
||||||
file.write(sector)
|
|
||||||
i = i + 512
|
|
||||||
file.close()
|
|
||||||
|
|
||||||
|
|
||||||
class TestSingleDrive(ImageStreamingTestCase):
|
|
||||||
image_len = 1 * 1024 * 1024 # MB
|
image_len = 1 * 1024 * 1024 # MB
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_image(backing_img, TestSingleDrive.image_len)
|
iotests.create_image(backing_img, TestSingleDrive.image_len)
|
||||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, mid_img)
|
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, mid_img)
|
||||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % mid_img, test_img)
|
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % mid_img, test_img)
|
||||||
self.vm = iotests.VM().add_drive(test_img)
|
self.vm = iotests.VM().add_drive(test_img)
|
||||||
|
@ -145,12 +131,12 @@ class TestSingleDrive(ImageStreamingTestCase):
|
||||||
self.assert_qmp(result, 'error/class', 'DeviceNotFound')
|
self.assert_qmp(result, 'error/class', 'DeviceNotFound')
|
||||||
|
|
||||||
|
|
||||||
class TestSmallerBackingFile(ImageStreamingTestCase):
|
class TestSmallerBackingFile(iotests.QMPTestCase):
|
||||||
backing_len = 1 * 1024 * 1024 # MB
|
backing_len = 1 * 1024 * 1024 # MB
|
||||||
image_len = 2 * backing_len
|
image_len = 2 * backing_len
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_image(backing_img, self.backing_len)
|
iotests.create_image(backing_img, self.backing_len)
|
||||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img, str(self.image_len))
|
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img, str(self.image_len))
|
||||||
self.vm = iotests.VM().add_drive(test_img)
|
self.vm = iotests.VM().add_drive(test_img)
|
||||||
self.vm.launch()
|
self.vm.launch()
|
||||||
|
@ -176,7 +162,7 @@ class TestSmallerBackingFile(ImageStreamingTestCase):
|
||||||
self.assert_no_active_block_jobs()
|
self.assert_no_active_block_jobs()
|
||||||
self.vm.shutdown()
|
self.vm.shutdown()
|
||||||
|
|
||||||
class TestErrors(ImageStreamingTestCase):
|
class TestErrors(iotests.QMPTestCase):
|
||||||
image_len = 2 * 1024 * 1024 # MB
|
image_len = 2 * 1024 * 1024 # MB
|
||||||
|
|
||||||
# this should match STREAM_BUFFER_SIZE/512 in block/stream.c
|
# this should match STREAM_BUFFER_SIZE/512 in block/stream.c
|
||||||
|
@ -208,7 +194,7 @@ new_state = "1"
|
||||||
class TestEIO(TestErrors):
|
class TestEIO(TestErrors):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.blkdebug_file = backing_img + ".blkdebug"
|
self.blkdebug_file = backing_img + ".blkdebug"
|
||||||
self.create_image(backing_img, TestErrors.image_len)
|
iotests.create_image(backing_img, TestErrors.image_len)
|
||||||
self.create_blkdebug_file(self.blkdebug_file, "read_aio", 5)
|
self.create_blkdebug_file(self.blkdebug_file, "read_aio", 5)
|
||||||
qemu_img('create', '-f', iotests.imgfmt,
|
qemu_img('create', '-f', iotests.imgfmt,
|
||||||
'-o', 'backing_file=blkdebug:%s:%s,backing_fmt=raw'
|
'-o', 'backing_file=blkdebug:%s:%s,backing_fmt=raw'
|
||||||
|
@ -344,7 +330,7 @@ class TestEIO(TestErrors):
|
||||||
class TestENOSPC(TestErrors):
|
class TestENOSPC(TestErrors):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.blkdebug_file = backing_img + ".blkdebug"
|
self.blkdebug_file = backing_img + ".blkdebug"
|
||||||
self.create_image(backing_img, TestErrors.image_len)
|
iotests.create_image(backing_img, TestErrors.image_len)
|
||||||
self.create_blkdebug_file(self.blkdebug_file, "read_aio", 28)
|
self.create_blkdebug_file(self.blkdebug_file, "read_aio", 28)
|
||||||
qemu_img('create', '-f', iotests.imgfmt,
|
qemu_img('create', '-f', iotests.imgfmt,
|
||||||
'-o', 'backing_file=blkdebug:%s:%s,backing_fmt=raw'
|
'-o', 'backing_file=blkdebug:%s:%s,backing_fmt=raw'
|
||||||
|
@ -397,7 +383,7 @@ class TestENOSPC(TestErrors):
|
||||||
self.assert_no_active_block_jobs()
|
self.assert_no_active_block_jobs()
|
||||||
self.vm.shutdown()
|
self.vm.shutdown()
|
||||||
|
|
||||||
class TestStreamStop(ImageStreamingTestCase):
|
class TestStreamStop(iotests.QMPTestCase):
|
||||||
image_len = 8 * 1024 * 1024 * 1024 # GB
|
image_len = 8 * 1024 * 1024 * 1024 # GB
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
@ -423,7 +409,7 @@ class TestStreamStop(ImageStreamingTestCase):
|
||||||
|
|
||||||
self.cancel_and_wait()
|
self.cancel_and_wait()
|
||||||
|
|
||||||
class TestSetSpeed(ImageStreamingTestCase):
|
class TestSetSpeed(iotests.QMPTestCase):
|
||||||
image_len = 80 * 1024 * 1024 # MB
|
image_len = 80 * 1024 * 1024 # MB
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|
|
@ -22,7 +22,6 @@ import time
|
||||||
import os
|
import os
|
||||||
import iotests
|
import iotests
|
||||||
from iotests import qemu_img, qemu_io
|
from iotests import qemu_img, qemu_io
|
||||||
import struct
|
|
||||||
|
|
||||||
backing_img = os.path.join(iotests.test_dir, 'backing.img')
|
backing_img = os.path.join(iotests.test_dir, 'backing.img')
|
||||||
target_backing_img = os.path.join(iotests.test_dir, 'target-backing.img')
|
target_backing_img = os.path.join(iotests.test_dir, 'target-backing.img')
|
||||||
|
@ -71,20 +70,11 @@ class ImageMirroringTestCase(iotests.QMPTestCase):
|
||||||
|
|
||||||
self.assert_no_active_block_jobs()
|
self.assert_no_active_block_jobs()
|
||||||
|
|
||||||
def create_image(self, name, size):
|
|
||||||
file = open(name, 'w')
|
|
||||||
i = 0
|
|
||||||
while i < size:
|
|
||||||
sector = struct.pack('>l504xl', i / 512, i / 512)
|
|
||||||
file.write(sector)
|
|
||||||
i = i + 512
|
|
||||||
file.close()
|
|
||||||
|
|
||||||
class TestSingleDrive(ImageMirroringTestCase):
|
class TestSingleDrive(ImageMirroringTestCase):
|
||||||
image_len = 1 * 1024 * 1024 # MB
|
image_len = 1 * 1024 * 1024 # MB
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_image(backing_img, TestSingleDrive.image_len)
|
iotests.create_image(backing_img, TestSingleDrive.image_len)
|
||||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
|
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
|
||||||
self.vm = iotests.VM().add_drive(test_img)
|
self.vm = iotests.VM().add_drive(test_img)
|
||||||
self.vm.launch()
|
self.vm.launch()
|
||||||
|
@ -230,15 +220,15 @@ class TestMirrorNoBacking(ImageMirroringTestCase):
|
||||||
image_len = 2 * 1024 * 1024 # MB
|
image_len = 2 * 1024 * 1024 # MB
|
||||||
|
|
||||||
def complete_and_wait(self, drive='drive0', wait_ready=True):
|
def complete_and_wait(self, drive='drive0', wait_ready=True):
|
||||||
self.create_image(target_backing_img, TestMirrorNoBacking.image_len)
|
iotests.create_image(target_backing_img, TestMirrorNoBacking.image_len)
|
||||||
return ImageMirroringTestCase.complete_and_wait(self, drive, wait_ready)
|
return ImageMirroringTestCase.complete_and_wait(self, drive, wait_ready)
|
||||||
|
|
||||||
def compare_images(self, img1, img2):
|
def compare_images(self, img1, img2):
|
||||||
self.create_image(target_backing_img, TestMirrorNoBacking.image_len)
|
iotests.create_image(target_backing_img, TestMirrorNoBacking.image_len)
|
||||||
return iotests.compare_images(img1, img2)
|
return iotests.compare_images(img1, img2)
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_image(backing_img, TestMirrorNoBacking.image_len)
|
iotests.create_image(backing_img, TestMirrorNoBacking.image_len)
|
||||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
|
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
|
||||||
self.vm = iotests.VM().add_drive(test_img)
|
self.vm = iotests.VM().add_drive(test_img)
|
||||||
self.vm.launch()
|
self.vm.launch()
|
||||||
|
@ -306,7 +296,7 @@ class TestMirrorResized(ImageMirroringTestCase):
|
||||||
image_len = 2 * 1024 * 1024 # MB
|
image_len = 2 * 1024 * 1024 # MB
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_image(backing_img, TestMirrorResized.backing_len)
|
iotests.create_image(backing_img, TestMirrorResized.backing_len)
|
||||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
|
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
|
||||||
qemu_img('resize', test_img, '2M')
|
qemu_img('resize', test_img, '2M')
|
||||||
self.vm = iotests.VM().add_drive(test_img)
|
self.vm = iotests.VM().add_drive(test_img)
|
||||||
|
@ -381,7 +371,7 @@ new_state = "1"
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.blkdebug_file = backing_img + ".blkdebug"
|
self.blkdebug_file = backing_img + ".blkdebug"
|
||||||
self.create_image(backing_img, TestReadErrors.image_len)
|
iotests.create_image(backing_img, TestReadErrors.image_len)
|
||||||
self.create_blkdebug_file(self.blkdebug_file, "read_aio", 5)
|
self.create_blkdebug_file(self.blkdebug_file, "read_aio", 5)
|
||||||
qemu_img('create', '-f', iotests.imgfmt,
|
qemu_img('create', '-f', iotests.imgfmt,
|
||||||
'-o', 'backing_file=blkdebug:%s:%s,backing_fmt=raw'
|
'-o', 'backing_file=blkdebug:%s:%s,backing_fmt=raw'
|
||||||
|
@ -536,7 +526,7 @@ new_state = "1"
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.blkdebug_file = target_img + ".blkdebug"
|
self.blkdebug_file = target_img + ".blkdebug"
|
||||||
self.create_image(backing_img, TestWriteErrors.image_len)
|
iotests.create_image(backing_img, TestWriteErrors.image_len)
|
||||||
self.create_blkdebug_file(self.blkdebug_file, "write_aio", 5)
|
self.create_blkdebug_file(self.blkdebug_file, "write_aio", 5)
|
||||||
qemu_img('create', '-f', iotests.imgfmt, '-obacking_file=%s' %(backing_img), test_img)
|
qemu_img('create', '-f', iotests.imgfmt, '-obacking_file=%s' %(backing_img), test_img)
|
||||||
self.vm = iotests.VM().add_drive(test_img)
|
self.vm = iotests.VM().add_drive(test_img)
|
||||||
|
|
|
@ -23,6 +23,7 @@ import string
|
||||||
import unittest
|
import unittest
|
||||||
import sys; sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'QMP'))
|
import sys; sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'QMP'))
|
||||||
import qmp
|
import qmp
|
||||||
|
import struct
|
||||||
|
|
||||||
__all__ = ['imgfmt', 'imgproto', 'test_dir' 'qemu_img', 'qemu_io',
|
__all__ = ['imgfmt', 'imgproto', 'test_dir' 'qemu_img', 'qemu_io',
|
||||||
'VM', 'QMPTestCase', 'notrun', 'main']
|
'VM', 'QMPTestCase', 'notrun', 'main']
|
||||||
|
@ -56,6 +57,16 @@ def compare_images(img1, img2):
|
||||||
return qemu_img('compare', '-f', imgfmt,
|
return qemu_img('compare', '-f', imgfmt,
|
||||||
'-F', imgfmt, img1, img2) == 0
|
'-F', imgfmt, img1, img2) == 0
|
||||||
|
|
||||||
|
def create_image(name, size):
|
||||||
|
'''Create a fully-allocated raw image with sector markers'''
|
||||||
|
file = open(name, 'w')
|
||||||
|
i = 0
|
||||||
|
while i < size:
|
||||||
|
sector = struct.pack('>l504xl', i / 512, i / 512)
|
||||||
|
file.write(sector)
|
||||||
|
i = i + 512
|
||||||
|
file.close()
|
||||||
|
|
||||||
class VM(object):
|
class VM(object):
|
||||||
'''A QEMU VM'''
|
'''A QEMU VM'''
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue