diff PerfsDb/Test.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 df1f9946571c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PerfsDb/Test.py	Thu Aug 16 17:13:32 2018 +0200
@@ -0,0 +1,59 @@
+import time
+import statistics
+from orthancRestApi import OrthancClient
+
+from TestResult import TestResult
+
+class Test:
+
+    def __init__(self, name: str):
+        self.name = name
+        self._orthanc = None
+        self.repeatCount = 10
+        
+    def setOrthancClient(self, orthanc: OrthancClient):
+        self._orthanc = orthanc
+
+    def setRepeatCount(self, repeatCount: int):
+        self.repeatCount = repeatCount
+
+    def prepare(self):
+        """
+        Code to execute before the execution of a test; i.e: upload a file (not including in timings)
+        """
+        pass
+
+    def test(self):
+        """
+        Code whose execution time will be measured
+        """
+        pass
+
+    def cleanup(self):
+        """
+        Code to execute after the execution of a test; i.e: remove an instance (not including in timings)
+        """
+        pass
+
+    def run(self) -> TestResult:
+        result = TestResult(self.name)
+
+        for i in range(0, self.repeatCount):
+            self.prepare()
+            startTime = time.time()
+            self.test()
+            endTime = time.time()
+            self.cleanup()
+
+            result.add((endTime - startTime) * 1000)
+
+        result.compute()
+        return result
+
+    def __str__(self):
+        return "{name:<40}: {avg:>8.2f} ms {min:>8.2f} ms {max:>8.2f} ms".format(
+            name=self.name,
+            avg = self.averageTimeInMs,
+            min=self.minTimeInMs,
+            max=self.maxTimeInMs
+        )
\ No newline at end of file