Ejemplo n.º 1
0
    def balloon_memory(vm, device_path, mem_check):
        """
        Doing memory balloon in a loop and check memory status during balloon.

        :param vm: VM object.
        :param device_path: balloon polling path.
        :param mem_check: need to do memory check if param mem_check is 'yes'
        """
        repeat_times = int(params.get("repeat_times", 5))
        logging.info("repeat times: %d" % repeat_times)

        if params['os_type'] == 'windows':
            balloon_test = BallooningTestWin(test, params, env)
        else:
            balloon_test = BallooningTestLinux(test, params, env)
        min_sz, max_sz = balloon_test.get_memory_boundary()
        while repeat_times:
            for tag in params.objects('test_tags'):
                error_context.context("Running %s test" % tag, logging.info)
                params_tag = params.object_params(tag)
                balloon_type = params_tag['balloon_type']
                if balloon_type == 'evict':
                    expect_mem = int(
                        random.uniform(min_sz,
                                       balloon_test.get_ballooned_memory()))
                else:
                    expect_mem = int(
                        random.uniform(balloon_test.get_ballooned_memory(),
                                       max_sz))

                quit_after_test = balloon_test.run_ballooning_test(
                    expect_mem, tag)
                time.sleep(20)
                get_polling_output = vm.monitor.qom_get(
                    device_path, get_balloon_property)
                time.sleep(20)
                if mem_check == "yes":
                    memory_check(vm, get_polling_output, 'stat-free-memory')
                if quit_after_test:
                    return

            repeat_times -= 1
Ejemplo n.º 2
0
    def balloon_memory(vm, device_path, mem_check):
        """
        Doing memory balloon in a loop and check memory status during balloon.

        :param vm: VM object.
        :param device_path: balloon polling path.
        :param mem_check: need to do memory check if param mem_check is 'yes'
        """
        repeat_times = int(params.get("repeat_times", 5))
        logging.info("repeat times: %d" % repeat_times)

        if params['os_type'] == 'windows':
            balloon_test = BallooningTestWin(test, params, env)
        else:
            balloon_test = BallooningTestLinux(test, params, env)
        min_sz, max_sz = balloon_test.get_memory_boundary()
        while repeat_times:
            for tag in params.objects('test_tags'):
                error_context.context("Running %s test" % tag, logging.info)
                params_tag = params.object_params(tag)
                balloon_type = params_tag['balloon_type']
                if balloon_type == 'evict':
                    expect_mem = int(random.uniform(min_sz,
                                                    balloon_test.get_ballooned_memory()))
                else:
                    expect_mem = int(random.uniform(
                        balloon_test.get_ballooned_memory(), max_sz))

                quit_after_test = balloon_test.run_ballooning_test(expect_mem,
                                                                   tag)
                time.sleep(20)
                get_polling_output = vm.monitor.qom_get(device_path,
                                                        get_balloon_property)
                time.sleep(20)
                if mem_check == "yes":
                    memory_check(vm, get_polling_output, 'stat-free-memory')
                if quit_after_test:
                    return

            repeat_times -= 1
Ejemplo n.º 3
0
def run(test, params, env):
    """
    Balloon negative test, balloon windows guest memory to very small value.
    1) boot a guest with balloon device.
    2) enable and check driver verifier in guest.
    3) evict guest memory to 10M.
    4) repeat step 3 for many times.
    5) check guest free memory.

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

    error_context.context("Boot guest with balloon device", logging.info)
    vm = env.get_vm(params["main_vm"])
    session = vm.wait_for_login()
    driver_name = params.get("driver_name", "balloon")
    session = utils_test.qemu.windrv_check_running_verifier(session, vm,
                                                            test, driver_name)
    balloon_test = BallooningTestWin(test, params, env)
    expect_mem = int(params["expect_memory"])
    balloon_test.pre_mem = balloon_test.get_ballooned_memory()
    balloon_test.pre_gmem = balloon_test.get_memory_status()
    repeat_times = int(params.get("repeat_times", 10))

    while repeat_times:
        try:
            balloon_test.vm.balloon(expect_mem)
        except QMPEventError:
            pass
        balloon_test._balloon_post_action()
        time.sleep(30)
        repeat_times -= 1

    ballooned_memory = expect_mem - balloon_test.pre_mem
    balloon_test.memory_check("after balloon guest memory 10 times", ballooned_memory)
    session.close()