From: Bill O'Donnell <billodo@redhat.com>
To: Mikhail Terekhov <Mikhail.Terekhov@dell.com>
Cc: fio@vger.kernel.org
Subject: Re: [PATCH v2] make fio scripts python3-ready
Date: Mon, 7 May 2018 08:05:57 -0500 [thread overview]
Message-ID: <20180507130557.GA25870@redhat.com> (raw)
In-Reply-To: <5bb7266c-a0e7-42a3-45b8-29cc916ab817@dell.com>
On Fri, May 04, 2018 at 05:25:39PM -0400, Mikhail Terekhov wrote:
> Hi,
>
> On 05/04/18 15:43, Bill O'Donnell wrote:
> > Many distributions are moving to python3 by default. Here's
> > an attempt to make the python scripts in fio python3-ready.
> >
> > Conversion was facilitated with automated tools. A few areas
> > were hand fixed: remove superfluous parentheses introduced by
> > 2to3 converter in print function calls, shebang modifications
> > to use environment variable for python version, and byte-string
> > decode correction in steadystate_tests.py following 2to3
> > conversion.
> >
> > The modified scripts pass rudimentary testing when run under
> > python2.7 as well as python3.
> >
> > Signed-off-by: Bill O'Donnell <billodo@redhat.com>
> > ---
> > v2: Remove unnecessary changes to fiologparser_hist.py as
> > its conversion has been covered in earlier patches.
> > Keep shebangs at previous python2.7 state. Remove
> > superfluous imports.
> >
> >
> > doc/conf.py | 3 +++
> > tools/fiologparser.py | 3 +++
> > unit_tests/steadystate_tests.py | 20 ++++++++++++--------
> > 3 files changed, 18 insertions(+), 8 deletions(-)
> >
> > diff --git a/doc/conf.py b/doc/conf.py
> > index d4dd9d20..087a9a11 100644
> > --- a/doc/conf.py
> > +++ b/doc/conf.py
> > @@ -22,6 +22,9 @@
> >
> > # -- General configuration ------------------------------------------------
> >
> > +from __future__ import absolute_import
> > +from __future__ import print_function
> > +
> IMHO these imports are needed only for python < 2.7.
> I do not think it worth it to support such an ancient versions.
> The same for the other files.
python-modernize (and 2to3) automated scripts still insert these
imports, erring on the side of caution I suppose. I'm sticking to
that notion to support any distro (eg. Fedora 28 still supports python 2.7).
Thanks-
Bill
>
> > # If your documentation needs a minimal Sphinx version, state it here.
> > #
> > # needs_sphinx = '1.0'
> > diff --git a/tools/fiologparser.py b/tools/fiologparser.py
> > index 8549859f..cc29f1c7 100755
> > --- a/tools/fiologparser.py
> > +++ b/tools/fiologparser.py
> > @@ -1,4 +1,5 @@
> > #!/usr/bin/python2.7
> > +# Note: this script is python2 and python 3 compatible.
> > #
> > # fiologparser.py
> > #
> > @@ -13,6 +14,8 @@
> > #
> > # to see per-interval average completion latency.
> >
> > +from __future__ import absolute_import
> > +from __future__ import print_function
> > import argparse
> > import math
> >
> > diff --git a/unit_tests/steadystate_tests.py b/unit_tests/steadystate_tests.py
> > index 5a74f956..50254dcc 100755
> > --- a/unit_tests/steadystate_tests.py
> > +++ b/unit_tests/steadystate_tests.py
> > @@ -1,4 +1,5 @@
> > #!/usr/bin/python2.7
> > +# Note: this script is python2 and python 3 compatible.
> > #
> > # steadystate_tests.py
> > #
> > @@ -18,6 +19,8 @@
> > # if ss attained: min runtime = ss_dur + ss_ramp
> > # if not attained: runtime = timeout
> >
> > +from __future__ import absolute_import
> > +from __future__ import print_function
> > import os
> > import sys
> > import json
> > @@ -26,11 +29,12 @@ import pprint
> > import argparse
> > import subprocess
> > from scipy import stats
> > +from six.moves import range
> >
> > def parse_args():
> > parser = argparse.ArgumentParser()
> > parser.add_argument('fio',
> > - help='path to fio executable');
> > + help='path to fio executable')
> > parser.add_argument('--read',
> > help='target for read testing')
> > parser.add_argument('--write',
> > @@ -45,7 +49,7 @@ def check(data, iops, slope, pct, limit, dur, criterion):
> > data = data[measurement]
> > mean = sum(data) / len(data)
> > if slope:
> > - x = range(len(data))
> > + x = list(range(len(data)))
> > m, intercept, r_value, p_value, std_err = stats.linregress(x,data)
> > m = abs(m)
> > if pct:
> > @@ -89,11 +93,11 @@ if __name__ == '__main__':
> > 'output': "set steady state BW threshold to 12" },
> > ]
> > for test in parsing:
> > - output = subprocess.check_output([args.fio] + test['args']);
> > - if test['output'] in output:
> > - print "PASSED '{0}' found with arguments {1}".format(test['output'], test['args'])
> > + output = subprocess.check_output([args.fio] + test['args'])
> > + if test['output'] in output.decode():
> > + print("PASSED '{0}' found with arguments {1}".format(test['output'], test['args']))
> > else:
> > - print "FAILED '{0}' NOT found with arguments {1}".format(test['output'], test['args'])
> > + print("FAILED '{0}' NOT found with arguments {1}".format(test['output'], test['args']))
> >
> > #
> > # test some read workloads
> > @@ -117,7 +121,7 @@ if __name__ == '__main__':
> > args.read = '/dev/zero'
> > extra = [ "--size=134217728" ] # 128 MiB
> > else:
> > - print "ERROR: file for read testing must be specified on non-posix systems"
> > + print("ERROR: file for read testing must be specified on non-posix systems")
> > sys.exit(1)
> > else:
> > extra = []
> > @@ -216,7 +220,7 @@ if __name__ == '__main__':
> > else:
> > result = 'FAILED '
> > line = result + line + ' no ss, expected runtime {0} ~= actual runtime {1}'.format(expected, actual)
> > - print line
> > + print(line)
> > if 'steadystate' in jsonjob:
> > pp.pprint(jsonjob['steadystate'])
> > jobnum += 1
> Regards,
> Mikhail
> --
> To unsubscribe from this list: send the line "unsubscribe fio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2018-05-07 13:06 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-04 14:34 [PATCH] make fio scripts python3-ready Bill O'Donnell
2018-05-04 16:29 ` Sitsofe Wheeler
2018-05-04 18:35 ` Bill O'Donnell
2018-05-04 19:43 ` [PATCH v2] " Bill O'Donnell
2018-05-04 21:25 ` Mikhail Terekhov
2018-05-07 13:05 ` Bill O'Donnell [this message]
2018-05-16 17:18 ` Jens Axboe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180507130557.GA25870@redhat.com \
--to=billodo@redhat.com \
--cc=Mikhail.Terekhov@dell.com \
--cc=fio@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.