156
|
1 import time
|
|
2 import statistics
|
|
3 from orthancRestApi import OrthancClient
|
|
4
|
|
5 from TestResult import TestResult
|
|
6
|
|
7 class Test:
|
|
8
|
|
9 def __init__(self, name: str):
|
|
10 self.name = name
|
|
11 self._orthanc = None
|
|
12 self.repeatCount = 10
|
|
13
|
|
14 def setOrthancClient(self, orthanc: OrthancClient):
|
|
15 self._orthanc = orthanc
|
|
16
|
|
17 def setRepeatCount(self, repeatCount: int):
|
|
18 self.repeatCount = repeatCount
|
|
19
|
|
20 def prepare(self):
|
|
21 """
|
|
22 Code to execute before the execution of a test; i.e: upload a file (not including in timings)
|
|
23 """
|
|
24 pass
|
|
25
|
|
26 def test(self):
|
|
27 """
|
|
28 Code whose execution time will be measured
|
|
29 """
|
|
30 pass
|
|
31
|
|
32 def cleanup(self):
|
|
33 """
|
|
34 Code to execute after the execution of a test; i.e: remove an instance (not including in timings)
|
|
35 """
|
|
36 pass
|
|
37
|
|
38 def run(self) -> TestResult:
|
|
39 result = TestResult(self.name)
|
|
40
|
|
41 for i in range(0, self.repeatCount):
|
|
42 self.prepare()
|
|
43 startTime = time.time()
|
|
44 self.test()
|
|
45 endTime = time.time()
|
|
46 self.cleanup()
|
|
47
|
|
48 result.add((endTime - startTime) * 1000)
|
|
49
|
|
50 result.compute()
|
|
51 return result
|
|
52
|
|
53 def __str__(self):
|
|
54 return "{name:<40}: {avg:>8.2f} ms {min:>8.2f} ms {max:>8.2f} ms".format(
|
|
55 name=self.name,
|
|
56 avg = self.averageTimeInMs,
|
|
57 min=self.minTimeInMs,
|
|
58 max=self.maxTimeInMs
|
|
59 ) |