qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility
@ 2017-12-19 17:34 Philippe Mathieu-Daudé
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 1/9] qemu.py: replace iteritems() by items() for " Philippe Mathieu-Daudé
                   ` (9 more replies)
  0 siblings, 10 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-12-19 17:34 UTC (permalink / raw)
  To: Kevin Wolf, Max Reitz, Cleber Rosa, Eduardo Habkost,
	Lukáš Doktor, Daniel P . Berrange, Eric Blake,
	Stefan Hajnoczi, Fam Zheng, Markus Armbruster, Paolo Bonzini
  Cc: Philippe Mathieu-Daudé, qemu-devel, qemu-block, John Snow,
	Nir Soffer, Peter Maydell, Janosch Frank, Ishani Chugh

Hi,

This is a very boring series.

I a later series I refactor the iotests.py class, however when the first version
of series [1] was posted I received comments that this class should no support
Python 3.

I didn't tested with very old CentOS release, but this should work with Python
versions >= 2.6.0a2.

Note: in today's IRC chat we suggest to drop Python 2 support for block iotests,
continuing to support it for common scripts used by the build system.

I'm not a Python expert, so I'll be very happy/relieved if someone is willing to
fix/continue/improve this series :)

Regards,

Phil.

[1]: http://lists.nongnu.org/archive/html/qemu-devel/2017-12/msg02339.html

Philippe Mathieu-Daudé (9):
  qemu.py: replace iteritems() by items() for python3 compatibility
  qmp.py: encode JSON unicode as byte strings for python3 compatibility
  iotests: replace print statement by print() function for python3
    compatibility
  iotests: use octal numbers for python3 compatibility
  iotests: replace xrange() by range() for python3 compatibility
  iotests: replace dict.has_key() by 'in' operator for python3
    compatibility
  iotests: replace lambda function by lambda expression for python3
    compatibility
  iotests: replace assertEquals() by assertEqual() for python3
    compatibility
  iotests.py: use io.StringIO with python3

 scripts/qemu.py               |  2 +-
 scripts/qmp/qmp.py            |  2 +-
 tests/qemu-iotests/041        |  6 +++---
 tests/qemu-iotests/044        | 14 +++++++-------
 tests/qemu-iotests/065        |  4 ++--
 tests/qemu-iotests/093        |  2 +-
 tests/qemu-iotests/096        |  4 ++--
 tests/qemu-iotests/118        | 28 ++++++++++++++--------------
 tests/qemu-iotests/136        |  2 +-
 tests/qemu-iotests/139        |  2 +-
 tests/qemu-iotests/149        |  3 ++-
 tests/qemu-iotests/163        |  2 +-
 tests/qemu-iotests/165        |  3 ++-
 tests/qemu-iotests/iotests.py | 14 +++++++++-----
 14 files changed, 47 insertions(+), 41 deletions(-)

-- 
2.15.1

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [Qemu-devel] [PATCH 1/9] qemu.py: replace iteritems() by items() for python3 compatibility
  2017-12-19 17:34 [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility Philippe Mathieu-Daudé
@ 2017-12-19 17:34 ` Philippe Mathieu-Daudé
  2017-12-20  9:58   ` Daniel P. Berrange
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 2/9] qmp.py: encode JSON unicode as byte strings " Philippe Mathieu-Daudé
                   ` (8 subsequent siblings)
  9 siblings, 1 reply; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-12-19 17:34 UTC (permalink / raw)
  To: Cleber Rosa, Eduardo Habkost, Lukáš Doktor,
	Daniel P . Berrange, Eric Blake, Stefan Hajnoczi, Fam Zheng,
	Markus Armbruster
  Cc: Philippe Mathieu-Daudé, qemu-devel, Paolo Bonzini,
	Nir Soffer, Janosch Frank, Ishani Chugh

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 scripts/qemu.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/qemu.py b/scripts/qemu.py
index 9bfdf6d37d..5e12ac7c8c 100644
--- a/scripts/qemu.py
+++ b/scripts/qemu.py
@@ -247,7 +247,7 @@ class QEMUMachine(object):
     def qmp(self, cmd, conv_keys=True, **args):
         '''Invoke a QMP command and return the response dict'''
         qmp_args = dict()
-        for key, value in args.iteritems():
+        for key, value in args.items():
             if conv_keys:
                 qmp_args[key.replace('_', '-')] = value
             else:
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [Qemu-devel] [PATCH 2/9] qmp.py: encode JSON unicode as byte strings for python3 compatibility
  2017-12-19 17:34 [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility Philippe Mathieu-Daudé
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 1/9] qemu.py: replace iteritems() by items() for " Philippe Mathieu-Daudé
@ 2017-12-19 17:34 ` Philippe Mathieu-Daudé
  2017-12-20 10:00   ` Daniel P. Berrange
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 3/9] iotests: replace print statement by print() function " Philippe Mathieu-Daudé
                   ` (7 subsequent siblings)
  9 siblings, 1 reply; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-12-19 17:34 UTC (permalink / raw)
  To: Cleber Rosa, Eduardo Habkost, Lukáš Doktor,
	Daniel P . Berrange, Eric Blake, Stefan Hajnoczi, Fam Zheng,
	Markus Armbruster
  Cc: Philippe Mathieu-Daudé, qemu-devel, Paolo Bonzini,
	Nir Soffer, Janosch Frank, Ishani Chugh

the socket API expects byte strings.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 scripts/qmp/qmp.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/qmp/qmp.py b/scripts/qmp/qmp.py
index 07c9632e9e..1080195e04 100644
--- a/scripts/qmp/qmp.py
+++ b/scripts/qmp/qmp.py
@@ -166,7 +166,7 @@ class QEMUMonitorProtocol(object):
         """
         self.logger.debug(">>> %s", qmp_cmd)
         try:
-            self.__sock.sendall(json.dumps(qmp_cmd))
+            self.__sock.sendall(json.dumps(qmp_cmd).encode())
         except socket.error as err:
             if err[0] == errno.EPIPE:
                 return
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [Qemu-devel] [PATCH 3/9] iotests: replace print statement by print() function for python3 compatibility
  2017-12-19 17:34 [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility Philippe Mathieu-Daudé
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 1/9] qemu.py: replace iteritems() by items() for " Philippe Mathieu-Daudé
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 2/9] qmp.py: encode JSON unicode as byte strings " Philippe Mathieu-Daudé
@ 2017-12-19 17:34 ` Philippe Mathieu-Daudé
  2017-12-20 10:03   ` Daniel P. Berrange
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 4/9] iotests: use octal numbers " Philippe Mathieu-Daudé
                   ` (6 subsequent siblings)
  9 siblings, 1 reply; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-12-19 17:34 UTC (permalink / raw)
  To: Kevin Wolf, Max Reitz, Cleber Rosa, Eduardo Habkost,
	Lukáš Doktor, Daniel P . Berrange, Eric Blake,
	Stefan Hajnoczi, Fam Zheng, Markus Armbruster
  Cc: Philippe Mathieu-Daudé, qemu-devel, qemu-block, John Snow,
	Paolo Bonzini, Nir Soffer, Janosch Frank, Ishani Chugh

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 tests/qemu-iotests/149        | 3 ++-
 tests/qemu-iotests/165        | 3 ++-
 tests/qemu-iotests/iotests.py | 5 +++--
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/tests/qemu-iotests/149 b/tests/qemu-iotests/149
index 223cd68ad5..d3ffa259db 100755
--- a/tests/qemu-iotests/149
+++ b/tests/qemu-iotests/149
@@ -20,6 +20,7 @@
 # Exercise the QEMU 'luks' block driver to validate interoperability
 # with the Linux dm-crypt + cryptsetup implementation
 
+from __future__ import print_function
 import subprocess
 import os
 import os.path
@@ -376,7 +377,7 @@ def test_once(config, qemu_img=False):
     finally:
         iotests.log("# Delete image")
         delete_image(config)
-        print
+        print()
 
 
 # Obviously we only work with the luks image format
diff --git a/tests/qemu-iotests/165 b/tests/qemu-iotests/165
index a3932db3de..ab29066076 100755
--- a/tests/qemu-iotests/165
+++ b/tests/qemu-iotests/165
@@ -18,6 +18,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 
+from __future__ import print_function
 import os
 import re
 import iotests
