qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC v2 3/6] Add core python test framework


From: Anthony Liguori
Subject: [Qemu-devel] [RFC v2 3/6] Add core python test framework
Date: Thu, 1 Dec 2011 12:43:29 -0600

---
 qtest.py |   69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 69 insertions(+), 0 deletions(-)
 create mode 100644 qtest.py

diff --git a/qtest.py b/qtest.py
new file mode 100644
index 0000000..5ac2e9b
--- /dev/null
+++ b/qtest.py
@@ -0,0 +1,69 @@
+import socket
+
+q = None
+
+class QTest(object):
+    def __init__(self, path):
+        self._sock = socket.socket(socket.AF_UNIX)
+        self._sock.connect(path)
+        self.inbuf = ''
+        self.irqs = {}
+        for i in range(16):
+            self.irqs[i] = False
+
+    def _recv(self):
+        while self.inbuf.find('\n') == -1:
+            self.inbuf += self._sock.recv(1024)
+
+        rsp, self.inbuf = self.inbuf.split('\n', 1)
+        return rsp.split()
+
+    def _send(self, command, *args):
+        outbuf = ' '.join([command] + map(str, args))
+        self._sock.sendall(outbuf + '\n')
+
+    def _cmd(self, command, *args):
+        self._send(command, *args)
+        while True:
+            rsp = self._recv()
+            if rsp[0] in ['IRQ']:
+                num = int(rsp[2], 0)
+                if rsp[1] in ['raise']:
+                    self.irqs[num] = True
+                else:
+                    self.irqs[num] = False
+                continue
+            if rsp[0] != 'OK':
+                raise Exception('Bad response')
+            break
+        return rsp[1:]
+
+    def get_irq(self, num):
+        return self.irqs[num]
+
+# Helpers to add expected platform functions in the current namespace
+
+def init(path):
+    global q
+    q = QTest(path)
+
+def outb(addr, value):
+    q._cmd('outb', addr, value)
+
+def outw(addr, value):
+    q._cmd('outw', addr, value)
+
+def outl(addr, value):
+    q._cmd('outl', addr, value)
+
+def inb(addr):
+    return int(q._cmd('inb', addr)[0], 0)
+
+def inw(addr):
+    return int(q._cmd('inw', addr)[0], 0)
+
+def inl(addr):
+    return int(q._cmd('inl', addr)[0], 0)
+
+def get_irq(num):
+    return q.get_irq(num)
-- 
1.7.4.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]