annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
156
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
1 import time
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
2 import statistics
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
3 from orthancRestApi import OrthancClient
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
4
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
5 class TestResult:
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
6
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
7 def __init__(self, name: str):
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
8 self.minTimeInMs = 0
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
9 self.maxTimeInMs = 0
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
10 self.averageTimeInMs = 0
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
11 self.name = name
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
12 self._durations = []
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
13
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
14 def add(self, durationInMs: float):
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
15 self._durations.append(durationInMs)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
16
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
17 def compute(self):
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
18
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
19 mean = statistics.mean(self._durations)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
20 stdDev = statistics.stdev(self._durations)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
21
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
22 # remove outliers
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
23 cleanedDurations = [x for x in self._durations if (x > mean - 2*stdDev) and (x < mean + 2*stdDev)]
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
24
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
25 self.averageTimeInMs = statistics.mean(cleanedDurations)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
26 self.minTimeInMs = min(cleanedDurations)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
27 self.maxTimeInMs = max(cleanedDurations)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
28
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
29
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
30 def __str__(self):
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
31 return "{name:<40}: {avg:>8.2f} ms {min:>8.2f} ms {max:>8.2f} ms".format(
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
32 name=self.name,
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
33 avg = self.averageTimeInMs,
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
34 min=self.minTimeInMs,
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
35 max=self.maxTimeInMs
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
36 )