Index: client/tests/kvm/kvm_monitor.py |
diff --git a/client/tests/kvm/kvm_monitor.py b/client/tests/kvm/kvm_monitor.py |
index 7e6b594bc242d10574f42a0aac1e869348ccd339..8cf2441e1893bb1ddb65b3e1f02883b0068b96fe 100644 |
--- a/client/tests/kvm/kvm_monitor.py |
+++ b/client/tests/kvm/kvm_monitor.py |
@@ -22,7 +22,13 @@ class MonitorConnectError(MonitorError): |
class MonitorSocketError(MonitorError): |
- pass |
+ def __init__(self, msg, e): |
+ Exception.__init__(self, msg, e) |
+ self.msg = msg |
+ self.e = e |
+ |
+ def __str__(self): |
+ return "%s (%s)" % (self.msg, self.e) |
class MonitorLockError(MonitorError): |
@@ -45,8 +51,8 @@ class QMPCmdError(MonitorError): |
self.data = data |
def __str__(self): |
- return ("QMP command %r failed (arguments: %r, error message: %r)" % |
- (self.cmd, self.qmp_args, self.data)) |
+ return ("QMP command %r failed (arguments: %r, " |
+ "error message: %r)" % (self.cmd, self.qmp_args, self.data)) |
class Monitor: |
@@ -119,15 +125,26 @@ class Monitor: |
while self._data_available(): |
try: |
data = self._socket.recv(1024) |
- except socket.error, (errno, msg): |
- raise MonitorSocketError("Could not receive data from monitor " |
- "(%s)" % msg) |
+ except socket.error, e: |
+ raise MonitorSocketError("Could not receive data from monitor", |
+ e) |
if not data: |
break |
s += data |
return s |
+ def is_responsive(self): |
+ """ |
+ Return True iff the monitor is responsive. |
+ """ |
+ try: |
+ self.verify_responsive() |
+ return True |
+ except MonitorError: |
+ return False |
+ |
+ |
class HumanMonitor(Monitor): |
""" |
Wraps "human monitor" commands. |
@@ -201,9 +218,9 @@ class HumanMonitor(Monitor): |
try: |
try: |
self._socket.sendall(cmd + "\n") |
- except socket.error, (errno, msg): |
- raise MonitorSocketError("Could not send monitor command '%s' " |
- "(%s)" % (cmd, msg)) |
+ except socket.error, e: |
+ raise MonitorSocketError("Could not send monitor command %r" % |
+ cmd, e) |
finally: |
self._lock.release() |
@@ -248,17 +265,11 @@ class HumanMonitor(Monitor): |
self._lock.release() |
- def is_responsive(self): |
+ def verify_responsive(self): |
""" |
Make sure the monitor is responsive by sending a command. |
- |
- @return: True if responsive, False otherwise |
""" |
- try: |
- self.cmd("info status") |
- return True |
- except MonitorError: |
- return False |
+ self.cmd("info status") |
# Command wrappers |
@@ -309,7 +320,6 @@ class HumanMonitor(Monitor): |
@param wait: If true, wait for completion |
@return: The command's output |
""" |
- logging.debug("Migrating to: %s" % uri) |
cmd = "migrate" |
if not wait: |
cmd += " -d" |
@@ -480,9 +490,8 @@ class QMPMonitor(Monitor): |
""" |
try: |
self._socket.sendall(data) |
- except socket.error, (errno, msg): |
- raise MonitorSocketError("Could not send data: %r (%s)" % |
- (data, msg)) |
+ except socket.error, e: |
+ raise MonitorSocketError("Could not send data: %r" % data, e) |
def _get_response(self, id=None, timeout=20): |
@@ -615,17 +624,11 @@ class QMPMonitor(Monitor): |
return self.cmd_obj(self._build_cmd(cmd, args, id), timeout) |
- def is_responsive(self): |
+ def verify_responsive(self): |
""" |
Make sure the monitor is responsive by sending a command. |
- |
- @return: True if responsive, False otherwise |
""" |
- try: |
- self.cmd("query-status") |
- return True |
- except MonitorError: |
- return False |
+ self.cmd("query-status") |
def get_events(self): |