This provides a switch and method for excluding the generation of the test result HTML files (those that live under <testrun name>/). This allows the user to trade some verbosity in the results for a significant increase in generation speed. A run of quick.tests with all options enabled takes ~5.5 seconds, with just pass and skip disabled it only takes ~2.5 seconds. This only becomes more significant as more testsruns are added the HTML page.
V3: Remove some bad comments Signed-off-by: Dylan Baker <baker.dyla...@gmail.com> --- framework/summary.py | 45 +++++++++++++++++++++++++-------------------- piglit-summary-html.py | 17 ++++++++++++++++- templates/index.mako | 6 ++++++ 3 files changed, 47 insertions(+), 21 deletions(-) diff --git a/framework/summary.py b/framework/summary.py index 79ed20c..fc08d2b 100644 --- a/framework/summary.py +++ b/framework/summary.py @@ -687,7 +687,7 @@ class NewSummary: if status[i] > 1 and status[i + 1] == 1: self.fixes.append(test) - def generateHTML(self, destination): + def generateHTML(self, destination, exclude): """ Produce HTML summaries. @@ -732,23 +732,26 @@ class NewSummary: for key, value in each.tests.iteritems(): tPath = path.join(destination, each.name, path.dirname(key)) - # os.makedirs is very annoying, it throws an OSError if the - # path requested already exists, so do this check to ensure - # that it doesn't - if not path.exists(tPath): - os.makedirs(tPath) - - file = open(path.join(destination, each.name, key + ".html"), - 'w') - file.write(testfile.render(testname=key, - status=value['result'], - returncode=value['returncode'], - time=value['time'], - info=value['info'], - command=value['command'], - css=path.relpath(resultCss, tPath), - index=index)) - file.close() + if value['result'] not in exclude: + # os.makedirs is very annoying, it throws an OSError if + # the path requested already exists, so do this check to + # ensure that it doesn't + if not path.exists(tPath): + os.makedirs(tPath) + + file = open(path.join(destination, + each.name, + key + ".html"), 'w') + file.write(testfile.render(testname=key, + status=value['result'], + returncode=value['returncode'], + time=value['time'], + info=value['info'], + command=value['command'], + css=path.relpath(resultCss, + tPath), + index=index)) + file.close() # Finally build the root html files: index, regressions, etc index = Template(filename="templates/index.mako", @@ -765,7 +768,8 @@ class NewSummary: file.write(index.render(results=HTMLIndex(self, 'alltests'), page='all', links=pages, - colnum=len(self.results))) + colnum=len(self.results), + exclude=exclude)) file.close() # Generate the rest of the pages @@ -774,5 +778,6 @@ class NewSummary: file.write(index.render(results=HTMLIndex(self, page), page=page, colnum=len(self.results), - links=pages)) + links=pages, + exclude=exclude)) file.close() diff --git a/piglit-summary-html.py b/piglit-summary-html.py index dc10b7d..5328255 100755 --- a/piglit-summary-html.py +++ b/piglit-summary-html.py @@ -51,6 +51,17 @@ def main(): help = "Load a newline seperated list of results. " "These results will be prepended to any " "Results specified on the command line") + parser.add_argument("-e", "--exclude-generation", + default = [], + action = "append", + choices = ['skip', 'pass', 'warn', 'crash' 'fail', + 'all'], + help = "Optionally exclude the generation of HTML" + "pages for individual test pages with the" + "status(es) given as arguments. This speeds" + "up HTML generation, but reduces the info" + "in the HTML pages. May be used multiple" + "times") parser.add_argument("summaryDir", metavar = "<Summary Directory>", help = "Directory to put HTML files in") @@ -64,6 +75,10 @@ def main(): if not args.list and not args.resultsFiles: raise parser.error("Missing required option -l or <resultsFiles>") + # If exclude-results has all, then change it to be all + if 'all' in args.exclude_generation: + args.exclude_generation=['skip', 'pass', 'warn', 'crash', 'fail'] + # if overwrite is requested delete the output directory if path.exists(args.summaryDir) and args.overwrite: shutil.rmtree(args.summaryDir) @@ -77,7 +92,7 @@ def main(): # Create the HTML output output = summary.NewSummary(args.resultsFiles) - output.generateHTML(args.summaryDir) + output.generateHTML(args.summaryDir, args.exclude_generation) if __name__ == "__main__": diff --git a/templates/index.mako b/templates/index.mako index 8ca4298..4bfb3c7 100644 --- a/templates/index.mako +++ b/templates/index.mako @@ -58,9 +58,15 @@ </td> % elif line['type'] == "testResult": <td class="${line['class']}"> + ## If the result is in the excluded results page list from + ## argparse, just print the text, otherwise add the link + % if line['class'] not in exclude: <a href="${line['href']}"> ${line['text']} </a> + % else: + ${line['text']} + % endif </td> % elif line['type'] == "subtestResult": <td class="${line['class']}"> -- 1.8.1.4 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit