public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Lucas Meneghel Rodrigues <lmr@redhat.com>
To: autotest@test.kernel.org
Cc: kvm@vger.kernel.org
Subject: [PATCH 2/2] KVM-test: Add image_copy subtest to prepare images
Date: Wed, 29 Dec 2010 12:35:48 -0200	[thread overview]
Message-ID: <1293633348-7188-3-git-send-email-lmr@redhat.com> (raw)
In-Reply-To: <1293633348-7188-1-git-send-email-lmr@redhat.com>

From: Amos Kong <akong@redhat.com>

image_copy is used to copy guests' images from NFS server to test
machines. It takes too much time for installing guests everytime.
You can config NFS server directory in tests_base.cfg.

Changes from v1:
- Make better use of autotest API to control subprocesses
- Do not use hardcoded images location. Instead, use the
final destination of the image that is going to be used
by the other tests anyway.

Signed-off-by: Amos Kong <akong@redhat.com>
---
 client/tests/kvm/tests/image_copy.py   |   46 ++++++++++++++++++++++++++++++++
 client/tests/kvm/tests_base.cfg.sample |    9 ++++++
 2 files changed, 55 insertions(+), 0 deletions(-)
 create mode 100644 client/tests/kvm/tests/image_copy.py

diff --git a/client/tests/kvm/tests/image_copy.py b/client/tests/kvm/tests/image_copy.py
new file mode 100644
index 0000000..87bafea
--- /dev/null
+++ b/client/tests/kvm/tests/image_copy.py
@@ -0,0 +1,46 @@
+import os, logging, commands
+from autotest_lib.client.common_lib import error
+from autotest_lib.client.bin import utils
+import kvm_utils
+
+
+def run_image_copy(test, params, env):
+    """
+    Copy guest images from nfs server.
+    1) Mount the NFS share directory
+    2) Check the existence of source image
+    3) If it exists, copy the image from NFS
+
+    @param test: kvm test object
+    @param params: Dictionary with the test parameters
+    @param env: Dictionary with test environment.
+    """
+    mount_dest_dir = params.get('dst_dir', '/mnt/images')
+    if not os.path.exists(mount_dest_dir):
+        try:
+            os.makedirs(mount_dest_dir)
+        except OSError, err:
+            logging.warning('mkdir %s error:\n%s', mount_dest_dir, err)
+
+    if not os.path.exists(mount_dest_dir):
+        raise error.TestError('Failed to create NFS share dir %s' %
+                              mount_dest_dir)
+
+    src = params.get('images_good')
+    mnt_cmd = 'mount %s %s -o ro' % (src, mount_dest_dir)
+    image = '%s.%s' % (os.path.split(params['image_name'])[1],
+                       params['image_format'])
+    src_path = os.path.join(mount_dest_dir, image)
+    dst_path = '%s.%s' % (params['image_name'], params['image_format'])
+    cmd = 'cp %s %s' % (src_path, dst_path)
+
+    if not kvm_utils.mount(src, mount_dest_dir, 'nfs', 'ro'):
+        raise error.TestError('Could not mount NFS share %s to %s' %
+                              (src, mount_dest_dir))
+
+    # Check the existence of source image
+    if not os.path.exists(src_path):
+        raise error.TestError('Could not find %s in NFS share' % src_path)
+
+    logging.debug('Copying image %s...' % image)
+    utils.system(cmd)
diff --git a/client/tests/kvm/tests_base.cfg.sample b/client/tests/kvm/tests_base.cfg.sample
index d3275c8..1a260b4 100644
--- a/client/tests/kvm/tests_base.cfg.sample
+++ b/client/tests/kvm/tests_base.cfg.sample
@@ -63,6 +63,9 @@ profilers = kvm_stat
 login_timeout = 360
 image_raw_device = no
 
+# NFS directory of guests' images
+images_good = 0.0.0.0:/autotest/images_good
+
 # Tests
 variants:
     - install:
@@ -75,6 +78,12 @@ variants:
         kill_vm_timeout = 60
         kill_vm_timeout_on_error = 0
 
+    - image_copy:
+        type = image_copy
+        vms = ''
+        parallel = no
+        profilers =
+
     - setup:        install
         type = steps
         fail_if_stuck_for = 300
-- 
1.7.2.3

  parent reply	other threads:[~2010-12-29 14:35 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-29 14:35 [PATCH 0/2] KVM test: Image copy test v2 Lucas Meneghel Rodrigues
2010-12-29 14:35 ` [PATCH 1/2] KVM-test: Add mount utility functions Lucas Meneghel Rodrigues
2010-12-29 14:35 ` Lucas Meneghel Rodrigues [this message]
2010-12-29 15:24 ` [PATCH 0/2] KVM test: Image copy test v2 Lucas Meneghel Rodrigues

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1293633348-7188-3-git-send-email-lmr@redhat.com \
    --to=lmr@redhat.com \
    --cc=autotest@test.kernel.org \
    --cc=kvm@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox