47
43
conf.AGENT.check_child_processes = True
48
44
self.pmonitor = external_process.ProcessMonitor(
51
46
resource_type='test')
53
def get_monitored_process_manager(self, uuid, service=None):
54
self.pmonitor.enable(uuid=uuid, service=service, cmd_callback=None)
55
return self.pmonitor.get_process_manager(uuid, service)
48
def get_monitored_process(self, uuid, service=None):
49
monitored_process = mock.Mock()
50
self.pmonitor.register(uuid=uuid,
52
monitored_process=monitored_process)
53
return monitored_process
58
56
class TestProcessMonitor(BaseTestProcessMonitor):
60
58
def test_error_logged(self):
61
pm = self.get_monitored_process_manager(TEST_UUID)
59
pm = self.get_monitored_process(TEST_UUID)
63
61
self.pmonitor._check_child_processes()
64
62
self.assertTrue(self.error_log.called)
66
64
def test_exit_handler(self):
67
65
self.create_child_process_monitor('exit')
68
pm = self.get_monitored_process_manager(TEST_UUID)
66
pm = self.get_monitored_process(TEST_UUID)
70
68
with mock.patch.object(external_process.ProcessMonitor,
71
69
'_exit_handler') as exit_handler:
72
70
self.pmonitor._check_child_processes()
73
71
exit_handler.assert_called_once_with(TEST_UUID, None)
75
def test_different_service_types(self):
76
pm_none = self.get_monitored_process_manager(TEST_UUID)
77
pm_svc1 = self.get_monitored_process_manager(TEST_UUID, TEST_SERVICE1)
78
self.assertNotEqual(pm_none, pm_svc1)
80
def test_active_method(self, service=None):
81
pm = self.get_monitored_process_manager(TEST_UUID, service)
83
self.assertFalse(self.pmonitor.is_active(TEST_UUID, service))
85
self.assertTrue(self.pmonitor.is_active(TEST_UUID, service))
87
def test_active_method_with_service(self):
88
self.test_active_method(TEST_SERVICE1)
90
def test_pid_method(self, service=None):
91
pm = self.get_monitored_process_manager(TEST_UUID, service)
93
self.assertEqual(TEST_PID, self.pmonitor.get_pid(TEST_UUID, service))
95
def test_pid_method_with_service(self):
96
self.test_pid_method(TEST_PID)
73
def test_register(self):
74
pm = self.get_monitored_process(TEST_UUID)
75
self.assertEqual(len(self.pmonitor._monitored_processes), 1)
76
self.assertIn(pm, self.pmonitor._monitored_processes.values())
78
def test_register_same_service_twice(self):
79
self.get_monitored_process(TEST_UUID)
80
self.get_monitored_process(TEST_UUID)
81
self.assertEqual(len(self.pmonitor._monitored_processes), 1)
83
def test_register_different_service_types(self):
84
self.get_monitored_process(TEST_UUID)
85
self.get_monitored_process(TEST_UUID, TEST_SERVICE)
86
self.assertEqual(len(self.pmonitor._monitored_processes), 2)
88
def test_unregister(self):
89
self.get_monitored_process(TEST_UUID)
90
self.pmonitor.unregister(TEST_UUID, None)
91
self.assertEqual(len(self.pmonitor._monitored_processes), 0)
93
def test_unregister_unknown_process(self):
94
self.pmonitor.unregister(TEST_UUID, None)
95
self.assertEqual(len(self.pmonitor._monitored_processes), 0)