1
from landscape.lib.persist import Persist
2
from landscape.reactor import FakeReactor
3
from landscape.monitor.computerinfo import ComputerInfo
4
from landscape.monitor.loadaverage import LoadAverage
5
from landscape.monitor.deployment import MonitorService, MonitorConfiguration
6
from landscape.tests.helpers import (
7
LandscapeTest, LandscapeIsolatedTest, RemoteBrokerHelper)
8
from landscape.broker.tests.test_remote import assertTransmitterActive
9
from landscape.tests.test_plugin import assertReceivesMessages
12
class DeploymentTest(LandscapeTest):
14
def test_get_plugins(self):
15
configuration = MonitorConfiguration()
16
configuration.load(["--monitor-plugins", "ComputerInfo, LoadAverage",
17
"-d", self.make_path()])
18
monitor = MonitorService(configuration)
19
plugins = monitor.plugins
20
self.assertEquals(len(plugins), 2)
21
self.assertTrue(isinstance(plugins[0], ComputerInfo))
22
self.assertTrue(isinstance(plugins[1], LoadAverage))
24
def test_get_all_plugins(self):
25
configuration = MonitorConfiguration()
26
configuration.load(["--monitor-plugins", "ALL",
27
"-d", self.make_path()])
28
monitor = MonitorService(configuration)
29
plugins = monitor.plugins
30
self.assertEquals(len(plugins), 10)
33
class MonitorServiceTest(LandscapeIsolatedTest):
35
helpers = [RemoteBrokerHelper]
38
super(MonitorServiceTest, self).setUp()
39
configuration = MonitorConfiguration()
40
configuration.load(["-d", self.broker_service.config.data_path,
42
self.monitor = MonitorService(configuration)
43
self.monitor.reactor = FakeReactor()
44
self.monitor.startService()
47
super(MonitorServiceTest, self).tearDown()
48
self.monitor.stopService()
51
class DeploymentBusTest(MonitorServiceTest):
53
def test_dbus_reactor_transmitter_installed(self):
54
return assertTransmitterActive(self, self.broker_service,
57
def test_receives_messages(self):
58
return assertReceivesMessages(self, self.monitor.dbus_service,
59
self.broker_service, self.remote)
62
class MonitorTest(MonitorServiceTest):
64
def test_monitor_flushes_on_flush_event(self):
65
"""L{MonitorService.flush} saves the persist."""
66
self.monitor.registry.persist.set("a", 1)
67
self.monitor.registry.flush()
70
persist.load(self.monitor.registry.persist_filename)
71
self.assertEquals(persist.get("a"), 1)
73
def test_monitor_flushes_on_flush_interval(self):
75
The monitor is flushed every C{flush_interval} seconds, after
76
the monitor service is started.
78
self.monitor.registry.persist.set("a", 1)
79
self.monitor.reactor.advance(self.monitor.config.flush_interval)
82
persist.load(self.monitor.registry.persist_filename)
83
self.assertEquals(persist.get("a"), 1)
85
def test_monitor_flushes_on_service_stop(self):
86
"""The monitor is flushed when the service stops."""
87
self.monitor.registry.persist.set("a", 1)
88
self.monitor.stopService()
91
persist.load(self.monitor.registry.persist_filename)
92
self.assertEquals(persist.get("a"), 1)
94
def test_monitor_stops_flushing_after_service_stops(self):
95
"""The recurring flush event is cancelled when the service stops."""
96
self.monitor.stopService()
97
self.monitor.registry.persist.set("a", 1)
98
self.monitor.reactor.advance(self.monitor.config.flush_interval)
101
persist.load(self.monitor.registry.persist_filename)
102
self.assertEquals(persist.get("a"), None)