def test(self): messager = Messager() for messaging_system in [ QueueMessagingSystem(), AsciiFileMessagingSystem(), BlockingQueueMessagingSystem(100) ]: logging.info("Testing class {}...".format( messaging_system.__class__.__name__)) stream_a = messager.get_stream(messaging_system, "topic a", StringMessage) stream_b = messager.get_stream(messaging_system, "topic b", StringMessage) out_message_a1 = StringMessage("a1") out_message_b1 = StringMessage("b1") out_message_a2 = StringMessage("a2") out_message_b2 = StringMessage("b2") out_endpoint_a = stream_a.get_endpoint() out_endpoint_b = stream_b.get_endpoint() in_endpoint_a = stream_a.get_endpoint() in_endpoint_b = stream_b.get_endpoint() messager.publish(out_endpoint_a, out_message_a1) messager.publish(out_endpoint_b, out_message_b1) messager.publish(out_endpoint_a, out_message_a2) messager.publish(out_endpoint_b, out_message_b2) in_message_a1 = None while in_message_a1 is None: time.sleep(1) in_message_a1 = messager.poll(in_endpoint_a) assert in_message_a1.get_payload() == out_message_a1.get_payload() in_message_b1 = None while in_message_b1 is None: time.sleep(1) in_message_b1 = messager.poll(in_endpoint_b) assert in_message_b1.get_payload() == out_message_b1.get_payload() in_message_a2 = None while in_message_a2 is None: time.sleep(1) in_message_a2 = messager.poll(in_endpoint_a) assert in_message_a2.get_payload() == out_message_a2.get_payload() in_message_b2 = None while in_message_b2 is None: time.sleep(1) in_message_b2 = messager.poll(in_endpoint_b) assert in_message_b2.get_payload() == out_message_b2.get_payload()
def test(self): messaging_system = QueueMessagingSystem() messager = Messager() configuration_stream = messager.get_stream(messaging_system, "configuration", ConfigurationMessage) control_stream = messager.get_stream(messaging_system, "control", StringMessage) input_stream = messager.get_stream(messaging_system, "input", StringMessage) output_stream = messager.get_stream(messaging_system, "output", StringMessage) service_runner_factory = ServiceRunnerFactory(messager) socket_writer_service_runner = service_runner_factory.get_service_runner( SocketWriterService, { "name": "socket_writer_service", "input_endpoint": input_stream.get_read_endpoint(), "control_endpoint": control_stream.get_read_endpoint(), "input_class": StringMessage }, configuration_stream=configuration_stream) socket_reader_service_runner = service_runner_factory.get_service_runner( SocketReaderService, { "name": "socket_reader_service", "output_endpoint": output_stream.get_write_endpoint(), "control_endpoint": control_stream.get_read_endpoint(), "output_class": StringMessage }, configuration_stream=configuration_stream) # start them, wait ten seconds, stop them logging.info("starting services") socket_writer_service_runner.start() socket_reader_service_runner.start() time.sleep(5) logging.info("Publishing ConfigurationMessage") mainline_configuration_endpoint = configuration_stream.get_write_endpoint( ) configuration_message = ConfigurationMessage({ "socket_writer_service": { "host": "localhost", "port": "10001" }, "socket_reader_service": { "host": "localhost", "port": "10001" } }) messager.publish(mainline_configuration_endpoint, configuration_message) time.sleep(5) logging.info("Publishing 'Start' control message") mainline_control_endpoint = control_stream.get_write_endpoint() messager.publish(mainline_control_endpoint, StringMessage("Start")) time.sleep(5) mainline_input_endpoint = input_stream.get_write_endpoint() mainline_output_endpoint = output_stream.get_read_endpoint() logging.info("Publishing messagse to socket writer...") messager.publish(mainline_input_endpoint, StringMessage("Message 1")) messager.publish(mainline_input_endpoint, StringMessage("Message 2")) messager.publish(mainline_input_endpoint, StringMessage("Message 3")) messager.publish(mainline_input_endpoint, StringMessage("Message 4")) messager.publish(mainline_input_endpoint, StringMessage("Message 5")) messager.publish(mainline_input_endpoint, StringMessage("Message 6")) messager.publish(mainline_input_endpoint, StringMessage("Message 7")) messager.publish(mainline_input_endpoint, StringMessage("Message 8")) messager.publish(mainline_input_endpoint, StringMessage("Message 9")) messager.publish(mainline_input_endpoint, StringMessage("Message 10")) time.sleep(5) logging.info("Checking for message at socket reader...") for i in range(20): message = messager.poll(mainline_output_endpoint) if message is None: logging.info("No message.") time.sleep(1) else: logging.info("Message is '{}'".format(message.get_payload())) logging.info("Publishing 'Stop' control message") messager.publish(mainline_control_endpoint, StringMessage("Stop")) time.sleep(5) logging.info("Stopping services") socket_writer_service_runner.terminate() socket_reader_service_runner.terminate()