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 )