Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
 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)
Пример #4
0
 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")
Пример #5
0
    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))
Пример #6
0
 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")
Пример #7
0
 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")
Пример #8
0
    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))
Пример #10
0
    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))