add statistics for routers

This commit is contained in:
Bastian Schroll 2019-10-25 15:54:26 +02:00
parent 512d72e97a
commit c07237f2ea
No known key found for this signature in database
GPG key ID: 0AE96912A20E9F5F
3 changed files with 30 additions and 1 deletions

View file

@ -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

View file

@ -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:

View file

@ -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.