Exemplo n.º 1
0
    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()
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
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()
Exemplo n.º 5
0
 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")
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
    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")
Exemplo n.º 8
0
    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
Exemplo n.º 9
0
    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
Exemplo n.º 10
0
    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")
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
    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)
Exemplo n.º 13
0
    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
Exemplo n.º 14
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)
Exemplo n.º 15
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)
Exemplo n.º 16
0
 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)
Exemplo n.º 17
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)
Exemplo n.º 18
0
 def test_load_plugin(self):
     manager = PluginManager("hbmqtt.test.plugins", context=None)
     self.assertTrue(len(manager._plugins) > 0)