image-fuzzer: Use io.StringIO

StringIO.StringIO is not available on Python 3, but io.StringIO
is available on both Python 2 and 3.  io.StringIO is slightly
different from the Python 2 StringIO module, though, so we need
bytes coming from subprocess.Popen() to be explicitly decoded.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20191016192430.25098-5-ehabkost@redhat.com
Message-Id: <20191016192430.25098-5-ehabkost@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Eduardo Habkost 2019-10-16 16:24:24 -03:00 committed by Stefan Hajnoczi
parent d974451c5b
commit 8353546de5
1 changed files with 9 additions and 5 deletions

View File

@ -28,7 +28,7 @@ import shutil
from itertools import count from itertools import count
import time import time
import getopt import getopt
import StringIO import io
import resource import resource
try: try:
@ -84,8 +84,12 @@ def run_app(fd, q_args):
try: try:
out, err = process.communicate() out, err = process.communicate()
signal.alarm(0) signal.alarm(0)
fd.write(out) # fd is a text file, so we need to decode the process output before
fd.write(err) # writing to it.
# We could be simply using the `errors` parameter of subprocess.Popen(),
# but this will be possible only after migrating to Python 3
fd.write(out.decode(errors='replace'))
fd.write(err.decode(errors='replace'))
fd.flush() fd.flush()
return process.returncode return process.returncode
@ -183,7 +187,7 @@ class TestEnv(object):
MAX_BACKING_FILE_SIZE) * (1 << 20) MAX_BACKING_FILE_SIZE) * (1 << 20)
cmd = self.qemu_img + ['create', '-f', backing_file_fmt, cmd = self.qemu_img + ['create', '-f', backing_file_fmt,
backing_file_name, str(backing_file_size)] backing_file_name, str(backing_file_size)]
temp_log = StringIO.StringIO() temp_log = io.StringIO()
retcode = run_app(temp_log, cmd) retcode = run_app(temp_log, cmd)
if retcode == 0: if retcode == 0:
temp_log.close() temp_log.close()
@ -240,7 +244,7 @@ class TestEnv(object):
"Backing file: %s\n" \ "Backing file: %s\n" \
% (self.seed, " ".join(current_cmd), % (self.seed, " ".join(current_cmd),
self.current_dir, backing_file_name) self.current_dir, backing_file_name)
temp_log = StringIO.StringIO() temp_log = io.StringIO()
try: try:
retcode = run_app(temp_log, current_cmd) retcode = run_app(temp_log, current_cmd)
except OSError as e: except OSError as e: