Beispiel #1
0
class TestMessageBus(unittest.TestCase):

    def setUp(self):
        self.bus = MessageBus()
        self.bus._thread_constructor = dummy_threading.Thread

    def test_subscribe(self):
        pass

    def test_send_message_calls_subscriber_when_filter_matches(self):

        listener = MockMessageHandler()
        message_filter = MockMessageFilter(True)
        self.bus.subscribe(listener, message_filter)

        message = Message(type="foo", source="bar")
        self.bus.send_message(message)

        self.assertEquals(message, message_filter.message)
        self.assertEquals(message, listener.message)

    def test_send_message_does_not_call_subscriber_when_filter_does_not_match(self):

        listener = MockMessageHandler()
        message_filter = MockMessageFilter(False)
        self.bus.subscribe(listener, message_filter)

        message = Message(type="foo", source="bar")
        self.bus.send_message(message)

        self.assertEquals(message, message_filter.message)
        self.assertIsNone(listener.message)
Beispiel #2
0
import logging

from messagebus import Message
from messagebus import PatternMessageFilter
from messagebus import FunctionMessageHandler
from messagebus import MessageBus


def handle(message):
    logging.info("Handled {}".format(message))

if __name__ == "__main__":

    logging.basicConfig(level=logging.DEBUG)

    bus = MessageBus()

    listener = FunctionMessageHandler(handle)

    bus.subscribe(listener, PatternMessageFilter("foo", "bar"))

    message = Message(type="foo", source="bar", timestamp=1000, data={"a":"b"})
    bus.send_message(message)

    logging.info("Done")