@@ -85,7 +86,7 @@ class TestPersistentDirtyBitmap(iotests.QMPTestCase):
         log = re.sub(r'^\[I \d+\.\d+\] OPENED\n', '', log)
         log = re.sub(r'\[I \+\d+\.\d+\] CLOSED\n?$', '', log)
         if log:
-            print log
+            print(log)
 
         self.vm = self.mkVm()
         self.vm.launch()
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 6f057904a9..85c9d2c211 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -16,6 +16,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 
+from __future__ import print_function
 import errno
 import os
 import re
@@ -145,7 +146,7 @@ def filter_qmp_event(event):
 def log(msg, filters=[]):
     for flt in filters:
         msg = flt(msg)
-    print msg
+    print(msg)
 
 class Timeout:
     def __init__(self, seconds, errmsg = "Timeout"):
@@ -417,7 +418,7 @@ def notrun(reason):
     seq = os.path.basename(sys.argv[0])
 
     open('%s/%s.notrun' % (output_dir, seq), 'wb').write(reason + '\n')
-    print '%s not run: %s' % (seq, reason)
+    print("{} not run: {}".format(seq, reason))
     sys.exit(0)
 
 def verify_image_format(supported_fmts=[], unsupported_fmts=[]):
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [Qemu-devel] [PATCH 4/9] iotests: use octal numbers for python3 compatibility
  2017-12-19 17:34 [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility Philippe Mathieu-Daudé
                   ` (2 preceding siblings ...)
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 3/9] iotests: replace print statement by print() function " Philippe Mathieu-Daudé
@ 2017-12-19 17:34 ` Philippe Mathieu-Daudé
  2017-12-20 10:05   ` Daniel P. Berrange
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 5/9] iotests: replace xrange() by range() " Philippe Mathieu-Daudé
                   ` (5 subsequent siblings)
  9 siblings, 1 reply; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-12-19 17:34 UTC (permalink / raw)
  To: Kevin Wolf, Max Reitz, Cleber Rosa, Eduardo Habkost,
	Lukáš Doktor, Daniel P . Berrange, Eric Blake,
	Stefan Hajnoczi, Fam Zheng, Markus Armbruster
  Cc: Philippe Mathieu-Daudé, qemu-devel, qemu-block, John Snow,
	Paolo Bonzini, Nir Soffer, Janosch Frank, Ishani Chugh

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 tests/qemu-iotests/118 | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/tests/qemu-iotests/118 b/tests/qemu-iotests/118
index 8a9e838c90..3cf21218f0 100755
--- a/tests/qemu-iotests/118
+++ b/tests/qemu-iotests/118
@@ -417,14 +417,14 @@ class TestChangeReadOnly(ChangeBaseClass):
 
     def tearDown(self):
         self.vm.shutdown()
-        os.chmod(old_img, 0666)
-        os.chmod(new_img, 0666)
+        os.chmod(old_img, 0o666)
+        os.chmod(new_img, 0o666)
         os.remove(old_img)
         os.remove(new_img)
 
     def test_ro_ro_retain(self):
-        os.chmod(old_img, 0444)
-        os.chmod(new_img, 0444)
+        os.chmod(old_img, 0o444)
+        os.chmod(new_img, 0o444)
         self.vm.add_drive(old_img, 'media=disk,read-only=on', 'floppy')
         self.vm.launch()
 
@@ -443,7 +443,7 @@ class TestChangeReadOnly(ChangeBaseClass):
         self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 
     def test_ro_rw_retain(self):
-        os.chmod(old_img, 0444)
+        os.chmod(old_img, 0o444)
         self.vm.add_drive(old_img, 'media=disk,read-only=on', 'floppy')
         self.vm.launch()
 
@@ -462,7 +462,7 @@ class TestChangeReadOnly(ChangeBaseClass):
         self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 
     def test_rw_ro_retain(self):
-        os.chmod(new_img, 0444)
+        os.chmod(new_img, 0o444)
         self.vm.add_drive(old_img, 'media=disk', 'floppy')
         self.vm.launch()
 
@@ -483,7 +483,7 @@ class TestChangeReadOnly(ChangeBaseClass):
         self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 
     def test_ro_rw(self):
-        os.chmod(old_img, 0444)
+        os.chmod(old_img, 0o444)
         self.vm.add_drive(old_img, 'media=disk,read-only=on', 'floppy')
         self.vm.launch()
 
@@ -503,7 +503,7 @@ class TestChangeReadOnly(ChangeBaseClass):
         self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 
     def test_rw_ro(self):
-        os.chmod(new_img, 0444)
+        os.chmod(new_img, 0o444)
         self.vm.add_drive(old_img, 'media=disk', 'floppy')
         self.vm.launch()
 
@@ -542,7 +542,7 @@ class TestChangeReadOnly(ChangeBaseClass):
         self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 
     def test_make_ro_rw(self):
-        os.chmod(new_img, 0444)
+        os.chmod(new_img, 0o444)
         self.vm.add_drive(old_img, 'media=disk', 'floppy')
         self.vm.launch()
 
@@ -562,7 +562,7 @@ class TestChangeReadOnly(ChangeBaseClass):
         self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 
     def test_make_rw_ro_by_retain(self):
-        os.chmod(old_img, 0444)
+        os.chmod(old_img, 0o444)
         self.vm.add_drive(old_img, 'media=disk,read-only=on', 'floppy')
         self.vm.launch()
 
@@ -581,7 +581,7 @@ class TestChangeReadOnly(ChangeBaseClass):
         self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
 
     def test_make_ro_rw_by_retain(self):
-        os.chmod(new_img, 0444)
+        os.chmod(new_img, 0o444)
         self.vm.add_drive(old_img, 'media=disk', 'floppy')
         self.vm.launch()
 
@@ -600,7 +600,7 @@ class TestChangeReadOnly(ChangeBaseClass):
         self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
 
     def test_rw_ro_cycle(self):
-        os.chmod(new_img, 0444)
+        os.chmod(new_img, 0o444)
         self.vm.add_drive(old_img, 'media=disk', 'floppy')
         self.vm.launch()
 
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [Qemu-devel] [PATCH 5/9] iotests: replace xrange() by range() for python3 compatibility
  2017-12-19 17:34 [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility Philippe Mathieu-Daudé
                   ` (3 preceding siblings ...)
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 4/9] iotests: use octal numbers " Philippe Mathieu-Daudé
@ 2017-12-19 17:34 ` Philippe Mathieu-Daudé
  2017-12-20 10:06   ` Daniel P. Berrange
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 6/9] iotests: replace dict.has_key() by 'in' operator " Philippe Mathieu-Daudé
                   ` (4 subsequent siblings)
  9 siblings, 1 reply; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-12-19 17:34 UTC (permalink / raw)
  To: Kevin Wolf, Max Reitz, Cleber Rosa, Eduardo Habkost,
	Lukáš Doktor, Daniel P . Berrange, Eric Blake,
	Stefan Hajnoczi, Fam Zheng, Markus Armbruster
  Cc: Philippe Mathieu-Daudé, qemu-devel, qemu-block, John Snow,
	Paolo Bonzini, Nir Soffer, Janosch Frank, Ishani Chugh

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 tests/qemu-iotests/044 | 14 +++++++-------
 tests/qemu-iotests/163 |  2 +-
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/tests/qemu-iotests/044 b/tests/qemu-iotests/044
index 11ea0f4d35..1e96800176 100755
--- a/tests/qemu-iotests/044
+++ b/tests/qemu-iotests/044
@@ -52,23 +52,23 @@ class TestRefcountTableGrowth(iotests.QMPTestCase):
             # Write a refcount table
             fd.seek(off_reftable)
 
-            for i in xrange(0, h.refcount_table_clusters):
+            for i in range(0, h.refcount_table_clusters):
                 sector = ''.join(struct.pack('>Q',
                     off_refblock + i * 64 * 512 + j * 512)
-                    for j in xrange(0, 64))
+                    for j in range(0, 64))
                 fd.write(sector)
 
             # Write the refcount blocks
             assert(fd.tell() == off_refblock)
-            sector = ''.join(struct.pack('>H', 1) for j in xrange(0, 64 * 256))
-            for block in xrange(0, h.refcount_table_clusters):
+            sector = ''.join(struct.pack('>H', 1) for j in range(0, 64 * 256))
+            for block in range(0, h.refcount_table_clusters):
                 fd.write(sector)
 
             # Write the L1 table
             assert(fd.tell() == off_l1)
             assert(off_l2 + 512 * h.l1_size == off_data)
             table = ''.join(struct.pack('>Q', (1 << 63) | off_l2 + 512 * j)
-                for j in xrange(0, h.l1_size))
+                for j in range(0, h.l1_size))
             fd.write(table)
 
             # Write the L2 tables
