53 lines
2 KiB
Python
53 lines
2 KiB
Python
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 filled up the disk")
|
|
filled = True;
|
|
elif s != 0:
|
|
raise error.TestFail("Command dd failed to execute: %s" % o)
|
|
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()
|