diff --git a/boswatch/router/router.py b/boswatch/router/router.py index 69c18db..c0555ae 100644 --- a/boswatch/router/router.py +++ b/boswatch/router/router.py @@ -16,6 +16,7 @@ """ import logging import copy +import time logging.debug("- %s loaded", __name__) @@ -28,6 +29,14 @@ class Router: @param name: name of the router""" self.name = name self.routeList = [] + + # for time counting + self._cumTime = 0 + self._routerTime = 0 + + # for statistics + self._runCount = 0 + logging.debug("[%s] add new router", self.name) def addRoute(self, route): @@ -44,7 +53,11 @@ class Router: @param bwPacket: instance of Packet class @return a instance of Packet class """ + self._runCount += 1 + tmpTime = time.time() + logging.debug("[%s] started", self.name) + for routeObject in self.routeList: logging.debug("[%s] -> run route: %s", self.name, routeObject.name) bwPacket_tmp = routeObject.callback(copy.deepcopy(bwPacket)) # copy bwPacket to prevent edit the original @@ -59,4 +72,19 @@ class Router: bwPacket = bwPacket_tmp logging.debug("[%s] <- bwPacket returned: %s", self.name, bwPacket) logging.debug("[%s] finished", self.name) + + self._routerTime = time.time() - tmpTime + self._cumTime += self._routerTime + return bwPacket + + + def _getStatistics(self): + """!Returns statistical information's from last router run + + @return Statistics as pyton dict""" + stats = {"type": "router", + "runCount": self._runCount, + "cumTime": self._cumTime, + "moduleTime": self._routerTime} + return stats diff --git a/boswatch/router/routerManager.py b/boswatch/router/routerManager.py index 60a0b13..b8574a6 100644 --- a/boswatch/router/routerManager.py +++ b/boswatch/router/routerManager.py @@ -141,6 +141,7 @@ class RouterManager: for name, routerObject in self._routerDict.items(): lines.append("[" + name + "]") lines.append(" - Route points: " + str(len(routerObject.routeList))) + lines.append(" - Runs: " + str(routerObject._getStatistics()['runCount'])) for routePoint in routerObject.routeList: lines.append("[+] " + routePoint.name) if routePoint.statistics: diff --git a/docu/docs/develop/ModulPlugin.md b/docu/docs/develop/ModulPlugin.md index 1b6b58e..822af74 100644 --- a/docu/docs/develop/ModulPlugin.md +++ b/docu/docs/develop/ModulPlugin.md @@ -78,7 +78,7 @@ Eine Auflistung der bereitgestellten Informationen findet sich im entsprechenden Bitte beachten: - Selbst vom Modul hinzugefügte Felder **müssen** in der Modul Dokumentation unter `Paket Modifikation` aufgeführt werden. -- Sollte ein Modul oder Plugin Felder benutzen, welche in einem anderen Modul erstellt werden, **muss** dies im Punkt `Abhänigkeiten` des jeweiligen Moduls oder Plugins zu dokumentieren. +- Sollte ein Modul oder Plugin Felder benutzen, welche in einem anderen Modul erstellt werden, **muss** dies im Punkt `Abhänigkeiten` des jeweiligen Moduls oder Plugins dokumentiert werden. ### Zu beachten bei Module Module können Pakete beliebig verändern. Diese Änderungen werden im Router entsprechend weitergeleitet.