qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v6 19/21] iotests: add simple incremental backup


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH v6 19/21] iotests: add simple incremental backup case
Date: Fri, 22 May 2015 17:37:58 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

Am 22.05.2015 um 17:29 hat John Snow geschrieben:
> 
> 
> On 05/22/2015 11:02 AM, Kevin Wolf wrote:
> > Am 18.04.2015 um 01:50 hat John Snow geschrieben:
> >> Signed-off-by: John Snow <address@hidden>
> >> Reviewed-by: Max Reitz <address@hidden>
> >> ---
> >>  tests/qemu-iotests/124     | 174 
> >> +++++++++++++++++++++++++++++++++++++++++++--
> >>  tests/qemu-iotests/124.out |   4 +-
> >>  2 files changed, 172 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/tests/qemu-iotests/124 b/tests/qemu-iotests/124
> >> index 85675ec..5c3b434 100644
> >> --- a/tests/qemu-iotests/124
> >> +++ b/tests/qemu-iotests/124
> >> @@ -29,6 +29,51 @@ def io_write_patterns(img, patterns):
> >>          iotests.qemu_io('-c', 'write -P%s %s %s' % pattern, img)
> >>  
> >>  
> >> +def try_remove(img):
> >> +    try:
> >> +        os.remove(img)
> >> +    except OSError:
> >> +        pass
> >> +
> >> +
> >> +class Bitmap:
> >> +    def __init__(self, name, drive):
> >> +        self.name = name
> >> +        self.drive = drive
> >> +        self.num = 0
> >> +        self.backups = list()
> >> +
> >> +    def base_target(self):
> >> +        return (self.drive['backup'], None)
> >> +
> >> +    def new_target(self, num=None):
> >> +        if num is None:
> >> +            num = self.num
> >> +        self.num = num + 1
> >> +        base = os.path.join(iotests.test_dir,
> >> +                            "%s.%s." % (self.drive['id'], self.name))
> >> +        suff = "%i.%s" % (num, self.drive['fmt'])
> >> +        target = base + "inc" + suff
> >> +        reference = base + "ref" + suff
> >> +        self.backups.append((target, reference))
> >> +        return (target, reference)
> >> +
> >> +    def last_target(self):
> >> +        if self.backups:
> >> +            return self.backups[-1]
> >> +        return self.base_target()
> >> +
> >> +    def del_target(self):
> >> +        for image in self.backups.pop():
> >> +            try_remove(image)
> >> +        self.num -= 1
> >> +
> >> +    def cleanup(self):
> >> +        for backup in self.backups:
> >> +            for image in backup:
> >> +                try_remove(image)
> >> +
> >> +
> >>  class TestIncrementalBackup(iotests.QMPTestCase):
> >>      def setUp(self):
> >>          self.bitmaps = list()
> >> @@ -73,6 +118,128 @@ class TestIncrementalBackup(iotests.QMPTestCase):
> >>              iotests.qemu_img('create', '-f', fmt, img, size)
> >>          self.files.append(img)
> >>  
> >> +
> >> +    def do_qmp_backup(self, error='Input/output error', **kwargs):
> >> +        res = self.vm.qmp('drive-backup', **kwargs)
> >> +        self.assert_qmp(res, 'return', {})
> >> +
> >> +        event = self.vm.event_wait(name="BLOCK_JOB_COMPLETED",
> >> +                                   match={'data': {'device': 
> >> kwargs['device']}})
> >> +        self.assertIsNotNone(event)
> > 
> > RHEL 6 doesn't have self.assertIsNotNone(), so 124 fails there now. Can
> > you send a follow-up patch to fix this?
> > 
> > Kevin
> > 
> 
> What's the minimum version requirement for RHEL6, for future information?

$ python --version
Python 2.6.5

Kevin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]