diff options
author | Douglas Bagnall <douglas.bagnall@catalyst.net.nz> | 2016-08-17 10:56:50 +1200 |
---|---|---|
committer | Douglas Bagnall <dbagnall@samba.org> | 2016-08-31 07:09:26 +0200 |
commit | e908873757171db5b65296c5c3cdefe7d0fb0c01 (patch) | |
tree | 8e1b277cf9ac52bb4be4c136966ccf6953e37e75 /selftest/subunithelper.py | |
parent | 288efc55608e7d465f68d782790cf485defb79b6 (diff) | |
download | samba-e908873757171db5b65296c5c3cdefe7d0fb0c01.tar.gz |
make perftest: for performance testing
This runs a selection of subunit tests and reduces the output to only
the time it takes to run each test.
The tests are listed in selftest/perf_tests.py.
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
Diffstat (limited to 'selftest/subunithelper.py')
-rw-r--r-- | selftest/subunithelper.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/selftest/subunithelper.py b/selftest/subunithelper.py index a3bb30b69bc..c17036defba 100644 --- a/selftest/subunithelper.py +++ b/selftest/subunithelper.py @@ -17,6 +17,7 @@ __all__ = ['parse_results'] +import datetime import re import sys from samba import subunit @@ -429,6 +430,73 @@ class FilterOps(unittest.TestResult): self.fail_immediately = fail_immediately +class PerfFilterOps(unittest.TestResult): + + def progress(self, delta, whence): + pass + + def output_msg(self, msg): + pass + + def control_msg(self, msg): + pass + + def skip_testsuite(self, name, reason=None): + self._ops.skip_testsuite(name, reason) + + def start_testsuite(self, name): + self.suite_has_time = False + + def end_testsuite(self, name, result, reason=None): + pass + + def _add_prefix(self, test): + return subunit.RemotedTestCase(self.prefix + test.id() + self.suffix) + + def time(self, time): + self.latest_time = time + #self._ops.output_msg("found time %s\n" % time) + self.suite_has_time = True + + def get_time(self): + if self.suite_has_time: + return self.latest_time + return datetime.datetime.utcnow() + + def startTest(self, test): + self.seen_output = True + test = self._add_prefix(test) + self.starts[test.id()] = self.get_time() + + def addSuccess(self, test): + test = self._add_prefix(test) + tid = test.id() + if tid not in self.starts: + self._ops.addError(test, "%s succeeded without ever starting!" % tid) + delta = self.get_time() - self.starts[tid] + self._ops.output_msg("elapsed-time: %s: %f\n" % (tid, delta.total_seconds())) + + def addFailure(self, test, err=''): + tid = test.id() + delta = self.get_time() - self.starts[tid] + self._ops.output_msg("failure: %s failed after %f seconds (%s)\n" % + (tid, delta.total_seconds(), err)) + + def addError(self, test, err=''): + tid = test.id() + delta = self.get_time() - self.starts[tid] + self._ops.output_msg("error: %s failed after %f seconds (%s)\n" % + (tid, delta.total_seconds(), err)) + + def __init__(self, out, prefix='', suffix=''): + self._ops = out + self.prefix = prefix or '' + self.suffix = suffix or '' + self.starts = {} + self.seen_output = False + self.suite_has_time = False + + class PlainFormatter(TestsuiteEnabledTestResult): def __init__(self, verbose, immediate, statistics, |