Ejemplo n.º 1
0
 def format_data_disk(self, tag):
     session = self.main_vm.wait_for_login()
     try:
         disk_id, disk_size = self._get_data_disk_info(tag, session)
         mnt = utils_disk.configure_empty_linux_disk(
             session, disk_id, disk_size)[0]
         self.disks_info[tag] = ["/dev/%s1" % disk_id, mnt]
     finally:
         session.close()
Ejemplo n.º 2
0
 def format_data_disk(self, tag):
     session = self.main_vm.wait_for_login()
     try:
         info = backup_utils.get_disk_info_by_param(tag, self.params,
                                                    session)
         if info is None:
             raise exceptions.TestFail("disk not found in guest ...")
         disk_path = "/dev/%s1" % info['kname']
         mount_point = utils_disk.configure_empty_linux_disk(
             session, info['kname'], info['size'])[0]
         self.disks_info[tag] = [disk_path, mount_point]
     finally:
         session.close()
Ejemplo n.º 3
0
 def format_data_disk(self, tag):
     session = self.main_vm.wait_for_login()
     try:
         disk_params = self.params.object_params(tag)
         disk_size = disk_params["image_size"]
         disks = utils_disk.get_linux_disks(session, True)
         for kname, attr in disks.items():
             if attr[1] == disk_size and attr[2] == "disk":
                 disk_id = kname
                 break
         else:
             raise exceptions.TestFail("disk not found in guest ...")
         disk_path = "/dev/%s1" % kname
         mount_point = utils_disk.configure_empty_linux_disk(
             session, disk_id, disk_size)[0]
         self.disks_info[tag] = [disk_path, mount_point]
     finally:
         session.close()
Ejemplo n.º 4
0
 def _get_mount_points():
     """ Get data disk mount point(s) """
     mount_points = []
     os_type = params["os_type"]
     if os_type == "linux":
         mounts = session.cmd_output_safe('cat /proc/mounts | grep /dev/')
         for img in image_list:
             size = params["image_size_%s" % img]
             img_param = params["blk_extra_params_%s" % img].split('=')[1]
             drive_path = utils_misc.get_linux_drive_path(
                 session, img_param)
             if not drive_path:
                 test.error("Failed to get drive path of '%s'" % img)
             did = drive_path[5:]
             for mp in re.finditer(r'/dev/%s\d+\s+(\S+)\s+' % did, mounts):
                 mount_points.append(mp.group(1))
             else:
                 mp = utils_disk.configure_empty_linux_disk(
                     session, did, size)
                 mount_points.extend(mp)
     elif os_type == "windows":
         size_record = []
         for img in image_list:
             size = params["image_size_%s" % img]
             if size in size_record:
                 continue
             size_record.append(size)
             disks = utils_disk.get_windows_disks_index(session, size)
             if not disks:
                 test.fail("Fail to list image %s" % img)
             if not utils_disk.update_windows_disk_attributes(
                     session, disks):
                 test.fail("Failed to update windows disk attributes")
             for disk in disks:
                 d_letter = utils_disk.configure_empty_windows_disk(
                     session, disk, size)
             if not d_letter:
                 test.fail("Fail to format disks")
             mount_points.extend(d_letter)
     else:
         test.cancel("Unsupported OS type '%s'" % os_type)
     return mount_points
Ejemplo n.º 5
0
 def configure_data_disk(self):
     os_type = self.params["os_type"]
     disk_params = self.params.object_params(self.base_tag)
     disk_size = disk_params["image_size"]
     session = self.main_vm.wait_for_login()
     disk_id = self.get_linux_disk_path(session, disk_size)
     assert disk_id, "Disk not found in guest!"
     try:
         mount_point = utils_disk.configure_empty_linux_disk(
             session, disk_id, disk_size)[0]
     except ShellCmdError as e:
         disk_tag = r"/dev/%s" % disk_id
         error_msg = self.params['error_msg'] % disk_tag
         if not re.search(error_msg, str(e)):
             self.test.fail("Unexpected disk format error: %s" % str(e))
         self.disks_info[self.base_tag] = [disk_tag, '/mnt']
     else:
         self.test.fail("Read-only disk is formated")
     finally:
         session.close()
