From patchwork Mon Dec 27 22:54:21 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Goldish X-Patchwork-Id: 435311 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id oBRMsSAo023141 for ; Mon, 27 Dec 2010 22:54:30 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752430Ab0L0WyF (ORCPT ); Mon, 27 Dec 2010 17:54:05 -0500 Received: from mx1.redhat.com ([209.132.183.28]:41860 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752188Ab0L0WyD (ORCPT ); Mon, 27 Dec 2010 17:54:03 -0500 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id oBRMs2An015044 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 27 Dec 2010 17:54:02 -0500 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id oBRMs1sB028305; Mon, 27 Dec 2010 17:54:01 -0500 Received: from moof.tlv.redhat.com (dhcp-1-185.tlv.redhat.com [10.35.1.185]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id oBRMrxgB023188; Mon, 27 Dec 2010 17:54:00 -0500 From: Michael Goldish To: autotest@test.kernel.org, kvm@vger.kernel.org Cc: Michael Goldish Subject: [KVM-AUTOTEST PATCH v2] KVM test: migration_with_file_transfer: verify transfer correctness Date: Tue, 28 Dec 2010 00:54:21 +0200 Message-Id: <1293490461-27987-1-git-send-email-mgoldish@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Mon, 27 Dec 2010 22:54:30 +0000 (UTC) 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)