def test_DeadProcess(self): from roslaunch.pmon import Process, DeadProcess # test constructor params respawn = False package = 'foo-%s' % time.time() name = 'name-%s' % time.time() args = [time.time(), time.time(), time.time()] env = {'key': time.time(), 'key2': time.time()} p = Process(package, name, args, env) self._test_DeadProcess(p, package, name, args, env, False) p = Process(package, name, args, env, True) self._test_DeadProcess(p, package, name, args, env, True) p = Process(package, name, args, env, False) self._test_DeadProcess(p, package, name, args, env, False)
def test_registration(self): from roslaunch.core import RLException from roslaunch.pmon import Process pmon = self.pmon p1 = Process('foo', 'name1', [], {}) p2 = Process('bar', 'name2', [], {}) corep1 = Process('core', 'core1', [], {}) corep2 = Process('core', 'core2', [], {}) pmon.register(p1) self.assert_(pmon.has_process('name1')) self.assertEquals(p1, pmon.get_process('name1')) self.failIf(pmon.has_process('name2')) self.assertEquals(['name1'], pmon.get_active_names()) try: pmon.register(Process('foo', p1.name, [], {})) self.fail("should not allow duplicate process name") except RLException: pass pmon.register(p2) self.assert_(pmon.has_process('name2')) self.assertEquals(p2, pmon.get_process('name2')) self.assertEquals(set(['name1', 'name2']), set(pmon.get_active_names())) pmon.register_core_proc(corep1) self.assert_(pmon.has_process('core1')) self.assertEquals(corep1, pmon.get_process('core1')) self.assertEquals(set(['name1', 'name2', 'core1']), set(pmon.get_active_names())) pmon.register_core_proc(corep2) self.assert_(pmon.has_process('core2')) self.assertEquals(corep2, pmon.get_process('core2')) self.assertEquals(set(['name1', 'name2', 'core1', 'core2']), set(pmon.get_active_names())) pmon.unregister(p2) self.failIf(pmon.has_process('name2')) pmon.unregister(p1) self.failIf(pmon.has_process('name1')) pmon.unregister(corep1) self.failIf(pmon.has_process('core1')) pmon.unregister(corep2) self.failIf(pmon.has_process('core2')) pmon.shutdown() try: pmon.register(Process('shutdown_fail', 'shutdown_fail', [], {})) self.fail("registration should fail post-shutdown") except RLException: pass