iotests: test clearing unknown autoclear_features by qcow2

Test clearing unknown autoclear_features by qcow2 on incoming
migration.

[ kwolf: Fixed wait for destination VM startup ]

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
Vladimir Sementsov-Ogievskiy 2017-11-10 20:54:57 +03:00 committed by Kevin Wolf
parent dafe096057
commit 3590cd0f04
3 changed files with 72 additions and 0 deletions

66
tests/qemu-iotests/196 Executable file
View File

@ -0,0 +1,66 @@
#!/usr/bin/env python
#
# Test clearing unknown autoclear_features flag by qcow2 after
# migration. This test mimics migration to older qemu.
#
# Copyright (c) 2017 Parallels International GmbH
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import os
import iotests
from iotests import qemu_img
disk = os.path.join(iotests.test_dir, 'disk')
migfile = os.path.join(iotests.test_dir, 'migfile')
class TestInvalidateAutoclear(iotests.QMPTestCase):
def tearDown(self):
self.vm_a.shutdown()
self.vm_b.shutdown()
os.remove(disk)
os.remove(migfile)
def setUp(self):
qemu_img('create', '-f', iotests.imgfmt, disk, '1M')
self.vm_a = iotests.VM(path_suffix='a').add_drive(disk)
self.vm_a.launch()
self.vm_b = iotests.VM(path_suffix='b').add_drive(disk)
self.vm_b.add_incoming("exec: cat '" + migfile + "'")
def test_migration(self):
result = self.vm_a.qmp('migrate', uri='exec:cat>' + migfile)
self.assert_qmp(result, 'return', {});
self.assertNotEqual(self.vm_a.event_wait("STOP"), None)
with open(disk, 'r+b') as f:
f.seek(88) # first byte of autoclear_features field
f.write(b'\xff')
self.vm_b.launch()
while True:
result = self.vm_b.qmp('query-status')
if result['return']['status'] == 'running':
break
with open(disk, 'rb') as f:
f.seek(88)
self.assertEqual(f.read(1), b'\x00')
if __name__ == '__main__':
iotests.main(supported_fmts=['qcow2'])

View File

@ -0,0 +1,5 @@
.
----------------------------------------------------------------------
Ran 1 tests
OK

View File

@ -193,5 +193,6 @@
192 rw auto quick 192 rw auto quick
194 rw auto migration quick 194 rw auto migration quick
195 rw auto quick 195 rw auto quick
196 rw auto quick
197 rw auto quick 197 rw auto quick
198 rw auto 198 rw auto