All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: autotest@teset.kernel.org
Cc: lmr@redhat.com, kvm@vger.kernel.org
Subject: [RFC PATCH] KVM test: Introduce a command-line wrapper
Date: Wed, 17 Nov 2010 20:01:44 +0800	[thread overview]
Message-ID: <20101117120143.20711.74019.stgit@dhcp-91-7.nay.redhat.com.englab.nay.redhat.com> (raw)

This patch adds a command line wrapper in order make it easier to let
user to run dedicated tests with specified params. The idea is simple:
user specifiy the test params through commnad line, then wrapper
modifiy the configuration file automatically. This is possible as the
variants limitations are located at the end of file.

The params are categorized into two kinds:
- The params used to limit the variants, whose default configuration
was stored with "key->value" in test_cli.cfg and can be changed by
user. The cli just add 'only xxx' at the end of configuration file.

  The following options are used to limit the variants:
  --diskformat= qcow2/raw
  --nicmodel= virtio_net/rtl8139/e1000
  --driveformat= virtio_blk/ide/scsi
  --vcpu= up/smp2
  --pciassign= no_pci_assignable/pf_assignable/vf_assianable
  --pagesize= smallpages/hugepages
  --guest= Guest supports by autotest can be read from tests_base.cfg
  --testcase= Test cases you want to be run, can be read form
   test_base.cfg

- The test specific params such as "nic_mode", when cli get
"key=value" from cmdline, it just add it to the end of file.

Problem:
Use still need to know the configuration file (test_base.cfg) to
understand the name and test params.

TODO:
Call autotest cli to submit jobs to autotest server?

Example of usage:

1:./run-test.py --diskformat=qcow2 --nicmodel=virtio_net
--driveformat=virtio_blk --vcpu=smp2 --pciassign=no_pci_assignable
--pagesize=smallpages --guest=Fedora.14.64
--testcase="unattended_install.cdrom"

This would test installation for Fedora 14 64 bit guests with
qcow2 as its image format, virtio-net as its nic model, virtio_blk as
its drive format, 2 vcpus and with small pages and no assigned devices.

2: There's no need to specifiy all params through cmd line and you can
only specify the options you are interested.
./run-test.py
This would use default tests configuration just as the above.


3: Run an nfs based installation with 4 vcpu and 2G memory
./run-test.py --guest=RHEL.5.5.x86_64
--testcase="unattend_install.nfs" --nfs_server=$server
--nfs_dir=$directory --smp=4 --mem=2048

4: Use test specific params - run pxe using tap mode network
./run-test.py --nic_mode=tap --testcase=pxe
---
 client/tests/kvm/run-test.py          |   47 +++++++++++++++++++++++++++++++++
 client/tests/kvm/tests_cli.cfg.sample |   24 +++++++++++++++++
 2 files changed, 71 insertions(+), 0 deletions(-)
 create mode 100755 client/tests/kvm/run-test.py
 create mode 100644 client/tests/kvm/tests_cli.cfg.sample

diff --git a/client/tests/kvm/run-test.py b/client/tests/kvm/run-test.py
new file mode 100755
index 0000000..1ef171e
--- /dev/null
+++ b/client/tests/kvm/run-test.py
@@ -0,0 +1,47 @@
+#!/usr/bin/python
+"""
+Program to run dedicated test from command line.
+
+@copyright: Red Hat 2010
+"""
+
+import sys, re, shutil, os
+
+def_params = {}
+help = {}
+extra_params = {}
+verbose = False
+
+def help(params):
+    print "%s: kvm-autotest client test cli" % sys.argv[0]
+    print "available options: "
+    for key in params.keys():
+        print "--%s=" % key
+
+if __name__ == "__main__":
+
+    # Read default configuration
+    for (key, value) in re.findall("#\s+(.*)->(.*)",
+                                   file("tests_cli.cfg").read()):
+        def_params[key] = value
+
+    for argv in sys.argv[1:]:
+        if "help" in argv:
+            help(def_params)
+            sys.exit(0)
+        try:
+            (key, value) = re.findall("--(.*)=(.*)", argv)[0]
+            if key in def_params.keys():
+                def_params[key] = value
+            else:
+                extra_params[key] = value
+        except IndexError:
+            pass
+
+    shutil.copy("tests_cli.cfg", "tests.cfg")
+    for key in def_params.keys():
+        file("tests.cfg","a+").write("only %s\n" % def_params[key])
+    for (key, value) in extra_params.items():
+        file("tests.cfg","a+").write("%s = %s\n" % (key, value))
+
+    os.system("../../bin/autotest control --verbose")
diff --git a/client/tests/kvm/tests_cli.cfg.sample b/client/tests/kvm/tests_cli.cfg.sample
new file mode 100644
index 0000000..f5074bd
--- /dev/null
+++ b/client/tests/kvm/tests_cli.cfg.sample
@@ -0,0 +1,24 @@
+# Do not edit this file directly, it is used by run-test.py
+#
+include tests_base.cfg
+include cdkeys.cfg
+
+# As for the defaults:
+# * qemu and qemu-img are expected to be found under /usr/bin/qemu-kvm and
+#   /usr/bin/qemu-img respectively.
+# * All image files are expected under /tmp/kvm_autotest_root/images/
+# * All iso files are expected under /tmp/kvm_autotest_root/isos/
+qemu_img_binary = /usr/bin/qemu-img
+qemu_binary = /usr/bin/qemu-kvm
+image_name(_.*)? ?<= /tmp/kvm_autotest_root/images/
+cdrom(_.*)? ?<= /tmp/kvm_autotest_root/isos/
+
+# you can change default configuration here:
+# diskformat->qcow2
+# nicmodel->virtio_net
+# driveformat->virtio_blk
+# vcpu->smp2
+# pciassign->no_pci_assignable
+# pagesize->smallpages
+# guest->Fedora.14.64
+# testcase->unattended_install.cdrom


                 reply	other threads:[~2010-11-17 12:00 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20101117120143.20711.74019.stgit@dhcp-91-7.nay.redhat.com.englab.nay.redhat.com \
    --to=jasowang@redhat.com \
    --cc=autotest@teset.kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=lmr@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.