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?

 > >  > Signed-off-by: Michael Goldish <mgold...@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
 > >  > autot...@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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to