Beispiel #1
0
 def add_bitmap(self):
     self.bitmap_name = "bitmap_%s" % self.snapshot_tag
     kargs = {
         'bitmap_name': self.bitmap_name,
         'target_device': self._top_device
     }
     block_bitmap.block_dirty_bitmap_add(self.main_vm, kargs)
 def add_persistent_bitmap(self):
     kargs = {
         'bitmap_name': self._bitmaps[0],
         'target_device': self._source_nodes[0],
         'persistent': 'on'
     }
     block_dirty_bitmap_add(self.main_vm, kargs)
def run(test, params, env):
    """Bitmap test.

    1. get target image and drive.
    2. add bitmap.
    3. check bitmap existence.
        a) if existed, check after system_powerdown

    :param test: vt test object
    :param params: test parameters dictionary
    :param env: test environment
    """
    def check_bitmap_existence_as_expected(bitmaps, existence_param):
        """Check bitmaps' existence."""
        bitmap_dict = block_dirty_bitmap.get_bitmaps(vm.monitor.info("block"))
        logging.debug("bitmaps:\n%s", bitmap_dict)
        msgs = []
        for bitmap_params in bitmaps:
            bitmap = bitmap_params.get("bitmap_name")
            existence = bitmap_params.get(existence_param, "yes") == "yes"
            if not block_dirty_bitmap.check_bitmap_existence(
                    bitmap_dict, bitmap_params, existence):
                msg = "bitmap %s %s exists" % (bitmap,
                                               "not" if existence else "")
                msgs.append(msg)
        if msgs:
            test.fail("\n".join(msgs))

    vm = env.get_vm(params["main_vm"])
    vm.verify_alive()
    # wait till boot finishes
    vm.wait_for_login(timeout=int(params.get("login_timeout", 360))).close()

    bitmaps = block_dirty_bitmap.parse_params(vm, params)
    error_context.context("add dirty bitmap")
    for bitmap_params in bitmaps:
        block_dirty_bitmap.block_dirty_bitmap_add(vm, bitmap_params)

    error_context.context("check bitmap existence", logging.info)
    check_bitmap_existence_as_expected(bitmaps, "existence")

    error_context.context("system powerdown", logging.info)
    vm.monitor.system_powerdown()
    if not vm.wait_for_shutdown(int(params.get("shutdown_timeout", 360))):
        test.fail("guest refuses to go down")

    error_context.context("start vm", logging.info)
    vm.create()
    vm.verify_alive()
    # wait till boot finishes
    vm.wait_for_login(timeout=int(params.get("login_timeout", 360))).close()

    error_context.context("check bitmap exsitence after shutdown",
                          logging.info)
    check_bitmap_existence_as_expected(bitmaps, "existence_after_shutdown")
Beispiel #4
0
 def merge_bitmap2_and_bitmap3_to_bitmap4(self):
     """merged bitmap2 and bitmap3 into bitmap4"""
     source_bitmaps, target_bitmap = ["bitmap_2", "bitmap_3"], "bitmap_4"
     args = {
         "bitmap_name": target_bitmap,
         "target_device": self.device,
         "disabled": "on"}
     block_dirty_bitmap.block_dirty_bitmap_add(self.vm, args)
     block_dirty_bitmap.block_dirty_bitmap_merge(
         self.vm, self.device, source_bitmaps, target_bitmap)
     time.sleep(5)
Beispiel #5
0
    def _handle_bitmaps(self, disabled_list, new_list, **extra):
        for idx, bitmap in enumerate(disabled_list):
            block_dirty_bitmap.block_dirty_bitmap_disable(
                self.main_vm, self.source_images[idx], bitmap)

        for idx, bitmap in enumerate(new_list):
            bitmap_params = {}
            bitmap_params['bitmap_name'] = bitmap
            bitmap_params['target_device'] = self.source_images[idx]
            bitmap_params['disabled'] = extra.pop('disabled', 'off')
            block_dirty_bitmap.block_dirty_bitmap_add(self.main_vm,
                                                      bitmap_params)

        merged_list = extra.pop('merged_list', [])
        for idx, target in enumerate(merged_list):
            src_list = [v[idx] for v in extra.values()]
            block_dirty_bitmap.block_dirty_bitmap_merge(
                self.main_vm, self.source_images[idx], src_list, target)
 def add_bitmaps(self):
     args = {'target_device': self._source_nodes[0], 'persistent': 'on'}
     if self._granularities:
         for granularity in self._granularities:
             g = int(normalize_data_size(granularity, "B"))
             args.update({
                 'bitmap_name': 'bitmap_%s' % g,
                 'bitmap_granularity': g
             })
             block_dirty_bitmap_add(self.main_vm, args)
     else:
         max_len = self.params.get_numeric('max_bitmap_name_len')
         for i in range(self.params.get_numeric('bitmap_count')):
             l = max_len - len(str(i))
             args['bitmap_name'] = process.run(
                 self.params['create_bitmap_name_cmd'].format(length=l),
                 ignore_status=True,
                 shell=True).stdout.decode().strip() + str(i)
             block_dirty_bitmap_add(self.main_vm, args)
 def add_bitmap(self, node_name):
     bitmap = "bitmap_%s" % node_name
     kargs = {'bitmap_name': bitmap, 'target_device': node_name}
     bitmap_handle.block_dirty_bitmap_add(self.main_vm, kargs)
     self.bitmap_list.append(kargs)
 def track_file3_with_bitmap5(self):
     """track file3 with bitmap5"""
     args = {"bitmap_name": "bitmap_5", "target_device": self.device}
     block_dirty_bitmap.block_dirty_bitmap_add(self.vm, args)
     full_name = "%s/file3" % self.params.get("mount_point", "/mnt")
     self.create_file(full_name)
Beispiel #9
0
 def add_bitmap(self):
     kargs = {
         'bitmap_name': self._bitmaps[0],
         'target_device': self._source_nodes[0]
     }
     block_dirty_bitmap_add(self.main_vm, kargs)
 def add_one_bitmap(self):
     args = {
         'target_device': self._source_nodes[0],
         'bitmap_name': self._merged_bitmaps[0]
     }
     block_dirty_bitmap_add(self.main_vm, args)