Blame fio-python3.patch

Eric Sandeen 18ffcf
make fio scripts python3-ready
Eric Sandeen 18ffcf
Eric Sandeen 18ffcf
commit 5eac3b00238b450ac0679121a76f1e566ca8f468
Eric Sandeen 18ffcf
Author: Bill O'Donnell <billodo@redhat.com>
Eric Sandeen 18ffcf
Date:   Fri May 4 14:43:40 2018 -0500
Eric Sandeen 18ffcf
Eric Sandeen 18ffcf
    make fio scripts python3-ready
Eric Sandeen 18ffcf
    
Eric Sandeen 18ffcf
    Many distributions are moving to python3 by default.  Here's
Eric Sandeen 18ffcf
    an attempt to make the python scripts in fio python3-ready.
Eric Sandeen 18ffcf
    
Eric Sandeen 18ffcf
    Conversion was facilitated with automated tools. A few areas
Eric Sandeen 18ffcf
    were hand fixed: remove superfluous parentheses introduced by
Eric Sandeen 18ffcf
    2to3 converter in print function calls, shebang modifications
Eric Sandeen 18ffcf
    to use environment variable for python version, and byte-string
Eric Sandeen 18ffcf
    decode correction in steadystate_tests.py following 2to3
Eric Sandeen 18ffcf
    conversion.
Eric Sandeen 18ffcf
    
Eric Sandeen 18ffcf
    The modified scripts pass rudimentary testing when run under
Eric Sandeen 18ffcf
    python2.7 as well as python3.
Eric Sandeen 18ffcf
    
Eric Sandeen 18ffcf
    Signed-off-by: Bill O'Donnell <billodo@redhat.com>
Eric Sandeen 18ffcf
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
Eric Sandeen 18ffcf
---
Eric Sandeen 18ffcf
Index: fio-3.6/doc/conf.py
Eric Sandeen 18ffcf
===================================================================
Eric Sandeen 18ffcf
--- fio-3.6.orig/doc/conf.py
Eric Sandeen 18ffcf
+++ fio-3.6/doc/conf.py
Eric Sandeen 18ffcf
@@ -22,6 +22,9 @@
Eric Sandeen 18ffcf
 
Eric Sandeen 18ffcf
 # -- General configuration ------------------------------------------------
Eric Sandeen 18ffcf
 
Eric Sandeen 18ffcf
+from __future__ import absolute_import
Eric Sandeen 18ffcf
+from __future__ import print_function
Eric Sandeen 18ffcf
+
Eric Sandeen 18ffcf
 # If your documentation needs a minimal Sphinx version, state it here.
Eric Sandeen 18ffcf
 #
Eric Sandeen 18ffcf
 # needs_sphinx = '1.0'
Eric Sandeen 18ffcf
Index: fio-3.6/tools/fiologparser.py
Eric Sandeen 18ffcf
===================================================================
Eric Sandeen 18ffcf
--- fio-3.6.orig/tools/fiologparser.py
Eric Sandeen 18ffcf
+++ fio-3.6/tools/fiologparser.py
Eric Sandeen 18ffcf
@@ -1,4 +1,5 @@
Eric Sandeen 05c3b5
-#!/usr/bin/python2.7
Eric Sandeen 05c3b5
+#!/usr/bin/python3
Eric Sandeen 18ffcf
+# Note: this script is python2 and python 3 compatible.
Eric Sandeen 18ffcf
 #
Eric Sandeen 18ffcf
 # fiologparser.py
Eric Sandeen 18ffcf
 #
Eric Sandeen 18ffcf
@@ -13,6 +14,8 @@
Eric Sandeen 18ffcf
 #
Eric Sandeen 18ffcf
 # to see per-interval average completion latency.
Eric Sandeen 18ffcf
 
Eric Sandeen 18ffcf
+from __future__ import absolute_import
Eric Sandeen 18ffcf
+from __future__ import print_function
Eric Sandeen 18ffcf
 import argparse
Eric Sandeen 18ffcf
 import math
Eric Sandeen 18ffcf
 
Eric Sandeen 18ffcf
Index: fio-3.6/unit_tests/steadystate_tests.py
Eric Sandeen 18ffcf
===================================================================
Eric Sandeen 18ffcf
--- fio-3.6.orig/unit_tests/steadystate_tests.py
Eric Sandeen 18ffcf
+++ fio-3.6/unit_tests/steadystate_tests.py
Eric Sandeen 18ffcf
@@ -1,4 +1,5 @@
Eric Sandeen 05c3b5
-#!/usr/bin/python2.7
Eric Sandeen 05c3b5
+#!/usr/bin/python3
Eric Sandeen 18ffcf
+# Note: this script is python2 and python 3 compatible.
Eric Sandeen 18ffcf
 #
Eric Sandeen 18ffcf
 # steadystate_tests.py
Eric Sandeen 18ffcf
 #
Eric Sandeen 18ffcf
@@ -18,6 +19,8 @@
Eric Sandeen 18ffcf
 # if ss attained: min runtime = ss_dur + ss_ramp
Eric Sandeen 18ffcf
 # if not attained: runtime = timeout
Eric Sandeen 18ffcf
 
Eric Sandeen 18ffcf
+from __future__ import absolute_import
Eric Sandeen 18ffcf
+from __future__ import print_function
Eric Sandeen 18ffcf
 import os
Eric Sandeen 18ffcf
 import sys
Eric Sandeen 18ffcf
 import json
Eric Sandeen 18ffcf
@@ -26,11 +29,12 @@ import pprint
Eric Sandeen 18ffcf
 import argparse
Eric Sandeen 18ffcf
 import subprocess
Eric Sandeen 18ffcf
 from scipy import stats
Eric Sandeen 18ffcf
+from six.moves import range
Eric Sandeen 18ffcf
 
Eric Sandeen 18ffcf
 def parse_args():
Eric Sandeen 18ffcf
     parser = argparse.ArgumentParser()
Eric Sandeen 18ffcf
     parser.add_argument('fio',
Eric Sandeen 18ffcf
-                        help='path to fio executable');
Eric Sandeen 18ffcf
+                        help='path to fio executable')
Eric Sandeen 18ffcf
     parser.add_argument('--read',
Eric Sandeen 18ffcf
                         help='target for read testing')
Eric Sandeen 18ffcf
     parser.add_argument('--write',
Eric Sandeen 18ffcf
@@ -45,7 +49,7 @@ def check(data, iops, slope, pct, limit,
Eric Sandeen 18ffcf
     data = data[measurement]
Eric Sandeen 18ffcf
     mean = sum(data) / len(data)
Eric Sandeen 18ffcf
     if slope:
Eric Sandeen 18ffcf
-        x = range(len(data))
Eric Sandeen 18ffcf
+        x = list(range(len(data)))
Eric Sandeen 18ffcf
         m, intercept, r_value, p_value, std_err = stats.linregress(x,data)
Eric Sandeen 18ffcf
         m = abs(m)
Eric Sandeen 18ffcf
         if pct:
Eric Sandeen 18ffcf
@@ -89,11 +93,11 @@ if __name__ == '__main__':
Eric Sandeen 18ffcf
                   'output': "set steady state BW threshold to 12" },
Eric Sandeen 18ffcf
               ]
Eric Sandeen 18ffcf
     for test in parsing:
Eric Sandeen 18ffcf
-        output = subprocess.check_output([args.fio] + test['args']);
Eric Sandeen 18ffcf
-        if test['output'] in output:
Eric Sandeen 18ffcf
-            print "PASSED '{0}' found with arguments {1}".format(test['output'], test['args'])
Eric Sandeen 18ffcf
+        output = subprocess.check_output([args.fio] + test['args'])
Eric Sandeen 18ffcf
+        if test['output'] in output.decode():
Eric Sandeen 18ffcf
+            print("PASSED '{0}' found with arguments {1}".format(test['output'], test['args']))
Eric Sandeen 18ffcf
         else:
Eric Sandeen 18ffcf
-            print "FAILED '{0}' NOT found with arguments {1}".format(test['output'], test['args'])
Eric Sandeen 18ffcf
+            print("FAILED '{0}' NOT found with arguments {1}".format(test['output'], test['args']))
Eric Sandeen 18ffcf
 
Eric Sandeen 18ffcf
 #
Eric Sandeen 18ffcf
 # test some read workloads
Eric Sandeen 18ffcf
@@ -117,7 +121,7 @@ if __name__ == '__main__':
Eric Sandeen 18ffcf
             args.read = '/dev/zero'
Eric Sandeen 18ffcf
             extra = [ "--size=134217728" ]  # 128 MiB
Eric Sandeen 18ffcf
         else:
Eric Sandeen 18ffcf
-            print "ERROR: file for read testing must be specified on non-posix systems"
Eric Sandeen 18ffcf
+            print("ERROR: file for read testing must be specified on non-posix systems")
Eric Sandeen 18ffcf
             sys.exit(1)
Eric Sandeen 18ffcf
     else:
Eric Sandeen 18ffcf
         extra = []
Eric Sandeen 18ffcf
@@ -216,7 +220,7 @@ if __name__ == '__main__':
Eric Sandeen 18ffcf
                 else:
Eric Sandeen 18ffcf
                     result = 'FAILED '
Eric Sandeen 18ffcf
                 line = result + line + ' no ss, expected runtime {0} ~= actual runtime {1}'.format(expected, actual)
Eric Sandeen 18ffcf
-            print line
Eric Sandeen 18ffcf
+            print(line)
Eric Sandeen 18ffcf
             if 'steadystate' in jsonjob:
Eric Sandeen 18ffcf
                 pp.pprint(jsonjob['steadystate'])
Eric Sandeen 18ffcf
         jobnum += 1
Eric Sandeen 18ffcf
Eric Sandeen 18ffcf