From 5f284990c60af02ac90af130a775972b163da88a Mon Sep 17 00:00:00 2001
From: feger <marc.feger@hhu.de>
Date: Fri, 8 Mar 2019 16:28:40 +0100
Subject: [PATCH] Add more time measurement to discussions and add them to
 swagger documentation

---
 api/src/models/discussion.py          | 14 +++++++++++++-
 api/src/models/discussion_skeleton.py |  1 +
 api/src/time_measure/measurement.py   |  2 +-
 api/static/swagger/neo_api.yaml       |  4 ++++
 4 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/api/src/models/discussion.py b/api/src/models/discussion.py
index 2eb2fd7..bb6e803 100644
--- a/api/src/models/discussion.py
+++ b/api/src/models/discussion.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
 
@@ -26,5 +27,16 @@ class Discussion(Adapter, Injector):
         result = super().request()
         return result['issue']['completeGraphCypher']
 
+    # Todo: abstract further
     def inject_to_neo(self):
-        return self.run(self._cypher_query())
+        response = Measurement.get_elapsed_time(self._cypher_query)
+        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/models/discussion_skeleton.py b/api/src/models/discussion_skeleton.py
index 4d6840b..0762ed0 100644
--- a/api/src/models/discussion_skeleton.py
+++ b/api/src/models/discussion_skeleton.py
@@ -12,6 +12,7 @@ class DiscussionSkeleton(Adapter, Injector):
         Adapter.__init__(self, url="{}://{}:{}/api/cypher".format(self.protocol, self.host, self.port))
         Injector.__init__(self)
 
+    # Todo: abstract further
     def inject_to_neo(self):
         response = Measurement.get_elapsed_time(self.request, expects_true_string=True)
         cypher_response = self.run(response.get("result"))
diff --git a/api/src/time_measure/measurement.py b/api/src/time_measure/measurement.py
index 94f3ca4..c240eea 100644
--- a/api/src/time_measure/measurement.py
+++ b/api/src/time_measure/measurement.py
@@ -6,7 +6,7 @@ class Measurement(object):
     @staticmethod
     def get_elapsed_time(func, **kwargs):
         t1 = time.time()
-        res = func(kwargs)
+        res = func(kwargs) if kwargs else func()
         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 e176ba7..791c4b3 100644
--- a/api/static/swagger/neo_api.yaml
+++ b/api/static/swagger/neo_api.yaml
@@ -106,6 +106,10 @@ paths:
               schema:
                 type: object
                 properties:
+                  injection_time:
+                    type: number
+                  request_time:
+                    type: number
                   total_time:
                     type: number
         404:
-- 
GitLab