def test_get_diskspace(self): """ Use scsi_debug device to check disk size """ pre = glob.glob("/dev/sd*") try: process.system("modprobe scsi_debug", sudo=True) disks = set(glob.glob("/dev/sd*")).difference(pre) self.assertEqual(len(disks), 1, "pre: %s\npost: %s" % (disks, glob.glob("/dev/sd*"))) disk = disks.pop() self.assertEqual(lv_utils.get_diskspace(disk), "8388608") except BaseException: for _ in xrange(10): res = process.run("rmmod scsi_debug", ignore_status=True, sudo=True) if not res.exit_status: print("scsi_debug removed") break else: print("Fail to remove scsi_debug: %s" % res) for _ in xrange(10): res = process.run("rmmod scsi_debug", ignore_status=True, sudo=True) if not res.exit_status: break else: self.fail("Fail to remove scsi_debug after testing: %s" % res)
def test_get_diskspace(self): """ Use scsi_debug device to check disk size """ pre = glob.glob("/dev/sd*") try: process.system("modprobe scsi_debug", sudo=True) disks = set(glob.glob("/dev/sd*")).difference(pre) self.assertEqual( len(disks), 1, "pre: %s\npost: %s" % (disks, glob.glob("/dev/sd*"))) disk = disks.pop() self.assertEqual(lv_utils.get_diskspace(disk), "8388608") except BaseException: for _ in xrange(10): res = process.run("rmmod scsi_debug", ignore_status=True, sudo=True) if not res.exit_status: print "scsi_debug removed" break else: print "Fail to remove scsi_debug: %s" % res for _ in xrange(10): res = process.run("rmmod scsi_debug", ignore_status=True, sudo=True) if not res.exit_status: break else: self.fail("Fail to remove scsi_debug after testing: %s" % res)
def create_lv(self, l_disk): vgname = 'avocado_vg' lvname = 'avocado_lv' lv_size = int(lv_utils.get_diskspace(l_disk)) / 2330168 lv_utils.vg_create(vgname, l_disk) lv_utils.lv_create(vgname, lvname, lv_size) return '/dev/%s/%s' % (vgname, lvname)
def test(self): """ Sectors are dicarded for the different values of OFFSET and LENGTH. """ size = int(lv_utils.get_diskspace(self.disk)) cmd = "blkdiscard %s -o 0 -v -l %d" % (self.disk, size) process.run(cmd, shell=True) cmd = "blkdiscard %s -o %d \ -v -l %d" % (self.disk, size, size) process.run(cmd, shell=True) cmd = "blkdiscard %s -o %d -v -l 0" % (self.disk, size) process.run(cmd, shell=True) for i in xrange(2, 10, 2): for j in xrange(2, 10, 2): if (size / i) % 4096 == 0 and (size / j) % 4096 == 0: cmd = "blkdiscard %s -o %d -l %d -v" \ % (self.disk, size / i, size / j) process.system(cmd, shell=True) else: cmd = "blkdiscard %s -o %d -l %d -v" \ % (self.disk, size / i, size / j) if process.system(cmd, ignore_status=True, shell=True) == 0: self.fail("Blkdiscard passed for the values which is, \ not aligned to 4096 but actually it should fail")
def setUp(self): """ Check existence of input PV,VG, LV and snapshots prior to Test. """ pkg = "" smm = SoftwareManager() self.disk = self.params.get('lv_disks', default=None) self.vg_name = self.params.get('vg_name', default='avocado_vg') self.lv_name = self.params.get('lv_name', default='avocado_lv') self.fs_name = self.params.get('fs', default='ext4').lower() if self.fs_name == 'xfs': pkg = 'xfsprogs' if self.fs_name == 'btrfs': ver = int(distro.detect().version) rel = int(distro.detect().release) if distro.detect().name == 'rhel': if (ver == 7 and rel >= 4) or ver > 7: self.cancel("btrfs is not supported with RHEL 7.4 onwards") if distro.detect().name == 'SuSE': pkg = 'btrfsprogs' else: pkg = 'btrfs-progs' if pkg and not smm.check_installed(pkg) and not smm.install(pkg): self.cancel("Package %s could not be installed" % pkg) self.lv_snap_name = self.params.get( 'lv_snapshot_name', default='avocado_sn') self.ramdisk_basedir = self.params.get( 'ramdisk_basedir', default=os.path.join(self.workdir, 'ramdisk')) self.ramdisk_sparse_filename = self.params.get( 'ramdisk_sparse_filename', default='virtual_hdd') if 'delete' not in str(self.name.name): if lv_utils.vg_check(self.vg_name): self.cancel('Volume group %s already exists' % self.vg_name) if lv_utils.lv_check(self.vg_name, self.lv_name): self.cancel('Logical Volume %s already exists' % self.lv_name) if lv_utils.lv_check(self.vg_name, self.lv_snap_name): self.cancel('Snapshot %s already exists' % self.lv_snap_name) self.mount_loc = os.path.join(self.workdir, 'mountpoint') if not os.path.isdir(self.mount_loc): os.makedirs(self.mount_loc) if self.disk: # converting bytes to megabytes, and using only 45% of the size self.lv_size = int(lv_utils.get_diskspace(self.disk)) / 2330168 else: self.lv_size = '1G' self.lv_size = self.params.get('lv_size', default=self.lv_size) self.lv_snapshot_size = self.params.get('lv_snapshot_size', default=self.lv_size) self.ramdisk_vg_size = self.params.get('ramdisk_vg_size', default=self.lv_size) self.ramdisks.append(lv_utils.vg_ramdisk(self.disk, self.vg_name, self.ramdisk_vg_size, self.ramdisk_basedir, self.ramdisk_sparse_filename))
def test_get_diskspace(self): """ Use scsi_debug device to check disk size """ pre = glob.glob("/dev/sd*") process.system("modprobe scsi_debug", sudo=True) disks = set(glob.glob("/dev/sd*")).difference(pre) self.assertEqual(len(disks), 1, f"pre: {disks}\npost: {glob.glob('/dev/sd*')}") disk = disks.pop() self.assertEqual(lv_utils.get_diskspace(disk), "8388608")
def test_get_diskspace(self): """ Use scsi_debug device to check disk size """ pre = glob.glob("/dev/sd*") process.system("modprobe scsi_debug", sudo=True) disks = set(glob.glob("/dev/sd*")).difference(pre) self.assertEqual(len(disks), 1, "pre: %s\npost: %s" % (disks, glob.glob("/dev/sd*"))) disk = disks.pop() self.assertEqual(lv_utils.get_diskspace(disk), "8388608")
def setUp(self): """ Check existence of input PV,VG, LV and snapshots prior to Test. """ pkg = "" smm = SoftwareManager() self.disk = self.params.get('disks', default=None) vg_name = self.params.get('vg_name', default='avocado_vg') lv_name = self.params.get('lv_name', default='avocado_lv') self.fs_name = self.params.get('fs', default='ext4').lower() if self.fs_name == 'xfs': pkg = 'xfsprogs' if self.fs_name == 'btrfs': if distro.detect().name == 'SuSE': pkg = 'btrfsprogs' else: pkg = 'btrfs-progs' if pkg and not smm.check_installed(pkg) and not smm.install(pkg): self.cancel("Package %s could not be installed" % pkg) lv_snapshot_name = self.params.get('lv_snapshot_name', default='avocado_sn') self.ramdisk_basedir = self.params.get('ramdisk_basedir', default=os.path.join( self.workdir, 'ramdisk')) self.ramdisk_sparse_filename = self.params.get( 'ramdisk_sparse_filename', default='virtual_hdd') if lv_utils.vg_check(vg_name): self.cancel('Volume group %s already exists' % vg_name) self.vg_name = vg_name if lv_utils.lv_check(vg_name, lv_name): self.cancel('Logical Volume %s already exists' % lv_name) self.lv_name = lv_name if lv_utils.lv_check(vg_name, lv_snapshot_name): self.cancel('Snapshot %s already exists' % lv_snapshot_name) self.mount_loc = os.path.join(self.workdir, 'mountpoint') if not os.path.isdir(self.mount_loc): os.makedirs(self.mount_loc) self.lv_snapshot_name = lv_snapshot_name if self.disk: # converting bytes to megabytes, and using only 45% of the size self.lv_size = int(lv_utils.get_diskspace(self.disk)) / 2330168 else: self.lv_size = '1G' self.lv_size = self.params.get('lv_size', default=self.lv_size) self.lv_snapshot_size = self.params.get('lv_snapshot_size', default=self.lv_size) self.ramdisk_vg_size = self.params.get('ramdisk_vg_size', default=self.lv_size)
def _init_params(self): """ Retrieves and checks the test params """ self.disk = self.params.get('disk', default=None) self.dirs = self.params.get('dir', default=self.workdir) self.fstype = self.params.get('fs', default='ext4') if self.fstype == 'btrfs': ver = int(distro.detect().version) rel = int(distro.detect().release) if distro.detect().name == 'rhel': if (ver == 7 and rel >= 4) or ver > 7: self.cancel("btrfs is not supported with \ RHEL 7.4 onwards") gigabytes = int(lv_utils.get_diskspace(self.disk)) // 1073741824 memory_mb = memory.meminfo.MemTotal.m self.chunk_mb = gigabytes * 950 if memory_mb > self.chunk_mb: self.cancel("Chunk size has to be greater or equal to RAM size. " "(%s > %s)" % (self.chunk_mb, memory_mb)) self.no_chunks = 1024 * gigabytes // self.chunk_mb if self.no_chunks == 0: self.cancel("Free disk space is lower than chunk size (%s, %s)" % (1024 * gigabytes, self.chunk_mb)) self.log.info("Test will use %s chunks %sMB each in %sMB RAM using %s " "GB of disk space on %s dirs (%s).", self.no_chunks, self.chunk_mb, memory_mb, self.no_chunks * self.chunk_mb, len(self.dirs), self.dirs) if self.disk is not None: self.part_obj = Partition(self.disk, mountpoint=self.dirs) self.log.info("Unmounting the disk/dir if it is already mounted") self.part_obj.unmount() self.log.info("creating %s fs on %s", self.fstype, self.disk) self.part_obj.mkfs(self.fstype) self.log.info("mounting %s on %s", self.disk, self.dirs) try: self.part_obj.mount() except PartitionError: self.fail("Mounting disk %s on directory %s failed" % (self.disk, self.dirs))
def _init_params(self): """ Retrieves and checks the test params """ self.disk = self.params.get('disk', default=None) self.dirs = self.params.get('dir', default=self.workdir) self.fstype = self.params.get('fs', default='ext4') gigabytes = int(lv_utils.get_diskspace(self.disk)) / 1073741824 memory_mb = memory.memtotal() / 1024 self.chunk_mb = gigabytes * 950 if memory_mb > self.chunk_mb: self.cancel("Chunk size has to be greater or equal to RAM size. " "(%s > %s)" % (self.chunk_mb, memory_mb)) self.no_chunks = 1024 * gigabytes / self.chunk_mb if self.no_chunks == 0: self.cancel("Free disk space is lower than chunk size (%s, %s)" % (1024 * gigabytes, self.chunk_mb)) self.log.info( "Test will use %s chunks %sMB each in %sMB RAM using %s " "GB of disk space on %s dirs (%s).", self.no_chunks, self.chunk_mb, memory_mb, self.no_chunks * self.chunk_mb, len(self.dirs), self.dirs) if self.disk is not None: self.part_obj = Partition(self.disk, mountpoint=self.dirs) self.log.info("Unmounting the disk/dir if it is already mounted") self.part_obj.unmount() self.log.info("creating %s fs on %s", self.fstype, self.disk) self.part_obj.mkfs(self.fstype) self.log.info("mounting %s on %s", self.disk, self.dirs) try: self.part_obj.mount() except PartitionError: self.fail("Mounting disk %s on directory %s failed" % (self.disk, self.dirs))