On Wed, Sep 09, 2009 at 09:12:05PM +0300, Michael Goldish wrote: > This module is meant to reduce code size by performing common test procedures. > Generally, code here should look like test code. > More specifically: > - Functions in this module should raise exceptions if things go wrong > (unlike functions in kvm_utils.py and kvm_vm.py which report failure via > their returned values). > - Functions in this module may use logging.info(), in addition to > logging.debug() and logging.error(), to log messages the user may be > interested in (unlike kvm_utils.py and kvm_vm.py which use > logging.debug() for everything that isn't an error). > - Functions in this module typically use functions and classes from > lower-level modules (e.g. kvm_utils.py, kvm_vm.py, kvm_subprocess.py). > - Functions in this module should not be used by lower-level modules. > - Functions in this module should be used in the right context. > For example, a function should not be used where it may display > misleading or inaccurate info or debug messages. > > Signed-off-by: Michael Goldish <mgoldish@xxxxxxxxxx> > --- > client/tests/kvm/kvm_test_utils.py | 61 ++++++++++++++++++++++++++++++++++++ > 1 files changed, 61 insertions(+), 0 deletions(-) > create mode 100644 client/tests/kvm/kvm_test_utils.py > > diff --git a/client/tests/kvm/kvm_test_utils.py b/client/tests/kvm/kvm_test_utils.py > new file mode 100644 > index 0000000..39e92b9 > --- /dev/null > +++ b/client/tests/kvm/kvm_test_utils.py > @@ -0,0 +1,61 @@ > +import time, os, logging, re, commands > +from autotest_lib.client.common_lib import utils, error > +import kvm_utils, kvm_vm, kvm_subprocess > + > +""" > +High-level KVM test utility functions. > + > +This module is meant to reduce code size by performing common test procedures. > +Generally, code here should look like test code. > +More specifically: > + - Functions in this module should raise exceptions if things go wrong > + (unlike functions in kvm_utils.py and kvm_vm.py which report failure via > + their returned values). > + - Functions in this module may use logging.info(), in addition to > + logging.debug() and logging.error(), to log messages the user may be > + interested in (unlike kvm_utils.py and kvm_vm.py which use > + logging.debug() for anything that isn't an error). > + - Functions in this module typically use functions and classes from > + lower-level modules (e.g. kvm_utils.py, kvm_vm.py, kvm_subprocess.py). > + - Functions in this module should not be used by lower-level modules. > + - Functions in this module should be used in the right context. > + For example, a function should not be used where it may display > + misleading or inaccurate info or debug messages. > + > +@copyright: 2008-2009 Red Hat Inc. > +""" > + > + > +def get_living_vm(env, vm_name): > + """ > + Get a VM object from the environment and make sure it's alive. > + > + @param env: Dictionary with test environment. > + @param vm_name: Name of the desired VM object. > + @return: A VM object. > + """ > + vm = kvm_utils.env_get_vm(env, vm_name) > + if not vm: > + raise error.TestError("VM '%s' not found in environment" % vm_name) > + if not vm.is_alive(): > + raise error.TestError("VM '%s' seems to be dead; test requires a " > + "living VM" % vm_name) > + return vm > + > + > +def wait_for_login(vm, nic_index=0, timeout=240): > + """ > + Try logging into a VM repeatedly. Stop on success or when timeout expires. > + > + @param vm: VM object. > + @param nic_index: Index of NIC to access in the VM. > + @param timeout: Time to wait before giving up. > + @return: A shell session object. > + """ > + logging.info("Waiting for guest to be up...") > + session = kvm_utils.wait_for(lambda: vm.remote_login(nic_index=nic_index), > + timeout, 0, 2) > + if not session: > + raise error.TestFail("Could not log into guest") Hi Michael, I think we should also add a parameter 'vm_name' for wait_for_login(). On the assumption that we boot more than one VMs, it's hard to know which guest failed to login according to message above. What do you think? :-) > + logging.info("Logged in") > + return session > -- > 1.5.4.1 > > _______________________________________________ > Autotest mailing list > Autotest@xxxxxxxxxxxxxxx > http://test.kernel.org/cgi-bin/mailman/listinfo/autotest -- 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