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<[email protected]> > Signed-off-by: Amos Kong<[email protected]> > --- > 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 > + > + > [email protected]_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 > [email protected] > http://test.kernel.org/cgi-bin/mailman/listinfo/autotest _______________________________________________ Autotest mailing list [email protected] http://test.kernel.org/cgi-bin/mailman/listinfo/autotest