Ejemplo n.º 6
0
 def configure_data_disk(self):
     os_type = self.params["os_type"]
     disk_params = self.params.object_params(self.snapshot_tag)
     disk_size = disk_params["image_size"]
     session = self.main_vm.wait_for_login()
     try:
         if os_type != "windows":
             disk_id = self.get_linux_disk_path(session, disk_size)
             assert disk_id, "Disk not found in guest!"
             mount_point = utils_disk.configure_empty_linux_disk(
                 session, disk_id, disk_size)[0]
             self.disks_info.append([r"/dev/%s1" % disk_id, mount_point])
         else:
             disk_id = utils_disk.get_windows_disks_index(
                 session, disk_size)
             driver_letter = utils_disk.configure_empty_windows_disk(
                 session, disk_id, disk_size)[0]
             mount_point = r"%s:\\" % driver_letter
             self.disks_info.append([disk_id, mount_point])
     finally:
         session.close()
Ejemplo n.º 7
0
def run(test, params, env):
    """
    1) Start guest with both data disk and system disk.
    2) Format a data disk(ext4 for rhel6+ and xfs for rhel7+)

    :param test: QEMU test object
    :param params: Dictionary with the test parameters
    :param env: Dictionary with test environment.
    """

    session = None
    vm = env.get_vm(params["main_vm"])
    vm.verify_alive()
    session = vm.wait_for_login(timeout=int(params.get("login_timeout", 240)))

    stg_tag = params["images"].split()[-1]
    stg_params = params.object_params(stg_tag)
    stg_fstype = stg_params["disk_format"]
    stg_size = stg_params["image_size"]
    stg_extra_params = stg_params.get("blk_extra_params", "")
    match = re.search(r"(serial|wwn)=(\w+)", stg_extra_params, re.M)

    try:
        drive_id = match.group(2)
        drive_path = utils_misc.get_linux_drive_path(session, drive_id)
        did = drive_path[5:]
        logging.info("Format %s(size=%s) with %s type." %
                     (did, stg_size, stg_fstype))
        mnts = utils_disk.configure_empty_linux_disk(session,
                                                     did,
                                                     stg_size,
                                                     fstype=stg_fstype)
        if not mnts:
            test.fail("Failed to create %s on disk %s." % (stg_fstype, did))
    finally:
        if session:
            session.close()
        vm.destroy()
Ejemplo n.º 8
0
def run(test, params, env):
    """
    Run IOzone for linux on a linux guest:
    1) Log into a guest.
    2) Execute the IOzone test.
    :param test: kvm test object
    :param params: Dictionary with the test parameters
    :param env: Dictionary with test environment.
    """
    def _get_data_disks():
        """ Get the data disks by serial or wwn options. """
        disks = {}
        for data_image in params["images"].split()[1:]:
            extra_params = params.get("blk_extra_params_%s" % data_image, '')
            match = re.search(r"(serial|wwn)=(\w+)", extra_params, re.M)
            if match:
                drive_id = match.group(2)
            else:
                continue
            drive_path = utils_misc.get_linux_drive_path(session, drive_id)
            if not drive_path:
                test.error("Failed to get '%s' drive path" % data_image)
            disks[drive_path[5:]] = data_image
        return disks

    def _get_mounted_points():
        """ Get the mounted points. """
        points = []
        for id in re.finditer(r'(%s\d+)' % did, ' '.join(disks)):
            s = re.search(r'/dev/%s\s+(\S+)\s+' % id.group(1), mount_info, re.M)
            if s:
                points.append(s.group(1))
        return points

    def _wait_for_procs_done(timeout=1800):
        """ Wait all the processes are done. """
        if not utils_misc.wait_for(
                lambda: 'iozone' not in session.cmd_output('pgrep -xl iozone'),
                timeout, step=3.0):
            test.error('Not all iozone processes done in %s sec.' % timeout)

    iozone_test_dir = params.get('iozone_test_dir', '/home')
    iozone_cmd_options = params['iozone_cmd_options']
    iozone_timeout = float(params.get("iozone_timeout", 1800))
    n_partitions = params.get('partitions_num', 1)
    fstype = params.get('fstype', 'xfs')
    labeltype = params.get('labeltype', utils_disk.PARTITION_TABLE_TYPE_GPT)

    vm = env.get_vm(params["main_vm"])
    vm.verify_alive()
    session = vm.wait_for_login(timeout=float(params.get("login_timeout", 360)))
    _wait_for_procs_done()
    error_context.context("Running IOzone command on guest.")
    try:
        iozone = generate_instance(params, session, 'iozone')
        dids = _get_data_disks()
        if dids:
            mount_info = session.cmd_output_safe('cat /proc/mounts | grep \'/dev/\'')
            disks = utils_disk.get_linux_disks(session, True)
            for did, image_name in dids.items():
                size = params.get('image_size_%s' % image_name)
                start = params.get('image_start_%s' % image_name, "0M")
                mounted_points = _get_mounted_points()
                if not mounted_points:
                    mounted_points = utils_disk.configure_empty_linux_disk(
                        session, did, size, start, n_partitions, fstype, labeltype)
                for mounted_point in mounted_points:
                    iozone.run(iozone_cmd_options % mounted_point, iozone_timeout)
                utils_disk.clean_partition_linux(session, did)
        else:
            iozone.run(iozone_cmd_options % iozone_test_dir, iozone_timeout)
    finally:
        iozone.clean()
        session.close()
Ejemplo n.º 9
0
def run(test, params, env):
    """
    Run IOzone for linux on a linux guest:
    1) Log into a guest.
    2) Execute the IOzone test.
    :param test: kvm test object
    :param params: Dictionary with the test parameters
    :param env: Dictionary with test environment.
    """
    def _get_data_disks():
        """ Get the data disks by serial or wwn options. """
        disks = {}
        for data_image in params["images"].split()[1:]:
            extra_params = params.get("blk_extra_params_%s" % data_image, '')
            match = re.search(r"(serial|wwn)=(\w+)", extra_params, re.M)
            if match:
                drive_id = match.group(2)
            else:
                continue
            drive_path = utils_misc.get_linux_drive_path(session, drive_id)
            if not drive_path:
                test.error("Failed to get '%s' drive path" % data_image)
            disks[drive_path[5:]] = data_image
        return disks

    def _get_mounted_points():
        """ Get the mounted points. """
        points = []
        for id in re.finditer(r'(%s\d+)' % did, ' '.join(disks)):
            s = re.search(r'/dev/%s\s+(\S+)\s+' % id.group(1), mount_info,
                          re.M)
            if s:
                points.append(s.group(1))
        return points

    def _wait_for_procs_done(timeout=1800):
        """ Wait all the processes are done. """
        if not utils_misc.wait_for(
                lambda: 'iozone' not in session.cmd_output('pgrep -xl iozone'),
                timeout,
                step=3.0):
            test.error('Not all iozone processes done in %s sec.' % timeout)

    iozone_test_dir = params.get('iozone_test_dir', '/home')
    iozone_cmd_options = params['iozone_cmd_options']
    iozone_timeout = float(params.get("iozone_timeout", 1800))
    n_partitions = params.get('partitions_num', 1)
    fstype = params.get('fstype', 'xfs')
    labeltype = params.get('labeltype', utils_disk.PARTITION_TABLE_TYPE_GPT)

    vm = env.get_vm(params["main_vm"])
    vm.verify_alive()
    session = vm.wait_for_login(
        timeout=float(params.get("login_timeout", 360)))
    _wait_for_procs_done()
    error_context.context("Running IOzone command on guest.")
    iozone = generate_instance(params, vm, 'iozone')
    try:
        dids = _get_data_disks()
        if dids:
            mount_info = session.cmd_output_safe(
                'cat /proc/mounts | grep \'/dev/\'')
            disks = utils_disk.get_linux_disks(session, True)
            for did, image_name in dids.items():
                size = params.get('image_size_%s' % image_name)
                start = params.get('image_start_%s' % image_name, "0M")
                mounted_points = _get_mounted_points()
                if not mounted_points:
                    mounted_points = utils_disk.configure_empty_linux_disk(
                        session, did, size, start, n_partitions, fstype,
                        labeltype)
                for mounted_point in mounted_points:
                    iozone.run(iozone_cmd_options % mounted_point,
                               iozone_timeout)
                utils_disk.clean_partition_linux(session, did)
        else:
            iozone.run(iozone_cmd_options % iozone_test_dir, iozone_timeout)
    finally:
        if params.get('sub_test_shutdown_vm', 'no') == 'no':
            iozone.clean()
        session.close()