block: Adds mirroring tests for resized images
This test verifies two mirroring issues are fixed with resized images: * sync='top' creates an image that is the proper size * sync='full' doesn't cause an assertion failure and crash qemu Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
		
							parent
							
								
									63ba17d39f
								
							
						
					
					
						commit
						a04eca108e
					
				@ -344,6 +344,54 @@ class TestMirrorNoBacking(ImageMirroringTestCase):
 | 
				
			|||||||
        self.assertTrue(self.compare_images(test_img, target_img),
 | 
					        self.assertTrue(self.compare_images(test_img, target_img),
 | 
				
			||||||
                        'target image does not match source after mirroring')
 | 
					                        'target image does not match source after mirroring')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestMirrorResized(ImageMirroringTestCase):
 | 
				
			||||||
 | 
					    backing_len = 1 * 1024 * 1024 # MB
 | 
				
			||||||
 | 
					    image_len = 2 * 1024 * 1024 # MB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def setUp(self):
 | 
				
			||||||
 | 
					        self.create_image(backing_img, TestMirrorResized.backing_len)
 | 
				
			||||||
 | 
					        qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
 | 
				
			||||||
 | 
					        qemu_img('resize', test_img, '2M')
 | 
				
			||||||
 | 
					        self.vm = iotests.VM().add_drive(test_img)
 | 
				
			||||||
 | 
					        self.vm.launch()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def tearDown(self):
 | 
				
			||||||
 | 
					        self.vm.shutdown()
 | 
				
			||||||
 | 
					        os.remove(test_img)
 | 
				
			||||||
 | 
					        os.remove(backing_img)
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            os.remove(target_img)
 | 
				
			||||||
 | 
					        except OSError:
 | 
				
			||||||
 | 
					            pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_complete_top(self):
 | 
				
			||||||
 | 
					        self.assert_no_active_mirrors()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        result = self.vm.qmp('drive-mirror', device='drive0', sync='top',
 | 
				
			||||||
 | 
					                             target=target_img)
 | 
				
			||||||
 | 
					        self.assert_qmp(result, 'return', {})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.complete_and_wait()
 | 
				
			||||||
 | 
					        result = self.vm.qmp('query-block')
 | 
				
			||||||
 | 
					        self.assert_qmp(result, 'return[0]/inserted/file', target_img)
 | 
				
			||||||
 | 
					        self.vm.shutdown()
 | 
				
			||||||
 | 
					        self.assertTrue(self.compare_images(test_img, target_img),
 | 
				
			||||||
 | 
					                        'target image does not match source after mirroring')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_complete_full(self):
 | 
				
			||||||
 | 
					        self.assert_no_active_mirrors()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        result = self.vm.qmp('drive-mirror', device='drive0', sync='full',
 | 
				
			||||||
 | 
					                             target=target_img)
 | 
				
			||||||
 | 
					        self.assert_qmp(result, 'return', {})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.complete_and_wait()
 | 
				
			||||||
 | 
					        result = self.vm.qmp('query-block')
 | 
				
			||||||
 | 
					        self.assert_qmp(result, 'return[0]/inserted/file', target_img)
 | 
				
			||||||
 | 
					        self.vm.shutdown()
 | 
				
			||||||
 | 
					        self.assertTrue(self.compare_images(test_img, target_img),
 | 
				
			||||||
 | 
					                        'target image does not match source after mirroring')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TestReadErrors(ImageMirroringTestCase):
 | 
					class TestReadErrors(ImageMirroringTestCase):
 | 
				
			||||||
    image_len = 2 * 1024 * 1024 # MB
 | 
					    image_len = 2 * 1024 * 1024 # MB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
......................
 | 
					........................
 | 
				
			||||||
----------------------------------------------------------------------
 | 
					----------------------------------------------------------------------
 | 
				
			||||||
Ran 22 tests
 | 
					Ran 24 tests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OK
 | 
					OK
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user