mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
selftest/wscript: format perftest as json
This makes it easier to use with common web-based graphing systems. Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz> Reviewed-by: Garming Sam <garming@catalyst.net.nz>
This commit is contained in:
parent
dfac53cd40
commit
1d0dd5bf5e
54
selftest/format-subunit-json
Normal file
54
selftest/format-subunit-json
Normal file
@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright (C) 2008-2010 Jelmer Vernooij <jelmer@samba.org>
|
||||
# Copyright (C) 2016 Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
|
||||
# Published under the GNU GPL, v3 or later
|
||||
|
||||
import optparse
|
||||
import os
|
||||
import signal
|
||||
import sys
|
||||
import json
|
||||
|
||||
sys.path.insert(0, "bin/python")
|
||||
|
||||
|
||||
def json_formatter(src_f, dest_f):
|
||||
"""We're not even pretending to be a TestResult subclass; just read
|
||||
from stdin and look for elapsed-time tags."""
|
||||
results = {}
|
||||
|
||||
for line in src_f:
|
||||
line = line.strip()
|
||||
print >>sys.stderr, line
|
||||
if line[:14] == 'elapsed-time: ':
|
||||
name, time = line[14:].rsplit(':', 1)
|
||||
results[name] = float(time)
|
||||
|
||||
json.dump(results, dest_f,
|
||||
sort_keys=True, indent=2, separators=(',', ': '))
|
||||
|
||||
|
||||
def main():
|
||||
parser = optparse.OptionParser("format-subunit-json [options]")
|
||||
parser.add_option("--verbose", action="store_true",
|
||||
help="ignored, for compatibility")
|
||||
parser.add_option("--immediate", action="store_true",
|
||||
help="ignored, for compatibility")
|
||||
parser.add_option("--prefix", type="string", default=".",
|
||||
help="Prefix to write summary.json to")
|
||||
opts, args = parser.parse_args()
|
||||
|
||||
fn = os.path.join(opts.prefix, "summary.json")
|
||||
f = open(fn, 'w')
|
||||
json_formatter(sys.stdin, f)
|
||||
f.close()
|
||||
print
|
||||
print "A JSON file summarising these tests performance found in:"
|
||||
print " ", fn
|
||||
|
||||
|
||||
def handle_sigint(sig, stack):
|
||||
sys.exit(0)
|
||||
|
||||
signal.signal(signal.SIGINT, handle_sigint)
|
||||
main()
|
@ -118,7 +118,10 @@ def cmd_testonly(opt):
|
||||
|
||||
env.SUBUNIT_FORMATTER = os.getenv('SUBUNIT_FORMATTER')
|
||||
if not env.SUBUNIT_FORMATTER:
|
||||
env.SUBUNIT_FORMATTER = '${PYTHON} -u ${srcdir}/selftest/format-subunit --prefix=${SELFTEST_PREFIX} --immediate'
|
||||
if Options.options.PERF_TEST:
|
||||
env.SUBUNIT_FORMATTER = '${PYTHON} -u ${srcdir}/selftest/format-subunit-json --prefix=${SELFTEST_PREFIX}'
|
||||
else:
|
||||
env.SUBUNIT_FORMATTER = '${PYTHON} -u ${srcdir}/selftest/format-subunit --prefix=${SELFTEST_PREFIX} --immediate'
|
||||
env.FILTER_XFAIL = '${PYTHON} -u ${srcdir}/selftest/filter-subunit --expected-failures=${srcdir}/selftest/knownfail --flapping=${srcdir}/selftest/flapping'
|
||||
|
||||
if Options.options.FAIL_IMMEDIATELY:
|
||||
|
Loading…
Reference in New Issue
Block a user