Re: [KVM-AUTOTEST PATCH 1/2] KVM test: add shutdown test

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



----- "jason wang" <jasowang@xxxxxxxxxx> wrote:

> Hello Michael:
> 
> The shutdown case is useful but the patch does really similar work to
> vm.destroy(). Maybe we could simple let the preprocess progress to
> shutdown all the vms just like:
> 
>     - shutdown:      install setup
>         vms = ''

That will shut them all down, but it won't report the results, so
the test will always pass.  I thought it wouldn't hurt to have an actual
test that shuts the guest down.  If the test fails to shut down nicely,
the postprocessor will take over and shut down with a 'quit'.

> Michael Goldish 写道:
> > The shutdown test logs into a VM and sends a shutdown command.
> > It serves two purposes:
> > - Test KVM's ability to shut down.
> > - Clean up after the other tests:
> > Currently VMs of the last test remain alive when Autotest finishes
> running.
> > When one guest finishes testing and another begins, the VM is
> automatically
> > shut down by the preprocessor because the QEMU command required for
> the next
> > guest differs from that of the guest that just finished.  In the
> case of the
> > final guest this doesn't happen because no guest follows it, so the
> preprocessor
> > must be explicitly instructed to kill the VM.
> > However, we have no easy way of knowing which test runs last because
> the user
> > usually selects a subset of the tests/guests.
> > The addition of a shutdown test can be a decent solution to this
> small problem:
> > by convention the shutdown test will always be the last to run, and
> if users
> > wish to clean up after the tests, they must select the shutdown
> test.
> >
> > Note: it is beneficial to allow users to leave the VMs of the last
> test running
> > because it saves time when developing and testing tests. A test
> writer can run
> > the test once on a VM, and when the test exits, make some
> modifications to its
> > code and re-run it on the same living VM, and repeat this procedure
> without
> > having to shutdown/boot the VM every time.
> >
> > Signed-off-by: Michael Goldish <mgoldish@xxxxxxxxxx>
> > ---
> >  client/tests/kvm/kvm.py       |    1 +
> >  client/tests/kvm/kvm_tests.py |   37
> +++++++++++++++++++++++++++++++++++++
> >  2 files changed, 38 insertions(+), 0 deletions(-)
> >
> > diff --git a/client/tests/kvm/kvm.py b/client/tests/kvm/kvm.py
> > index 9428162..aa727da 100644
> > --- a/client/tests/kvm/kvm.py
> > +++ b/client/tests/kvm/kvm.py
> > @@ -48,6 +48,7 @@ class kvm(test.test):
> >                  "steps":        test_routine("kvm_guest_wizard",
> "run_steps"),
> >                  "stepmaker":    test_routine("stepmaker",
> "run_stepmaker"),
> >                  "boot":         test_routine("kvm_tests",
> "run_boot"),
> > +                "shutdown":     test_routine("kvm_tests",
> "run_shutdown"),
> >                  "migration":    test_routine("kvm_tests",
> "run_migration"),
> >                  "yum_update":   test_routine("kvm_tests",
> "run_yum_update"),
> >                  "autotest":     test_routine("kvm_tests",
> "run_autotest"),
> > diff --git a/client/tests/kvm/kvm_tests.py
> b/client/tests/kvm/kvm_tests.py
> > index ffe9116..4c9653f 100644
> > --- a/client/tests/kvm/kvm_tests.py
> > +++ b/client/tests/kvm/kvm_tests.py
> > @@ -57,6 +57,43 @@ def run_boot(test, params, env):
> >      session.close()
> >  
> >  
> > +def run_shutdown(test, params, env):
> > +    """
> > +    KVM shutdown test:
> > +    1) Log into a guest
> > +    2) Send a shutdown command to the guest
> > +    3) Wait until it's down
> > +
> > +    @param test: kvm test object
> > +    @param params: Dictionary with the test parameters
> > +    @param env: Dictionary with test environment
> > +    """
> > +    vm = kvm_utils.env_get_vm(env, params.get("main_vm"))
> > +    if not vm:
> > +        raise error.TestError("VM object not found in
> environment")
> > +    if not vm.is_alive():
> > +        raise error.TestError("VM seems to be dead; Test requires a
> living VM")
> > +
> > +    logging.info("Waiting for guest to be up...")
> > +
> > +    session = kvm_utils.wait_for(vm.ssh_login, 240, 0, 2)
> > +    if not session:
> > +        raise error.TestFail("Could not log into guest")
> > +
> > +    logging.info("Logged in")
> > +
> > +    # Send the VM's shutdown command
> > +    session.sendline(vm.get_params().get("cmd_shutdown"))
> > +    session.close()
> > +
> > +    logging.info("Shutdown command sent; waiting for guest to go
> down...")
> > +
> > +    if not kvm_utils.wait_for(vm.is_dead, 120, 0, 1):
> > +        raise error.TestFail("Guest refuses to go down")
> > +
> > +    logging.info("Guest is down")
> > +
> > +
> >  def run_migration(test, params, env):
> >      """
> >      KVM migration test:
> >
--
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

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux