mirror of
https://github.com/craigerl/aprsd.git
synced 2024-09-28 08:06:37 -04:00
Added message counts for each plugin.
This patch adds a message counter for each plugin. When the regex for a plugin passes and the message is pass into the plugin for processing, that message is tracked. This message count is reported by the stats tracking object now for the web admin ui.
This commit is contained in:
parent
d8950f0995
commit
3ae5717452
@ -43,6 +43,7 @@ class APRSDPluginBase(metaclass=abc.ABCMeta):
|
|||||||
def __init__(self, config):
|
def __init__(self, config):
|
||||||
"""The aprsd config object is stored."""
|
"""The aprsd config object is stored."""
|
||||||
self.config = config
|
self.config = config
|
||||||
|
self.message_counter = 0
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def command_name(self):
|
def command_name(self):
|
||||||
@ -59,9 +60,14 @@ class APRSDPluginBase(metaclass=abc.ABCMeta):
|
|||||||
"""Version"""
|
"""Version"""
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
@property
|
||||||
|
def message_count(self):
|
||||||
|
return self.message_counter
|
||||||
|
|
||||||
@hookimpl
|
@hookimpl
|
||||||
def run(self, fromcall, message, ack):
|
def run(self, fromcall, message, ack):
|
||||||
if re.search(self.command_regex, message):
|
if re.search(self.command_regex, message):
|
||||||
|
self.message_counter += 1
|
||||||
return self.command(fromcall, message, ack)
|
return self.command(fromcall, message, ack)
|
||||||
|
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
|
@ -3,7 +3,7 @@ import logging
|
|||||||
import threading
|
import threading
|
||||||
|
|
||||||
import aprsd
|
import aprsd
|
||||||
from aprsd import utils
|
from aprsd import plugin, utils
|
||||||
|
|
||||||
LOG = logging.getLogger("APRSD")
|
LOG = logging.getLogger("APRSD")
|
||||||
|
|
||||||
@ -181,6 +181,20 @@ class APRSDStats:
|
|||||||
else:
|
else:
|
||||||
last_aprsis_keepalive = "never"
|
last_aprsis_keepalive = "never"
|
||||||
|
|
||||||
|
pm = plugin.PluginManager()
|
||||||
|
plugins = pm.get_plugins()
|
||||||
|
plugin_stats = {}
|
||||||
|
|
||||||
|
def full_name_with_qualname(obj):
|
||||||
|
return "{}.{}".format(
|
||||||
|
obj.__class__.__module__,
|
||||||
|
obj.__class__.__qualname__,
|
||||||
|
)
|
||||||
|
|
||||||
|
for p in plugins:
|
||||||
|
LOG.debug(p)
|
||||||
|
plugin_stats[full_name_with_qualname(p)] = p.message_count
|
||||||
|
|
||||||
stats = {
|
stats = {
|
||||||
"aprsd": {
|
"aprsd": {
|
||||||
"version": aprsd.__version__,
|
"version": aprsd.__version__,
|
||||||
@ -209,6 +223,7 @@ class APRSDStats:
|
|||||||
"recieved": self._email_rx,
|
"recieved": self._email_rx,
|
||||||
"thread_last_update": last_update,
|
"thread_last_update": last_update,
|
||||||
},
|
},
|
||||||
|
"plugins": plugin_stats,
|
||||||
}
|
}
|
||||||
return stats
|
return stats
|
||||||
|
|
||||||
|
@ -143,7 +143,8 @@ class TestPlugin(unittest.TestCase):
|
|||||||
actual = ping.run(fromcall, message, ack)
|
actual = ping.run(fromcall, message, ack)
|
||||||
self.assertEqual(expected, actual)
|
self.assertEqual(expected, actual)
|
||||||
|
|
||||||
def test_version(self):
|
@mock.patch("aprsd.plugin.PluginManager.get_plugins")
|
||||||
|
def test_version(self, mock_get_plugins):
|
||||||
expected = "APRSD ver:{} uptime:0:0:0".format(aprsd.__version__)
|
expected = "APRSD ver:{} uptime:0:0:0".format(aprsd.__version__)
|
||||||
version = version_plugin.VersionPlugin(self.config)
|
version = version_plugin.VersionPlugin(self.config)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user