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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list