Mercurial > hg > orthanc-tests
comparison PerfsDb/TestResult.py @ 156:f1a75985caa8
first Db test framework - work in progress
author | am@osimis.io |
---|---|
date | Thu, 16 Aug 2018 17:13:32 +0200 |
parents | |
children | 85a2074f8794 |
comparison
equal
deleted
inserted
replaced
155:e0996602b306 | 156:f1a75985caa8 |
---|---|
1 import time | |
2 import statistics | |
3 from orthancRestApi import OrthancClient | |
4 | |
5 class TestResult: | |
6 | |
7 def __init__(self, name: str): | |
8 self.minTimeInMs = 0 | |
9 self.maxTimeInMs = 0 | |
10 self.averageTimeInMs = 0 | |
11 self.name = name | |
12 self._durations = [] | |
13 | |
14 def add(self, durationInMs: float): | |
15 self._durations.append(durationInMs) | |
16 | |
17 def compute(self): | |
18 | |
19 mean = statistics.mean(self._durations) | |
20 stdDev = statistics.stdev(self._durations) | |
21 | |
22 # remove outliers | |
23 cleanedDurations = [x for x in self._durations if (x > mean - 2*stdDev) and (x < mean + 2*stdDev)] | |
24 | |
25 self.averageTimeInMs = statistics.mean(cleanedDurations) | |
26 self.minTimeInMs = min(cleanedDurations) | |
27 self.maxTimeInMs = max(cleanedDurations) | |
28 | |
29 | |
30 def __str__(self): | |
31 return "{name:<40}: {avg:>8.2f} ms {min:>8.2f} ms {max:>8.2f} ms".format( | |
32 name=self.name, | |
33 avg = self.averageTimeInMs, | |
34 min=self.minTimeInMs, | |
35 max=self.maxTimeInMs | |
36 ) |