From: "Lukáš Doktor" <ldoktor@redhat.com>
To: Amos Kong <akong@redhat.com>
Cc: autotest@test.kernel.org, lmr@redhat.com, kvm@vger.kernel.org
Subject: Re: [Autotest] [PATCH] KVM-test: Add hdparm subtest
Date: Wed, 03 Aug 2011 16:19:07 +0200 [thread overview]
Message-ID: <4E3958DB.1000102@redhat.com> (raw)
In-Reply-To: <20110802033902.422.82801.stgit@t>
Reviewed, looks sane.
Lukáš
Dne 2.8.2011 05:39, Amos Kong napsal(a):
> This test uses 'hdparm' to set disk device to low/high
> performance status, and compare the reading speed.
> The emulated device should pass all the tests.
>
> Signed-off-by: Feng Yang<fyang@redhat.com>
> Signed-off-by: Amos Kong<akong@redhat.com>
> ---
> client/tests/kvm/tests/hdparm.py | 84 ++++++++++++++++++++++++++++++++
> client/tests/kvm/tests_base.cfg.sample | 13 +++++
> 2 files changed, 97 insertions(+), 0 deletions(-)
> create mode 100644 client/tests/kvm/tests/hdparm.py
>
> diff --git a/client/tests/kvm/tests/hdparm.py b/client/tests/kvm/tests/hdparm.py
> new file mode 100644
> index 0000000..79ce5db
> --- /dev/null
> +++ b/client/tests/kvm/tests/hdparm.py
> @@ -0,0 +1,84 @@
> +import re, logging
> +from autotest_lib.client.common_lib import error
> +
> +
> +@error.context_aware
> +def run_hdparm(test, params, env):
> + """
> + Test hdparm setting on linux guest os, this case will:
> + 1) Set/record parameters value of hard disk to low performance status.
> + 2) Perform device/cache read timings then record the results.
> + 3) Set/record parameters value of hard disk to high performance status.
> + 4) Perform device/cache read timings then compare two results.
> +
> + @param test: kvm test object
> + @param params: Dictionary with the test parameters
> + @param env: Dictionary with test environmen.
> + """
> +
> + def check_setting_result(set_cmd, timeout):
> + params = re.findall("(-[a-zA-Z])([0-9]*)", set_cmd)
> + disk = re.findall("(\/+[a-z]*\/[a-z]*$)", set_cmd)[0]
> + for (param, value) in params:
> + cmd = "hdparm %s %s" % (param, disk)
> + (s, output) = session.cmd_status_output(cmd, timeout)
> + if s != 0:
> + raise error.TestError("Fail to get %s parameter value\n"
> + "Output is: %s" % (param, output))
> + if value not in output:
> + raise error.TestFail("Fail to set %s parameter to value: %s"
> + % (param, value))
> +
> +
> + def perform_read_timing(disk, timeout, num=5):
> + results = 0
> + for i in range(num):
> + cmd = params.get("device_cache_read_cmd") % disk
> + (s, output) = session.cmd_status_output(cmd, timeout)
> + if s != 0:
> + raise error.TestFail("Fail to perform device/cache read"
> + " timings \nOutput is: %s\n" % output)
> + logging.info("Output of device/cache read timing check(%s of %s):"
> + " %s" % (i + 1, num, output))
> + (result, post) = re.findall("= *([0-9]*.+[0-9]*) ([a-zA-Z]*)",
> + output)[1]
> + if post == "kB":
> + result = float(result)/1024.0
> + results += float(result)
> + return results/num
> +
> + vm = env.get_vm(params["main_vm"])
> + vm.create()
> + session = vm.wait_for_login(timeout=int(params.get("login_timeout", 360)))
> + try:
> + timeout = float(params.get("cmd_timeout", 60))
> + cmd = params.get("get_disk_cmd")
> + (s, output) = session.cmd_status_output(cmd)
> + disk = output.strip()
> +
> + error.context("Setting hard disk to lower performance")
> + cmd = params.get("low_status_cmd") % disk
> + session.cmd(cmd, timeout)
> +
> + error.context("Checking hard disk keyval under lower performance")
> + check_setting_result(cmd, timeout)
> + low_result = perform_read_timing(disk, timeout)
> + logging.info("Buffered disk read speed under low performance"
> + " configuration: %s" % low_result)
> + error.context("Setting hard disk to higher performance")
> + cmd = params.get("high_status_cmd") % disk
> + session.cmd(cmd, timeout)
> +
> + error.context("Checking hard disk keyval under higher performance")
> + check_setting_result(cmd, timeout)
> + high_result = perform_read_timing(disk, timeout)
> + logging.info("Buffered disk read speed under high performance"
> + " configuration: %s" % high_result)
> + if not float(high_result)> float(low_result):
> + raise error.TestFail("High performance setting does not "
> + "increase read speed\n")
> + logging.debug("High performance setting increased read speed!")
> +
> + finally:
> + if session:
> + session.close()
> diff --git a/client/tests/kvm/tests_base.cfg.sample b/client/tests/kvm/tests_base.cfg.sample
> index d597b52..5491630 100644
> --- a/client/tests/kvm/tests_base.cfg.sample
> +++ b/client/tests/kvm/tests_base.cfg.sample
> @@ -1115,6 +1115,19 @@ variants:
> image_snapshot = yes
> only Linux
>
> + - hdparm:
> + type = hdparm
> + get_disk_cmd = \ls /dev/[vhs]da
> + low_status_cmd = hdparm -a64 -d0 -u0 %s
> + device_cache_read_cmd = hdparm -tT %s
> + high_status_cmd = hdparm -a256 -d1 -u1 %s
> + cmd_timeout = 540
> + only Linux
> + virtio_blk:
> + get_disk_cmd = \ls /dev/vda
> + low_status_cmd = hdparm -a32 -r0 %s
> + high_status_cmd = hdparm -a256 -r1 %s
> +
>
> # NICs
> variants:
>
> _______________________________________________
> Autotest mailing list
> Autotest@test.kernel.org
> http://test.kernel.org/cgi-bin/mailman/listinfo/autotest
next prev parent reply other threads:[~2011-08-03 14:19 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-02 3:39 [PATCH] KVM-test: Add hdparm subtest Amos Kong
2011-08-03 14:19 ` Lukáš Doktor [this message]
2011-08-03 23:40 ` Lucas Meneghel Rodrigues
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E3958DB.1000102@redhat.com \
--to=ldoktor@redhat.com \
--cc=akong@redhat.com \
--cc=autotest@test.kernel.org \
--cc=kvm@vger.kernel.org \
--cc=lmr@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox