1618 lines
64 KiB
Diff
1618 lines
64 KiB
Diff
From fd3b732f714da07d5b5326489b6e4aec1bc4fb00 Mon Sep 17 00:00:00 2001
|
|
From: John Kacur <jkacur@redhat.com>
|
|
Date: Tue, 8 May 2018 23:29:25 +0100
|
|
Subject: [PATCH 18/18] rteval: 2to3 transformations
|
|
|
|
Applied a series of fixes from the 2to3 tool, as well as a few of my own
|
|
tweaks
|
|
|
|
Signed-off-by: John Kacur <jkacur@redhat.com>
|
|
---
|
|
rteval-cmd | 14 +++---
|
|
rteval/Log.py | 12 ++---
|
|
rteval/__init__.py | 52 ++++++++++-----------
|
|
rteval/misc.py | 8 ++--
|
|
rteval/modules/__init__.py | 20 ++++----
|
|
rteval/modules/loads/hackbench.py | 6 +--
|
|
rteval/modules/loads/kcompile.py | 8 ++--
|
|
rteval/modules/measurement/__init__.py | 2 +-
|
|
rteval/modules/measurement/cyclictest.py | 16 +++----
|
|
rteval/modules/measurement/sysstat.py | 4 +-
|
|
rteval/rtevalConfig.py | 50 ++++++++++----------
|
|
rteval/rtevalMailer.py | 6 +--
|
|
rteval/rtevalReport.py | 8 ++--
|
|
rteval/rtevalXMLRPC.py | 18 ++++----
|
|
rteval/rtevalclient.py | 12 ++---
|
|
rteval/sysinfo/__init__.py | 48 ++++++++++----------
|
|
rteval/sysinfo/cputopology.py | 12 ++---
|
|
rteval/sysinfo/dmi.py | 12 ++---
|
|
rteval/sysinfo/kernel.py | 10 ++--
|
|
rteval/sysinfo/memory.py | 12 ++---
|
|
rteval/sysinfo/network.py | 4 +-
|
|
rteval/sysinfo/osinfo.py | 20 ++++----
|
|
rteval/sysinfo/services.py | 6 +--
|
|
rteval/sysinfo/tools.py | 4 +-
|
|
rteval/systopology.py | 28 ++++++------
|
|
rteval/xmlout.py | 76 +++++++++++++++----------------
|
|
setup.py | 4 +-
|
|
34 files changed, 329 insertions(+), 329 deletions(-)
|
|
|
|
diff --git a/rteval-cmd b/rteval-cmd
|
|
index 3ae29dbd9fe3..739a929316a3 100755
|
|
--- a/rteval-cmd
|
|
+++ b/rteval-cmd
|
|
@@ -52,7 +52,7 @@ def summarize(repfile, xslt):
|
|
try:
|
|
t = tarfile.open(repfile)
|
|
except:
|
|
- print "Don't know how to summarize %s (tarfile open failed)" % repfile
|
|
+ print("Don't know how to summarize %s (tarfile open failed)" % repfile)
|
|
return
|
|
element = None
|
|
for f in t.getnames():
|
|
@@ -60,7 +60,7 @@ def summarize(repfile, xslt):
|
|
element = f
|
|
break
|
|
if element == None:
|
|
- print "No summary.xml found in tar archive %s" % repfile
|
|
+ print("No summary.xml found in tar archive %s" % repfile)
|
|
return
|
|
tmp = tempfile.gettempdir()
|
|
t.extract(element, path=tmp)
|
|
@@ -83,7 +83,7 @@ def summarize(repfile, xslt):
|
|
|
|
# Parse and print the report through the XSLT template - preserve proper encoding
|
|
resdoc = xsltprs(xmldoc)
|
|
- print unicode(resdoc).encode('UTF-8')
|
|
+ print(str(resdoc).encode('UTF-8'))
|
|
|
|
# Clean up
|
|
del resdoc
|
|
@@ -162,7 +162,7 @@ def parse_options(cfg, parser, cmdargs):
|
|
|
|
(cmd_opts, cmd_args) = parser.parse_args(args = cmdargs)
|
|
if cmd_opts.rteval___version:
|
|
- print("rteval version %s" % RTEVAL_VERSION)
|
|
+ print(("rteval version %s" % RTEVAL_VERSION))
|
|
sys.exit(0);
|
|
|
|
if cmd_opts.rteval___duration:
|
|
@@ -266,7 +266,7 @@ if __name__ == '__main__':
|
|
# if --summarize was specified then just parse the XML, print it and exit
|
|
if rtevcfg.summarize or rtevcfg.rawhistogram:
|
|
if len(cmd_args) < 1:
|
|
- raise RuntimeError, "Must specify at least one XML file with --summarize!"
|
|
+ raise RuntimeError("Must specify at least one XML file with --summarize!")
|
|
|
|
for x in cmd_args:
|
|
if rtevcfg.summarize:
|
|
@@ -277,7 +277,7 @@ if __name__ == '__main__':
|
|
sys.exit(0)
|
|
|
|
if os.getuid() != 0:
|
|
- print "Must be root to run rteval!"
|
|
+ print("Must be root to run rteval!")
|
|
sys.exit(-1)
|
|
|
|
logger.log(Log.DEBUG, '''rteval options:
|
|
@@ -295,7 +295,7 @@ if __name__ == '__main__':
|
|
rtevcfg.duration, rtevcfg.sysreport))
|
|
|
|
if not os.path.isdir(rtevcfg.workdir):
|
|
- raise RuntimeError, "work directory %s does not exist" % rtevcfg.workdir
|
|
+ raise RuntimeError("work directory %s does not exist" % rtevcfg.workdir)
|
|
|
|
|
|
rteval = RtEval(config, loadmods, measuremods, logger)
|
|
diff --git a/rteval/Log.py b/rteval/Log.py
|
|
index a41ef319be0f..66aa77a59431 100644
|
|
--- a/rteval/Log.py
|
|
+++ b/rteval/Log.py
|
|
@@ -80,26 +80,26 @@ def unit_test(rootdir):
|
|
def run_log_test(l):
|
|
for lt in range(min(logtypes), max(logtypes)*2):
|
|
test = ", ".join([logtypes_s[logtypes.index(i)] for i in [p for p in takewhile(lambda x: x <= lt, (2**i for i in count())) if p & lt]])
|
|
- print "Testing verbosity flags set to: (%i) %s" % (lt, test)
|
|
+ print("Testing verbosity flags set to: (%i) %s" % (lt, test))
|
|
msg = "Log entry when verbosity is set to %i [%s]" % (lt, test)
|
|
l.SetLogVerbosity(lt)
|
|
test_log(l, msg)
|
|
- print "-"*20
|
|
+ print("-"*20)
|
|
|
|
try:
|
|
- print "** Testing stdout"
|
|
+ print("** Testing stdout")
|
|
l = Log()
|
|
run_log_test(l)
|
|
|
|
- print "** Testing file logging - using test.log"
|
|
+ print("** Testing file logging - using test.log")
|
|
l = Log("test.log")
|
|
run_log_test(l)
|
|
|
|
return 0
|
|
- except Exception, e:
|
|
+ except Exception as e:
|
|
import traceback
|
|
traceback.print_exc(file=sys.stdout)
|
|
- print "** EXCEPTION %s", str(e)
|
|
+ print("** EXCEPTION %s", str(e))
|
|
return 1
|
|
|
|
|
|
diff --git a/rteval/__init__.py b/rteval/__init__.py
|
|
index a7e44d9c41f1..176715f74ebd 100644
|
|
--- a/rteval/__init__.py
|
|
+++ b/rteval/__init__.py
|
|
@@ -34,13 +34,13 @@ __license__ = "GPLv2 License"
|
|
import os, signal, sys, threading, time
|
|
from datetime import datetime
|
|
from distutils import sysconfig
|
|
-from modules.loads import LoadModules
|
|
-from modules.measurement import MeasurementModules, MeasurementProfile
|
|
-from rtevalReport import rtevalReport
|
|
-from rtevalXMLRPC import rtevalXMLRPC
|
|
-from Log import Log
|
|
-import rtevalConfig, rtevalMailer
|
|
-import version
|
|
+from .modules.loads import LoadModules
|
|
+from .modules.measurement import MeasurementModules, MeasurementProfile
|
|
+from .rtevalReport import rtevalReport
|
|
+from .rtevalXMLRPC import rtevalXMLRPC
|
|
+from .Log import Log
|
|
+from . import rtevalConfig, rtevalMailer
|
|
+from . import version
|
|
|
|
RTEVAL_VERSION = version.RTEVAL_VERSION
|
|
|
|
@@ -52,7 +52,7 @@ def sig_handler(signum, frame):
|
|
if signum == signal.SIGINT or signum == signal.SIGTERM:
|
|
global stopsig_received
|
|
stopsig_received = True
|
|
- print "*** stop signal received - stopping rteval run ***"
|
|
+ print("*** stop signal received - stopping rteval run ***")
|
|
else:
|
|
raise RuntimeError("SIGNAL received! (%d)" % signum)
|
|
|
|
@@ -81,7 +81,7 @@ class RtEval(rtevalReport):
|
|
self.__reportdir = None
|
|
|
|
# Import SystemInfo here, to avoid DMI warnings if RtEval() is not used
|
|
- from sysinfo import SystemInfo
|
|
+ from .sysinfo import SystemInfo
|
|
self._sysinfo = SystemInfo(self.__rtevcfg, logger=self.__logger)
|
|
|
|
# prepare a mailer, if that's configured
|
|
@@ -105,11 +105,11 @@ class RtEval(rtevalReport):
|
|
self.__xmlrpc = rtevalXMLRPC(self.__rtevcfg.xmlrpc, self.__logger, self.__mailer)
|
|
if not self.__xmlrpc.Ping():
|
|
if not self.__rtevcfg.xmlrpc_noabort:
|
|
- print "ERROR: Could not reach XML-RPC server '%s'. Aborting." % \
|
|
- self.__rtevcfg.xmlrpc
|
|
+ print("ERROR: Could not reach XML-RPC server '%s'. Aborting." % \
|
|
+ self.__rtevcfg.xmlrpc)
|
|
sys.exit(2)
|
|
else:
|
|
- print "WARNING: Could not ping the XML-RPC server. Will continue anyway."
|
|
+ print("WARNING: Could not ping the XML-RPC server. Will continue anyway.")
|
|
else:
|
|
self.__xmlrpc = None
|
|
|
|
@@ -122,7 +122,7 @@ class RtEval(rtevalReport):
|
|
if hours: r = r - (hours * 3600)
|
|
minutes = r / 60
|
|
if minutes: r = r - (minutes * 60)
|
|
- print "rteval time remaining: %d days, %d hours, %d minutes, %d seconds" % (days, hours, minutes, r)
|
|
+ print("rteval time remaining: %d days, %d hours, %d minutes, %d seconds" % (days, hours, minutes, r))
|
|
|
|
|
|
def Prepare(self, onlyload = False):
|
|
@@ -135,7 +135,7 @@ class RtEval(rtevalReport):
|
|
# or the loads logging is enabled
|
|
if not onlyload or self.__rtevcfg.logging:
|
|
self.__reportdir = self._make_report_dir(self.__rtevcfg.workdir, "summary.xml")
|
|
- except Exception, e:
|
|
+ except Exception as e:
|
|
raise RuntimeError("Cannot create report directory (NFS with rootsquash on?) [%s]", str(e))
|
|
|
|
self.__logger.log(Log.INFO, "Preparing load modules")
|
|
@@ -173,23 +173,23 @@ class RtEval(rtevalReport):
|
|
if with_loads:
|
|
self._loadmods.Start()
|
|
|
|
- print "rteval run on %s started at %s" % (os.uname()[2], time.asctime())
|
|
+ print("rteval run on %s started at %s" % (os.uname()[2], time.asctime()))
|
|
onlinecpus = self._sysinfo.cpu_getCores(True)
|
|
cpulist = self._loadmods._cfg.GetSection("loads").cpulist
|
|
if cpulist:
|
|
- print "started %d loads on cores %s" % (self._loadmods.ModulesLoaded(), cpulist),
|
|
+ print("started %d loads on cores %s" % (self._loadmods.ModulesLoaded(), cpulist), end=' ')
|
|
else:
|
|
- print "started %d loads on %d cores" % (self._loadmods.ModulesLoaded(), onlinecpus),
|
|
+ print("started %d loads on %d cores" % (self._loadmods.ModulesLoaded(), onlinecpus), end=' ')
|
|
if self._sysinfo.mem_get_numa_nodes() > 1:
|
|
- print " with %d numa nodes" % self._sysinfo.mem_get_numa_nodes()
|
|
+ print(" with %d numa nodes" % self._sysinfo.mem_get_numa_nodes())
|
|
else:
|
|
- print ""
|
|
+ print("")
|
|
cpulist = self._measuremods._MeasurementModules__cfg.GetSection("measurement").cpulist
|
|
if cpulist:
|
|
- print "started measurement threads on cores %s" % cpulist
|
|
+ print("started measurement threads on cores %s" % cpulist)
|
|
else:
|
|
- print "started measurement threads on %d cores" % onlinecpus
|
|
- print "Run duration: %s seconds" % str(self.__rtevcfg.duration)
|
|
+ print("started measurement threads on %d cores" % onlinecpus)
|
|
+ print("Run duration: %s seconds" % str(self.__rtevcfg.duration))
|
|
|
|
# start the cyclictest thread
|
|
measure_profile.Start()
|
|
@@ -220,7 +220,7 @@ class RtEval(rtevalReport):
|
|
|
|
if with_loads:
|
|
if len(threading.enumerate()) < nthreads:
|
|
- raise RuntimeError, "load thread died!"
|
|
+ raise RuntimeError("load thread died!")
|
|
|
|
if not load_avg_checked:
|
|
self._loadmods.SaveLoadAvg()
|
|
@@ -232,14 +232,14 @@ class RtEval(rtevalReport):
|
|
left_to_run = stoptime - currtime
|
|
self.__show_remaining_time(left_to_run)
|
|
rpttime = currtime + report_interval
|
|
- print "load average: %.2f" % self._loadmods.GetLoadAvg()
|
|
+ print("load average: %.2f" % self._loadmods.GetLoadAvg())
|
|
currtime = time.time()
|
|
|
|
self.__logger.log(Log.DEBUG, "out of measurement loop")
|
|
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
|
signal.signal(signal.SIGTERM, signal.SIG_DFL)
|
|
|
|
- except RuntimeError, e:
|
|
+ except RuntimeError as e:
|
|
raise RuntimeError("appeared during measurement: %s" % e)
|
|
|
|
finally:
|
|
@@ -250,7 +250,7 @@ class RtEval(rtevalReport):
|
|
if with_loads:
|
|
self._loadmods.Stop()
|
|
|
|
- print "stopping run at %s" % time.asctime()
|
|
+ print("stopping run at %s" % time.asctime())
|
|
|
|
# wait for measurement modules to finish calculating stats
|
|
measure_profile.WaitForCompletion()
|
|
diff --git a/rteval/misc.py b/rteval/misc.py
|
|
index 0cfc69dfbd62..b9ff246e0f01 100644
|
|
--- a/rteval/misc.py
|
|
+++ b/rteval/misc.py
|
|
@@ -29,7 +29,7 @@ def expand_cpulist(cpulist):
|
|
if '-' in part:
|
|
a, b = part.split('-')
|
|
a, b = int(a), int(b)
|
|
- result.extend(range(a, b + 1))
|
|
+ result.extend(list(range(a, b + 1)))
|
|
else:
|
|
a = int(part)
|
|
result.append(a)
|
|
@@ -61,9 +61,9 @@ def cpuinfo():
|
|
if __name__ == "__main__":
|
|
|
|
info = cpuinfo()
|
|
- idx = info.keys()
|
|
+ idx = list(info.keys())
|
|
idx.sort()
|
|
for i in idx:
|
|
- print "%s: %s" % (i, info[i])
|
|
+ print("%s: %s" % (i, info[i]))
|
|
|
|
- print "0: %s" % (info['0']['model name'])
|
|
+ print("0: %s" % (info['0']['model name']))
|
|
diff --git a/rteval/modules/__init__.py b/rteval/modules/__init__.py
|
|
index b41653e62d09..0feb8a916179 100644
|
|
--- a/rteval/modules/__init__.py
|
|
+++ b/rteval/modules/__init__.py
|
|
@@ -211,7 +211,7 @@ class rtevalModulePrototype(threading.Thread):
|
|
"Return libxml2.xmlNode object with the gathered timestamps"
|
|
|
|
ts_n = libxml2.newNode("timestamps")
|
|
- for k in self.__timestamps.keys():
|
|
+ for k in list(self.__timestamps.keys()):
|
|
ts_n.newChild(None, k, str(self.__timestamps[k]))
|
|
|
|
return ts_n
|
|
@@ -277,7 +277,7 @@ the information provided by the module"""
|
|
metavar='LIST')
|
|
parser.add_option_group(grparser)
|
|
|
|
- for (modname, mod) in self.__modsloaded.items():
|
|
+ for (modname, mod) in list(self.__modsloaded.items()):
|
|
opts = mod.ModuleParameters()
|
|
if len(opts) == 0:
|
|
continue
|
|
@@ -290,9 +290,9 @@ the information provided by the module"""
|
|
cfg = None
|
|
|
|
grparser = optparse.OptionGroup(parser, "Options for the %s module" % shortmod)
|
|
- for (o, s) in opts.items():
|
|
- descr = s.has_key('descr') and s['descr'] or ""
|
|
- metavar = s.has_key('metavar') and s['metavar'] or None
|
|
+ for (o, s) in list(opts.items()):
|
|
+ descr = 'descr' in s and s['descr'] or ""
|
|
+ metavar = 'metavar' in s and s['metavar'] or None
|
|
|
|
try:
|
|
default = cfg and getattr(cfg, o) or None
|
|
@@ -301,7 +301,7 @@ the information provided by the module"""
|
|
default = None
|
|
|
|
if default is None:
|
|
- default = s.has_key('default') and s['default'] or None
|
|
+ default = 'default' in s and s['default'] or None
|
|
|
|
|
|
grparser.add_option('--%s-%s' % (shortmod, o),
|
|
@@ -353,7 +353,7 @@ returned when a ModuleContainer object is iterated over"""
|
|
|
|
def GetModulesList(self):
|
|
"Returns a list of module names"
|
|
- return self.__modobjects.keys()
|
|
+ return list(self.__modobjects.keys())
|
|
|
|
|
|
def GetNamedModuleObject(self, modname):
|
|
@@ -364,11 +364,11 @@ returned when a ModuleContainer object is iterated over"""
|
|
def __iter__(self):
|
|
"Initiates the iterating process"
|
|
|
|
- self.__iter_list = self.__modobjects.keys()
|
|
+ self.__iter_list = list(self.__modobjects.keys())
|
|
return self
|
|
|
|
|
|
- def next(self):
|
|
+ def __next__(self):
|
|
"""Internal Python iterating method, returns the next
|
|
module name and object to be processed"""
|
|
|
|
@@ -511,7 +511,7 @@ start their workloads yet"""
|
|
self._logger.log(Log.DEBUG, "\t - Stopping %s" % modname)
|
|
if mod.is_alive():
|
|
mod.join(2.0)
|
|
- except RuntimeError, e:
|
|
+ except RuntimeError as e:
|
|
self._logger.log(Log.ERR, "\t\tFailed stopping %s: %s" % (modname, str(e)))
|
|
self.__timestamps['stop'] = datetime.now()
|
|
|
|
diff --git a/rteval/modules/loads/hackbench.py b/rteval/modules/loads/hackbench.py
|
|
index 9d3f6c834356..4b0fc59c3518 100644
|
|
--- a/rteval/modules/loads/hackbench.py
|
|
+++ b/rteval/modules/loads/hackbench.py
|
|
@@ -128,7 +128,7 @@ class Hackbench(CommandLineLoad):
|
|
stderr=self.__err)
|
|
if not p:
|
|
self._log(Log.DEBUG, "hackbench failed to start on node %s" % node)
|
|
- raise RuntimeError, "hackbench failed to start on node %s" % node
|
|
+ raise RuntimeError("hackbench failed to start on node %s" % node)
|
|
return p
|
|
|
|
def _WorkloadTask(self):
|
|
@@ -147,7 +147,7 @@ class Hackbench(CommandLineLoad):
|
|
if self.tasks[n].poll() is not None:
|
|
self.tasks[n].wait()
|
|
self.tasks[n] = self.__starton(n)
|
|
- except OSError, e:
|
|
+ except OSError as e:
|
|
if e.errno != errno.ENOMEM:
|
|
raise e
|
|
# Exit gracefully without a traceback for out-of-memory errors
|
|
@@ -166,7 +166,7 @@ class Hackbench(CommandLineLoad):
|
|
return
|
|
|
|
for node in self.nodes:
|
|
- if self.tasks.has_key(node) and self.tasks[node].poll() is None:
|
|
+ if node in self.tasks and self.tasks[node].poll() is None:
|
|
self._log(Log.INFO, "cleaning up hackbench on node %s" % node)
|
|
self.tasks[node].send_signal(SIGKILL)
|
|
if self.tasks[node].poll() == None:
|
|
diff --git a/rteval/modules/loads/kcompile.py b/rteval/modules/loads/kcompile.py
|
|
index ef636c235fb8..ca4932172b87 100644
|
|
--- a/rteval/modules/loads/kcompile.py
|
|
+++ b/rteval/modules/loads/kcompile.py
|
|
@@ -110,7 +110,7 @@ class Kcompile(CommandLineLoad):
|
|
|
|
def _WorkloadSetup(self):
|
|
# find our source tarball
|
|
- if self._cfg.has_key('tarball'):
|
|
+ if 'tarball' in self._cfg:
|
|
tarfile = os.path.join(self.srcdir, self._cfg.tarfile)
|
|
if not os.path.exists(tarfile):
|
|
raise rtevalRuntimeError(self, " tarfile %s does not exist!" % tarfile)
|
|
@@ -176,7 +176,7 @@ class Kcompile(CommandLineLoad):
|
|
stdin=null, stdout=out, stderr=err)
|
|
if ret:
|
|
raise rtevalRuntimeError(self, "kcompile setup failed: %d" % ret)
|
|
- except KeyboardInterrupt, m:
|
|
+ except KeyboardInterrupt as m:
|
|
self._log(Log.DEBUG, "keyboard interrupt, aborting")
|
|
return
|
|
self._log(Log.DEBUG, "ready to run")
|
|
@@ -197,7 +197,7 @@ class Kcompile(CommandLineLoad):
|
|
else:
|
|
self.__outfd = self.__errfd = self.__nullfd
|
|
|
|
- if self._cfg.has_key('cpulist') and self._cfg.cpulist:
|
|
+ if 'cpulist' in self._cfg and self._cfg.cpulist:
|
|
cpulist = self._cfg.cpulist
|
|
self.num_cpus = len(expand_cpulist(cpulist))
|
|
else:
|
|
@@ -206,7 +206,7 @@ class Kcompile(CommandLineLoad):
|
|
def _WorkloadTask(self):
|
|
for n in self.topology:
|
|
if not self.buildjobs[n]:
|
|
- raise RuntimeError, "Build job not set up for node %d" % int(n)
|
|
+ raise RuntimeError("Build job not set up for node %d" % int(n))
|
|
if self.buildjobs[n].jobid is None or self.buildjobs[n].jobid.poll() is not None:
|
|
self._log(Log.INFO, "Starting load on node %d" % n)
|
|
self.buildjobs[n].run(self.__nullfd, self.__outfd, self.__errfd)
|
|
diff --git a/rteval/modules/measurement/__init__.py b/rteval/modules/measurement/__init__.py
|
|
index b382971052cf..5a179949ad36 100644
|
|
--- a/rteval/modules/measurement/__init__.py
|
|
+++ b/rteval/modules/measurement/__init__.py
|
|
@@ -204,7 +204,7 @@ measurement profiles, based on their characteristics"""
|
|
return self
|
|
|
|
|
|
- def next(self):
|
|
+ def __next__(self):
|
|
"""Internal Python iterating method, returns the next
|
|
MeasurementProfile object to be processed"""
|
|
|
|
diff --git a/rteval/modules/measurement/cyclictest.py b/rteval/modules/measurement/cyclictest.py
|
|
index 04f78d1c9612..c992c0c9e4eb 100644
|
|
--- a/rteval/modules/measurement/cyclictest.py
|
|
+++ b/rteval/modules/measurement/cyclictest.py
|
|
@@ -87,7 +87,7 @@ class RunData(object):
|
|
|
|
self._log(Log.INFO, "reducing %s" % self.__id)
|
|
total = 0
|
|
- keys = self.__samples.keys()
|
|
+ keys = list(self.__samples.keys())
|
|
keys.sort()
|
|
sorted = []
|
|
|
|
@@ -167,7 +167,7 @@ class RunData(object):
|
|
|
|
hist_n = rep_n.newChild(None, 'histogram', None)
|
|
hist_n.newProp('nbuckets', str(len(self.__samples)))
|
|
- keys = self.__samples.keys()
|
|
+ keys = list(self.__samples.keys())
|
|
keys.sort()
|
|
for k in keys:
|
|
if self.__samples[k] == 0:
|
|
@@ -255,7 +255,7 @@ class Cyclictest(rtevalModulePrototype):
|
|
|
|
|
|
def _WorkloadPrepare(self):
|
|
- self.__interval = self.__cfg.has_key('interval') and '-i%d' % int(self.__cfg.interval) or ""
|
|
+ self.__interval = 'interval' in self.__cfg and '-i%d' % int(self.__cfg.interval) or ""
|
|
|
|
self.__cmd = ['cyclictest',
|
|
self.__interval,
|
|
@@ -269,10 +269,10 @@ class Cyclictest(rtevalModulePrototype):
|
|
else:
|
|
self.__cmd.append(self.__getmode())
|
|
|
|
- if self.__cfg.has_key('threads') and self.__cfg.threads:
|
|
+ if 'threads' in self.__cfg and self.__cfg.threads:
|
|
self.__cmd.append("-t%d" % int(self.__cfg.threads))
|
|
|
|
- if self.__cfg.has_key('breaktrace') and self.__cfg.breaktrace:
|
|
+ if 'breaktrace' in self.__cfg and self.__cfg.breaktrace:
|
|
self.__cmd.append("-b%d" % int(self.__cfg.breaktrace))
|
|
self.__cmd.append("--tracemark")
|
|
self.__cmd.append("--notrace")
|
|
@@ -290,7 +290,7 @@ class Cyclictest(rtevalModulePrototype):
|
|
self.__nullfp = os.open('/dev/null', os.O_RDWR)
|
|
|
|
debugdir = self.__get_debugfs_mount()
|
|
- if self.__cfg.has_key('breaktrace') and self.__cfg.breaktrace and debugdir:
|
|
+ if 'breaktrace' in self.__cfg and self.__cfg.breaktrace and debugdir:
|
|
# Ensure that the trace log is clean
|
|
trace = os.path.join(debugdir, 'tracing', 'trace')
|
|
fp = open(os.path.join(trace), "w")
|
|
@@ -353,7 +353,7 @@ class Cyclictest(rtevalModulePrototype):
|
|
self.__cyclicdata['system'].bucket(index, int(vals[i+1]))
|
|
|
|
# generate statistics for each RunData object
|
|
- for n in self.__cyclicdata.keys():
|
|
+ for n in list(self.__cyclicdata.keys()):
|
|
#print "reducing self.__cyclicdata[%s]" % n
|
|
self.__cyclicdata[n].reduce()
|
|
#print self.__cyclicdata[n]
|
|
@@ -429,7 +429,7 @@ if __name__ == '__main__':
|
|
cfg = rtevalConfig({}, logger=l)
|
|
prms = {}
|
|
modprms = ModuleParameters()
|
|
- for c, p in modprms.items():
|
|
+ for c, p in list(modprms.items()):
|
|
prms[c] = p['default']
|
|
cfg.AppendConfig('cyclictest', prms)
|
|
|
|
diff --git a/rteval/modules/measurement/sysstat.py b/rteval/modules/measurement/sysstat.py
|
|
index 033e8825fa30..cbad928326dc 100644
|
|
--- a/rteval/modules/measurement/sysstat.py
|
|
+++ b/rteval/modules/measurement/sysstat.py
|
|
@@ -131,7 +131,7 @@ if __name__ == '__main__':
|
|
cfg = rtevalConfig({}, logger=l)
|
|
prms = {}
|
|
modprms = ModuleParameters()
|
|
- for c, p in modprms.items():
|
|
+ for c, p in list(modprms.items()):
|
|
prms[c] = p['default']
|
|
cfg.AppendConfig('MeasurementModuleTemplate', prms)
|
|
|
|
@@ -144,7 +144,7 @@ if __name__ == '__main__':
|
|
c._WorkloadSetup()
|
|
c._WorkloadPrepare()
|
|
c._WorkloadTask()
|
|
- print "Running for approx %i seconds" % runtime
|
|
+ print("Running for approx %i seconds" % runtime)
|
|
while runtime > 0:
|
|
c.WorkloadAlive()
|
|
time.sleep(1)
|
|
diff --git a/rteval/rtevalConfig.py b/rteval/rtevalConfig.py
|
|
index 16ac2d0199c4..36f1354b6a4f 100644
|
|
--- a/rteval/rtevalConfig.py
|
|
+++ b/rteval/rtevalConfig.py
|
|
@@ -31,9 +31,9 @@
|
|
# are deemed to be part of the source code.
|
|
#
|
|
import os, sys
|
|
-import ConfigParser
|
|
-from Log import Log
|
|
-from systopology import SysTopology
|
|
+import configparser
|
|
+from .Log import Log
|
|
+from .systopology import SysTopology
|
|
|
|
def get_user_name():
|
|
name = os.getenv('SUDO_USER')
|
|
@@ -111,7 +111,7 @@ class rtevalCfgSection(object):
|
|
"Simple method for dumping config when object is used as a string"
|
|
if len(self.__cfgdata) == 0:
|
|
return "# empty"
|
|
- return "\n".join(["%s: %s" % (k,v) for k,v in self.__cfgdata.items()]) + "\n"
|
|
+ return "\n".join(["%s: %s" % (k,v) for k,v in list(self.__cfgdata.items())]) + "\n"
|
|
|
|
|
|
def __setattr__(self, key, val):
|
|
@@ -119,22 +119,22 @@ class rtevalCfgSection(object):
|
|
|
|
|
|
def __getattr__(self, key):
|
|
- if key in self.__cfgdata.keys():
|
|
+ if key in list(self.__cfgdata.keys()):
|
|
return self.__cfgdata[key]
|
|
return None
|
|
|
|
|
|
def items(self):
|
|
- return self.__cfgdata.items()
|
|
+ return list(self.__cfgdata.items())
|
|
|
|
|
|
def __iter__(self):
|
|
"Initialises the iterator loop"
|
|
- self.__dict__['_rtevalCfgSection__iter_list'] = self.__cfgdata.keys()
|
|
+ self.__dict__['_rtevalCfgSection__iter_list'] = list(self.__cfgdata.keys())
|
|
return self
|
|
|
|
|
|
- def next(self):
|
|
+ def __next__(self):
|
|
"Function used by the iterator"
|
|
|
|
if not self.__dict__['_rtevalCfgSection__iter_list'] \
|
|
@@ -153,16 +153,16 @@ class rtevalCfgSection(object):
|
|
|
|
def has_key(self, key):
|
|
"has_key() wrapper for the configuration data"
|
|
- return self.__cfgdata.has_key(key)
|
|
+ return key in self.__cfgdata
|
|
|
|
|
|
def keys(self):
|
|
"keys() wrapper for configuration data"
|
|
- return self.__cfgdata.keys()
|
|
+ return list(self.__cfgdata.keys())
|
|
|
|
|
|
def setdefault(self, key, defvalue):
|
|
- if not self.__cfgdata.has_key(key):
|
|
+ if key not in self.__cfgdata:
|
|
self.__cfgdata[key] = defvalue
|
|
return self.__cfgdata[key]
|
|
|
|
@@ -171,7 +171,7 @@ class rtevalCfgSection(object):
|
|
if type(newdict) is not dict:
|
|
raise TypeError('update() method expects a dict as argument')
|
|
|
|
- for key, val in newdict.iteritems():
|
|
+ for key, val in newdict.items():
|
|
self.__cfgdata[key] = val
|
|
|
|
|
|
@@ -190,10 +190,10 @@ class rtevalConfig(object):
|
|
|
|
# get our system topology info
|
|
self.__systopology = SysTopology()
|
|
- print("got system topology: %s" % self.__systopology)
|
|
+ print(("got system topology: %s" % self.__systopology))
|
|
|
|
# Import the default config first
|
|
- for sect, vals in default_config.items():
|
|
+ for sect, vals in list(default_config.items()):
|
|
self.__update_section(sect, vals)
|
|
|
|
# Set the runtime provided init variables
|
|
@@ -201,7 +201,7 @@ class rtevalConfig(object):
|
|
if type(initvars) is not dict:
|
|
raise TypeError('initvars argument is not a dict variable')
|
|
|
|
- for sect, vals in initvars.items():
|
|
+ for sect, vals in list(initvars.items()):
|
|
self.__update_section(sect, vals)
|
|
|
|
|
|
@@ -209,7 +209,7 @@ class rtevalConfig(object):
|
|
if not section or not newvars:
|
|
return
|
|
|
|
- if not self.__config_data.has_key(section):
|
|
+ if section not in self.__config_data:
|
|
self.__config_data[section] = rtevalCfgSection(newvars)
|
|
else:
|
|
self.__config_data[section].update(newvars)
|
|
@@ -218,7 +218,7 @@ class rtevalConfig(object):
|
|
def __str__(self):
|
|
"Simple method for dumping config when object is used as a string"
|
|
ret = ""
|
|
- for sect in self.__config_data.keys():
|
|
+ for sect in list(self.__config_data.keys()):
|
|
ret += "[%s]\n%s\n" % (sect, str(self.__config_data[sect]))
|
|
return ret
|
|
|
|
@@ -236,7 +236,7 @@ class rtevalConfig(object):
|
|
if os.path.exists(p):
|
|
self.__info("found config file %s" % p)
|
|
return p
|
|
- raise RuntimeError, "Unable to find configfile"
|
|
+ raise RuntimeError("Unable to find configfile")
|
|
|
|
|
|
def Load(self, fname = None, append = False):
|
|
@@ -253,13 +253,13 @@ class rtevalConfig(object):
|
|
return
|
|
|
|
self.__info("reading config file %s" % cfgfile)
|
|
- ini = ConfigParser.ConfigParser()
|
|
+ ini = configparser.ConfigParser()
|
|
ini.optionxform = str
|
|
ini.read(cfgfile)
|
|
|
|
# wipe any previously read config info
|
|
if not append:
|
|
- for s in self.__config_data.keys():
|
|
+ for s in list(self.__config_data.keys()):
|
|
self.__config_data[s].wipe()
|
|
|
|
# copy the section data into the __config_data dictionary
|
|
@@ -308,14 +308,14 @@ class rtevalConfig(object):
|
|
|
|
|
|
def HasSection(self, section):
|
|
- return self.__config_data.has_key(section)
|
|
+ return section in self.__config_data
|
|
|
|
|
|
def GetSection(self, section):
|
|
try:
|
|
# Return a new object with config settings of a given section
|
|
return self.__config_data[section]
|
|
- except KeyError, err:
|
|
+ except KeyError as err:
|
|
raise KeyError("The section '%s' does not exist in the config file" % section)
|
|
|
|
|
|
@@ -325,10 +325,10 @@ def unit_test(rootdir):
|
|
l.SetLogVerbosity(Log.INFO)
|
|
cfg = rtevalConfig(logger=l)
|
|
cfg.Load(os.path.join(rootdir, 'rteval.conf'))
|
|
- print cfg
|
|
+ print(cfg)
|
|
return 0
|
|
- except Exception, e:
|
|
- print "** EXCEPTION %s", str(e)
|
|
+ except Exception as e:
|
|
+ print("** EXCEPTION %s", str(e))
|
|
return 1
|
|
|
|
|
|
diff --git a/rteval/rtevalMailer.py b/rteval/rtevalMailer.py
|
|
index 4588f149aaf6..f8f84d1916d0 100644
|
|
--- a/rteval/rtevalMailer.py
|
|
+++ b/rteval/rtevalMailer.py
|
|
@@ -38,11 +38,11 @@ class rtevalMailer(object):
|
|
# * to_address
|
|
#
|
|
errmsg = ""
|
|
- if not cfg.has_key('smtp_server'):
|
|
+ if 'smtp_server' not in cfg:
|
|
errmsg = "\n** Missing smtp_server in config"
|
|
- if not cfg.has_key('from_address'):
|
|
+ if 'from_address' not in cfg:
|
|
errmsg += "\n** Missing from_address in config"
|
|
- if not cfg.has_key('to_address'):
|
|
+ if 'to_address' not in cfg:
|
|
errmsg += "\n** Missing to_address in config"
|
|
|
|
if not errmsg == "":
|
|
diff --git a/rteval/rtevalReport.py b/rteval/rtevalReport.py
|
|
index b22fa39b1831..55594ae8f0bc 100644
|
|
--- a/rteval/rtevalReport.py
|
|
+++ b/rteval/rtevalReport.py
|
|
@@ -26,7 +26,7 @@
|
|
|
|
import os, tarfile
|
|
from datetime import datetime
|
|
-import xmlout
|
|
+from . import xmlout
|
|
|
|
|
|
class rtevalReport(object):
|
|
@@ -95,11 +95,11 @@ class rtevalReport(object):
|
|
|
|
def _show_report(self, xmlfile, xsltfile):
|
|
'''summarize a previously generated xml file'''
|
|
- print "Loading %s for summarizing" % xmlfile
|
|
+ print("Loading %s for summarizing" % xmlfile)
|
|
|
|
xsltfullpath = os.path.join(self.__installdir, xsltfile)
|
|
if not os.path.exists(xsltfullpath):
|
|
- raise RuntimeError, "can't find XSL template (%s)!" % xsltfullpath
|
|
+ raise RuntimeError("can't find XSL template (%s)!" % xsltfullpath)
|
|
|
|
xmlreport = xmlout.XMLOut('rteval', self.__version)
|
|
xmlreport.LoadReport(xmlfile)
|
|
@@ -126,7 +126,7 @@ class rtevalReport(object):
|
|
|
|
def _tar_results(self):
|
|
if not os.path.isdir(self.__reportdir):
|
|
- raise RuntimeError, "no such directory: %s" % reportdir
|
|
+ raise RuntimeError("no such directory: %s" % reportdir)
|
|
|
|
dirname = os.path.dirname(self.__reportdir)
|
|
rptdir = os.path.basename(self.__reportdir)
|
|
diff --git a/rteval/rtevalXMLRPC.py b/rteval/rtevalXMLRPC.py
|
|
index ed080cb13b91..7b2d207e0088 100644
|
|
--- a/rteval/rtevalXMLRPC.py
|
|
+++ b/rteval/rtevalXMLRPC.py
|
|
@@ -25,8 +25,8 @@
|
|
#
|
|
|
|
import socket, time
|
|
-import rtevalclient, xmlrpclib
|
|
-from Log import Log
|
|
+import rtevalclient, xmlrpc.client
|
|
+from .Log import Log
|
|
|
|
class rtevalXMLRPC(object):
|
|
def __init__(self, host, logger, mailer = None):
|
|
@@ -48,12 +48,12 @@ class rtevalXMLRPC(object):
|
|
res = self.__client.Hello()
|
|
attempt = 10
|
|
ping_success = True
|
|
- except xmlrpclib.ProtocolError:
|
|
+ except xmlrpc.client.ProtocolError:
|
|
# Server do not support Hello(), but is reachable
|
|
self.__logger.log(Log.INFO, "Got XML-RPC connection with %s but it did not support Hello()"
|
|
% self.__host)
|
|
res = None
|
|
- except socket.error, err:
|
|
+ except socket.error as err:
|
|
self.__logger.log(Log.INFO, "Could not establish XML-RPC contact with %s\n%s"
|
|
% (self.__host, str(err)))
|
|
|
|
@@ -67,7 +67,7 @@ class rtevalXMLRPC(object):
|
|
"Server %s did not respond." % self.__host)
|
|
warning_sent = True
|
|
|
|
- print "Failed pinging XML-RPC server. Doing another attempt(%i) " % attempt
|
|
+ print("Failed pinging XML-RPC server. Doing another attempt(%i) " % attempt)
|
|
time.sleep(attempt) #*15) # Incremental sleep - sleep attempts*15 seconds
|
|
ping_success = False
|
|
|
|
@@ -87,9 +87,9 @@ class rtevalXMLRPC(object):
|
|
warning_sent = False
|
|
while attempt < 6:
|
|
try:
|
|
- print "Submitting report to %s" % self.__url
|
|
+ print("Submitting report to %s" % self.__url)
|
|
rterid = self.__client.SendReport(xmlreport)
|
|
- print "Report registered with submission id %i" % rterid
|
|
+ print("Report registered with submission id %i" % rterid)
|
|
attempt = 10
|
|
exitcode = 0 # Success
|
|
except socket.error:
|
|
@@ -103,10 +103,10 @@ class rtevalXMLRPC(object):
|
|
% self.__host)
|
|
warning_sent = True
|
|
|
|
- print "Failed sending report. Doing another attempt(%i) " % attempt
|
|
+ print("Failed sending report. Doing another attempt(%i) " % attempt)
|
|
time.sleep(attempt) #*5*60) # Incremental sleep - sleep attempts*5 minutes
|
|
|
|
- except Exception, err:
|
|
+ except Exception as err:
|
|
raise err
|
|
|
|
|
|
diff --git a/rteval/rtevalclient.py b/rteval/rtevalclient.py
|
|
index 7ccf3231ca37..26c953005326 100644
|
|
--- a/rteval/rtevalclient.py
|
|
+++ b/rteval/rtevalclient.py
|
|
@@ -25,9 +25,9 @@
|
|
# are deemed to be part of the source code.
|
|
#
|
|
|
|
-import xmlrpclib
|
|
+import xmlrpc.client
|
|
import libxml2
|
|
-import StringIO
|
|
+import io
|
|
import bz2
|
|
import base64
|
|
import platform
|
|
@@ -37,7 +37,7 @@ class rtevalclient:
|
|
rtevalclient is a library for sending rteval reports to an rteval server via XML-RPC.
|
|
"""
|
|
def __init__(self, url="http://rtserver.farm.hsv.redhat.com/rteval/API1/", hostn = None):
|
|
- self.srv = xmlrpclib.ServerProxy(url)
|
|
+ self.srv = xmlrpc.client.ServerProxy(url)
|
|
if hostn is None:
|
|
self.hostname = platform.node()
|
|
else:
|
|
@@ -51,9 +51,9 @@ class rtevalclient:
|
|
|
|
def SendReport(self, xmldoc):
|
|
if xmldoc.type != 'document_xml':
|
|
- raise Exception, "Input is not XML document"
|
|
+ raise Exception("Input is not XML document")
|
|
|
|
- fbuf = StringIO.StringIO()
|
|
+ fbuf = io.StringIO()
|
|
xmlbuf = libxml2.createOutputBuffer(fbuf, 'UTF-8')
|
|
doclen = xmldoc.saveFileTo(xmlbuf, 'UTF-8')
|
|
|
|
@@ -61,7 +61,7 @@ class rtevalclient:
|
|
cmpr = compr.compress(fbuf.getvalue())
|
|
data = base64.b64encode(cmpr + compr.flush())
|
|
ret = self.srv.SendReport(self.hostname, data)
|
|
- print "rtevalclient::SendReport() - Sent %i bytes (XML document length: %i bytes, compression ratio: %.02f%%)" % (len(data), doclen, (1-(float(len(data)) / float(doclen)))*100 )
|
|
+ print("rtevalclient::SendReport() - Sent %i bytes (XML document length: %i bytes, compression ratio: %.02f%%)" % (len(data), doclen, (1-(float(len(data)) / float(doclen)))*100 ))
|
|
return ret
|
|
|
|
def SendDataAsFile(self, fname, data, decompr = False):
|
|
diff --git a/rteval/sysinfo/__init__.py b/rteval/sysinfo/__init__.py
|
|
index f7bf823aa36d..69b225bbbe47 100644
|
|
--- a/rteval/sysinfo/__init__.py
|
|
+++ b/rteval/sysinfo/__init__.py
|
|
@@ -26,14 +26,14 @@
|
|
import sys, libxml2
|
|
from rteval.Log import Log
|
|
from glob import glob
|
|
-from kernel import KernelInfo
|
|
-from services import SystemServices
|
|
-from cputopology import CPUtopology
|
|
-from memory import MemoryInfo
|
|
-from osinfo import OSInfo
|
|
-from network import NetworkInfo
|
|
-from cmdline import cmdlineInfo
|
|
-import dmi
|
|
+from .kernel import KernelInfo
|
|
+from .services import SystemServices
|
|
+from .cputopology import CPUtopology
|
|
+from .memory import MemoryInfo
|
|
+from .osinfo import OSInfo
|
|
+from .network import NetworkInfo
|
|
+from .cmdline import cmdlineInfo
|
|
+from . import dmi
|
|
|
|
class SystemInfo(KernelInfo, SystemServices, dmi.DMIinfo, CPUtopology, MemoryInfo, OSInfo, NetworkInfo, cmdlineInfo):
|
|
def __init__(self, config, logger=None):
|
|
@@ -78,29 +78,29 @@ if __name__ == "__main__":
|
|
cfg.installdir = "."
|
|
si = SystemInfo(cfg, logger=l)
|
|
|
|
- print "\tRunning on %s" % si.get_base_os()
|
|
- print "\tNUMA nodes: %d" % si.mem_get_numa_nodes()
|
|
- print "\tMemory available: %03.2f %s\n" % si.mem_get_size()
|
|
+ print("\tRunning on %s" % si.get_base_os())
|
|
+ print("\tNUMA nodes: %d" % si.mem_get_numa_nodes())
|
|
+ print("\tMemory available: %03.2f %s\n" % si.mem_get_size())
|
|
|
|
- print "\tServices: "
|
|
- for (s, r) in si.services_get().items():
|
|
- print "\t\t%s: %s" % (s, r)
|
|
+ print("\tServices: ")
|
|
+ for (s, r) in list(si.services_get().items()):
|
|
+ print("\t\t%s: %s" % (s, r))
|
|
(curr, avail) = si.kernel_get_clocksources()
|
|
|
|
- print "\tCurrent clocksource: %s" % curr
|
|
- print "\tAvailable clocksources: %s" % avail
|
|
- print "\tModules:"
|
|
+ print("\tCurrent clocksource: %s" % curr)
|
|
+ print("\tAvailable clocksources: %s" % avail)
|
|
+ print("\tModules:")
|
|
for m in si.kernel_get_modules():
|
|
- print "\t\t%s: %s" % (m['modname'], m['modstate'])
|
|
- print "\tKernel threads:"
|
|
- for (p, i) in si.kernel_get_kthreads().items():
|
|
- print "\t\t%-30.30s pid: %-5.5s policy: %-7.7s prio: %-3.3s" % (
|
|
+ print("\t\t%s: %s" % (m['modname'], m['modstate']))
|
|
+ print("\tKernel threads:")
|
|
+ for (p, i) in list(si.kernel_get_kthreads().items()):
|
|
+ print("\t\t%-30.30s pid: %-5.5s policy: %-7.7s prio: %-3.3s" % (
|
|
i["name"]+":", p, i["policy"], i["priority"]
|
|
- )
|
|
+ ))
|
|
|
|
- print "\n\tCPU topology info - cores: %i online: %i sockets: %i" % (
|
|
+ print("\n\tCPU topology info - cores: %i online: %i sockets: %i" % (
|
|
si.cpu_getCores(False), si.cpu_getCores(True), si.cpu_getSockets()
|
|
- )
|
|
+ ))
|
|
|
|
xml = si.MakeReport()
|
|
xml_d = libxml2.newDoc("1.0")
|
|
diff --git a/rteval/sysinfo/cputopology.py b/rteval/sysinfo/cputopology.py
|
|
index 73ea3254cbc5..773af64f48de 100644
|
|
--- a/rteval/sysinfo/cputopology.py
|
|
+++ b/rteval/sysinfo/cputopology.py
|
|
@@ -117,20 +117,20 @@ def unit_test(rootdir):
|
|
cputop = CPUtopology()
|
|
n = cputop._parse()
|
|
|
|
- print " ---- XML Result ---- "
|
|
+ print(" ---- XML Result ---- ")
|
|
x = libxml2.newDoc('1.0')
|
|
x.setRootElement(n)
|
|
x.saveFormatFileEnc('-','UTF-8',1)
|
|
|
|
- print " ---- getCPUcores() / getCPUscokets() ---- "
|
|
- print "CPU cores: %i (online: %i) - CPU sockets: %i" % (cputop.cpu_getCores(False),
|
|
+ print(" ---- getCPUcores() / getCPUscokets() ---- ")
|
|
+ print("CPU cores: %i (online: %i) - CPU sockets: %i" % (cputop.cpu_getCores(False),
|
|
cputop.cpu_getCores(True),
|
|
- cputop.cpu_getSockets())
|
|
+ cputop.cpu_getSockets()))
|
|
return 0
|
|
- except Exception, e:
|
|
+ except Exception as e:
|
|
# import traceback
|
|
# traceback.print_exc(file=sys.stdout)
|
|
- print "** EXCEPTION %s", str(e)
|
|
+ print("** EXCEPTION %s", str(e))
|
|
return 1
|
|
|
|
if __name__ == '__main__':
|
|
diff --git a/rteval/sysinfo/dmi.py b/rteval/sysinfo/dmi.py
|
|
index f8e25005b9c1..8f05a6820332 100644
|
|
--- a/rteval/sysinfo/dmi.py
|
|
+++ b/rteval/sysinfo/dmi.py
|
|
@@ -56,7 +56,7 @@ def ProcessWarnings():
|
|
|
|
# All other warnings will be printed
|
|
if len(warnline) > 0:
|
|
- print "** DMI WARNING ** %s" % warnline
|
|
+ print("** DMI WARNING ** %s" % warnline)
|
|
|
|
dmidecode.clear_warnings()
|
|
|
|
@@ -91,7 +91,7 @@ class DMIinfo(object):
|
|
xsltfile.close()
|
|
return ret
|
|
|
|
- raise RuntimeError, 'Could not locate XSLT template for DMI data (%s)' % (self.sharedir + '/' + fname)
|
|
+ raise RuntimeError('Could not locate XSLT template for DMI data (%s)' % (self.sharedir + '/' + fname))
|
|
|
|
|
|
def MakeReport(self):
|
|
@@ -119,13 +119,13 @@ def unit_test(rootdir):
|
|
self.__update_vars()
|
|
|
|
def __update_vars(self):
|
|
- for k in self.config.keys():
|
|
+ for k in list(self.config.keys()):
|
|
self.__dict__[k] = self.config[k]
|
|
|
|
try:
|
|
ProcessWarnings()
|
|
if os.getuid() != 0:
|
|
- print "** ERROR ** Must be root to run this unit_test()"
|
|
+ print("** ERROR ** Must be root to run this unit_test()")
|
|
return 1
|
|
|
|
log = Log()
|
|
@@ -137,8 +137,8 @@ def unit_test(rootdir):
|
|
x.setRootElement(dx)
|
|
x.saveFormatFileEnc("-", "UTF-8", 1)
|
|
return 0
|
|
- except Exception, e:
|
|
- print "** EXCEPTION: %s" % str(e)
|
|
+ except Exception as e:
|
|
+ print("** EXCEPTION: %s" % str(e))
|
|
return 1
|
|
|
|
if __name__ == '__main__':
|
|
diff --git a/rteval/sysinfo/kernel.py b/rteval/sysinfo/kernel.py
|
|
index 209afd7bac4e..fd261fe2ab77 100644
|
|
--- a/rteval/sysinfo/kernel.py
|
|
+++ b/rteval/sysinfo/kernel.py
|
|
@@ -73,7 +73,7 @@ class KernelInfo(object):
|
|
"modstate": mod[4]})
|
|
line = fp.readline()
|
|
fp.close()
|
|
- except Exception, err:
|
|
+ except Exception as err:
|
|
raise err
|
|
return modlist
|
|
|
|
@@ -82,7 +82,7 @@ class KernelInfo(object):
|
|
'''get the available and curent clocksources for this kernel'''
|
|
path = '/sys/devices/system/clocksource/clocksource0'
|
|
if not os.path.exists(path):
|
|
- raise RuntimeError, "Can't find clocksource path in /sys"
|
|
+ raise RuntimeError("Can't find clocksource path in /sys")
|
|
f = open (os.path.join (path, "current_clocksource"))
|
|
current_clocksource = f.readline().strip()
|
|
f = open (os.path.join (path, "available_clocksource"))
|
|
@@ -131,7 +131,7 @@ class KernelInfo(object):
|
|
rep_n.addChild(kthreads_n)
|
|
|
|
kthreads = self.kernel_get_kthreads()
|
|
- keys = kthreads.keys()
|
|
+ keys = list(kthreads.keys())
|
|
if len(keys):
|
|
keys.sort()
|
|
for pid in keys:
|
|
@@ -161,10 +161,10 @@ def unit_test(rootdir):
|
|
xml_d.setRootElement(ki_xml)
|
|
xml_d.saveFormatFileEnc("-", "UTF-8", 1)
|
|
|
|
- except Exception, e:
|
|
+ except Exception as e:
|
|
import traceback
|
|
traceback.print_exc(file=sys.stdout)
|
|
- print "** EXCEPTION %s", str(e)
|
|
+ print("** EXCEPTION %s", str(e))
|
|
return 1
|
|
|
|
if __name__ == '__main__':
|
|
diff --git a/rteval/sysinfo/memory.py b/rteval/sysinfo/memory.py
|
|
index 2c31d6593952..4df198be47f7 100644
|
|
--- a/rteval/sysinfo/memory.py
|
|
+++ b/rteval/sysinfo/memory.py
|
|
@@ -48,12 +48,12 @@ class MemoryInfo(object):
|
|
if l.startswith('MemTotal:'):
|
|
parts = l.split()
|
|
if parts[2].lower() != 'kb':
|
|
- raise RuntimeError, "Units changed from kB! (%s)" % parts[2]
|
|
+ raise RuntimeError("Units changed from kB! (%s)" % parts[2])
|
|
rawsize = int(parts[1])
|
|
f.close()
|
|
break
|
|
if rawsize == 0:
|
|
- raise RuntimeError, "can't find memtotal in /proc/meminfo!"
|
|
+ raise RuntimeError("can't find memtotal in /proc/meminfo!")
|
|
|
|
# Get a more readable result
|
|
# Note that this depends on /proc/meminfo starting in Kb
|
|
@@ -87,12 +87,12 @@ def unit_test(rootdir):
|
|
import sys
|
|
try:
|
|
mi = MemoryInfo()
|
|
- print "Numa nodes: %i" % mi.mem_get_numa_nodes()
|
|
- print "Memory: %i %s" % mi.mem_get_size()
|
|
- except Exception, e:
|
|
+ print("Numa nodes: %i" % mi.mem_get_numa_nodes())
|
|
+ print("Memory: %i %s" % mi.mem_get_size())
|
|
+ except Exception as e:
|
|
import traceback
|
|
traceback.print_exc(file=sys.stdout)
|
|
- print "** EXCEPTION %s", str(e)
|
|
+ print("** EXCEPTION %s", str(e))
|
|
return 1
|
|
|
|
if __name__ == '__main__':
|
|
diff --git a/rteval/sysinfo/network.py b/rteval/sysinfo/network.py
|
|
index fa29db2bba55..9b933c13464b 100644
|
|
--- a/rteval/sysinfo/network.py
|
|
+++ b/rteval/sysinfo/network.py
|
|
@@ -106,10 +106,10 @@ def unit_test(rootdir):
|
|
doc.setRootElement(cfg)
|
|
doc.saveFormatFileEnc('-', 'UTF-8', 1)
|
|
|
|
- except Exception, e:
|
|
+ except Exception as e:
|
|
import traceback
|
|
traceback.print_exc(file=sys.stdout)
|
|
- print "** EXCEPTION %s", str(e)
|
|
+ print("** EXCEPTION %s", str(e))
|
|
return 1
|
|
|
|
if __name__ == '__main__':
|
|
diff --git a/rteval/sysinfo/osinfo.py b/rteval/sysinfo/osinfo.py
|
|
index e262c06d968d..333f82beb558 100644
|
|
--- a/rteval/sysinfo/osinfo.py
|
|
+++ b/rteval/sysinfo/osinfo.py
|
|
@@ -54,7 +54,7 @@ class OSInfo(object):
|
|
if os.path.exists('/usr/bin/dmesg'):
|
|
subprocess.call('/usr/bin/dmesg > %s' % os.path.join(repdir, "dmesg"), shell=True)
|
|
return
|
|
- print "dmesg file not found at %s and no dmesg exe found!" % dpath
|
|
+ print("dmesg file not found at %s and no dmesg exe found!" % dpath)
|
|
|
|
|
|
|
|
@@ -64,7 +64,7 @@ class OSInfo(object):
|
|
elif os.path.exists('/usr/sbin/sysreport'):
|
|
exe = '/usr/sbin/sysreport'
|
|
else:
|
|
- raise RuntimeError, "Can't find sosreport/sysreport"
|
|
+ raise RuntimeError("Can't find sosreport/sysreport")
|
|
|
|
self.__logger.log(Log.DEBUG, "report tool: %s" % exe)
|
|
options = ['-k', 'rpm.rpmva=off',
|
|
@@ -115,22 +115,22 @@ def unit_test(rootdir):
|
|
log = Log()
|
|
log.SetLogVerbosity(Log.DEBUG|Log.INFO)
|
|
osi = OSInfo(logger=log)
|
|
- print "Base OS: %s" % osi.get_base_os()
|
|
+ print("Base OS: %s" % osi.get_base_os())
|
|
|
|
- print "Testing OSInfo::copy_dmesg('/tmp'): ",
|
|
+ print("Testing OSInfo::copy_dmesg('/tmp'): ", end=' ')
|
|
osi.copy_dmesg('/tmp')
|
|
if os.path.isfile("/tmp/dmesg"):
|
|
md5orig = subprocess.check_output(("md5sum","/var/log/dmesg"))
|
|
md5copy = subprocess.check_output(("md5sum","/tmp/dmesg"))
|
|
if md5orig.split(" ")[0] == md5copy.split(" ")[0]:
|
|
- print "PASS"
|
|
+ print("PASS")
|
|
else:
|
|
- print "FAIL (md5sum)"
|
|
+ print("FAIL (md5sum)")
|
|
os.unlink("/tmp/dmesg")
|
|
else:
|
|
- print "FAIL (copy failed)"
|
|
+ print("FAIL (copy failed)")
|
|
|
|
- print "Running sysreport/sosreport with output to current dir"
|
|
+ print("Running sysreport/sosreport with output to current dir")
|
|
osi.run_sysreport(".")
|
|
|
|
osinfo_xml = osi.MakeReport()
|
|
@@ -138,10 +138,10 @@ def unit_test(rootdir):
|
|
xml_d.setRootElement(osinfo_xml)
|
|
xml_d.saveFormatFileEnc("-", "UTF-8", 1)
|
|
|
|
- except Exception, e:
|
|
+ except Exception as e:
|
|
import traceback
|
|
traceback.print_exc(file=sys.stdout)
|
|
- print "** EXCEPTION %s", str(e)
|
|
+ print("** EXCEPTION %s", str(e))
|
|
return 1
|
|
|
|
if __name__ == '__main__':
|
|
diff --git a/rteval/sysinfo/services.py b/rteval/sysinfo/services.py
|
|
index 6465d35e1b73..1bab2de4eb59 100644
|
|
--- a/rteval/sysinfo/services.py
|
|
+++ b/rteval/sysinfo/services.py
|
|
@@ -49,7 +49,7 @@ class SystemServices(object):
|
|
servicesdir = sdir
|
|
break
|
|
if not servicesdir:
|
|
- raise RuntimeError, "No services dir (init.d) found on your system"
|
|
+ raise RuntimeError("No services dir (init.d) found on your system")
|
|
self.__log(Log.DEBUG, "Services located in %s, going through each service file to check status" % servicesdir)
|
|
ret_services = {}
|
|
for service in glob.glob(os.path.join(servicesdir, '*')):
|
|
@@ -127,8 +127,8 @@ def unit_test(rootdir):
|
|
xml_d.saveFormatFileEnc("-", "UTF-8", 1)
|
|
|
|
return 0
|
|
- except Exception, e:
|
|
- print "** EXCEPTION: %s" % str(e)
|
|
+ except Exception as e:
|
|
+ print("** EXCEPTION: %s" % str(e))
|
|
return 1
|
|
|
|
|
|
diff --git a/rteval/sysinfo/tools.py b/rteval/sysinfo/tools.py
|
|
index a61aa48160d3..ea14922b519a 100644
|
|
--- a/rteval/sysinfo/tools.py
|
|
+++ b/rteval/sysinfo/tools.py
|
|
@@ -32,13 +32,13 @@ def getcmdpath(which):
|
|
getcmdpath is a method which allows finding an executable in the PATH
|
|
directories to call it from full path
|
|
"""
|
|
- if not pathSave.has_key(which):
|
|
+ if which not in pathSave:
|
|
for path in os.environ['PATH'].split(':'):
|
|
cmdfile = os.path.join(path, which)
|
|
if os.path.isfile(cmdfile) and os.access(cmdfile, os.X_OK):
|
|
pathSave[which] = cmdfile
|
|
break
|
|
if not pathSave[which]:
|
|
- raise RuntimeError, "Command '%s' is unknown on this system" % which
|
|
+ raise RuntimeError("Command '%s' is unknown on this system" % which)
|
|
return pathSave[which]
|
|
|
|
diff --git a/rteval/systopology.py b/rteval/systopology.py
|
|
index fc3876c20bc9..97a6037e83aa 100644
|
|
--- a/rteval/systopology.py
|
|
+++ b/rteval/systopology.py
|
|
@@ -99,7 +99,7 @@ class CpuList(object):
|
|
if '-' in part:
|
|
a, b = part.split('-')
|
|
a, b = int(a), int(b)
|
|
- result.extend(range(a, b + 1))
|
|
+ result.extend(list(range(a, b + 1)))
|
|
else:
|
|
a = int(part)
|
|
result.append(a)
|
|
@@ -112,7 +112,7 @@ class CpuList(object):
|
|
# check whether cpu n is online
|
|
def isonline(self, n):
|
|
if n not in self.cpulist:
|
|
- raise RuntimeError, "invalid cpu number %d" % n
|
|
+ raise RuntimeError("invalid cpu number %d" % n)
|
|
if n == 0:
|
|
return True
|
|
path = os.path.join(CpuList.cpupath,'cpu%d' % n)
|
|
@@ -183,11 +183,11 @@ class SysTopology(object):
|
|
self.getinfo()
|
|
|
|
def __len__(self):
|
|
- return len(self.nodes.keys())
|
|
+ return len(list(self.nodes.keys()))
|
|
|
|
def __str__(self):
|
|
- s = "%d node system" % len(self.nodes.keys())
|
|
- s += " (%d cores per node)" % (len(self.nodes[self.nodes.keys()[0]]))
|
|
+ s = "%d node system" % len(list(self.nodes.keys()))
|
|
+ s += " (%d cores per node)" % (len(self.nodes[list(self.nodes.keys())[0]]))
|
|
return s
|
|
|
|
# inplement the 'in' function
|
|
@@ -207,7 +207,7 @@ class SysTopology(object):
|
|
return self
|
|
|
|
# iterator function
|
|
- def next(self):
|
|
+ def __next__(self):
|
|
if self.current >= len(self.nodes):
|
|
raise StopIteration
|
|
n = self.nodes[self.current]
|
|
@@ -217,14 +217,14 @@ class SysTopology(object):
|
|
def getinfo(self):
|
|
nodes = glob.glob(os.path.join(SysTopology.nodepath, 'node[0-9]*'))
|
|
if not nodes:
|
|
- raise RuntimeError, "No valid nodes found in %s!" % SysTopology.nodepath
|
|
+ raise RuntimeError("No valid nodes found in %s!" % SysTopology.nodepath)
|
|
nodes.sort()
|
|
for n in nodes:
|
|
node = int(os.path.basename(n)[4:])
|
|
self.nodes[node] = NumaNode(n)
|
|
|
|
def getnodes(self):
|
|
- return self.nodes.keys()
|
|
+ return list(self.nodes.keys())
|
|
|
|
def getcpus(self, node):
|
|
return self.nodes[node]
|
|
@@ -235,12 +235,12 @@ if __name__ == "__main__":
|
|
|
|
def unit_test():
|
|
s = SysTopology()
|
|
- print s
|
|
- print "number of nodes: %d" % len(s)
|
|
+ print(s)
|
|
+ print("number of nodes: %d" % len(s))
|
|
for n in s:
|
|
- print "node[%d]: %s" % (n.nodeid, n)
|
|
- print "system has numa node 0: %s" % (0 in s)
|
|
- print "system has numa node 2: %s" % (2 in s)
|
|
- print "system has numa node 24: %s" % (24 in s)
|
|
+ print("node[%d]: %s" % (n.nodeid, n))
|
|
+ print("system has numa node 0: %s" % (0 in s))
|
|
+ print("system has numa node 2: %s" % (2 in s))
|
|
+ print("system has numa node 24: %s" % (24 in s))
|
|
|
|
unit_test()
|
|
diff --git a/rteval/xmlout.py b/rteval/xmlout.py
|
|
index ddc29643e9ca..64642588b8b9 100644
|
|
--- a/rteval/xmlout.py
|
|
+++ b/rteval/xmlout.py
|
|
@@ -29,7 +29,7 @@ import libxml2
|
|
import lxml.etree
|
|
import codecs
|
|
import re
|
|
-from string import maketrans
|
|
+#from string import maketrans
|
|
|
|
|
|
def convert_libxml2_to_lxml_doc(inxml):
|
|
@@ -69,7 +69,7 @@ class XMLOut(object):
|
|
|
|
def __del__(self):
|
|
if self.level > 0:
|
|
- raise RuntimeError, "XMLOut: open blocks at __del__ (last opened '%s')" % self.currtag.name
|
|
+ raise RuntimeError("XMLOut: open blocks at __del__ (last opened '%s')" % self.currtag.name)
|
|
if self.xmldoc is not None:
|
|
self.xmldoc.freeDoc()
|
|
|
|
@@ -88,12 +88,12 @@ class XMLOut(object):
|
|
return tagname.translate(self.tag_trans)
|
|
|
|
def __encode(self, value, tagmode = False):
|
|
- if type(value) is unicode:
|
|
+ if type(value) is str:
|
|
val = value
|
|
elif type(value) is str:
|
|
- val = unicode(value)
|
|
+ val = str(value)
|
|
else:
|
|
- val = unicode(str(value))
|
|
+ val = str(str(value))
|
|
|
|
if tagmode is True:
|
|
rx = re.compile(" ")
|
|
@@ -106,7 +106,7 @@ class XMLOut(object):
|
|
|
|
def __add_attributes(self, node, attr):
|
|
if attr is not None:
|
|
- for k, v in attr.iteritems():
|
|
+ for k, v in attr.items():
|
|
node.newProp(k, self.__encode(v))
|
|
|
|
|
|
@@ -116,7 +116,7 @@ class XMLOut(object):
|
|
# unknown types.
|
|
|
|
t = type(data)
|
|
- if t is unicode or t is str or t is int or t is float:
|
|
+ if t is str or t is str or t is int or t is float:
|
|
n = libxml2.newText(self.__encode(data))
|
|
node.addChild(n)
|
|
elif t is bool:
|
|
@@ -124,7 +124,7 @@ class XMLOut(object):
|
|
n = libxml2.newText(self.__encode(v))
|
|
node.addChild(n)
|
|
elif t is dict:
|
|
- for (key, val) in data.iteritems():
|
|
+ for (key, val) in data.items():
|
|
node2 = libxml2.newNode(self.__encode(self.parsedata_prefix + key, True))
|
|
self.__parseToXML(node2, val)
|
|
node.addChild(node2)
|
|
@@ -137,15 +137,15 @@ class XMLOut(object):
|
|
self.__parseToXML(n, v)
|
|
node.addChild(n)
|
|
else:
|
|
- raise TypeError, "unhandled type (%s) for value '%s'" % (type(data), unicode(data))
|
|
+ raise TypeError("unhandled type (%s) for value '%s'" % (type(data), str(data)))
|
|
|
|
def close(self):
|
|
if self.status == 0:
|
|
- raise RuntimeError, "XMLOut: No XML document is created nor loaded"
|
|
+ raise RuntimeError("XMLOut: No XML document is created nor loaded")
|
|
if self.status == 3:
|
|
- raise RuntimeError, "XMLOut: XML document already closed"
|
|
+ raise RuntimeError("XMLOut: XML document already closed")
|
|
if self.level > 0:
|
|
- raise RuntimeError, "XMLOut: open blocks at close() (last opened '%s')" % self.currtag.name
|
|
+ raise RuntimeError("XMLOut: open blocks at close() (last opened '%s')" % self.currtag.name)
|
|
|
|
if self.status == 1: # Only set the root node in the doc on created reports (NewReport called)
|
|
self.xmldoc.setRootElement(self.xmlroot)
|
|
@@ -154,7 +154,7 @@ class XMLOut(object):
|
|
|
|
def NewReport(self):
|
|
if self.status != 0 and self.status != 3:
|
|
- raise RuntimeError, "XMLOut: Cannot start a new report without closing the currently opened one"
|
|
+ raise RuntimeError("XMLOut: Cannot start a new report without closing the currently opened one")
|
|
|
|
if self.status == 3:
|
|
self.xmldoc.freeDoc() # Free the report from memory if we have one already
|
|
@@ -175,30 +175,30 @@ class XMLOut(object):
|
|
self.xmldoc = libxml2.parseFile(filename)
|
|
if self.xmldoc.name != filename:
|
|
self.status = 3
|
|
- raise RuntimeError, "XMLOut: Loading report failed"
|
|
+ raise RuntimeError("XMLOut: Loading report failed")
|
|
|
|
root = self.xmldoc.children
|
|
if root.name != self.roottag:
|
|
self.status = 3
|
|
- raise RuntimeError, "XMLOut: Loaded report is not a valid %s XML file" % self.roottag
|
|
+ raise RuntimeError("XMLOut: Loaded report is not a valid %s XML file" % self.roottag)
|
|
|
|
if validate_version is True:
|
|
ver = root.hasProp('version')
|
|
|
|
if ver is None:
|
|
self.status = 3
|
|
- raise RuntimeError, "XMLOut: Loaded report is missing version attribute in root node"
|
|
+ raise RuntimeError("XMLOut: Loaded report is missing version attribute in root node")
|
|
|
|
if ver.getContent() != self.version:
|
|
self.status = 3
|
|
- raise RuntimeError, "XMLOut: Loaded report is not of version %s" % self.version
|
|
+ raise RuntimeError("XMLOut: Loaded report is not of version %s" % self.version)
|
|
|
|
self.status = 2 # Confirm that we have loaded a report from file
|
|
|
|
|
|
def Write(self, filename, xslt = None):
|
|
if self.status != 2 and self.status != 3:
|
|
- raise RuntimeError, "XMLOut: XML document is not closed"
|
|
+ raise RuntimeError("XMLOut: XML document is not closed")
|
|
|
|
if xslt == None:
|
|
# If no XSLT template is give, write raw XML
|
|
@@ -223,7 +223,7 @@ class XMLOut(object):
|
|
resdoc = parser(xmldoc)
|
|
|
|
# Write the file with the requested output encoding
|
|
- dstfile.write(unicode(resdoc).encode(self.encoding))
|
|
+ dstfile.write(str(resdoc).encode(self.encoding))
|
|
|
|
if dstfile != sys.stdout:
|
|
dstfile.close()
|
|
@@ -238,12 +238,12 @@ class XMLOut(object):
|
|
|
|
def GetXMLdocument(self):
|
|
if self.status != 2 and self.status != 3:
|
|
- raise RuntimeError, "XMLOut: XML document is not closed"
|
|
+ raise RuntimeError("XMLOut: XML document is not closed")
|
|
return self.xmldoc
|
|
|
|
def openblock(self, tagname, attributes=None):
|
|
if self.status != 1:
|
|
- raise RuntimeError, "XMLOut: openblock() cannot be called before NewReport() is called"
|
|
+ raise RuntimeError("XMLOut: openblock() cannot be called before NewReport() is called")
|
|
ntag = libxml2.newNode(self.__fixtag(tagname));
|
|
self.__add_attributes(ntag, attributes)
|
|
self.currtag.addChild(ntag)
|
|
@@ -253,16 +253,16 @@ class XMLOut(object):
|
|
|
|
def closeblock(self):
|
|
if self.status != 1:
|
|
- raise RuntimeError, "XMLOut: closeblock() cannot be called before NewReport() is called"
|
|
+ raise RuntimeError("XMLOut: closeblock() cannot be called before NewReport() is called")
|
|
if self.level == 0:
|
|
- raise RuntimeError, "XMLOut: no open tags to close"
|
|
+ raise RuntimeError("XMLOut: no open tags to close")
|
|
self.currtag = self.currtag.get_parent()
|
|
self.level -= 1
|
|
return self.currtag
|
|
|
|
def taggedvalue(self, tag, value, attributes=None):
|
|
if self.status != 1:
|
|
- raise RuntimeError, "XMLOut: taggedvalue() cannot be called before NewReport() is called"
|
|
+ raise RuntimeError("XMLOut: taggedvalue() cannot be called before NewReport() is called")
|
|
ntag = self.currtag.newTextChild(None, self.__fixtag(tag), self.__encode(value))
|
|
self.__add_attributes(ntag, attributes)
|
|
return ntag
|
|
@@ -270,7 +270,7 @@ class XMLOut(object):
|
|
|
|
def ParseData(self, tagname, data, attributes=None, tuple_tagname="tuples", prefix = ""):
|
|
if self.status != 1:
|
|
- raise RuntimeError, "XMLOut: taggedvalue() cannot be called before NewReport() is called"
|
|
+ raise RuntimeError("XMLOut: taggedvalue() cannot be called before NewReport() is called")
|
|
|
|
self.tuple_tagname = self.__fixtag(tuple_tagname)
|
|
self.parsedata_prefix = prefix
|
|
@@ -283,7 +283,7 @@ class XMLOut(object):
|
|
|
|
def AppendXMLnodes(self, nodes):
|
|
if not isinstance(nodes, libxml2.xmlNode):
|
|
- raise ValueError, "Input value is not a libxml2.xmlNode"
|
|
+ raise ValueError("Input value is not a libxml2.xmlNode")
|
|
|
|
return self.currtag.addChild(nodes)
|
|
|
|
@@ -297,7 +297,7 @@ def unit_test(rootdir):
|
|
x.taggedvalue('date', '2000-11-22')
|
|
x.closeblock()
|
|
x.openblock('uname')
|
|
- x.taggedvalue('node', u'testing - \xe6\xf8')
|
|
+ x.taggedvalue('node', 'testing - \xe6\xf8')
|
|
x.taggedvalue('kernel', 'my_test_kernel', {'is_RT': 0})
|
|
x.taggedvalue('arch', 'mips')
|
|
x.closeblock()
|
|
@@ -311,25 +311,25 @@ def unit_test(rootdir):
|
|
x.taggedvalue('command_line','dd if=/dev/zero of=/dev/null', {'name': 'lightloader'})
|
|
x.closeblock()
|
|
x.close()
|
|
- print "------------- XML OUTPUT ----------------------------"
|
|
+ print("------------- XML OUTPUT ----------------------------")
|
|
x.Write("-")
|
|
- print "------------- XSLT PARSED OUTPUT --------------------"
|
|
+ print("------------- XSLT PARSED OUTPUT --------------------")
|
|
x.Write("-", "rteval_text.xsl")
|
|
- print "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
|
+ print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
|
|
x.Write("/tmp/xmlout-test.xml")
|
|
del x
|
|
|
|
- print "------------- LOAD XML FROM FILE -----------------------------"
|
|
+ print("------------- LOAD XML FROM FILE -----------------------------")
|
|
x = XMLOut('rteval','UNIT-TEST', None, 'UTF-8')
|
|
x.LoadReport("/tmp/xmlout-test.xml", True)
|
|
- print "------------- LOADED XML DATA --------------------------------"
|
|
+ print("------------- LOADED XML DATA --------------------------------")
|
|
x.Write("-")
|
|
- print "------------- XSLT PARSED OUTPUT FROM LOADED XML--------------"
|
|
+ print("------------- XSLT PARSED OUTPUT FROM LOADED XML--------------")
|
|
x.Write("-", "rteval_text.xsl")
|
|
x.close()
|
|
|
|
## Test new data parser ... it eats most data types
|
|
- print "------------- TESTING XMLOut::ParseData() --------------"
|
|
+ print("------------- TESTING XMLOut::ParseData() --------------")
|
|
x.NewReport()
|
|
x.ParseData("ParseTest", "test string", {"type": "simple_string"})
|
|
x.ParseData("ParseTest", 1234, {"type": "integer"})
|
|
@@ -348,14 +348,14 @@ def unit_test(rootdir):
|
|
"varA4": {'another_level': True,
|
|
'another_value': "blabla"}
|
|
},
|
|
- "utf8 data": u'æøå',
|
|
- u"løpe": True}
|
|
+ "utf8 data": 'æøå',
|
|
+ "løpe": True}
|
|
x.ParseData("ParseTest", test, {"type": "dict"}, prefix="test ")
|
|
x.close()
|
|
x.Write("-")
|
|
return 0
|
|
- except Exception, e:
|
|
- print "** EXCEPTION %s", str(e)
|
|
+ except Exception as e:
|
|
+ print("** EXCEPTION %s", str(e))
|
|
return 1
|
|
|
|
if __name__ == '__main__':
|
|
diff --git a/setup.py b/setup.py
|
|
index 39bc8247b704..fc78a93c8793 100644
|
|
--- a/setup.py
|
|
+++ b/setup.py
|
|
@@ -10,9 +10,9 @@ PYTHONLIB = join(get_python_lib(standard_lib=1, prefix=''), 'site-packages')
|
|
|
|
# Tiny hack to make rteval-cmd become a rteval when building/installing the package
|
|
try:
|
|
- os.mkdir('dist', 0755)
|
|
+ os.mkdir('dist', 0o755)
|
|
distcreated = True
|
|
-except OSError, e:
|
|
+except OSError as e:
|
|
if e.errno == 17:
|
|
# If it already exists, ignore this error
|
|
distcreated = False
|