1import logging, os
2from autotest_lib.client.common_lib import error
3from autotest_lib.client.bin import utils
4
5
6def run_clock_getres(test, params, env):
7    """
8    Verify if guests using kvm-clock as the time source have a sane clock
9    resolution.
10
11    @param test: kvm test object.
12    @param params: Dictionary with test parameters.
13    @param env: Dictionary with the test environment.
14    """
15    source_name = "test_clock_getres/test_clock_getres.c"
16    source_name = os.path.join(test.bindir, "deps", source_name)
17    dest_name = "/tmp/test_clock_getres.c"
18    bin_name = "/tmp/test_clock_getres"
19
20    if not os.path.isfile(source_name):
21        raise error.TestError("Could not find %s" % source_name)
22
23    vm = env.get_vm(params["main_vm"])
24    vm.verify_alive()
25    timeout = int(params.get("login_timeout", 360))
26    session = vm.wait_for_login(timeout=timeout)
27
28    vm.copy_files_to(source_name, dest_name)
29    session.cmd("gcc -lrt -o %s %s" % (bin_name, dest_name))
30    session.cmd(bin_name)
31    logging.info("PASS: Guest reported appropriate clock resolution")
32    logging.info("Guest's dmesg:\n%s", session.cmd_output("dmesg").strip())
33