@@ -79,14 +79,14 @@ class TestRefcountTableGrowth(iotests.QMPTestCase):
             off = off_data
             while remaining > 1024 * 512:
                 pytable = list((1 << 63) | off + 512 * j
-                    for j in xrange(0, 1024))
+                    for j in range(0, 1024))
                 table = struct.pack('>1024Q', *pytable)
                 fd.write(table)
                 remaining = remaining - 1024 * 512
                 off = off + 1024 * 512
 
             table = ''.join(struct.pack('>Q', (1 << 63) | off + 512 * j)
-                for j in xrange(0, remaining / 512))
+                for j in range(0, remaining / 512))
             fd.write(table)
 
 
diff --git a/tests/qemu-iotests/163 b/tests/qemu-iotests/163
index 403842354e..fb0d0257ec 100644
--- a/tests/qemu-iotests/163
+++ b/tests/qemu-iotests/163
@@ -41,7 +41,7 @@ class ShrinkBaseClass(iotests.QMPTestCase):
         div_roundup = lambda n, d: (n + d - 1) / d
 
         def split_by_n(data, n):
-            for x in xrange(0, len(data), n):
+            for x in range(0, len(data), n):
                 yield struct.unpack('>Q', data[x:x + n])[0] & l1_mask
 
         def check_l1_table(h, l1_data):
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [Qemu-devel] [PATCH 6/9] iotests: replace dict.has_key() by 'in' operator for python3 compatibility
  2017-12-19 17:34 [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility Philippe Mathieu-Daudé
                   ` (4 preceding siblings ...)
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 5/9] iotests: replace xrange() by range() " Philippe Mathieu-Daudé
@ 2017-12-19 17:34 ` Philippe Mathieu-Daudé
  2017-12-20 10:07   ` Daniel P. Berrange
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 7/9] iotests: replace lambda function by lambda expression " Philippe Mathieu-Daudé
                   ` (3 subsequent siblings)
  9 siblings, 1 reply; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-12-19 17:34 UTC (permalink / raw)
  To: Kevin Wolf, Max Reitz, Cleber Rosa, Eduardo Habkost,
	Lukáš Doktor, Daniel P . Berrange, Eric Blake,
	Stefan Hajnoczi, Fam Zheng, Markus Armbruster
  Cc: Philippe Mathieu-Daudé, qemu-devel, qemu-block, John Snow,
	Paolo Bonzini, Nir Soffer, Janosch Frank, Ishani Chugh

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 tests/qemu-iotests/093 | 2 +-
 tests/qemu-iotests/096 | 4 ++--
 tests/qemu-iotests/136 | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/tests/qemu-iotests/093 b/tests/qemu-iotests/093
index 5c36a5fb4d..28b1d021ca 100755
--- a/tests/qemu-iotests/093
+++ b/tests/qemu-iotests/093
@@ -237,7 +237,7 @@ class ThrottleTestGroupNames(iotests.QMPTestCase):
                 if name:
                     self.assertEqual(info["group"], name)
                 else:
-                    self.assertFalse(info.has_key('group'))
+                    self.assertFalse('group' in info)
                 return
 
         raise Exception("No group information found for '%s'" % device)
diff --git a/tests/qemu-iotests/096 b/tests/qemu-iotests/096
index aeeb3753cf..a69439602d 100644
--- a/tests/qemu-iotests/096
+++ b/tests/qemu-iotests/096
@@ -53,9 +53,9 @@ class TestLiveSnapshot(iotests.QMPTestCase):
                 self.assertEqual(r['iops'], self.iops)
                 self.assertEqual(r['iops_size'], self.iops_size)
             else:
-                self.assertFalse(r.has_key('group'))
+                self.assertFalse('group' in r)
                 self.assertEqual(r['iops'], 0)
-                self.assertFalse(r.has_key('iops_size'))
+                self.assertFalse('iops_size' in r)
 
     def testSnapshot(self):
         self.checkConfig('base')
diff --git a/tests/qemu-iotests/136 b/tests/qemu-iotests/136
index 88b97ea7c6..a154d8ef9d 100644
--- a/tests/qemu-iotests/136
+++ b/tests/qemu-iotests/136
@@ -203,7 +203,7 @@ sector = "%d"
         if (self.accounted_ops(read = True, write = True, flush = True) != 0):
             self.assertLess(0, stats['idle_time_ns'])
         else:
-            self.assertFalse(stats.has_key('idle_time_ns'))
+            self.assertFalse('idle_time_ns' in stats)
 
         # This test does not alter these, so they must be all 0
         self.assertEqual(0, stats['rd_merged'])
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [Qemu-devel] [PATCH 7/9] iotests: replace lambda function by lambda expression for python3 compatibility
  2017-12-19 17:34 [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility Philippe Mathieu-Daudé
                   ` (5 preceding siblings ...)
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 6/9] iotests: replace dict.has_key() by 'in' operator " Philippe Mathieu-Daudé
@ 2017-12-19 17:34 ` Philippe Mathieu-Daudé
  2017-12-20 10:08   ` Daniel P. Berrange
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 8/9] iotests: replace assertEquals() by assertEqual() " Philippe Mathieu-Daudé
                   ` (2 subsequent siblings)
  9 siblings, 1 reply; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-12-19 17:34 UTC (permalink / raw)
  To: Kevin Wolf, Max Reitz, Cleber Rosa, Eduardo Habkost,
	Lukáš Doktor, Daniel P . Berrange, Eric Blake,
	Stefan Hajnoczi, Fam Zheng, Markus Armbruster
  Cc: Philippe Mathieu-Daudé, qemu-devel, qemu-block, John Snow,
	Paolo Bonzini, Nir Soffer, Janosch Frank

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 tests/qemu-iotests/065 | 4 ++--
 tests/qemu-iotests/139 | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/tests/qemu-iotests/065 b/tests/qemu-iotests/065
index 72aa9707c7..e95f7f817b 100755
--- a/tests/qemu-iotests/065
+++ b/tests/qemu-iotests/065
@@ -59,7 +59,7 @@ class TestQemuImgInfo(TestImageInfoSpecific):
                     :data.index('')]
         for field in data:
             self.assertTrue(re.match('^ {4}[^ ]', field) is not None)
-        data = map(lambda line: line.strip(), data)
+        data = [line.strip() for line in data]
         self.assertEqual(data, self.human_compare)
 
 class TestQMP(TestImageInfoSpecific):
@@ -80,7 +80,7 @@ class TestQMP(TestImageInfoSpecific):
 
     def test_qmp(self):
         result = self.vm.qmp('query-block')['return']
-        drive = filter(lambda drive: drive['device'] == 'drive0', result)[0]
+        drive = [drive for drive in result if drive['device'] == 'drive0'][0]
         data = drive['inserted']['image']['format-specific']
         self.assertEqual(data['type'], iotests.imgfmt)
         self.assertEqual(data['data'], self.compare)
diff --git a/tests/qemu-iotests/139 b/tests/qemu-iotests/139
index f8f02808a9..b54c816c16 100644
--- a/tests/qemu-iotests/139
+++ b/tests/qemu-iotests/139
@@ -51,7 +51,7 @@ class TestBlockdevDel(iotests.QMPTestCase):
     # Check whether a BlockDriverState exists
     def checkBlockDriverState(self, node, must_exist = True):
         result = self.vm.qmp('query-named-block-nodes')
-        nodes = filter(lambda x: x['node-name'] == node, result['return'])
+        nodes = [x for x in result['return'] if x['node-name'] == node]
         self.assertLessEqual(len(nodes), 1)
         self.assertEqual(must_exist, len(nodes) == 1)
 
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [Qemu-devel] [PATCH 8/9] iotests: replace assertEquals() by assertEqual() for python3 compatibility
  2017-12-19 17:34 [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility Philippe Mathieu-Daudé
                   ` (6 preceding siblings ...)
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 7/9] iotests: replace lambda function by lambda expression " Philippe Mathieu-Daudé
@ 2017-12-19 17:34 ` Philippe Mathieu-Daudé
  2017-12-20 10:08   ` Daniel P. Berrange
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 9/9] iotests.py: use io.StringIO with python3 Philippe Mathieu-Daudé
  2017-12-19 21:54 ` [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility Paolo Bonzini
  9 siblings, 1 reply; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-12-19 17:34 UTC (permalink / raw)
  To: Kevin Wolf, Max Reitz, Cleber Rosa, Eduardo Habkost,
	Lukáš Doktor, Daniel P . Berrange, Eric Blake,
	Stefan Hajnoczi, Fam Zheng, Markus Armbruster
  Cc: Philippe Mathieu-Daudé, qemu-devel, qemu-block, John Snow,
	Paolo Bonzini, Nir Soffer, Janosch Frank, Ishani Chugh

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 tests/qemu-iotests/041        | 6 +++---
 tests/qemu-iotests/118        | 4 ++--
 tests/qemu-iotests/iotests.py | 2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/tests/qemu-iotests/041 b/tests/qemu-iotests/041
index a860a31e9a..fa0f20af0e 100755
--- a/tests/qemu-iotests/041
+++ b/tests/qemu-iotests/041
@@ -457,7 +457,7 @@ new_state = "1"
         self.assert_qmp(result, 'return', {})
 
         event = self.vm.get_qmp_event(wait=True)
-        self.assertEquals(event['event'], 'BLOCK_JOB_ERROR')
+        self.assertEqual(event['event'], 'BLOCK_JOB_ERROR')
         self.assert_qmp(event, 'data/device', 'drive0')
         self.assert_qmp(event, 'data/operation', 'read')
         result = self.vm.qmp('query-block-jobs')
@@ -478,7 +478,7 @@ new_state = "1"
         self.assert_qmp(result, 'return', {})
 
         event = self.vm.get_qmp_event(wait=True)
-        self.assertEquals(event['event'], 'BLOCK_JOB_ERROR')
+        self.assertEqual(event['event'], 'BLOCK_JOB_ERROR')
         self.assert_qmp(event, 'data/device', 'drive0')
         self.assert_qmp(event, 'data/operation', 'read')
         result = self.vm.qmp('query-block-jobs')
@@ -609,7 +609,7 @@ new_state = "1"
         self.assert_qmp(result, 'return', {})
 
         event = self.vm.get_qmp_event(wait=True)
-        self.assertEquals(event['event'], 'BLOCK_JOB_ERROR')
+        self.assertEqual(event['event'], 'BLOCK_JOB_ERROR')
         self.assert_qmp(event, 'data/device', 'drive0')
         self.assert_qmp(event, 'data/operation', 'write')
         result = self.vm.qmp('query-block-jobs')
diff --git a/tests/qemu-iotests/118 b/tests/qemu-iotests/118
index 3cf21218f0..8158b4bd25 100755
--- a/tests/qemu-iotests/118
+++ b/tests/qemu-iotests/118
@@ -295,7 +295,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
         result = self.vm.qmp('blockdev-close-tray', device='drive0')
         # Should be a no-op
         self.assert_qmp(result, 'return', {})
-        self.assertEquals(self.vm.get_qmp_events(wait=False), [])
+        self.assertEqual(self.vm.get_qmp_events(wait=False), [])
 
     def test_remove_on_closed(self):
         if not self.has_real_tray:
@@ -476,7 +476,7 @@ class TestChangeReadOnly(ChangeBaseClass):
                                                        read_only_mode='retain')
         self.assert_qmp(result, 'error/class', 'GenericError')
 
-        self.assertEquals(self.vm.get_qmp_events(wait=False), [])
+        self.assertEqual(self.vm.get_qmp_events(wait=False), [])
 
         result = self.vm.qmp('query-block')
         self.assert_qmp(result, 'return[0]/inserted/ro', False)
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 85c9d2c211..4c515d2e6c 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -385,7 +385,7 @@ class QMPTestCase(unittest.TestCase):
     def wait_ready_and_cancel(self, drive='drive0'):
         self.wait_ready(drive=drive)
         event = self.cancel_and_wait(drive=drive)
-        self.assertEquals(event['event'], 'BLOCK_JOB_COMPLETED')
+        self.assertEqual(event['event'], 'BLOCK_JOB_COMPLETED')
         self.assert_qmp(event, 'data/type', 'mirror')
         self.assert_qmp(event, 'data/offset', event['data']['len'])
 
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [Qemu-devel] [PATCH 9/9] iotests.py: use io.StringIO with python3
  2017-12-19 17:34 [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility Philippe Mathieu-Daudé
                   ` (7 preceding siblings ...)
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 8/9] iotests: replace assertEquals() by assertEqual() " Philippe Mathieu-Daudé
@ 2017-12-19 17:34 ` Philippe Mathieu-Daudé
  2017-12-20  6:48   ` Janosch Frank
  2017-12-20 10:10   ` Daniel P. Berrange
  2017-12-19 21:54 ` [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility Paolo Bonzini
  9 siblings, 2 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2017-12-19 17:34 UTC (permalink / raw)
  To: Kevin Wolf, Max Reitz, Cleber Rosa, Eduardo Habkost,
	Lukáš Doktor, Daniel P . Berrange, Eric Blake,
	Stefan Hajnoczi, Fam Zheng, Markus Armbruster
  Cc: Philippe Mathieu-Daudé, qemu-devel, qemu-block, John Snow,
	Paolo Bonzini, Nir Soffer, Janosch Frank, Ishani Chugh

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 tests/qemu-iotests/iotests.py | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 4c515d2e6c..0e1b8ab6e6 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -459,13 +459,16 @@ def main(supported_fmts=[], supported_oses=['linux']):
 
     # We need to filter out the time taken from the output so that qemu-iotest
     # can reliably diff the results against master output.
-    import StringIO
     if debug:
         output = sys.stdout
         verbosity = 2
         sys.argv.remove('-d')
     else:
-        output = StringIO.StringIO()
+        try:
+            from StringIO import StringIO
+        except ImportError:
+            from io import StringIO
+        output = StringIO()
 
     logging.basicConfig(level=(logging.DEBUG if debug else logging.WARN))
 
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 21+ messages in thread

* Re: [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility
  2017-12-19 17:34 [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility Philippe Mathieu-Daudé
                   ` (8 preceding siblings ...)
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 9/9] iotests.py: use io.StringIO with python3 Philippe Mathieu-Daudé
@ 2017-12-19 21:54 ` Paolo Bonzini
  9 siblings, 0 replies; 21+ messages in thread
From: Paolo Bonzini @ 2017-12-19 21:54 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Kevin Wolf, Max Reitz, Cleber Rosa,
	Eduardo Habkost, Lukáš Doktor, Daniel P . Berrange,
	Eric Blake, Stefan Hajnoczi, Fam Zheng, Markus Armbruster
  Cc: qemu-devel, qemu-block, John Snow, Nir Soffer, Peter Maydell,
	Janosch Frank, Ishani Chugh

On 19/12/2017 18:34, Philippe Mathieu-Daudé wrote:
> Hi,
> 
> This is a very boring series.
> 
> I a later series I refactor the iotests.py class, however when the first version
> of series [1] was posted I received comments that this class should no support
> Python 3.
> 
> I didn't tested with very old CentOS release, but this should work with Python
> versions >= 2.6.0a2.

Thanks, this is useful.  However, it'd be much easier if the commit
messages showed the actual error message that is fixed, or an example.

Paolo

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Qemu-devel] [PATCH 9/9] iotests.py: use io.StringIO with python3
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 9/9] iotests.py: use io.StringIO with python3 Philippe Mathieu-Daudé
@ 2017-12-20  6:48   ` Janosch Frank
  2017-12-20 10:10   ` Daniel P. Berrange
  1 sibling, 0 replies; 21+ messages in thread
From: Janosch Frank @ 2017-12-20  6:48 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Kevin Wolf, Max Reitz, Cleber Rosa,
	Eduardo Habkost, Lukáš Doktor, Daniel P . Berrange,
	Eric Blake, Stefan Hajnoczi, Fam Zheng, Markus Armbruster
  Cc: qemu-block, Nir Soffer, Ishani Chugh, qemu-devel, Paolo Bonzini,
	John Snow

[-- Attachment #1: Type: text/plain, Size: 1229 bytes --]

On 19.12.2017 18:34, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  tests/qemu-iotests/iotests.py | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
> index 4c515d2e6c..0e1b8ab6e6 100644
> --- a/tests/qemu-iotests/iotests.py
> +++ b/tests/qemu-iotests/iotests.py
> @@ -459,13 +459,16 @@ def main(supported_fmts=[], supported_oses=['linux']):
> 
>      # We need to filter out the time taken from the output so that qemu-iotest
>      # can reliably diff the results against master output.
> -    import StringIO
>      if debug:
>          output = sys.stdout
>          verbosity = 2
>          sys.argv.remove('-d')
>      else:
> -        output = StringIO.StringIO()
> +        try:
> +            from StringIO import StringIO
> +        except ImportError:
> +            from io import StringIO
> +        output = StringIO()

*Please* make a commit message that mentions that StringIO was moved
into the io package for py3. It took me way too long to make any sense
of this change until I read the except statement.
Maybe also add a comment.



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Qemu-devel] [PATCH 1/9] qemu.py: replace iteritems() by items() for python3 compatibility
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 1/9] qemu.py: replace iteritems() by items() for " Philippe Mathieu-Daudé
@ 2017-12-20  9:58   ` Daniel P. Berrange
  0 siblings, 0 replies; 21+ messages in thread
From: Daniel P. Berrange @ 2017-12-20  9:58 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Cleber Rosa, Eduardo Habkost, Lukáš Doktor, Eric Blake,
	Stefan Hajnoczi, Fam Zheng, Markus Armbruster, qemu-devel,
	Paolo Bonzini, Nir Soffer, Janosch Frank, Ishani Chugh

On Tue, Dec 19, 2017 at 02:34:17PM -0300, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  scripts/qemu.py | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Daniel P. Berrange <berrange@redhat.com>


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Qemu-devel] [PATCH 2/9] qmp.py: encode JSON unicode as byte strings for python3 compatibility
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 2/9] qmp.py: encode JSON unicode as byte strings " Philippe Mathieu-Daudé
@ 2017-12-20 10:00   ` Daniel P. Berrange
  0 siblings, 0 replies; 21+ messages in thread
From: Daniel P. Berrange @ 2017-12-20 10:00 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Cleber Rosa, Eduardo Habkost, Lukáš Doktor, Eric Blake,
	Stefan Hajnoczi, Fam Zheng, Markus Armbruster, qemu-devel,
	Paolo Bonzini, Nir Soffer, Janosch Frank, Ishani Chugh

On Tue, Dec 19, 2017 at 02:34:18PM -0300, Philippe Mathieu-Daudé wrote:
> the socket API expects byte strings.
> 
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  scripts/qmp/qmp.py | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Daniel P. Berrange <berrange@redhat.com>


> 
> diff --git a/scripts/qmp/qmp.py b/scripts/qmp/qmp.py
> index 07c9632e9e..1080195e04 100644
> --- a/scripts/qmp/qmp.py
> +++ b/scripts/qmp/qmp.py
> @@ -166,7 +166,7 @@ class QEMUMonitorProtocol(object):
>          """
>          self.logger.debug(">>> %s", qmp_cmd)
>          try:
> -            self.__sock.sendall(json.dumps(qmp_cmd))
> +            self.__sock.sendall(json.dumps(qmp_cmd).encode())
>          except socket.error as err:
>              if err[0] == errno.EPIPE:
>                  return
> -- 
> 2.15.1
> 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Qemu-devel] [PATCH 3/9] iotests: replace print statement by print() function for python3 compatibility
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 3/9] iotests: replace print statement by print() function " Philippe Mathieu-Daudé
@ 2017-12-20 10:03   ` Daniel P. Berrange
  0 siblings, 0 replies; 21+ messages in thread
