mirror of
https://github.com/BOSWatch/BW3-Core.git
synced 2025-12-06 07:12:04 +01:00
add statistics for routers
This commit is contained in:
parent
512d72e97a
commit
c07237f2ea
|
|
@ -16,6 +16,7 @@
|
||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
import copy
|
import copy
|
||||||
|
import time
|
||||||
|
|
||||||
logging.debug("- %s loaded", __name__)
|
logging.debug("- %s loaded", __name__)
|
||||||
|
|
||||||
|
|
@ -28,6 +29,14 @@ class Router:
|
||||||
@param name: name of the router"""
|
@param name: name of the router"""
|
||||||
self.name = name
|
self.name = name
|
||||||
self.routeList = []
|
self.routeList = []
|
||||||
|
|
||||||
|
# for time counting
|
||||||
|
self._cumTime = 0
|
||||||
|
self._routerTime = 0
|
||||||
|
|
||||||
|
# for statistics
|
||||||
|
self._runCount = 0
|
||||||
|
|
||||||
logging.debug("[%s] add new router", self.name)
|
logging.debug("[%s] add new router", self.name)
|
||||||
|
|
||||||
def addRoute(self, route):
|
def addRoute(self, route):
|
||||||
|
|
@ -44,7 +53,11 @@ class Router:
|
||||||
@param bwPacket: instance of Packet class
|
@param bwPacket: instance of Packet class
|
||||||
@return a instance of Packet class
|
@return a instance of Packet class
|
||||||
"""
|
"""
|
||||||
|
self._runCount += 1
|
||||||
|
tmpTime = time.time()
|
||||||
|
|
||||||
logging.debug("[%s] started", self.name)
|
logging.debug("[%s] started", self.name)
|
||||||
|
|
||||||
for routeObject in self.routeList:
|
for routeObject in self.routeList:
|
||||||
logging.debug("[%s] -> run route: %s", self.name, routeObject.name)
|
logging.debug("[%s] -> run route: %s", self.name, routeObject.name)
|
||||||
bwPacket_tmp = routeObject.callback(copy.deepcopy(bwPacket)) # copy bwPacket to prevent edit the original
|
bwPacket_tmp = routeObject.callback(copy.deepcopy(bwPacket)) # copy bwPacket to prevent edit the original
|
||||||
|
|
@ -59,4 +72,19 @@ class Router:
|
||||||
bwPacket = bwPacket_tmp
|
bwPacket = bwPacket_tmp
|
||||||
logging.debug("[%s] <- bwPacket returned: %s", self.name, bwPacket)
|
logging.debug("[%s] <- bwPacket returned: %s", self.name, bwPacket)
|
||||||
logging.debug("[%s] finished", self.name)
|
logging.debug("[%s] finished", self.name)
|
||||||
|
|
||||||
|
self._routerTime = time.time() - tmpTime
|
||||||
|
self._cumTime += self._routerTime
|
||||||
|
|
||||||
return bwPacket
|
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
|
||||||
|
|
|
||||||
|
|
@ -141,6 +141,7 @@ class RouterManager:
|
||||||
for name, routerObject in self._routerDict.items():
|
for name, routerObject in self._routerDict.items():
|
||||||
lines.append("[" + name + "]")
|
lines.append("[" + name + "]")
|
||||||
lines.append(" - Route points: " + str(len(routerObject.routeList)))
|
lines.append(" - Route points: " + str(len(routerObject.routeList)))
|
||||||
|
lines.append(" - Runs: " + str(routerObject._getStatistics()['runCount']))
|
||||||
for routePoint in routerObject.routeList:
|
for routePoint in routerObject.routeList:
|
||||||
lines.append("[+] " + routePoint.name)
|
lines.append("[+] " + routePoint.name)
|
||||||
if routePoint.statistics:
|
if routePoint.statistics:
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,7 @@ Eine Auflistung der bereitgestellten Informationen findet sich im entsprechenden
|
||||||
Bitte beachten:
|
Bitte beachten:
|
||||||
|
|
||||||
- Selbst vom Modul hinzugefügte Felder **müssen** in der Modul Dokumentation unter `Paket Modifikation` aufgeführt werden.
|
- 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
|
### Zu beachten bei Module
|
||||||
Module können Pakete beliebig verändern. Diese Änderungen werden im Router entsprechend weitergeleitet.
|
Module können Pakete beliebig verändern. Diese Änderungen werden im Router entsprechend weitergeleitet.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue