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@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 -- 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