From: Daniel P. Berrange @ 2017-12-20 10:03 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Kevin Wolf, Max Reitz, Cleber Rosa, Eduardo Habkost,
	Lukáš Doktor, Eric Blake, Stefan Hajnoczi, Fam Zheng,
	Markus Armbruster, qemu-devel, qemu-block, John Snow,
	Paolo Bonzini, Nir Soffer, Janosch Frank, Ishani Chugh

On Tue, Dec 19, 2017 at 02:34:19PM -0300, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  tests/qemu-iotests/149        | 3 ++-
>  tests/qemu-iotests/165        | 3 ++-
>  tests/qemu-iotests/iotests.py | 5 +++--
>  3 files changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/tests/qemu-iotests/149 b/tests/qemu-iotests/149
> index 223cd68ad5..d3ffa259db 100755
> --- a/tests/qemu-iotests/149
> +++ b/tests/qemu-iotests/149
> @@ -20,6 +20,7 @@
>  # Exercise the QEMU 'luks' block driver to validate interoperability
>  # with the Linux dm-crypt + cryptsetup implementation
>  
> +from __future__ import print_function
>  import subprocess
>  import os
>  import os.path
> @@ -376,7 +377,7 @@ def test_once(config, qemu_img=False):
>      finally:
>          iotests.log("# Delete image")
>          delete_image(config)
> -        print
> +        print()
>  
>  
>  # Obviously we only work with the luks image format
> diff --git a/tests/qemu-iotests/165 b/tests/qemu-iotests/165
> index a3932db3de..ab29066076 100755
> --- a/tests/qemu-iotests/165
> +++ b/tests/qemu-iotests/165
> @@ -18,6 +18,7 @@
>  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
>  #
>  
> +from __future__ import print_function
>  import os
>  import re
>  import iotests
> @@ -85,7 +86,7 @@ class TestPersistentDirtyBitmap(iotests.QMPTestCase):
>          log = re.sub(r'^\[I \d+\.\d+\] OPENED\n', '', log)
>          log = re.sub(r'\[I \+\d+\.\d+\] CLOSED\n?$', '', log)
>          if log:
> -            print log
> +            print(log)
>  
>          self.vm = self.mkVm()
>          self.vm.launch()
> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
> index 6f057904a9..85c9d2c211 100644
> --- a/tests/qemu-iotests/iotests.py
> +++ b/tests/qemu-iotests/iotests.py
> @@ -16,6 +16,7 @@
>  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
>  #
>  
> +from __future__ import print_function
>  import errno
>  import os
>  import re
> @@ -145,7 +146,7 @@ def filter_qmp_event(event):
>  def log(msg, filters=[]):
>      for flt in filters:
>          msg = flt(msg)
> -    print msg
> +    print(msg)
>  
>  class Timeout:
>      def __init__(self, seconds, errmsg = "Timeout"):
> @@ -417,7 +418,7 @@ def notrun(reason):
>      seq = os.path.basename(sys.argv[0])
>  
>      open('%s/%s.notrun' % (output_dir, seq), 'wb').write(reason + '\n')
> -    print '%s not run: %s' % (seq, reason)
> +    print("{} not run: {}".format(seq, reason))

