summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Arteaga <andyspiros@gmail.com>2012-09-27 18:47:58 +0200
committerAndrea Arteaga <andyspiros@gmail.com>2012-09-27 18:47:58 +0200
commit93b0b0031a1cb6629833055671236a54fa7b8c7a (patch)
treed9cb2d2f362ca2dee43803604a9ccdb3df221bbe
parentAdded initial support for copying the reports at the end (working for (diff)
downloadauto-numerical-bench-93b0b0031a1cb6629833055671236a54fa7b8c7a.tar.gz
auto-numerical-bench-93b0b0031a1cb6629833055671236a54fa7b8c7a.tar.bz2
auto-numerical-bench-93b0b0031a1cb6629833055671236a54fa7b8c7a.zip
Add customizable title to the report. Solve the bug in module arguments.
-rw-r--r--numbench/benchconfig.py1
-rw-r--r--numbench/main.py1
-rw-r--r--numbench/modules/__init__.py6
-rw-r--r--numbench/report.py2
-rw-r--r--numbench/reports/html.py35
-rw-r--r--numbench/xmlinput.py9
6 files changed, 33 insertions, 21 deletions
diff --git a/numbench/benchconfig.py b/numbench/benchconfig.py
index ffdedba..fa8f4b8 100644
--- a/numbench/benchconfig.py
+++ b/numbench/benchconfig.py
@@ -44,6 +44,7 @@ copyreport = None
module = None
modulename = None
moduleargs = None
+reportTitle = None
# Other
isroot = not os.getuid()
diff --git a/numbench/main.py b/numbench/main.py
index cd0d3d7..c7c2a51 100644
--- a/numbench/main.py
+++ b/numbench/main.py
@@ -97,6 +97,7 @@ parser = Parser(cfg.inputfile)
# Get module name and arguments
cfg.modulename = parser.getModuleName()
cfg.moduleargs = parser.getModuleArguments()
+cfg.reportTitle = parser.getReportTitle()
# Check whether the given module exists
if not cfg.modulename in modules.getAllModulesNames():
diff --git a/numbench/modules/__init__.py b/numbench/modules/__init__.py
index 9696252..be23a31 100644
--- a/numbench/modules/__init__.py
+++ b/numbench/modules/__init__.py
@@ -49,9 +49,9 @@ def loadModule(modname, args=None):
if not modname in getModulesNames():
raise ModuleNotFoundException("module " + modname + " not found")
- # Get the arguments string
- args = "" if args is None else args
- args = args if type(args) == type('') else ' '.join(args)
+ # Get the arguments tuple
+ args = () if args is None else args
+ args = tuple(args.split(' ')) if type(args) == type('') else tuple(args)
# Load the module
tmp = __import__('numbench.modules.' + modname, fromlist=["Module"])
diff --git a/numbench/report.py b/numbench/report.py
index 6a0f584..6eb5d8c 100644
--- a/numbench/report.py
+++ b/numbench/report.py
@@ -83,7 +83,7 @@ def saveReport():
bu.mkdir(cfg.reportdir)
bu.mkdir(pjoin(cfg.reportdir, 'images'))
htmlfname = pjoin(cfg.reportdir, 'index.html')
- html = HTMLreport(htmlfname)
+ html = HTMLreport(htmlfname, cfg.reportTitle)
for operation in cfg.module.getTests():
diff --git a/numbench/reports/html.py b/numbench/reports/html.py
index 5a45c35..26b5a96 100644
--- a/numbench/reports/html.py
+++ b/numbench/reports/html.py
@@ -30,7 +30,7 @@ class ReportFile:
self.content = """
<html>
<head>
-<title>Benchmarks report</title>
+<title>""" + title + """</title>
<style type="text/css">
body {
background-color: #FFFFFF;
@@ -60,30 +60,33 @@ h1, h2, .plot, .descr, .info {
</style>
</head>
<body>
-<h1>
-"""
- self.content += title + '</h1>'
+<h1>""" + title + "</h1>"
date = time.strftime('%Y-%m-%d, %I:%M %p')
self.content += '<p class="info">Generated on ' + date + '</p>'
# Information regarding the CPU
cpuinfo = file('/proc/cpuinfo', 'r').readlines()
cpu = None
+ corecount = 0
for l in cpuinfo:
- if l[:10] == 'model name':
- cpu = l.split(':',1)[1].strip()
+ if l.startswith('model name'):
+ cpu = l.split(':', 1)[1].strip()
+ if l.startswith('processor'):
+ corecount += 1
+
if cpu:
- self.content += '<p class="info">CPU: ' + cpu + '</p>'
-
+ self.content += '<p class="info">CPU: ' + cpu + \
+ ' (' + str(corecount) + ' cores)</p>'
+
# Information regarding the memory
meminfo = file('/proc/meminfo', 'r').readlines()
mem = None
for l in meminfo:
if l[:8] == 'MemTotal':
- mem = l.split(':',1)[1].strip()
+ mem = l.split(':', 1)[1].strip()
if mem:
self.content += '<p class="info">Total memory: ' + mem + '</p>'
-
+
# Information regarding the caches
cachedir = '/sys/devices/system/cpu/cpu0/cache'
if exists(cachedir):
@@ -95,31 +98,31 @@ h1, h2, .plot, .descr, .info {
ctxt += ': ' + file(pjoin(cdir, 'size')).read().strip()[:-1]
self.content += ctxt + ' kB<br />'
self.content += '</p>'
-
+
# Input file
self.content += '<div class="inputfile">Input file: ' + \
'<a href="%s">%s</a>' % (basename(inputfile), cfg.inputfile) + \
'<pre>%s</pre></div>' % xmlescape(file(cfg.inputfile, 'r').read())
-
+
self.content += '<div class="log">Logs: <a href="log">%s</a></div>' \
% cfg.logdir
-
-
+
+
def addFig(self, title, image, descr='', alt='', width=None):
self.content += '<div class="fig">'
self.content += '<h2>' + title + '</h2>'
if descr.strip() != '':
self.content += '<p class="descr">' + descr + '</p>'
self.content += '<div class="plot">'
- self.content += '<a href="' + image + '">'
+ self.content += '<a href="' + image + '">'
self.content += '<img src="' + image + '" alt="' + alt + '"'
if width is not None:
self.content += ' style="width:' + str(width) + '; height:auto"'
self.content += ' /></a>'
self.content += '</div>'
self.content += '</div><hr />'
-
+
def close(self):
self.content += '</body></html>'
f = file(self.fname, 'w')
diff --git a/numbench/xmlinput.py b/numbench/xmlinput.py
index 87d9824..0f495d4 100644
--- a/numbench/xmlinput.py
+++ b/numbench/xmlinput.py
@@ -16,11 +16,18 @@ class Parser:
def getModuleArguments(self):
opTag = self._dom.getElementsByTagName('operations')[0]
try:
- args = shlex.split(opTag.firstChild.data)
+ args = tuple(shlex.split(opTag.firstChild.data))
except AttributeError:
args = ()
return args
+ def getReportTitle(self):
+ titleTag = self._dom.getElementsByTagName('title')
+ if len(titleTag) != 1:
+ return "Benchmarks report"
+ else:
+ return titleTag[0].firstChild.data
+
def getTestCases(self):
testNodes = self._dom.getElementsByTagName('case')