Re: [Autotest] [KVM-AUTOTEST PATCH v2] KVM test: migration_with_file_transfer: verify transfer correctness

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

 



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.

>  > Signed-off-by: Michael Goldish <mgoldish@xxxxxxxxxx>
>  > ---
>  >  .../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@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


[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