[KVM-AUTOTEST PATCH 08/28] KVM test: migration_with_file_transfer: verify transfer correctness

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

 



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.

Signed-off-by: Michael Goldish <mgoldish@xxxxxxxxxx>
---
 .../kvm/tests/migration_with_file_transfer.py      |   34 +++++++++++++++++---
 1 files changed, 29 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..6a2ab06 100644
--- a/client/tests/kvm/tests/migration_with_file_transfer.py
+++ b/client/tests/kvm/tests/migration_with_file_transfer.py
@@ -35,15 +35,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 +58,32 @@ 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, 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 = utils.hash_file(host_path)
+        returned_hash = utils.hash_file(host_path_returned)
+        if orig_hash != returned_hash:
+            raise error.TestFail("Returned file differs from original one")
 
     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.3

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