scripts: Make fio.py python3 compatible

Fix deprecated print statements and properly encode strings for file and
process communications.

Change-Id: I896c9dd7b9b15be8684af267066dae8ca8df4f62
Signed-off-by: Seth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/410949
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
This commit is contained in:
Seth Howell 2018-05-11 14:39:35 -07:00 committed by Daniel Verkamp
parent 61770b52e3
commit d0b7400c08

View File

@ -37,7 +37,7 @@ filename=%(device)s
def interrupt_handler(signum, frame): def interrupt_handler(signum, frame):
fio.terminate() fio.terminate()
print "FIO terminated" print("FIO terminated")
sys.exit(0) sys.exit(0)
@ -45,11 +45,11 @@ def main():
global fio global fio
if (len(sys.argv) < 5): if (len(sys.argv) < 5):
print "usage:" print("usage:")
print " " + sys.argv[0] + " <io_size> <queue_depth> <test_type> <runtime>" print(" " + sys.argv[0] + " <io_size> <queue_depth> <test_type> <runtime>")
print "advanced usage:" print("advanced usage:")
print "If you want to run fio with verify, please add verify string after runtime." print("If you want to run fio with verify, please add verify string after runtime.")
print "Currently fio.py only support write rw randwrite randrw with verify enabled." print("Currently fio.py only support write rw randwrite randrw with verify enabled.")
sys.exit(1) sys.exit(1)
io_size = int(sys.argv[1]) io_size = int(sys.argv[1])
@ -62,7 +62,7 @@ def main():
verify = False verify = False
devices = get_target_devices() devices = get_target_devices()
print "Found devices: ", devices print("Found devices: ", devices)
configure_devices(devices) configure_devices(devices)
fio_executable = '/usr/bin/fio' fio_executable = '/usr/bin/fio'
@ -72,17 +72,17 @@ def main():
signal.signal(signal.SIGTERM, interrupt_handler) signal.signal(signal.SIGTERM, interrupt_handler)
signal.signal(signal.SIGINT, interrupt_handler) signal.signal(signal.SIGINT, interrupt_handler)
fio = Popen([fio_executable, '-'], stdin=PIPE) fio = Popen([fio_executable, '-'], stdin=PIPE)
fio.communicate(create_fio_config(io_size, queue_depth, device_paths, test_type, runtime, verify)) fio.communicate(create_fio_config(io_size, queue_depth, device_paths, test_type, runtime, verify).encode())
fio.stdin.close() fio.stdin.close()
rc = fio.wait() rc = fio.wait()
print "FIO completed with code %d\n" % rc print("FIO completed with code %d\n" % rc)
sys.stdout.flush() sys.stdout.flush()
sys.exit(rc) sys.exit(rc)
def get_target_devices(): def get_target_devices():
output = check_output('iscsiadm -m session -P 3', shell=True) output = check_output('iscsiadm -m session -P 3', shell=True)
return re.findall("Attached scsi disk (sd[a-z]+)", output) return re.findall("Attached scsi disk (sd[a-z]+)", output.decode("ascii"))
def create_fio_config(size, q_depth, devices, test, run_time, verify): def create_fio_config(size, q_depth, devices, test, run_time, verify):
@ -101,7 +101,7 @@ def set_device_parameter(devices, filename_template, value):
for dev in devices: for dev in devices:
filename = filename_template % dev filename = filename_template % dev
f = open(filename, 'r+b') f = open(filename, 'r+b')
f.write(value) f.write(value.encode())
f.close() f.close()
@ -117,9 +117,9 @@ def configure_devices(devices):
except IOError: except IOError:
qd = qd - 1 qd = qd - 1
if qd == 0: if qd == 0:
print "Could not set block device queue depths." print("Could not set block device queue depths.")
else: else:
print "Requested queue_depth {} but only {} is supported.".format(str(requested_qd), str(qd)) print("Requested queue_depth {} but only {} is supported.".format(str(requested_qd), str(qd)))
set_device_parameter(devices, "/sys/block/%s/queue/scheduler", "noop") set_device_parameter(devices, "/sys/block/%s/queue/scheduler", "noop")