コード例 #1
0
    def __enter__(self):
        """Start of a context where all the bus' transports have been replaced with mocks"""

        # Mutable structures which we will use this to get the mocked data into
        # the transports

        # RPC
        mock_responses = {}
        # Events
        mock_events = set()

        # Create our transport classes, into which we inject our mutable structures
        TestRpcTransport = make_test_rpc_transport()
        TestResultTransport = make_test_result_transport(mock_responses)
        TestEventTransport = make_test_event_transport(mock_events)
        TestSchemaTransport = make_test_schema_transport()

        new_registry = TransportRegistry()
        new_registry.set_schema_transport(TestSchemaTransport,
                                          TestSchemaTransport.Config(),
                                          self.bus.client.config)

        self.old_transport_registry = self.bus.client.transport_registry

        for api_name, entry in self.old_transport_registry._registry.items():
            new_registry.set_rpc_transport(api_name, TestRpcTransport,
                                           TestRpcTransport.Config(),
                                           self.bus.client.config)
            new_registry.set_result_transport(
                api_name,
                TestResultTransport,
                TestResultTransport.Config(
                    require_mocking=self.require_mocking),
                self.bus.client.config,
            )
            new_registry.set_event_transport(
                api_name,
                TestEventTransport,
                TestEventTransport.Config(
                    require_mocking=self.require_mocking),
                self.bus.client.config,
            )

        # The docs are only available on the bus client during testing
        self.bus.client.event_dock.transport_registry = new_registry
        self.bus.client.rpc_result_dock.transport_registry = new_registry

        queue_mocker = BusQueueMockerContext(client=self.bus.client)
        bus_with_mocked_queues = queue_mocker.__enter__()
        self.stack.append(queue_mocker)
        return MockResult(bus_with_mocked_queues,
                          mock_responses=mock_responses,
                          mock_events=mock_events)
コード例 #2
0
def test_get_all_transports(redis_default_config):
    registry = TransportRegistry().load_config(redis_default_config)

    # Is equal to the default transport, so will not be included
    # in the get_all_transports() return value
    registry.set_event_transport("another", RedisEventTransport,
                                 RedisEventTransport.Config(),
                                 Config.default())
    registry.set_event_transport("foo", DebugEventTransport,
                                 DebugEventTransport.Config(),
                                 Config.default())

    # redis rpc + redis result + redis event + foo debug transport (above) = 4
    assert len(registry.get_all_transports()) == 4
コード例 #3
0
def test_transport_registry_get_event_transports(redis_default_config):
    registry = TransportRegistry().load_config(redis_default_config)

    # See comment in test_transport_registry_get_rpc_transports
    registry.set_event_transport("redis1", RedisEventTransport,
                                 RedisEventTransport.Config(batch_size=99),
                                 Config.default())
    registry.set_event_transport("redis2", RedisEventTransport,
                                 RedisEventTransport.Config(batch_size=99),
                                 Config.default())
    registry.set_event_transport("debug1", DebugEventTransport,
                                 DebugEventTransport.Config(),
                                 Config.default())
    registry.set_event_transport("debug2", DebugEventTransport,
                                 DebugEventTransport.Config(),
                                 Config.default())

    transports = registry.get_event_transports(
        ["default", "foo", "bar", "redis1", "redis2", "debug1", "debug2"])

    default_transport = registry.get_event_transport("default")
    redis_transport = registry.get_event_transport("redis1")
    debug_transport = registry.get_event_transport("debug1")

    assert set(transports[default_transport]) == {"default", "foo", "bar"}
    assert set(transports[debug_transport]) == {"debug1", "debug2"}
    assert set(transports[redis_transport]) == {"redis1", "redis2"}