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 New Issue