public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Michael Goldish <mgoldish@redhat.com>
To: Jason Wang <jasowang@redhat.com>
Cc: autotest@test.kernel.org, kvm@vger.kernel.org
Subject: Re: [KVM-AUTOTEST PATCH v2] KVM test:	migration_with_file_transfer: verify transfer correctness
Date: Tue, 28 Dec 2010 16:08:07 +0200	[thread overview]
Message-ID: <4D19EF47.6090504@redhat.com> (raw)
In-Reply-To: <19737.59083.928209.704387@gargle.gargle.HOWL>

On 12/28/2010 03:31 PM, Jason Wang wrote:
> Michael Goldish writes:
>  > On 12/28/2010 02:38 PM, Jason Wang wrote:
>  > > Michael Goldish writes:
>  > >  > After the transfer, copy the file back from the guest to the host and make sure
>  > >  > the returned file is identical to the one sent to the guest.
>  > >  > 
>  > >  > Changes from v1:
>  > >  > - hash_file() is in autotest_lib.client.bin.utils, so import that as
>  > >  >   client_utils.
>  > >  > - Pass host_path_returned (not host_path) to copy_files_from().
>  > >  > 
>  > > 
>  > > Looks good to me.
>  > 
>  > BTW, not sure if you've ever noticed, but this test fails consistently
>  > on a very recent qemu-kvm: the returned file's MD5 hash always differs
>  > from the original one.  Either I'm doing something wrong or there's a
>  > bug in qemu-kvm.
>  > 
> 
> Not notice yet and I would have a look at this, which kind of model did you use?

rtl8139 on Fedora 12 64.  I haven't tried virtio or Windows yet.

>  > >  > Signed-off-by: Michael Goldish <mgoldish@redhat.com>
>  > >  > ---
>  > >  >  .../kvm/tests/migration_with_file_transfer.py      |   37 +++++++++++++++++---
>  > >  >  1 files changed, 32 insertions(+), 5 deletions(-)
>  > >  > 
>  > >  > diff --git a/client/tests/kvm/tests/migration_with_file_transfer.py b/client/tests/kvm/tests/migration_with_file_transfer.py
>  > >  > index 73e70b9..d311350 100644
>  > >  > --- a/client/tests/kvm/tests/migration_with_file_transfer.py
>  > >  > +++ b/client/tests/kvm/tests/migration_with_file_transfer.py
>  > >  > @@ -1,5 +1,6 @@
>  > >  >  import logging, time, os
>  > >  >  from autotest_lib.client.common_lib import utils, error
>  > >  > +from autotest_lib.client.bin import utils as client_utils
>  > >  >  import kvm_subprocess, kvm_test_utils, kvm_utils
>  > >  >  
>  > >  >  
>  > >  > @@ -35,15 +36,16 @@ def run_migration_with_file_transfer(test, params, env):
>  > >  >                      (vm.name, address,
>  > >  >                       kvm_utils.generate_random_string(4)))
>  > >  >      host_path = "/tmp/file-%s" % kvm_utils.generate_random_string(6)
>  > >  > +    host_path_returned = "%s-returned" % host_path
>  > >  >      guest_path = params.get("guest_path", "/tmp/file")
>  > >  > -    file_size = params.get("file_size", "1000")
>  > >  > +    file_size = params.get("file_size", "500")
>  > >  >      transfer_timeout = int(params.get("transfer_timeout", "240"))
>  > >  >  
>  > >  >      try:
>  > >  > -        utils.run("dd if=/dev/zero of=%s bs=1M count=%s" % (host_path,
>  > >  > -                                                            file_size))
>  > >  > +        utils.run("dd if=/dev/urandom of=%s bs=1M count=%s" % (host_path,
>  > >  > +                                                               file_size))
>  > >  >  
>  > >  > -        # Transfer file from host to guest in the backgroud
>  > >  > +        logging.info("Transferring file from host to guest")
>  > >  >          bg = kvm_utils.Thread(kvm_utils.copy_files_to,
>  > >  >                                (address, client, username, password, port,
>  > >  >                                 host_path, guest_path, log_filename,
>  > >  > @@ -57,9 +59,34 @@ def run_migration_with_file_transfer(test, params, env):
>  > >  >          finally:
>  > >  >              # bg.join() returns the value returned by copy_files_to()
>  > >  >              if not bg.join():
>  > >  > -                raise error.TestFail("File transfer failed")
>  > >  > +                raise error.TestFail("File transfer from host to guest failed")
>  > >  > +
>  > >  > +        logging.info("Transferring file back from guest to host")
>  > >  > +        bg = kvm_utils.Thread(kvm_utils.copy_files_from,
>  > >  > +                              (address, client, username, password, port,
>  > >  > +                               host_path_returned, guest_path, log_filename,
>  > >  > +                               transfer_timeout))
>  > >  > +        bg.start()
>  > >  > +        try:
>  > >  > +            while bg.is_alive():
>  > >  > +                logging.info("File transfer not ended, starting a round of "
>  > >  > +                             "migration...")
>  > >  > +                vm = kvm_test_utils.migrate(vm, env, mig_timeout, mig_protocol)
>  > >  > +        finally:
>  > >  > +            if not bg.join():
>  > >  > +                raise error.TestFail("File transfer from guest to host failed")
>  > >  > +
>  > >  > +        # Make sure the returned file is indentical to the original one
>  > >  > +        orig_hash = client_utils.hash_file(host_path)
>  > >  > +        returned_hash = client_utils.hash_file(host_path_returned)
>  > >  > +        if orig_hash != returned_hash:
>  > >  > +            raise error.TestFail("Returned file hash (%s) differs from "
>  > >  > +                                 "original one (%s)" % (returned_hash,
>  > >  > +                                                        orig_hash))
>  > >  >  
>  > >  >      finally:
>  > >  >          session.close()
>  > >  >          if os.path.isfile(host_path):
>  > >  >              os.remove(host_path)
>  > >  > +        if os.path.isfile(host_path_returned):
>  > >  > +            os.remove(host_path_returned)
>  > >  > -- 
>  > >  > 1.7.3.4
>  > >  > 
>  > >  > _______________________________________________
>  > >  > Autotest mailing list
>  > >  > Autotest@test.kernel.org
>  > >  > 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@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

      reply	other threads:[~2010-12-28 14:08 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-27 22:54 [KVM-AUTOTEST PATCH v2] KVM test: migration_with_file_transfer: verify transfer correctness Michael Goldish
2010-12-28 12:38 ` [Autotest] " Jason Wang
2010-12-28 12:55   ` Michael Goldish
2010-12-28 13:31     ` Jason Wang
2010-12-28 14:08       ` Michael Goldish [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D19EF47.6090504@redhat.com \
    --to=mgoldish@redhat.com \
    --cc=autotest@test.kernel.org \
    --cc=jasowang@redhat.com \
    --cc=kvm@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox