156
|
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 ) |