Fixes https://github.com/redhat-performance/tuned/issues/241 Fedora is removing the unittest2 package: https://bugzilla.redhat.com/show_bug.cgi?id=1794222 tuned is not targeting Python 2.6: https://github.com/redhat-performance/tuned/issues/241#issuecomment-588320175 One thing not present in Python 2.7 is assertItemsEqual() -- renamed to assertCountEqual(). Related, mock was also listed as a requirement in the spec file, but all the imports are from unittest.mock, hence removed.
98 lines
2.8 KiB
Python
98 lines
2.8 KiB
Python
import unittest
|
|
import tuned.monitors.base
|
|
|
|
class MockMonitor(tuned.monitors.base.Monitor):
|
|
@classmethod
|
|
def _init_available_devices(cls):
|
|
cls._available_devices = set(["a", "b"])
|
|
|
|
@classmethod
|
|
def update(cls):
|
|
for device in ["a", "b"]:
|
|
cls._load.setdefault(device, 0)
|
|
cls._load[device] += 1
|
|
|
|
class MonitorBaseClassTestCase(unittest.TestCase):
|
|
def test_fail_base_class_init(self):
|
|
with self.assertRaises(NotImplementedError):
|
|
tuned.monitors.base.Monitor()
|
|
|
|
def test_update_fail_with_base_class(self):
|
|
with self.assertRaises(NotImplementedError):
|
|
tuned.monitors.base.Monitor.update()
|
|
|
|
def test_available_devices(self):
|
|
monitor = MockMonitor()
|
|
devices = MockMonitor.get_available_devices()
|
|
self.assertEqual(devices, set(["a", "b"]))
|
|
monitor.cleanup()
|
|
|
|
def test_registering_instances(self):
|
|
monitor = MockMonitor()
|
|
self.assertIn(monitor, MockMonitor.instances())
|
|
monitor.cleanup()
|
|
self.assertNotIn(monitor, MockMonitor.instances())
|
|
|
|
def test_init_with_devices(self):
|
|
monitor = MockMonitor()
|
|
self.assertSetEqual(set(["a", "b"]), monitor.devices)
|
|
monitor.cleanup()
|
|
|
|
monitor = MockMonitor(["a"])
|
|
self.assertSetEqual(set(["a"]), monitor.devices)
|
|
monitor.cleanup()
|
|
|
|
monitor = MockMonitor([])
|
|
self.assertSetEqual(set(), monitor.devices)
|
|
monitor.cleanup()
|
|
|
|
monitor = MockMonitor(["b", "x"])
|
|
self.assertSetEqual(set(["b"]), monitor.devices)
|
|
monitor.cleanup()
|
|
|
|
def test_add_device(self):
|
|
monitor = MockMonitor(["a"])
|
|
self.assertSetEqual(set(["a"]), monitor.devices)
|
|
monitor.add_device("x")
|
|
self.assertSetEqual(set(["a"]), monitor.devices)
|
|
monitor.add_device("b")
|
|
self.assertSetEqual(set(["a", "b"]), monitor.devices)
|
|
monitor.cleanup()
|
|
|
|
def test_remove_device(self):
|
|
monitor = MockMonitor()
|
|
self.assertSetEqual(set(["a", "b"]), monitor.devices)
|
|
monitor.remove_device("a")
|
|
self.assertSetEqual(set(["b"]), monitor.devices)
|
|
monitor.remove_device("x")
|
|
self.assertSetEqual(set(["b"]), monitor.devices)
|
|
monitor.remove_device("b")
|
|
self.assertSetEqual(set(), monitor.devices)
|
|
monitor.cleanup()
|
|
|
|
def test_get_load_from_enabled(self):
|
|
monitor = MockMonitor()
|
|
load = monitor.get_load()
|
|
self.assertIn("a", load)
|
|
self.assertIn("b", load)
|
|
|
|
monitor.remove_device("a")
|
|
load = monitor.get_load()
|
|
self.assertNotIn("a", load)
|
|
self.assertIn("b", load)
|
|
|
|
monitor.remove_device("b")
|
|
load = monitor.get_load()
|
|
self.assertDictEqual({}, load)
|
|
|
|
monitor.cleanup()
|
|
|
|
def test_refresh_of_updating_devices(self):
|
|
monitor1 = MockMonitor(["a"])
|
|
self.assertSetEqual(set(["a"]), MockMonitor._updating_devices)
|
|
monitor2 = MockMonitor(["a", "b"])
|
|
self.assertSetEqual(set(["a", "b"]), MockMonitor._updating_devices)
|
|
monitor1.cleanup()
|
|
self.assertSetEqual(set(["a", "b"]), MockMonitor._updating_devices)
|
|
monitor2.cleanup()
|
|
self.assertSetEqual(set(), MockMonitor._updating_devices)
|