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