コード例 #1
0
    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()
コード例 #2
0
ファイル: test_sockets.py プロジェクト: rowanworth/jacal
    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()