On 04/03/2012 09:20 PM, Peter Krempa wrote:
This test checks if the console input and output work as desired.
The
test takes as an argument a string, that is sent to the console and
another string that is expected to be read from the console. When those
two compare successfuly the test succeeds.
---
repos/domain/console_io.py | 76 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 76 insertions(+), 0 deletions(-)
create mode 100644 repos/domain/console_io.py
diff --git a/repos/domain/console_io.py b/repos/domain/console_io.py
new file mode 100644
index 0000000..6af206a
--- /dev/null
+++ b/repos/domain/console_io.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+""" A test case to test console mutual exclusivity
+ mandatory arguments: guestname
+ device
+ data
+ expect
+"""
+import libvirt
+from libvirt import libvirtError
+
+from utils.Python import utils
+from utils.Python.testError import TestError
It'd better to raise 'TestError' exception from framework
because of
unexpected environment error, or something common for all of
tests.
+
+def usage(params):
+ """Verify parameter dictionary"""
+ logger = params['logger']
+ keys = ['guestname', 'device', 'data', 'expect']
+ for key in keys:
+ if key not in params:
+ logger.error("%s is required" %key)
+ return 1
+
+def console_io(params):
+ """Attach to console"""
call usage() here to check for mandatory options and values.
+ logger = params['logger']
+ guest = params['guestname']
+ device = params['device']
+ data = params['data']
+ expect = params['expect']
+
+ util = utils.Utils()
+ uri = params['uri']
+ reply = ""
+
+ ret = 1
+
+ try:
+ logger.info("Connecting to hypervisor: " + uri)
+ conn = libvirt.open(uri)
+ dom = conn.lookupByName(guest)
+
+ logger.info("Creating stream object")
+ stream = conn.newStream(0)
+
+ logger.info("Forcibly open console on domain")
+ dom.openConsole(device, stream, libvirt.VIR_DOMAIN_CONSOLE_FORCE);
the semicolon and the following are optional.
+
+ logger.info("Sending data: '" + data + "'")
+ stream.send(data)
+
+ while len(reply)< len(expect):
+ recv = stream.recv(10);
+ reply += recv
+ logger.info("Recieved data: '" + recv + "'")
+
+ if expect != reply:
+ raise TestError("Recieved data don't match expected string")
+
+ except libvirtError, e:
+ logger.error("Libvirt call failed")
+ raise e;
+
+ except TestError, e:
+ logger.error("Test failed: " + str(e));
logger.error is enough I think.
+
+ else:
+ logger.info("All tests succeeded")
+ ret = 0
+
+ finally:
+ logger.info("Closing hypervisor connection")
+ conn.close()
+
+ logger.info("Done")
+
+ return ret
we need a console_io_clean(params) function for use by clean flag
in testcase config
BTW, I tried the testcase, but don't know how to offer the
options to let it run successful
It always hang up, could you give a detailed comments.
Guannan Ren