def daemon_node(): if is_daemon_running(args=[]): with DaemonNode(args=[]) as node: node.system.shutdown() assert spawn_daemon(args=[], wait_until_spawned=5.0) with DaemonNode(args=[]) as node: yield node
def __init__(self, args): use_daemon = not getattr(args, 'no_daemon', False) if use_daemon and is_daemon_running(args): self._daemon_node = DaemonNode(args) self._direct_node = None else: if use_daemon: spawn_daemon(args) self._direct_node = DirectNode(args) self._daemon_node = None self._args = args self._in_scope = False
def __init__(self, args): use_daemon = not getattr(args, 'no_daemon', False) if use_daemon and is_daemon_running(args): self.node = DaemonNode(args) else: if use_daemon: spawn_daemon(args) self.node = DirectNode(args)
class NodeStrategy: def __init__(self, args): use_daemon = not getattr(args, 'no_daemon', False) if use_daemon and is_daemon_running(args): self._daemon_node = DaemonNode(args) self._direct_node = None else: if use_daemon: spawn_daemon(args) self._direct_node = DirectNode(args) self._daemon_node = None self._args = args self._in_scope = False @property def daemon_node(self): return self._daemon_node @property def direct_node(self): if self._direct_node is None: self._direct_node = DirectNode(self._args) if self._in_scope: self._direct_node.__enter__() return self._direct_node def __enter__(self): if self._daemon_node: self._daemon_node.__enter__() if self._direct_node: self._direct_node.__enter__() self._in_scope = True return self def __getattr__(self, name): if self.daemon_node and name in self.daemon_node.methods: return getattr(self.daemon_node, name) return getattr(self.direct_node, name) def __exit__(self, exc_type, exc_value, traceback): self._in_scope = False if self._direct_node: self._direct_node.__exit__(exc_type, exc_value, traceback) if self._daemon_node: self._daemon_node.__exit__(exc_type, exc_value, traceback)
def daemon_node(): if is_daemon_running(args=[]): with DaemonNode(args=[]) as node: node.system.shutdown() assert spawn_daemon(args=[], wait_until_spawned=5.0) with DaemonNode(args=[]) as node: attempts = 3 delay_between_attempts = 2 # seconds for _ in range(attempts): node_names_and_namespaces = node.get_node_names_and_namespaces() if [TEST_NODE_NAME, TEST_NODE_NAMESPACE] in node_names_and_namespaces: break time.sleep(delay_between_attempts) else: pytest.fail( f'daemon failed to discover {TEST_NODE_NAMESPACE}/{TEST_NODE_NAME}' ) yield node node.system.shutdown()
def main(self, *, args): running = is_daemon_running(args) if not running: print('The daemon is not running') return with DaemonNode(args) as daemon: try: shutdown = daemon.system.shutdown except AttributeError: return 'Failed to shutdown daemon, ' \ 'it might be using a different rmw implementation' shutdown() print('The daemon has been stopped')
def enforce_no_daemon_is_running(): if is_daemon_running(args=[]): with DaemonNode(args=[]) as node: node.system.shutdown() yield
def __init__(self, args): if is_daemon_running(args): self.node = DaemonNode(args) else: spawn_daemon(args) self.node = DirectNode(args)