Browse Source
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>pull/63/head
committed by
Kevin Wolf
3 changed files with 72 additions and 0 deletions
@ -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']) |
|||
@ -0,0 +1,5 @@ |
|||
. |
|||
---------------------------------------------------------------------- |
|||
Ran 1 tests |
|||
|
|||
OK |
|||
Loading…
Reference in new issue