Hi Shuxi, sorry that it took so long before I could give you return on this one. The general idea is just fine, but there is one gotcha that will need more thought: This is dependent of having the KVM source code for testing (ie, it depends on the build test *and* the build mode has to involve source code, such as git builds, things like koji install will also not work). Since by default we are not making the tests depending directly on build, so we have to figure out a way to have this integrated without breaking things for users who are not interested to run the build test. Today I was reviewing the qemu-img functional test, so it occurred to me that all those tests that do not depend on guests and different qemu command line options, we can make them all dependent on the build test. This way we'd have the separation that we need, still not breaking anything for users that do not care about build and other types of test. Michael, what do you think? Should we put the config of tests like this one and qemu_img on build.cfg, making them depend on build? Oh Shuxi, on the code below I have some small comments to make: On Fri, Mar 5, 2010 at 3:22 AM, sshang <sshang@xxxxxxxxxx> wrote: > The test use kvm test harness kvmctl load binary test case file to test various function of kvm kernel module. > > Signed-off-by: sshang <sshang@xxxxxxxxxx> > --- > client/tests/kvm/tests/unit_test.py | 29 +++++++++++++++++++++++++++++ > client/tests/kvm/tests_base.cfg.sample | 7 +++++++ > 2 files changed, 36 insertions(+), 0 deletions(-) > create mode 100644 client/tests/kvm/tests/unit_test.py > > diff --git a/client/tests/kvm/tests/unit_test.py b/client/tests/kvm/tests/unit_test.py > new file mode 100644 > index 0000000..9bc7441 > --- /dev/null > +++ b/client/tests/kvm/tests/unit_test.py > @@ -0,0 +1,29 @@ > +import os > +from autotest_lib.client.bin import utils > +from autotest_lib.client.common_lib import error > + > +def run_unit_test(test, params, env): > + """ > + This is kvm userspace unit test, use kvm test harness kvmctl load binary > + test case file to test various function of kvm kernel module. > + The output of all unit test can be found in the test result dir. > + """ > + > + case_list = params.get("case_list","access apic emulator hypercall irq"\ > + " port80 realmode sieve smptest tsc stringio vmexit").split() > + srcdir = params.get("srcdir",test.srcdir) > + user_dir = os.path.join(srcdir,"kvm_userspace/kvm/user") > + os.chdir(user_dir) > + test_fail_list = [] > + > + for i in case_list: > + result_file = test.outputdir + "/" + i > + testfile = i + ".flat" > + results = utils.system("./kvmctl test/x86/bootstrap test/x86/" + \ > + testfile + " > " + result_file,ignore_status=True) About the above statement: In general you should not use shell redirection to write the output of your program to the log files. Please take advantage of the fact utils.run allow you to connect stdout and stderr pipes to the result file. Also, utils.run return a CmdResult object, hat has a list of useful properties out of it. > + if results != 0: > + test_fail_list.append(i) > + > + if test_fail_list: > + raise error.TestFail("< " + " ".join(test_fail_list) + \ > + " >") In the above, you could just have used raise error.TestFail("KVM module unit test failed. Test cases failed: %s" % test_fail_list) IMHO it's easier to understand. > diff --git a/client/tests/kvm/tests_base.cfg.sample b/client/tests/kvm/tests_base.cfg.sample > index 040d0c3..0918c26 100644 > --- a/client/tests/kvm/tests_base.cfg.sample > +++ b/client/tests/kvm/tests_base.cfg.sample > @@ -300,6 +300,13 @@ variants: > shutdown_method = shell > kill_vm = yes > kill_vm_gracefully = no > + > + - unit_test: > + type = unit_test > + case_list = access apic emulator hypercall msr port80 realmode sieve smptest tsc stringio vmexit > + #srcdir should be same as build.cfg > + srcdir = > + vms = '' > # Do not define test variants below shutdown > > > -- > 1.5.5.6 > > _______________________________________________ > Autotest mailing list > Autotest@xxxxxxxxxxxxxxx > http://test.kernel.org/cgi-bin/mailman/listinfo/autotest > -- Lucas -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html