I don't see the benefit in changing '%s' to '{}' and '%s' to '.format'.
The original code is the idiomatic python IME.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Qemu-devel] [PATCH 4/9] iotests: use octal numbers for python3 compatibility
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 4/9] iotests: use octal numbers " Philippe Mathieu-Daudé
@ 2017-12-20 10:05   ` Daniel P. Berrange
  0 siblings, 0 replies; 21+ messages in thread
From: Daniel P. Berrange @ 2017-12-20 10:05 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Kevin Wolf, Max Reitz, Cleber Rosa, Eduardo Habkost,
	Lukáš Doktor, Eric Blake, Stefan Hajnoczi, Fam Zheng,
	Markus Armbruster, qemu-devel, qemu-block, John Snow,
	Paolo Bonzini, Nir Soffer, Janosch Frank, Ishani Chugh

On Tue, Dec 19, 2017 at 02:34:20PM -0300, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  tests/qemu-iotests/118 | 24 ++++++++++++------------
>  1 file changed, 12 insertions(+), 12 deletions(-)

Reviewed-by: Daniel P. Berrange <berrange@redhat.com>


> 
> diff --git a/tests/qemu-iotests/118 b/tests/qemu-iotests/118
> index 8a9e838c90..3cf21218f0 100755
> --- a/tests/qemu-iotests/118
> +++ b/tests/qemu-iotests/118
> @@ -417,14 +417,14 @@ class TestChangeReadOnly(ChangeBaseClass):
>  
>      def tearDown(self):
>          self.vm.shutdown()
> -        os.chmod(old_img, 0666)
> -        os.chmod(new_img, 0666)
> +        os.chmod(old_img, 0o666)
> +        os.chmod(new_img, 0o666)
>          os.remove(old_img)
>          os.remove(new_img)
>  
>      def test_ro_ro_retain(self):
> -        os.chmod(old_img, 0444)
> -        os.chmod(new_img, 0444)
> +        os.chmod(old_img, 0o444)
> +        os.chmod(new_img, 0o444)
>          self.vm.add_drive(old_img, 'media=disk,read-only=on', 'floppy')
>          self.vm.launch()
>  
> @@ -443,7 +443,7 @@ class TestChangeReadOnly(ChangeBaseClass):
>          self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
>  
>      def test_ro_rw_retain(self):
> -        os.chmod(old_img, 0444)
> +        os.chmod(old_img, 0o444)
>          self.vm.add_drive(old_img, 'media=disk,read-only=on', 'floppy')
>          self.vm.launch()
>  
> @@ -462,7 +462,7 @@ class TestChangeReadOnly(ChangeBaseClass):
>          self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
>  
>      def test_rw_ro_retain(self):
> -        os.chmod(new_img, 0444)
> +        os.chmod(new_img, 0o444)
>          self.vm.add_drive(old_img, 'media=disk', 'floppy')
>          self.vm.launch()
>  
> @@ -483,7 +483,7 @@ class TestChangeReadOnly(ChangeBaseClass):
>          self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
>  
>      def test_ro_rw(self):
> -        os.chmod(old_img, 0444)
> +        os.chmod(old_img, 0o444)
>          self.vm.add_drive(old_img, 'media=disk,read-only=on', 'floppy')
>          self.vm.launch()
>  
> @@ -503,7 +503,7 @@ class TestChangeReadOnly(ChangeBaseClass):
>          self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
>  
>      def test_rw_ro(self):
> -        os.chmod(new_img, 0444)
> +        os.chmod(new_img, 0o444)
>          self.vm.add_drive(old_img, 'media=disk', 'floppy')
>          self.vm.launch()
>  
> @@ -542,7 +542,7 @@ class TestChangeReadOnly(ChangeBaseClass):
>          self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
>  
>      def test_make_ro_rw(self):
> -        os.chmod(new_img, 0444)
> +        os.chmod(new_img, 0o444)
>          self.vm.add_drive(old_img, 'media=disk', 'floppy')
>          self.vm.launch()
>  
> @@ -562,7 +562,7 @@ class TestChangeReadOnly(ChangeBaseClass):
>          self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
>  
>      def test_make_rw_ro_by_retain(self):
> -        os.chmod(old_img, 0444)
> +        os.chmod(old_img, 0o444)
>          self.vm.add_drive(old_img, 'media=disk,read-only=on', 'floppy')
>          self.vm.launch()
>  
> @@ -581,7 +581,7 @@ class TestChangeReadOnly(ChangeBaseClass):
>          self.assert_qmp(result, 'return[0]/inserted/image/filename', new_img)
>  
>      def test_make_ro_rw_by_retain(self):
> -        os.chmod(new_img, 0444)
> +        os.chmod(new_img, 0o444)
>          self.vm.add_drive(old_img, 'media=disk', 'floppy')
>          self.vm.launch()
>  
> @@ -600,7 +600,7 @@ class TestChangeReadOnly(ChangeBaseClass):
>          self.assert_qmp(result, 'return[0]/inserted/image/filename', old_img)
>  
>      def test_rw_ro_cycle(self):
> -        os.chmod(new_img, 0444)
> +        os.chmod(new_img, 0o444)
>          self.vm.add_drive(old_img, 'media=disk', 'floppy')
>          self.vm.launch()
>  
> -- 
> 2.15.1
> 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Qemu-devel] [PATCH 5/9] iotests: replace xrange() by range() for python3 compatibility
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 5/9] iotests: replace xrange() by range() " Philippe Mathieu-Daudé
@ 2017-12-20 10:06   ` Daniel P. Berrange
  0 siblings, 0 replies; 21+ messages in thread
