On Wed, 2011-05-18 at 10:11 +0800, Qingtang Zhou wrote:
> The main purpose of this case is to expand the qcow2 file to its max size.
> Currently we only support Linux guest and write specified size /dev/zero
> to files under /tmp.

Hey guys, good work, applied:

http://autotest.kernel.org/changeset/5372

> Signed-off-by: Feng Yang <[email protected]>
> Signed-off-by: Cao, Chen
> Signed-off-by: Yolkfull Chow
> Signed-off-by: Qingtang Zhou <[email protected]>
> ---
>  client/tests/kvm/tests_base.cfg.sample |   17 ++++++++++
>  client/virt/tests/fillup_disk.py       |   56 
> ++++++++++++++++++++++++++++++++
>  2 files changed, 73 insertions(+), 0 deletions(-)
>  create mode 100644 client/virt/tests/fillup_disk.py
> 
> diff --git a/client/tests/kvm/tests_base.cfg.sample 
> b/client/tests/kvm/tests_base.cfg.sample
> index 78c84c6..0d72d29 100644
> --- a/client/tests/kvm/tests_base.cfg.sample
> +++ b/client/tests/kvm/tests_base.cfg.sample
> @@ -866,6 +866,15 @@ variants:
>          profilers = ''
>          take_regular_screendumps = no
>  
> +    - fillup_disk:
> +        only Linux
> +        only qcow2
> +        type = fillup_disk
> +        fillup_timeout = 120
> +        fillup_size = 200
> +        fillup_cmd = "dd if=/dev/zero of=/%s/fillup.%d bs=%dM count=1 
> oflag=direct"
> +        kill_vm = yes
> +
>      - ioquit:
>          only Linux
>          type = ioquit
> @@ -1641,6 +1650,8 @@ variants:
>                              cdrom_cd1 = isos/linux/RHEL-4.7-i386-DVD.iso
>                              md5sum_cd1 = ee5092653732a88ddbaf8eef2484c500
>                              md5sum_1m_cd1 = 127081cbed825d7232331a2083975528
> +                        fillup_disk:
> +                            fillup_cmd = "dd if=/dev/zero of=/%s/fillup.%d 
> bs=%dM count=1"
>  
>                      - 4.7.x86_64:
>                          no setup autotest
> @@ -1660,6 +1671,8 @@ variants:
>                              cdrom_cd1 = isos/linux/RHEL-4.7-x86_64-DVD.iso
>                              md5sum_cd1 = ea9dae16dd86f7d94092d0e672333292
>                              md5sum_1m_cd1 = 58fa63eaee68e269f4cb1d2edf479792
> +                        fillup_disk:
> +                            fillup_cmd = "dd if=/dev/zero of=/%s/fillup.%d 
> bs=%dM count=1"
>  
>                      - 4.8.i386:
>                          no setup autotest
> @@ -1677,6 +1690,8 @@ variants:
>                          nicdriver_unload:
>                              readlink_command = readlink -f
>                              sys_path = "/sys/class/net/%s/driver"
> +                        fillup_disk:
> +                            fillup_cmd = "dd if=/dev/zero of=/%s/fillup.%d 
> bs=%dM count=1"
>  
> 
>                      - 4.8.x86_64:
> @@ -1695,6 +1710,8 @@ variants:
>                          nicdriver_unload:
>                              readlink_command = readlink -f
>                              sys_path = "/sys/class/net/%s/driver"
> +                        fillup_disk:
> +                            fillup_cmd = "dd if=/dev/zero of=/%s/fillup.%d 
> bs=%dM count=1"
>  
> 
>                      - 5.3.i386:
> diff --git a/client/virt/tests/fillup_disk.py 
> b/client/virt/tests/fillup_disk.py
> new file mode 100644
> index 0000000..25aade2
> --- /dev/null
> +++ b/client/virt/tests/fillup_disk.py
> @@ -0,0 +1,56 @@
> +import logging
> +from autotest_lib.client.common_lib import error
> +
> +def run_fillup_disk(test, params, env):
> +    """
> +    Fillup guest disk (root mount point) using dd if=/dev/zero,
> +    and then clean up (rm the big file). The main purpose of this case is to
> +    expand the qcow2 file to its max size.
> +
> +    Suggest to test rebooting vm after this test.
> +
> +    @param test: kvm test object
> +    @param params: Dictionary with the test parameters
> +    @param env: Dictionary with test environment.
> +    """
> +    vm = env.get_vm(params["main_vm"])
> +    vm.verify_alive()
> +    timeout = int(params.get("login_timeout", 360))
> +    session = vm.wait_for_login(timeout=timeout)
> +
> +    fillup_timeout = int(params.get("fillup_timeout"))
> +    fillup_size = int(params.get("fillup_size"))
> +    fill_dir = params.get("guest_testdir","/tmp")
> +    filled = False
> +    number = 0
> +
> +    try:
> +        logging.info("Start filling the disk in %s" % fill_dir)
> +        cmd = params.get("fillup_cmd")
> +        while not filled:
> +            # As we want to test the backing file, so bypass the cache
> +            tmp_cmd = cmd % (fill_dir, number, fillup_size)
> +            logging.debug(tmp_cmd)
> +            s, o = session.cmd_status_output(tmp_cmd, timeout=fillup_timeout)
> +            if "No space left on device" in o:
> +                logging.debug("Successfully fill up the disk")
> +                filled = True;
> +            elif s != 0:
> +                logging.error(o)
> +                raise error.TestFail("Unexpected results got from dd 
> command")
> +            number += 1
> +    finally:
> +        logging.info("Cleaning the temporary files...")
> +        while number >= 0:
> +            cmd = "rm -f /%s/fillup.%d" % (fill_dir, number)
> +            logging.debug(cmd)
> +            s, o = session.cmd_status_output(cmd)
> +            if s != 0:
> +                logging.error(o)
> +                raise error.TestFail("Failed to remove file %s: %s;"
> +                                     "guest may be unresponsive or "
> +                                     "command timeout" % (number, o))
> +            number -= 1
> +        session.close()
> +
> +    logging.info("Test finish successfully")


_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to