cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

152 (2386B)


      1#!/usr/bin/env python3
      2# group: rw quick
      3#
      4# Tests for drive-mirror with source size unaligned to granularity
      5#
      6# Copyright (C) 2016 Red Hat, Inc.
      7#
      8# This program is free software; you can redistribute it and/or modify
      9# it under the terms of the GNU General Public License as published by
     10# the Free Software Foundation; either version 2 of the License, or
     11# (at your option) any later version.
     12#
     13# This program is distributed in the hope that it will be useful,
     14# but WITHOUT ANY WARRANTY; without even the implied warranty of
     15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16# GNU General Public License for more details.
     17#
     18# You should have received a copy of the GNU General Public License
     19# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     20#
     21
     22import os
     23import iotests
     24from iotests import qemu_img
     25
     26test_img = os.path.join(iotests.test_dir, 'test.img')
     27target_img = os.path.join(iotests.test_dir, 'target.img')
     28
     29class TestUnaligned(iotests.QMPTestCase):
     30    def setUp(self):
     31        qemu_img('create', '-f', iotests.imgfmt, test_img, '512')
     32        self.vm = iotests.VM().add_drive(test_img)
     33        self.vm.launch()
     34
     35    def tearDown(self):
     36        self.vm.shutdown()
     37        os.remove(test_img)
     38        try:
     39            os.remove(target_img)
     40        except OSError:
     41            pass
     42
     43    def test_unaligned(self):
     44        result = self.vm.qmp('drive-mirror', device='drive0', sync='full',
     45                             granularity=65536, target=target_img)
     46        self.complete_and_wait()
     47        self.vm.shutdown()
     48        self.assertEqual(iotests.image_size(test_img), iotests.image_size(target_img),
     49                         "Target size doesn't match source when granularity when unaligend")
     50
     51    def test_unaligned_with_update(self):
     52        result = self.vm.qmp('drive-mirror', device='drive0', sync='full',
     53                             granularity=65536, target=target_img)
     54        self.wait_ready()
     55        self.vm.hmp_qemu_io('drive0', 'write 0 512')
     56        self.complete_and_wait(wait_ready=False)
     57        self.vm.shutdown()
     58        self.assertEqual(iotests.image_size(test_img), iotests.image_size(target_img),
     59                         "Target size doesn't match source when granularity when unaligend")
     60
     61
     62if __name__ == '__main__':
     63    iotests.main(supported_fmts=['raw', 'qcow2'],
     64                 supported_protocols=['file'])