From: Daniel P. Berrange @ 2017-12-20 10:06 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Kevin Wolf, Max Reitz, Cleber Rosa, Eduardo Habkost,
	Lukáš Doktor, Eric Blake, Stefan Hajnoczi, Fam Zheng,
	Markus Armbruster, qemu-devel, qemu-block, John Snow,
	Paolo Bonzini, Nir Soffer, Janosch Frank, Ishani Chugh

On Tue, Dec 19, 2017 at 02:34:21PM -0300, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  tests/qemu-iotests/044 | 14 +++++++-------
>  tests/qemu-iotests/163 |  2 +-
>  2 files changed, 8 insertions(+), 8 deletions(-)

Reviewed-by: Daniel P. Berrange <berrange@redhat.com>


> 
> diff --git a/tests/qemu-iotests/044 b/tests/qemu-iotests/044
> index 11ea0f4d35..1e96800176 100755
> --- a/tests/qemu-iotests/044
> +++ b/tests/qemu-iotests/044
> @@ -52,23 +52,23 @@ class TestRefcountTableGrowth(iotests.QMPTestCase):
>              # Write a refcount table
>              fd.seek(off_reftable)
>  
> -            for i in xrange(0, h.refcount_table_clusters):
> +            for i in range(0, h.refcount_table_clusters):
>                  sector = ''.join(struct.pack('>Q',
>                      off_refblock + i * 64 * 512 + j * 512)
> -                    for j in xrange(0, 64))
> +                    for j in range(0, 64))
>                  fd.write(sector)
>  
>              # Write the refcount blocks
>              assert(fd.tell() == off_refblock)
> -            sector = ''.join(struct.pack('>H', 1) for j in xrange(0, 64 * 256))
> -            for block in xrange(0, h.refcount_table_clusters):
> +            sector = ''.join(struct.pack('>H', 1) for j in range(0, 64 * 256))
> +            for block in range(0, h.refcount_table_clusters):
>                  fd.write(sector)
>  
>              # Write the L1 table
>              assert(fd.tell() == off_l1)
>              assert(off_l2 + 512 * h.l1_size == off_data)
>              table = ''.join(struct.pack('>Q', (1 << 63) | off_l2 + 512 * j)
> -                for j in xrange(0, h.l1_size))
> +                for j in range(0, h.l1_size))
>              fd.write(table)
>  
>              # Write the L2 tables
> @@ -79,14 +79,14 @@ class TestRefcountTableGrowth(iotests.QMPTestCase):
>              off = off_data
>              while remaining > 1024 * 512:
>                  pytable = list((1 << 63) | off + 512 * j
> -                    for j in xrange(0, 1024))
> +                    for j in range(0, 1024))
>                  table = struct.pack('>1024Q', *pytable)
>                  fd.write(table)
>                  remaining = remaining - 1024 * 512
>                  off = off + 1024 * 512
>  
>              table = ''.join(struct.pack('>Q', (1 << 63) | off + 512 * j)
> -                for j in xrange(0, remaining / 512))
> +                for j in range(0, remaining / 512))
>              fd.write(table)
>  
>  
> diff --git a/tests/qemu-iotests/163 b/tests/qemu-iotests/163
> index 403842354e..fb0d0257ec 100644
> --- a/tests/qemu-iotests/163
> +++ b/tests/qemu-iotests/163
> @@ -41,7 +41,7 @@ class ShrinkBaseClass(iotests.QMPTestCase):
>          div_roundup = lambda n, d: (n + d - 1) / d
>  
>          def split_by_n(data, n):
> -            for x in xrange(0, len(data), n):
> +            for x in range(0, len(data), n):
>                  yield struct.unpack('>Q', data[x:x + n])[0] & l1_mask
>  
>          def check_l1_table(h, l1_data):
> -- 
> 2.15.1
> 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Qemu-devel] [PATCH 6/9] iotests: replace dict.has_key() by 'in' operator for python3 compatibility
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 6/9] iotests: replace dict.has_key() by 'in' operator " Philippe Mathieu-Daudé
@ 2017-12-20 10:07   ` Daniel P. Berrange
  0 siblings, 0 replies; 21+ messages in thread
From: Daniel P. Berrange @ 2017-12-20 10:07 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Kevin Wolf, Max Reitz, Cleber Rosa, Eduardo Habkost,
	Lukáš Doktor, Eric Blake, Stefan Hajnoczi, Fam Zheng,
	Markus Armbruster, qemu-devel, qemu-block, John Snow,
	Paolo Bonzini, Nir Soffer, Janosch Frank, Ishani Chugh

On Tue, Dec 19, 2017 at 02:34:22PM -0300, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  tests/qemu-iotests/093 | 2 +-
>  tests/qemu-iotests/096 | 4 ++--
>  tests/qemu-iotests/136 | 2 +-
>  3 files changed, 4 insertions(+), 4 deletions(-)

Reviewed-by: Daniel P. Berrange <berrange@redhat.com>


> 
> diff --git a/tests/qemu-iotests/093 b/tests/qemu-iotests/093
> index 5c36a5fb4d..28b1d021ca 100755
> --- a/tests/qemu-iotests/093
> +++ b/tests/qemu-iotests/093
> @@ -237,7 +237,7 @@ class ThrottleTestGroupNames(iotests.QMPTestCase):
>                  if name:
>                      self.assertEqual(info["group"], name)
>                  else:
> -                    self.assertFalse(info.has_key('group'))
> +                    self.assertFalse('group' in info)
>                  return
>  
>          raise Exception("No group information found for '%s'" % device)
> diff --git a/tests/qemu-iotests/096 b/tests/qemu-iotests/096
> index aeeb3753cf..a69439602d 100644
> --- a/tests/qemu-iotests/096
> +++ b/tests/qemu-iotests/096
> @@ -53,9 +53,9 @@ class TestLiveSnapshot(iotests.QMPTestCase):
>                  self.assertEqual(r['iops'], self.iops)
>                  self.assertEqual(r['iops_size'], self.iops_size)
>              else:
> -                self.assertFalse(r.has_key('group'))
> +                self.assertFalse('group' in r)
>                  self.assertEqual(r['iops'], 0)
> -                self.assertFalse(r.has_key('iops_size'))
> +                self.assertFalse('iops_size' in r)
>  
>      def testSnapshot(self):
>          self.checkConfig('base')
> diff --git a/tests/qemu-iotests/136 b/tests/qemu-iotests/136
> index 88b97ea7c6..a154d8ef9d 100644
> --- a/tests/qemu-iotests/136
> +++ b/tests/qemu-iotests/136
> @@ -203,7 +203,7 @@ sector = "%d"
>          if (self.accounted_ops(read = True, write = True, flush = True) != 0):
>              self.assertLess(0, stats['idle_time_ns'])
>          else:
> -            self.assertFalse(stats.has_key('idle_time_ns'))
> +            self.assertFalse('idle_time_ns' in stats)
>  
>          # This test does not alter these, so they must be all 0
>          self.assertEqual(0, stats['rd_merged'])
> -- 
> 2.15.1
> 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Qemu-devel] [PATCH 7/9] iotests: replace lambda function by lambda expression for python3 compatibility
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 7/9] iotests: replace lambda function by lambda expression " Philippe Mathieu-Daudé
@ 2017-12-20 10:08   ` Daniel P. Berrange
  0 siblings, 0 replies; 21+ messages in thread
