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)
def __init__(self, configFile): if not os.path.isfile(configFile): print 'Config file: %s does not exist' % configFile exit(2) # read config file self.config = ConfigParser.RawConfigParser() self.config.read(configFile) self.configMode = self.config.get('Global', 'operation_mode') # init message bus, logger and modules self.messageBus = MessageBus() self.logger = IDSLogger(self.config, self.messageBus) self.registerModules()
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")
def setUp(self): self.bus = MessageBus() self.bus._thread_constructor = dummy_threading.Thread
logging.basicConfig(level=logging.DEBUG, format='%(levelname)-5s %(asctime)s %(filename)s:%(lineno)d: %(message)s') parser = argparse.ArgumentParser(description='Read sensor readings and pass them to the messagebus.') parser.add_argument('--mqtt-host', action="store", default=DEFAULT_MQTT_HOST, help='MQTT host to connect to') parser.add_argument('--mqtt-port', action="store", default=DEFAULT_MQTT_PORT, help='MQTT port to connect to') parser.add_argument('-c', '--config', action="store", default=CONFIG_ROOT, help='Path to configuration') args = parser.parse_args() logging.debug(args) # Initialize the message store message_store = MemoryMessageStore() # Load and populate DeviceMetadataService from the config/devices # directory. In the future, this path should be configurable devices = DeviceRegistry() devices.load_from_path(args.config + "/devices") # Initialize the message bus message_bus = MessageBus(args.mqtt_host, args.mqtt_port) # Create context object and call init scripts context = {} context["messagebus"] = message_bus context["device_registry"] = devices context["message_store"] = message_store load_init_scripts(args.config + "/init_scripts", context) message_bus.connect()