diff mbox

[v2,3/5] qemu-iotests: Add VM method qtest() to iotests.py

Message ID 1391769813-15437-4-git-send-email-famz@redhat.com
State New
Headers show

Commit Message

Fam Zheng Feb. 7, 2014, 10:43 a.m. UTC
This will allow test case to run command in qtest protocol. It's
write-only for now.

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 tests/qemu-iotests/iotests.py | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

Comments

Benoît Canet Feb. 10, 2014, 12:11 p.m. UTC | #1
Le Friday 07 Feb 2014 à 18:43:31 (+0800), Fam Zheng a écrit :
> This will allow test case to run command in qtest protocol. It's
> write-only for now.
> 
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  tests/qemu-iotests/iotests.py | 20 ++++++++++++++++++--
>  1 file changed, 18 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
> index e4fa9af..e2a3e73 100644
> --- a/tests/qemu-iotests/iotests.py
> +++ b/tests/qemu-iotests/iotests.py
> @@ -21,9 +21,13 @@ import re
>  import subprocess
>  import string
>  import unittest
> -import sys; sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'scripts', 'qmp'))
> +import sys
> +sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'scripts', 'qmp'))
> +sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'scripts', 'qtest'))
>  import qmp
> +import qtest
>  import struct
> +import socket
>  
>  __all__ = ['imgfmt', 'imgproto', 'test_dir' 'qemu_img', 'qemu_io',
>             'VM', 'QMPTestCase', 'notrun', 'main']
> @@ -80,10 +84,12 @@ class VM(object):
>      def __init__(self):
>          self._monitor_path = os.path.join(test_dir, 'qemu-mon.%d' % os.getpid())
>          self._qemu_log_path = os.path.join(test_dir, 'qemu-log.%d' % os.getpid())
> +        self._qtest_path = os.path.join(test_dir, 'qemu-qtest.%d' % os.getpid())
>          self._args = qemu_args + ['-chardev',
>                       'socket,id=mon,path=' + self._monitor_path,
>                       '-mon', 'chardev=mon,mode=control',
> -                     '-qtest', 'stdio', '-machine', 'accel=qtest',
> +                     '-qtest', 'unix:path=' + self._qtest_path,
> +                     '-machine', 'accel=qtest',
>                       '-display', 'none', '-vga', 'none']
>          self._num_drives = 0
>  
> @@ -153,15 +159,20 @@ class VM(object):
>                               stderr=sys.stderr)
>          return p.wait()
>  

> +    def qtest(self, cmd):
> +        return self._qtest.cmd(cmd)
> +
I am under the impression that you define this qtest method twice in the same
VM(object) class.

>      def launch(self):
>          '''Launch the VM and establish a QMP connection'''
>          devnull = open('/dev/null', 'rb')
>          qemulog = open(self._qemu_log_path, 'wb')
>          try:
>              self._qmp = qmp.QEMUMonitorProtocol(self._monitor_path, server=True)
> +            self._qtest = qtest.QEMUQtestProtocol(self._qtest_path, server=True)
>              self._popen = subprocess.Popen(self._args, stdin=devnull, stdout=qemulog,
>                                             stderr=subprocess.STDOUT)
>              self._qmp.accept()
> +            self._qtest.accept()
>          except:
>              os.remove(self._monitor_path)
>              raise
> @@ -172,6 +183,7 @@ class VM(object):
>              self._qmp.cmd('quit')
>              self._popen.wait()
>              os.remove(self._monitor_path)
> +            os.remove(self._qtest_path)
>              os.remove(self._qemu_log_path)
>              self._popen = None
>  
> @@ -184,6 +196,10 @@ class VM(object):
>  
>          return self._qmp.cmd(cmd, args=qmp_args)
>  
> +    def qtest(self, cmd):
> +        '''Send a qtest command to guest'''
> +        return self._qtest.cmd(cmd)
> +
>      def get_qmp_event(self, wait=False):
>          '''Poll for one queued QMP events and return it'''
>          return self._qmp.pull_event(wait=wait)
> -- 
> 1.8.5.4
>
diff mbox

Patch

diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index e4fa9af..e2a3e73 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -21,9 +21,13 @@  import re
 import subprocess
 import string
 import unittest
-import sys; sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'scripts', 'qmp'))
+import sys
+sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'scripts', 'qmp'))
+sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'scripts', 'qtest'))
 import qmp
+import qtest
 import struct
+import socket
 
 __all__ = ['imgfmt', 'imgproto', 'test_dir' 'qemu_img', 'qemu_io',
            'VM', 'QMPTestCase', 'notrun', 'main']
@@ -80,10 +84,12 @@  class VM(object):
     def __init__(self):
         self._monitor_path = os.path.join(test_dir, 'qemu-mon.%d' % os.getpid())
         self._qemu_log_path = os.path.join(test_dir, 'qemu-log.%d' % os.getpid())
+        self._qtest_path = os.path.join(test_dir, 'qemu-qtest.%d' % os.getpid())
         self._args = qemu_args + ['-chardev',
                      'socket,id=mon,path=' + self._monitor_path,
                      '-mon', 'chardev=mon,mode=control',
-                     '-qtest', 'stdio', '-machine', 'accel=qtest',
+                     '-qtest', 'unix:path=' + self._qtest_path,
+                     '-machine', 'accel=qtest',
                      '-display', 'none', '-vga', 'none']
         self._num_drives = 0
 
@@ -153,15 +159,20 @@  class VM(object):
                              stderr=sys.stderr)
         return p.wait()
 
+    def qtest(self, cmd):
+        return self._qtest.cmd(cmd)
+
     def launch(self):
         '''Launch the VM and establish a QMP connection'''
         devnull = open('/dev/null', 'rb')
         qemulog = open(self._qemu_log_path, 'wb')
         try:
             self._qmp = qmp.QEMUMonitorProtocol(self._monitor_path, server=True)
+            self._qtest = qtest.QEMUQtestProtocol(self._qtest_path, server=True)
             self._popen = subprocess.Popen(self._args, stdin=devnull, stdout=qemulog,
                                            stderr=subprocess.STDOUT)
             self._qmp.accept()
+            self._qtest.accept()
         except:
             os.remove(self._monitor_path)
             raise
@@ -172,6 +183,7 @@  class VM(object):
             self._qmp.cmd('quit')
             self._popen.wait()
             os.remove(self._monitor_path)
+            os.remove(self._qtest_path)
             os.remove(self._qemu_log_path)
             self._popen = None
 
@@ -184,6 +196,10 @@  class VM(object):
 
         return self._qmp.cmd(cmd, args=qmp_args)
 
+    def qtest(self, cmd):
+        '''Send a qtest command to guest'''
+        return self._qtest.cmd(cmd)
+
     def get_qmp_event(self, wait=False):
         '''Poll for one queued QMP events and return it'''
         return self._qmp.pull_event(wait=wait)