From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dor Laor Subject: Re: kvm-autotest -- introducing kvm_runtest_2 Date: Thu, 05 Mar 2009 00:23:21 +0200 Message-ID: <49AEFF59.5030604@redhat.com> References: <49AADD81.1070207@redhat.com> <20090302174504.GH11777@us.ibm.com> <49AE42CE.7080105@redhat.com> <20090304181545.GM11777@us.ibm.com> Reply-To: dlaor@redhat.com Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Ryan Harper , Uri Lublin , KVM List To: sudhir kumar Return-path: Received: from mx2.redhat.com ([66.187.237.31]:41121 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753247AbZCDWXA (ORCPT ); Wed, 4 Mar 2009 17:23:00 -0500 In-Reply-To: Sender: kvm-owner@vger.kernel.org List-ID: sudhir kumar wrote: > On Wed, Mar 4, 2009 at 11:45 PM, Ryan Harper wrote: > >> * Uri Lublin [2009-03-04 02:59]: >> >>>> - it seems like the definition and rules ought to be separate from the >>>> last section which defines which tests to run (the fc8_quick area), so >>>> adding something as simple as include support to kvm_config.py would >>>> be sufficient to support a common definition file but different >>>> testing rules. >>>> >>> An include support is one way to do it. We thought of a different way, >>> which is >>> to add rules from the control file. So the control file would pick the >>> test-list >>> it wants to run. Your suggestion is simpler but you need both a config file >>> and >>> a control file to change the test-list. We need to change only the control >>> file. >>> >> OK, well, I viewed almost all of the test config file as static. The >> rules about guests, features, config variants, can change over time, but >> not that often which is what I was wanting an include of that mostly >> static data and then something else that picked which guests and tests >> to run. It does make sense for the control file to pick the set of >> tests, so I think we're in agreement, though I do think adding include >> support is still a good idea, but much lower on the priority list. >> >> >>>> - kvm_runtest_2 as mentioned doesn't mess with your host networking and >>>> relies on -net user and redir, would be good to plumb through -net tap >>>> support that can be configured instead of always using -net user >>>> >>> We want to add -net tap support, as that is what users usually use. >>> kvm_runtest does exactly that (a part of kvm_host.cfg). The drawbacks of >>> tap are >>> (among others): >>> - One must run tests as root, or play with sudo/chmod (True for /dev/kvm, >>> but >>> simpler) >>> - You have to a have a dhcpd around. kvm_runtest by default runs a local >>> dhcpd >>> to serve kvm guests (part of setup/cleanup tests). >>> - A bit more difficult to configure. >>> >>> >> I don't want to have the test *setup* tap and all of the infrastructure >> like dhcp, or dnsmasq... I just want to be able to configure whether a >> guest is launched with -net tap or -net user. kvm_runtest_2 punts on >> building and install kvm as well as the networking, which is a great >> idea, I just want to be flexible enough to run kvm_runtest_2 with -net >> tap as well as -net user. >> >> >> >>>> I noticed the references to the setup isos for windows that presumbly >>>> install cygwin telnetd/sshd, are those available? if the isos >>>> themselves aren't, if the build instructions are, that would be very >>>> useful. >>>> >>> You are right. We do have an installation iso images for telnetd/sshd. >>> I did not want to commit iso images. Also, I am not sure about licensing, >>> and I prefer that we would generate them on the user machine. We'll add the >>> build instructions to the wiki. >>> >> Agreed. Sounds like a plan. >> >> >>>> - guest install wizard using md5sum region matching ... ouch. This is >>>> quite fickle. I've seen different kvms generate different md5sum for >>>> the same region a couple of times. I know distributing screenshots of >>>> certain OSes is a grey area, but it would be nice to plumb through >>>> screenshot comparison and make that configurable. FWIW, I'll probably >>>> look at pulling the screenshot comparison bits from kvmtest and getting >>>> that integrated in kvm_runtest_2. >>>> >>> Creating a step file is not as easy as it seems, exactly for that reason. >>> > I agree here 100% as per my experience. > >>> One has to pick a part of the screenshot that only available when input is >>> expected and that would be consistent. We were thinking of replacing the >>> md5sum with a tiny compressed image of the part of the image that was >>> picked. >>> >> It isn't just that step file creation isn't easy is that even with a >> good stepfile with smart region boxes, md5sum can *still* fail because >> KVM renders one pixel in the region differently than the system where the >> original was created; this creates false positives failures. >> > I also have faced this issue. Even on the same system the step file > may fail. I saw few(though not frequent) situations where the same > md5sum passed in one time and failed in the other attempt. > Maybe we can do some type of graphic processing to the original bitmap to reduce its quality drastically, then do the md5sum. It won't be 100% process but can deal with most problems. Anyway I don't think we run into these issues here. As a rule of the thumb I like to first use kickstart files instead of step maker files when possible. It will take the timing issue out of the equation. It is very important for running the same test over plain qemu and kvm. Windows also has its version of it (answer files) so even the 'gui' OS can be used with it. >> >>> We had two other implementation for guest-wizard, one which only compares >>> two/three consecutive screendumps (problems with e.g. clock ticking), and >>> >> Right, I like the idea of the region selection in stepmaker, it lets us >> avoid areas which have VM specific info, like the device path or clock. >> I'd like to keep the current stepmaker and region code, what I'd like to >> see instead of just md5sum compare of the cropped region, to be able to >> plug in different comparisons. If a user does have screens from >> stepmaker available, guest_wizard could attempt to do screen compare >> like we do in kvmtests with match percentages. If no screens are >> available, fallback on md5 or some other comparison algorithm. >> > That sounds better. Yet none of my step files worked in one go. I > remember running my test and stepmaker parallelly and continue taking > screenshots untill one passes and putting that md5sum in the step > file. So at the end I was fully meshed up with respect to the cropped > images and I had no idea which cropped image corresponded to which > md5sum. > > Though the RHEL5.3 step files that I generated in the text mode > installation were quite strong. > > >>> one similar to kvmtest. The kvmtest way is to let the user create his/her >>> own screendumps to be used later. I did not want to add so many screendumps >>> images to the repository. Step-Maker keeps the images it uses, so we can >>> compare them upon failure. Step-Editor lets the user to change a single >>> barrier_2 step (or more) by looking at the original image and picking a >>> different area. >>> >> Agreed, I don't want to commit screens to the repo either, I just want >> to be able to use screens if a user has them available. >> >> > I have two questions with respect to stepfiles. > 1. The timeouts: Timeouts may fall short if a step file generated on a > high end machine is to be used on a very low config machine or > installing N virtual machines (say N ~ 50,100 etc) in parallel. > 2. If there are changes in KVM display in future the md5sum will fail. > So are we prepared for that? > > >>>> - a lot of the ssh and scp work to copy autotest client into a guest >>>> is already handled by autoserv >>>> >>> That is true, but we want to be able to run it as client test too. That way >>> a user does not have to install the server to run kvm tests on his/her >>> machine. >>> >> While true, we should try to use the existing server code for autotest >> install. >> >> >>>> - vm.py has a lot of infrastructure that should be integrated into >>>> autotest/server/kvm.py or possibly client-side common code to support >>>> the next comment >>>> >>> In the long term, there should be a client-server shared directory that >>> deals with kvm guests (letting the host-client be the server for kvm-guests >>> clients) >>> >> I believe client/common_lib is imported into server-side as common code, >> so moving kvm infrastructure bits there will allow server-side and any >> other client test to manipulate VM/KVM objects. >> >> >>>> - kvm_tests.py defines new tests as functions, each of these tests >>>> should be a separate client tests which sounds like a pain, but >>>> should allow for easier test composition and hopefully make it easier >>>> to add new tests that look like any other client side test with just >>>> the implementation.py and control file >>>> - this model moves toward eliminating kvm_runtest_2 and having a >>>> server-side generate a set of tests to run and spawning those on a >>>> target system. >>>> >>> I am not sure that I follow. Why implementing a test as a function is a >>> pain ? >>> >> Test as a function of course isn't a pain. What I meant was that if >> I've already have to guests and I just want to do a migration test, it >> would be nice to just be able to: >> >> % cd client/tests/kvm/migration >> % $AUTOTEST_BIN ./control >> >> I'd like to move away from tests eval-ing and exec-ing other tests; it >> just feels a little hacky and stands out versus other autotest client >> tests. >> >> We can probably table the discussion until we push patches at autotest >> and see what that community thinks of kvm_runtest_2 at that time. >> >> >> >>> The plan is to keep kvm_runtest_2 in the client side, but move the >>> configuration file + parser to the server (if one wants to dispatch test >>> from the server). The server can dispatch the client test (using >>> kvm_runtest_2 "test" + dictionary + tag). We have dependencies and we can >>> spread unrelated kvm tests among similar hosts (e.g install guest OS and >>> run tests for Fedora-10 64 bit on one machine, and install guest OS and run >>> tests for Windows-XP 32 bit on another). >>> >> Yeah, that sounds reasonable. >> >> >>> We may have to add hosts into the configuration file, or add it while >>> running (from the control file ?). We sure do not want to go back to the >>> way kvm_runtest works (playing with symbolic links so that autotest would >>> find and run the test), and we do not want too many kvm_test_NAME >>> directories under client/tests/ . >>> >> Agree with no symbolic links. If we move common kvm utils and objects >> to client/common_lib that avoids any of that hackery. >> >> On the dir structure, I agree we don't have to pollute client/tests with >> a ton of kvm_* tests. I'll look around upstream autotest and see if >> there is an other client side tests to use an example. >> >> >>>> I do still like the idea of having a client-side test that can just >>>> run on a developer/user's system to produce results without having to >>>> configure all of the autotest server-side bits. >>>> >>> Me too :-) >>> >>> Thanks for all the comments and suggestions, >>> >> Sure >> >> >> -- >> Ryan Harper >> Software Engineer; Linux Technology Center >> IBM Corp., Austin, Tx >> ryanh@us.ibm.com >> -- >> To unsubscribe from this list: send the line "unsubscribe kvm" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> >> > > > >