def __init__(self, client_id=None, config=None, loop=None): self.logger = logging.getLogger(__name__) self.config = copy.deepcopy(_defaults) if config is not None: self.config.update(config) if client_id is not None: self.client_id = client_id else: from hbmqtt.utils import gen_client_id self.client_id = gen_client_id() self.logger.debug("Using generated client ID : %s" % self.client_id) if loop is not None: self._loop = loop else: self._loop = asyncio.get_event_loop() self.session = None self._handler = None self._disconnect_task = None self._connected_state = asyncio.Event(loop=self._loop) self._no_more_connections = asyncio.Event(loop=self._loop) self.extra_headers = {} # Init plugins manager context = ClientContext() context.config = self.config self.plugins_manager = PluginManager("hbmqtt.client.plugins", context, loop=self._loop) self.client_tasks = deque()
def __init__(self, config=None, loop=None, plugin_namespace=None): self.logger = logging.getLogger(__name__) self.config = _defaults if config is not None: self.config.update(config) self._build_listeners_config(self.config) if loop is not None: self._loop = loop else: self._loop = asyncio.get_event_loop() self._servers = dict() self._init_states() self._sessions = dict() self._subscriptions = dict() self._retained_messages = dict() self._broadcast_queue = asyncio.Queue(loop=self._loop) self._broadcast_task = None # Init plugins manager context = BrokerContext(self) context.config = self.config if plugin_namespace: namespace = plugin_namespace else: namespace = 'hbmqtt.broker.plugins' self.plugins_manager = PluginManager(namespace, context, self._loop)
async def coro(): async with anyio.create_task_group() as tg: manager = PluginManager(tg, "hbmqtt.test.plugins", context=None) ret = await call_coro(manager) self.assertTrue(len(ret) == 0)
def __init__(self, tg: anyio.abc.TaskGroup, client_id=None, config=None): self.logger = logging.getLogger(__name__) self.config = copy.deepcopy(_defaults) if config is not None: self.config.update(config) if client_id is not None: self.client_id = client_id else: from hbmqtt.utils import gen_client_id self.client_id = gen_client_id() self.logger.debug("Using generated client ID : %s", self.client_id) self.session = None self._tg = tg self._handler = None self._disconnect_task = None self._connected_state = anyio.create_event() self._no_more_connections = anyio.create_event() self.extra_headers = {} # Init plugins manager context = ClientContext() context.config = self.config self.plugins_manager = PluginManager(tg, 'hbmqtt.client.plugins', context) self.client_tasks = set()
async def coro(): async with anyio.create_task_group() as tg: manager = PluginManager(tg, "hbmqtt.test.plugins", context=None) ret = await call_coro(manager) plugin = manager.get_plugin("event_plugin") self.assertEqual(ret[plugin], "TEST")
async def coro(): async with anyio.create_task_group() as tg: manager = PluginManager(tg, "hbmqtt.test.plugins", context=None) await call_coro(manager) plugin = manager.get_plugin("event_plugin") self.assertTrue(plugin.object.test_coro)
def test_map_coro_return(self): async def call_coro(): return await manager.map_plugin_coro("ret_coro") manager = PluginManager("hbmqtt.test.plugins", context=None, loop=self.loop) ret = self.loop.run_until_complete(call_coro()) plugin = manager.get_plugin("event_plugin") self.assertEqual(ret[plugin], "TEST")
def test_map_coro(self): async def call_coro(): await manager.map_plugin_coro("test_coro") manager = PluginManager("hbmqtt.test.plugins", context=None, loop=self.loop) self.loop.run_until_complete(call_coro()) plugin = manager.get_plugin("event_plugin") assert plugin.object.test_coro
def test_fire_event_wait(self): async def fire_event(): await manager.fire_event("test", wait=True) await manager.close() manager = PluginManager("hbmqtt.test.plugins", context=None, loop=self.loop) self.loop.run_until_complete(fire_event()) plugin = manager.get_plugin("event_plugin") assert plugin.object.test_flag
def test_map_coro_return(self): @asyncio.coroutine def call_coro(): return (yield from manager.map_plugin_coro('ret_coro')) manager = PluginManager("hbmqtt.test.plugins", context=None, loop=self.loop) ret = self.loop.run_until_complete(call_coro()) plugin = manager.get_plugin("event_plugin") self.assertEqual(ret[plugin], "TEST")
def test_map_coro(self): @asyncio.coroutine def call_coro(): yield from manager.map_plugin_coro('test_coro') manager = PluginManager("hbmqtt.test.plugins", context=None, loop=self.loop) self.loop.run_until_complete(call_coro()) plugin = manager.get_plugin("event_plugin") self.assertTrue(plugin.object.test_coro)
def test_fire_event_wait(self): @asyncio.coroutine def fire_event(): yield from manager.fire_event("test", wait=True) yield from manager.close() manager = PluginManager("hbmqtt.test.plugins", context=None, loop=self.loop) self.loop.run_until_complete(fire_event()) plugin = manager.get_plugin("event_plugin") self.assertTrue(plugin.object.test_flag)
def test_map_coro_filter(self): """ Run plugin coro but expect no return as an empty filter is given :return: """ async def call_coro(): return await manager.map_plugin_coro("ret_coro", filter_plugins=[]) manager = PluginManager("hbmqtt.test.plugins", context=None, loop=self.loop) ret = self.loop.run_until_complete(call_coro()) assert len(ret) == 0
def test_map_coro_filter(self): """ Run plugin coro but expect no return as an empty filter is given :return: """ @asyncio.coroutine def call_coro(): return (yield from manager.map_plugin_coro('ret_coro', filter_plugins=[])) manager = PluginManager("hbmqtt.test.plugins", context=None, loop=self.loop) ret = self.loop.run_until_complete(call_coro()) self.assertTrue(len(ret) == 0)
async def runner(): async with anyio.create_task_group() as tg: self.plugin_manager = PluginManager(tg, "hbmqtt.test.plugins", context=None) async with await anyio.create_tcp_server( port=8888, interface="127.0.0.1") as server: await tg.spawn(self.listen_, server_mock, server) async with await anyio.connect_tcp("127.0.0.1", server.port) as conn: sr = adapt(conn) await test_coro(sr) anyio.run(runner)
async def coro(): async with anyio.create_task_group() as tg: manager = PluginManager(tg, "hbmqtt.test.plugins", context=None) self.assertTrue(len(manager._plugins) > 0)
def setUp(self): self.loop = asyncio.new_event_loop() asyncio.set_event_loop(self.loop) self.plugin_manager = PluginManager("hbmqtt.test.plugins", context=None, loop=self.loop)
def test_load_plugin(self): manager = PluginManager("hbmqtt.test.plugins", context=None) self.assertTrue(len(manager._plugins) > 0)