From 92b4e07b54b9b1a1bdc58a23fba2f69473c84dc4 Mon Sep 17 00:00:00 2001
From: feger <marc.feger@hhu.de>
Date: Fri, 8 Mar 2019 16:00:28 +0100
Subject: [PATCH] Add time measurement and update swagger documentation

---
 api/doc/browser_guide/__init__.py     |  0
 api/src/models/discussion_skeleton.py | 13 ++++++++++++-
 api/src/time_measure/__init__.py      |  0
 api/src/time_measure/measurement.py   | 13 +++++++++++++
 api/static/swagger/neo_api.yaml       |  4 ++++
 5 files changed, 29 insertions(+), 1 deletion(-)
 create mode 100644 api/doc/browser_guide/__init__.py
 create mode 100644 api/src/time_measure/__init__.py
 create mode 100644 api/src/time_measure/measurement.py

diff --git a/api/doc/browser_guide/__init__.py b/api/doc/browser_guide/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/api/src/models/discussion_skeleton.py b/api/src/models/discussion_skeleton.py
index eb9e905..4d6840b 100644
--- a/api/src/models/discussion_skeleton.py
+++ b/api/src/models/discussion_skeleton.py
@@ -1,3 +1,4 @@
+from api.src.time_measure.measurement import Measurement
 from api.src.traffic.adapter import Adapter
 from api.src.traffic.injector import Injector
 
@@ -12,4 +13,14 @@ class DiscussionSkeleton(Adapter, Injector):
         Injector.__init__(self)
 
     def inject_to_neo(self):
-        return self.run(self.request(expects_true_string=True))
+        response = Measurement.get_elapsed_time(self.request, expects_true_string=True)
+        cypher_response = self.run(response.get("result"))
+
+        res = {
+            "request_time": round(response.get("elapsed_time"), 4),
+            "injection_time": round(cypher_response.get("total_time"), 4)
+        }
+
+        res["total_time"] = round(sum(res.values()), 4)
+
+        return res
diff --git a/api/src/time_measure/__init__.py b/api/src/time_measure/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/api/src/time_measure/measurement.py b/api/src/time_measure/measurement.py
new file mode 100644
index 0000000..94f3ca4
--- /dev/null
+++ b/api/src/time_measure/measurement.py
@@ -0,0 +1,13 @@
+import time
+
+
+class Measurement(object):
+
+    @staticmethod
+    def get_elapsed_time(func, **kwargs):
+        t1 = time.time()
+        res = func(kwargs)
+        return {
+            "result": res,
+            "elapsed_time": time.time() - t1
+        }
diff --git a/api/static/swagger/neo_api.yaml b/api/static/swagger/neo_api.yaml
index 07e1aff..e176ba7 100644
--- a/api/static/swagger/neo_api.yaml
+++ b/api/static/swagger/neo_api.yaml
@@ -135,6 +135,10 @@ paths:
               schema:
                 type: object
                 properties:
+                  injection_time:
+                    type: number
+                  request_time:
+                    type: number
                   total_time:
                     type: number
 
-- 
GitLab