summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicolargo <nicolashennion@gmail.com>2024-05-07 15:26:16 +0200
committernicolargo <nicolashennion@gmail.com>2024-05-07 15:26:16 +0200
commitfd3625826b822f145181420b7b56a927b53d8c58 (patch)
treef89f03e15c710883cfe98fea004a35db22fcfcc5
parentaf4765db8afc4e9242bb72e5b4bfb04f4cb37391 (diff)
First work done for plugin model (stats only)
-rw-r--r--Makefile19
-rw-r--r--glances/plugins/plugin/model.py8
-rwxr-xr-xunittest-core.py46
3 files changed, 58 insertions, 15 deletions
diff --git a/Makefile b/Makefile
index 80ad0b1a..8f8f5607 100644
--- a/Makefile
+++ b/Makefile
@@ -62,27 +62,26 @@ venv-dev-upgrade: ## Upgrade Python 3 dev dependencies
# Tests
# ===================================================================
-test: ## Run unit tests
+test-core: ## Run core unit tests
./venv/bin/python ./unittest-core.py
+
+test-restful: ## Run Restful unit tests
./venv/bin/python ./unittest-restful.py
+
+test-xmlrpc: ## Run XMLRPC unit tests
./venv/bin/python ./unittest-xmlrpc.py
+
+test: test-core test-restful test-xmlrpc ## Run unit tests
./venv-dev/bin/python -m black ./glances --check --exclude outputs/static
-test-with-upgrade: venv-upgrade venv-dev-upgrade ## Upgrade deps and run unit tests
- ./venv/bin/python ./unittest-core.py
- ./venv/bin/python ./unittest-restful.py
- ./venv/bin/python ./unittest-xmlrpc.py
- ./venv/bin-dev/python -m black ./glances --check --exclude outputs/static
+test-with-upgrade: venv-upgrade venv-dev-upgrade test ## Upgrade deps and run unit tests
-test-min: ## Run unit tests in minimal environment
+test-min: ## Run core unit tests in minimal environment
./venv-min/bin/python ./unittest-core.py
test-min-with-upgrade: venv-min-upgrade ## Upgrade deps and run unit tests in minimal environment
./venv-min/bin/python ./unittest-core.py
-test-restful-api: ## Run unit tests of the RESTful API
- ./venv/bin/python ./unittest-restful.py
-
# ===================================================================
# Linters, profilers and cyber security
# ===================================================================
diff --git a/glances/plugins/plugin/model.py b/glances/plugins/plugin/model.py
index 8857fd11..afc0b0ad 100644
--- a/glances/plugins/plugin/model.py
+++ b/glances/plugins/plugin/model.py
@@ -129,7 +129,7 @@ class GlancesPluginModel(object):
def __repr__(self):
"""Return the raw stats."""
- return self.stats
+ return str(self.stats)
def __str__(self):
"""Return the human-readable stats."""
@@ -301,6 +301,8 @@ class GlancesPluginModel(object):
def sorted_stats(self):
"""Get the stats sorted by an alias (if present) or key."""
key = self.get_key()
+ if key is None:
+ return self.stats
try:
return sorted(
self.stats,
@@ -551,6 +553,10 @@ class GlancesPluginModel(object):
"""Set the views to input_views."""
self.views = input_views
+ def reset_views(self):
+ """Reset the views to input_views."""
+ self.views = dict()
+
def get_views(self, item=None, key=None, option=None):
"""Return the views object.
diff --git a/unittest-core.py b/unittest-core.py
index cd0c5781..51f3fc2a 100755
--- a/unittest-core.py
+++ b/unittest-core.py
@@ -13,6 +13,7 @@
import time
import unittest
import sys
+import json
# Check Python version
if sys.version_info < (3, 8):
@@ -480,9 +481,46 @@ class TestGlances(unittest.TestCase):
bar.percent = 110
self.assertEqual(bar.get(), '|||||||||||||||||||||||||||||||||||||||||||| >100%')
- def test_100_secure(self):
+ def test_100_plugin_model_dict(self):
+ """Test a standard plugin returning a dict"""
+ print('INFO: [TEST_100] Test standard plugin returning a dict')
+ plugin_instance = stats.get_plugin('mem')
+ plugin_instance.reset() # reset stats
+ plugin_instance.reset_views() # reset views
+ plugin_instance.reset_stats_history() # reset history
+ # Check before update
+ self.assertEqual(plugin_instance.get_raw(), plugin_instance.stats_init_value)
+ self.assertIsInstance(plugin_instance.get_raw(), dict)
+ self.assertEqual(plugin_instance.get_key(), None)
+ self.assertEqual(plugin_instance.is_enabled(), True)
+ self.assertEqual(plugin_instance.is_disabled(), False)
+ self.assertEqual(plugin_instance.history_enable(), True)
+ self.assertTrue(all([f in [h['name'] for h in plugin_instance.items_history_list] for f in plugin_instance.get_raw_history()]))
+ self.assertEqual(plugin_instance.get_views(), {})
+ # Update stats
+ plugin_instance.update()
+ plugin_instance.update_stats_history()
+ plugin_instance.update_views()
+ # Check stats
+ self.assertIsInstance(plugin_instance.get_raw(), dict)
+ self.assertTrue(all([f in plugin_instance.fields_description for f in plugin_instance.get_raw()]))
+ self.assertEqual(plugin_instance.get_raw(), plugin_instance.get_export())
+ self.assertEqual(plugin_instance.get_stats(), plugin_instance.get_json())
+ self.assertEqual(json.loads(plugin_instance.get_stats()), plugin_instance.get_raw())
+ # Check history
+ pass
+ # Check views
+ pass
+
+ def test_110_plugin_model_list(self):
+ """Test a standard plugin returning a list"""
+ print('INFO: [TEST_110] Test standard plugin returning a list')
+ plugin_instance = stats.get_plugin('network')
+ # + sorted_stats
+
+ def test_700_secure(self):
"""Test secure functions"""
- print('INFO: [TEST_100] Secure functions')
+ print('INFO: [TEST_700] Secure functions')
if WINDOWS:
self.assertIn(secure_popen('echo TEST'), ['TEST\n',
@@ -496,10 +534,10 @@ class TestGlances(unittest.TestCase):
# but not on my localLinux computer...
# self.assertEqual(secure_popen('echo FOO | grep FOO'), 'FOO\n')
- def test_200_memory_leak(self):
+ def test_800_memory_leak(self):
"""Memory leak check"""
import tracemalloc
- print('INFO: [TEST_200] Memory leak check')
+ print('INFO: [TEST_800] Memory leak check')
tracemalloc.start()
# 3 iterations just to init the stats and fill the memory
for _ in range(3):