From: Daniel P. Berrange @ 2017-12-20 10:08 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Kevin Wolf, Max Reitz, Cleber Rosa, Eduardo Habkost,
	Lukáš Doktor, Eric Blake, Stefan Hajnoczi, Fam Zheng,
	Markus Armbruster, qemu-devel, qemu-block, John Snow,
	Paolo Bonzini, Nir Soffer, Janosch Frank

On Tue, Dec 19, 2017 at 02:34:23PM -0300, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  tests/qemu-iotests/065 | 4 ++--
>  tests/qemu-iotests/139 | 2 +-
>  2 files changed, 3 insertions(+), 3 deletions(-)

Reviewed-by: Daniel P. Berrange <berrange@redhat.com>


> 
> diff --git a/tests/qemu-iotests/065 b/tests/qemu-iotests/065
> index 72aa9707c7..e95f7f817b 100755
> --- a/tests/qemu-iotests/065
> +++ b/tests/qemu-iotests/065
> @@ -59,7 +59,7 @@ class TestQemuImgInfo(TestImageInfoSpecific):
>                      :data.index('')]
>          for field in data:
>              self.assertTrue(re.match('^ {4}[^ ]', field) is not None)
> -        data = map(lambda line: line.strip(), data)
> +        data = [line.strip() for line in data]
>          self.assertEqual(data, self.human_compare)
>  
>  class TestQMP(TestImageInfoSpecific):
> @@ -80,7 +80,7 @@ class TestQMP(TestImageInfoSpecific):
>  
>      def test_qmp(self):
>          result = self.vm.qmp('query-block')['return']
> -        drive = filter(lambda drive: drive['device'] == 'drive0', result)[0]
> +        drive = [drive for drive in result if drive['device'] == 'drive0'][0]
>          data = drive['inserted']['image']['format-specific']
>          self.assertEqual(data['type'], iotests.imgfmt)
>          self.assertEqual(data['data'], self.compare)
> diff --git a/tests/qemu-iotests/139 b/tests/qemu-iotests/139
> index f8f02808a9..b54c816c16 100644
> --- a/tests/qemu-iotests/139
> +++ b/tests/qemu-iotests/139
> @@ -51,7 +51,7 @@ class TestBlockdevDel(iotests.QMPTestCase):
>      # Check whether a BlockDriverState exists
>      def checkBlockDriverState(self, node, must_exist = True):
>          result = self.vm.qmp('query-named-block-nodes')
> -        nodes = filter(lambda x: x['node-name'] == node, result['return'])
> +        nodes = [x for x in result['return'] if x['node-name'] == node]
>          self.assertLessEqual(len(nodes), 1)
>          self.assertEqual(must_exist, len(nodes) == 1)
>  
> -- 
> 2.15.1
> 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Qemu-devel] [PATCH 8/9] iotests: replace assertEquals() by assertEqual() for python3 compatibility
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 8/9] iotests: replace assertEquals() by assertEqual() " Philippe Mathieu-Daudé
@ 2017-12-20 10:08   ` Daniel P. Berrange
  0 siblings, 0 replies; 21+ messages in thread
From: Daniel P. Berrange @ 2017-12-20 10:08 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Kevin Wolf, Max Reitz, Cleber Rosa, Eduardo Habkost,
	Lukáš Doktor, Eric Blake, Stefan Hajnoczi, Fam Zheng,
	Markus Armbruster, qemu-devel, qemu-block, John Snow,
	Paolo Bonzini, Nir Soffer, Janosch Frank, Ishani Chugh

On Tue, Dec 19, 2017 at 02:34:24PM -0300, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  tests/qemu-iotests/041        | 6 +++---
>  tests/qemu-iotests/118        | 4 ++--
>  tests/qemu-iotests/iotests.py | 2 +-
>  3 files changed, 6 insertions(+), 6 deletions(-)

Reviewed-by: Daniel P. Berrange <berrange@redhat.com>


> 
> diff --git a/tests/qemu-iotests/041 b/tests/qemu-iotests/041
> index a860a31e9a..fa0f20af0e 100755
> --- a/tests/qemu-iotests/041
> +++ b/tests/qemu-iotests/041
> @@ -457,7 +457,7 @@ new_state = "1"
>          self.assert_qmp(result, 'return', {})
>  
>          event = self.vm.get_qmp_event(wait=True)
> -        self.assertEquals(event['event'], 'BLOCK_JOB_ERROR')
> +        self.assertEqual(event['event'], 'BLOCK_JOB_ERROR')
>          self.assert_qmp(event, 'data/device', 'drive0')
>          self.assert_qmp(event, 'data/operation', 'read')
>          result = self.vm.qmp('query-block-jobs')
> @@ -478,7 +478,7 @@ new_state = "1"
>          self.assert_qmp(result, 'return', {})
>  
>          event = self.vm.get_qmp_event(wait=True)
> -        self.assertEquals(event['event'], 'BLOCK_JOB_ERROR')
> +        self.assertEqual(event['event'], 'BLOCK_JOB_ERROR')
>          self.assert_qmp(event, 'data/device', 'drive0')
>          self.assert_qmp(event, 'data/operation', 'read')
>          result = self.vm.qmp('query-block-jobs')
> @@ -609,7 +609,7 @@ new_state = "1"
>          self.assert_qmp(result, 'return', {})
>  
>          event = self.vm.get_qmp_event(wait=True)
> -        self.assertEquals(event['event'], 'BLOCK_JOB_ERROR')
> +        self.assertEqual(event['event'], 'BLOCK_JOB_ERROR')
>          self.assert_qmp(event, 'data/device', 'drive0')
>          self.assert_qmp(event, 'data/operation', 'write')
>          result = self.vm.qmp('query-block-jobs')
> diff --git a/tests/qemu-iotests/118 b/tests/qemu-iotests/118
> index 3cf21218f0..8158b4bd25 100755
> --- a/tests/qemu-iotests/118
> +++ b/tests/qemu-iotests/118
> @@ -295,7 +295,7 @@ class GeneralChangeTestsBaseClass(ChangeBaseClass):
>          result = self.vm.qmp('blockdev-close-tray', device='drive0')
>          # Should be a no-op
>          self.assert_qmp(result, 'return', {})
> -        self.assertEquals(self.vm.get_qmp_events(wait=False), [])
> +        self.assertEqual(self.vm.get_qmp_events(wait=False), [])
>  
>      def test_remove_on_closed(self):
>          if not self.has_real_tray:
> @@ -476,7 +476,7 @@ class TestChangeReadOnly(ChangeBaseClass):
>                                                         read_only_mode='retain')
>          self.assert_qmp(result, 'error/class', 'GenericError')
>  
> -        self.assertEquals(self.vm.get_qmp_events(wait=False), [])
> +        self.assertEqual(self.vm.get_qmp_events(wait=False), [])
>  
>          result = self.vm.qmp('query-block')
>          self.assert_qmp(result, 'return[0]/inserted/ro', False)
> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
> index 85c9d2c211..4c515d2e6c 100644
> --- a/tests/qemu-iotests/iotests.py
> +++ b/tests/qemu-iotests/iotests.py
> @@ -385,7 +385,7 @@ class QMPTestCase(unittest.TestCase):
>      def wait_ready_and_cancel(self, drive='drive0'):
>          self.wait_ready(drive=drive)
>          event = self.cancel_and_wait(drive=drive)
> -        self.assertEquals(event['event'], 'BLOCK_JOB_COMPLETED')
> +        self.assertEqual(event['event'], 'BLOCK_JOB_COMPLETED')
>          self.assert_qmp(event, 'data/type', 'mirror')
>          self.assert_qmp(event, 'data/offset', event['data']['len'])
>  
> -- 
> 2.15.1
> 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [Qemu-devel] [PATCH 9/9] iotests.py: use io.StringIO with python3
  2017-12-19 17:34 ` [Qemu-devel] [PATCH 9/9] iotests.py: use io.StringIO with python3 Philippe Mathieu-Daudé
  2017-12-20  6:48   ` Janosch Frank
@ 2017-12-20 10:10   ` Daniel P. Berrange
  1 sibling, 0 replies; 21+ messages in thread
From: Daniel P. Berrange @ 2017-12-20 10:10 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Kevin Wolf, Max Reitz, Cleber Rosa, Eduardo Habkost,
	Lukáš Doktor, Eric Blake, Stefan Hajnoczi, Fam Zheng,
	Markus Armbruster, qemu-devel, qemu-block, John Snow,
	Paolo Bonzini, Nir Soffer, Janosch Frank, Ishani Chugh

On Tue, Dec 19, 2017 at 02:34:25PM -0300, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  tests/qemu-iotests/iotests.py | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)

Reviewed-by: Daniel P. Berrange <berrange@redhat.com>


> 
> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
> index 4c515d2e6c..0e1b8ab6e6 100644
> --- a/tests/qemu-iotests/iotests.py
> +++ b/tests/qemu-iotests/iotests.py
> @@ -459,13 +459,16 @@ def main(supported_fmts=[], supported_oses=['linux']):
>  
>      # We need to filter out the time taken from the output so that qemu-iotest
>      # can reliably diff the results against master output.
> -    import StringIO
>      if debug:
>          output = sys.stdout
>          verbosity = 2
>          sys.argv.remove('-d')
>      else:
> -        output = StringIO.StringIO()
> +        try:
> +            from StringIO import StringIO
> +        except ImportError:
> +            from io import StringIO
> +        output = StringIO()

If it was nit-picking I'd put the py3 'io' import first and the py2
'StringIO' as the fallback, but doesn't honestly matter

>  
>      logging.basicConfig(level=(logging.DEBUG if debug else logging.WARN))
>  
> -- 
> 2.15.1
> 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2017-12-20 10:10 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-19 17:34 [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility Philippe Mathieu-Daudé
2017-12-19 17:34 ` [Qemu-devel] [PATCH 1/9] qemu.py: replace iteritems() by items() for " Philippe Mathieu-Daudé
2017-12-20  9:58   ` Daniel P. Berrange
2017-12-19 17:34 ` [Qemu-devel] [PATCH 2/9] qmp.py: encode JSON unicode as byte strings " Philippe Mathieu-Daudé
2017-12-20 10:00   ` Daniel P. Berrange
2017-12-19 17:34 ` [Qemu-devel] [PATCH 3/9] iotests: replace print statement by print() function " Philippe Mathieu-Daudé
2017-12-20 10:03   ` Daniel P. Berrange
2017-12-19 17:34 ` [Qemu-devel] [PATCH 4/9] iotests: use octal numbers " Philippe Mathieu-Daudé
2017-12-20 10:05   ` Daniel P. Berrange
2017-12-19 17:34 ` [Qemu-devel] [PATCH 5/9] iotests: replace xrange() by range() " Philippe Mathieu-Daudé
2017-12-20 10:06   ` Daniel P. Berrange
2017-12-19 17:34 ` [Qemu-devel] [PATCH 6/9] iotests: replace dict.has_key() by 'in' operator " Philippe Mathieu-Daudé
2017-12-20 10:07   ` Daniel P. Berrange
2017-12-19 17:34 ` [Qemu-devel] [PATCH 7/9] iotests: replace lambda function by lambda expression " Philippe Mathieu-Daudé
2017-12-20 10:08   ` Daniel P. Berrange
2017-12-19 17:34 ` [Qemu-devel] [PATCH 8/9] iotests: replace assertEquals() by assertEqual() " Philippe Mathieu-Daudé
2017-12-20 10:08   ` Daniel P. Berrange
2017-12-19 17:34 ` [Qemu-devel] [PATCH 9/9] iotests.py: use io.StringIO with python3 Philippe Mathieu-Daudé
2017-12-20  6:48   ` Janosch Frank
2017-12-20 10:10   ` Daniel P. Berrange
2017-12-19 21:54 ` [Qemu-devel] [PATCH 0/9] iotests: python3 compatibility Paolo Bonzini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).