示例#1
0
def mock_api_app_config():
    return AppConfig(
        app=AppDescriptor(
            name='mock-app-api',
            version='test'
        ),
        plugins=[AppDescriptor(
            name='mock-plugin', version='test'
        )],
        engine=AppEngineConfig(
            import_modules=['mock_app'],
            read_stream_timeout=1,
            read_stream_interval=5,
            track_headers=['session_id'],
            cors_origin='http://test'
        ),
        events={
            "mock-app-api-get": EventDescriptor(
                type=EventType.GET,
                auth=[AuthType.BASIC],
                route='mock-app-api/test/mock-app-api'
            ),
            "mock-app-api-post": EventDescriptor(
                type=EventType.POST,
                route='mock-app-api/test/mock-app-api'
            ),
            "mock-app-api-multipart": EventDescriptor(
                type=EventType.MULTIPART,
                route='mock-app-api/test/mock-app-api-multipart'
            ),
            "mock-app-api-get-list": EventDescriptor(
                type=EventType.GET,
                auth=[AuthType.REFRESH]
            ),
            "mock-app-api-query-args": EventDescriptor(
                type=EventType.GET,
                auth=[AuthType.REFRESH]
            ),
            "mock-app-noapi": EventDescriptor(
                type=EventType.GET
            ),
            "mock_file_response_content_type": EventDescriptor(
                type=EventType.GET
            ),
        },
        server=ServerConfig(
            logging=LoggingConfig(
                log_level="DEBUG", log_path="work/logs/test/"),
            auth=AuthConfig(
                secrets_location='/tmp',
                auth_passphrase='test',
                default_auth_methods=[AuthType.BEARER]
            ),
            api=APIConfig(
                docs_path='/api/docs'
            )
        )
    )
示例#2
0
def add_app_connections(nodes: Dict[str, Node], *,
                        app_connections: Dict[str, AppConnection],
                        events: Dict[str, EventDescriptor]):
    """
    Add to nodes map, input/output ports for app_connections in order to show call
    dependencies between events.
    """
    for event_name, event_info in events.items():
        app_key = '.'.join(event_name.split('.', maxsplit=2)[0:2])
        source_node = nodes[event_name]
        if source_node:
            for conn in event_info.connections:
                app_connection = app_connections[
                    f"{app_key}.{conn.app_connection}"]
                target_app_key = AppDescriptor(
                    name=app_connection.name,
                    version=app_connection.version).app_key()
                dest_node_name = f"{target_app_key}."
                if app_connection.plugin_name:
                    dest_node_name += auto_path(
                        app_connection.plugin_name,
                        app_connection.plugin_version
                        or app_connection.version) + '.'
                dest_node_name += f"{conn.event}.{conn.type.value}"
                dest_node = nodes.get(dest_node_name)
                if dest_node:
                    port = f"{event_name}.{app_connection.name}.{conn.event}.{conn.type.value}"
                    source_node.outputs.append(port)
                    dest_node.inputs.append(port)
示例#3
0
 def _get_route(self, event_name: str):
     """
     Builds the route to an event endpoint based on app + plugin configs.
     Overrides in case app_connection settins specifies so.
     """
     app_descriptor = AppDescriptor(name=self.app_connection.name,
                                    version=self.app_connection.version)
     plugin_descriptor = None
     if self.app_connection.plugin_name:
         plugin_descriptor = AppDescriptor(
             name=self.app_connection.plugin_name,
             version=self.app_connection.plugin_version
             or self.app_connection.version)
     return app_route_name(
         app_descriptor,
         event_name=event_name,
         plugin=plugin_descriptor,
         override_route_name=self.settings.routes_override.get(event_name))
示例#4
0
def mock_app_config():
    return AppConfig(
        app=AppDescriptor(name='test_app', version='test'),
        engine=AppEngineConfig(),
        env={},
        events={'test': EventDescriptor(type=EventType.GET)},
        server=ServerConfig(auth=AuthConfig(secrets_location='/tmp',
                                            auth_passphrase='test',
                                            create_keys=True)))
示例#5
0
def test_context() -> EventContext:
    app_config = AppConfig(
        app=AppDescriptor(name='test_steps', version='test_version'),
        events={'test_steps': EventDescriptor(type=EventType.POST)}
    )
    return EventContext(
        app_config=app_config,
        plugin_config=app_config,
        event_name='test_steps',
        track_ids={},
        auth_info={}
    )
示例#6
0
def test_context() -> EventContext:
    app_config = AppConfig(
        app=AppDescriptor(name='test_steps', version='test_version'),
        events={'test_steps': EventDescriptor(type=EventType.POST)}
    ).setup()
    return EventContext(
        app_config=app_config,
        plugin_config=app_config,
        event_name='test_steps',
        settings=get_event_settings(app_config.effective_settings, 'test_steps'),
        track_ids={},
        auth_info={}
    )
示例#7
0
def mock_plugin_config():
    return AppConfig(app=AppDescriptor(name='mock_plugin', version='test'),
                     env={
                         'plugin': {
                             'plugin_value': 'test_plugin_value',
                             'custom_value': 'test_custom_value'
                         }
                     },
                     events={
                         'plugin_event':
                         EventDescriptor(type=EventType.GET,
                                         plug_mode=EventPlugMode.ON_APP)
                     },
                     server=ServerConfig(logging=LoggingConfig(
                         log_level="DEBUG", log_path="work/logs/test/")))
示例#8
0
def mock_client_app_config():
    return AppConfig(
        app=AppDescriptor(name='mock_client_app', version='test'),
        engine=AppEngineConfig(import_modules=['mock_app'],
                               read_stream_timeout=1,
                               read_stream_interval=5),
        events={
            "mock_event":
            EventDescriptor(type=EventType.GET,
                            route='mock-client-app/test/mock-event-test')
        },
        server=ServerConfig(
            streams=StreamsConfig(
                stream_manager='mock_engine.MockStreamManager',
                delay_auto_start_seconds=0),
            logging=LoggingConfig(log_level="DEBUG",
                                  log_path="work/logs/test/"))).setup()
示例#9
0
def mock_client_app_config():
    return AppConfig(
        app=AppDescriptor(name='mock_client_app', version='test'),
        engine=AppEngineConfig(import_modules=['mock_client_app']),
        app_connections={
            "test_app_connection":
            AppConnection(name="test_app",
                          version=APPS_API_VERSION,
                          client="hopeit.apps_client.AppsClient"),
            "test_app_plugin_connection":
            AppConnection(name="test_app",
                          version=APPS_API_VERSION,
                          client="hopeit.apps_client.AppsClient",
                          plugin_name="test_plugin",
                          plugin_version=APPS_API_VERSION)
        },
        settings={
            "test_app_connection":
            Payload.to_obj(
                AppsClientSettings(
                    connection_str="http://test-host1,http://test-host2")),
            "test_app_plugin_connection":
            Payload.to_obj(
                AppsClientSettings(
                    connection_str="http://test-host1,http://test-host2",
                    auth_strategy=ClientAuthStrategy.FORWARD_CONTEXT))
        },
        events={
            "mock_client_event":
            EventDescriptor(
                type=EventType.GET,
                connections=[
                    EventConnection(app_connection="test_app_connection",
                                    event="test_event_get",
                                    type=EventConnectionType.GET),
                    EventConnection(app_connection="test_app_connection",
                                    event="test_event_post",
                                    type=EventConnectionType.POST),
                    EventConnection(
                        app_connection="test_app_plugin_connection",
                        event="test_event_plugin",
                        type=EventConnectionType.GET)
                ])
        },
        server=ServerConfig(logging=LoggingConfig(
            log_level="DEBUG", log_path="work/logs/test/"))).setup()
示例#10
0
def mock_client_app_config():
    return AppConfig(
        app=AppDescriptor(name='mock_client_app', version='test'),
        engine=AppEngineConfig(import_modules=['mock_client_app']),
        app_connections={
            "test_app_connection":
            AppConnection(name="test_app",
                          version=APPS_API_VERSION,
                          client="mock_client_app.MockClient")
        },
        events={
            "mock_client_event":
            EventDescriptor(type=EventType.GET,
                            connections=[
                                EventConnection(
                                    app_connection="test_app_connection",
                                    event="test_event",
                                    type=EventConnectionType.GET)
                            ])
        },
        server=ServerConfig(logging=LoggingConfig(
            log_level="DEBUG", log_path="work/logs/test/"))).setup()
def valid_result_app_config() -> AppConfig:
    return AppConfig(
        app=AppDescriptor(name="simple_example", version=APPS_API_VERSION),
        engine=AppEngineConfig(import_modules=["model"],
                               read_stream_timeout=1,
                               track_headers=["request_id", "correlation_id"]),
        env={
            "fs": {
                "data_path":
                f"/tmp/simple_example.{APP_VERSION}.fs.data_path/",
                "app_description":
                f"This is simple_example version {APPS_API_VERSION}",
                "recursive_replacement":
                f"Data is in /tmp/simple_example.{APP_VERSION}.fs.data_path/. "
                + f"This is simple_example version {APPS_API_VERSION}"
            }
        },
        events={
            "query_something":
            EventDescriptor(type=EventType.GET),
            "save_something":
            EventDescriptor(type=EventType.POST),
            "streams.something_event":
            EventDescriptor(
                type=EventType.POST,
                write_stream=WriteStreamDescriptor(
                    name=f'simple_example.{APP_VERSION}.streams.something_event'
                )),
            "streams.process_events":
            EventDescriptor(
                type=EventType.STREAM,
                read_stream=ReadStreamDescriptor(
                    name=
                    f'simple_example.{APP_VERSION}.streams.something_event',
                    consumer_group=
                    f'simple_example.{APP_VERSION}.streams.process_events'),
                config=EventConfig(logging=EventLoggingConfig(
                    extra_fields=['something_id', 'path'])))
        })
示例#12
0
def mock_app_config():
    return AppConfig(
        app=AppDescriptor(name='mock_app', version='test'),
        plugins=[AppDescriptor('mock_plugin', 'test')],
        engine=AppEngineConfig(import_modules=['mock_app'],
                               read_stream_timeout=1,
                               read_stream_interval=5,
                               track_headers=['session_id'],
                               cors_origin='http://test'),
        env={
            'app': {
                'app_value': 'test_app_value'
            },
            'plugin': {
                'custom_value': 'test_custom_value_override'
            }
        },
        settings={
            "mock_stream_event": {
                "logging": {
                    "extra_fields": ['value'],
                    "stream_fields": ['msg_id']
                },
                "custom_setting": {
                    "custom": "value"
                }
            },
            "mock_stream_timeout": {
                "logging": {
                    "extra_fields": ['value'],
                    "stream_fields": ['msg_id']
                },
                "stream": {
                    "timeout": 2
                }
            },
            "mock_write_stream_event": {
                "logging": {
                    "extra_fields": ['value'],
                    "stream_fields": ['msg_id']
                },
                "stream": {
                    "target_max_len": 10
                }
            },
            "mock_service_event": {
                "stream": {
                    "target_max_len": 10,
                    "throttle_ms": 100,
                    "batch_size": 2
                }
            },
            "mock_service_timeout": {
                "response_timeout": 2.0
            },
            "mock_spawn_event": {
                "stream": {
                    "target_max_len": 10,
                    "throttle_ms": 100,
                    "batch_size": 2
                }
            },
            "mock_shuffle_event": {
                "stream": {
                    "target_max_len": 10,
                    "throttle_ms": 100
                }
            },
            "mock_timeout": {
                "response_timeout": 2.0
            },
            "custom_extra_settings": {
                "custom_setting": {
                    "custom": "value"
                }
            }
        },
        events={
            "mock_event":
            EventDescriptor(type=EventType.GET,
                            route='mock-app/test/mock-event-test',
                            group='GROUP_A'),
            "mock_event_logging":
            EventDescriptor(type=EventType.GET, group='GROUP_A'),
            "mock_post_event":
            EventDescriptor(type=EventType.POST,
                            route='mock-app/test/mock-event-test',
                            group='GROUP_A'),
            "mock_multipart_event":
            EventDescriptor(type=EventType.MULTIPART,
                            route='mock-app/test/mock-multipart-event-test',
                            group='GROUP_B'),
            "mock_post_nopayload":
            EventDescriptor(type=EventType.POST,
                            route='mock-app/test/mock-post-nopayload'),
            "mock_post_preprocess":
            EventDescriptor(type=EventType.POST,
                            route='mock-app/test/mock-post-preprocess'),
            "mock_post_preprocess_no_datatype":
            EventDescriptor(
                type=EventType.POST,
                route='mock-app/test/mock-post-preprocess-no-datatype'),
            "mock_stream_event":
            EventDescriptor(type=EventType.STREAM,
                            read_stream=ReadStreamDescriptor(
                                name='mock_stream',
                                consumer_group='mock_consumer_group'),
                            setting_keys=["custom_extra_settings"],
                            group='GROUP_A'),
            "mock_stream_timeout":
            EventDescriptor(type=EventType.STREAM,
                            read_stream=ReadStreamDescriptor(
                                name='mock_stream',
                                consumer_group='mock_consumer_group'),
                            group='GROUP_B'),
            "mock_write_stream_event":
            EventDescriptor(type=EventType.GET,
                            write_stream=WriteStreamDescriptor(
                                name='mock_write_stream_event')),
            "mock_service_event":
            EventDescriptor(type=EventType.SERVICE,
                            write_stream=WriteStreamDescriptor(
                                name='mock_write_stream_event')),
            "mock_service_timeout":
            EventDescriptor(type=EventType.SERVICE,
                            write_stream=WriteStreamDescriptor(
                                name='mock_write_stream_event')),
            "mock_spawn_event":
            EventDescriptor(type=EventType.GET,
                            write_stream=WriteStreamDescriptor(
                                name='mock_write_stream_event')),
            "mock_shuffle_event":
            EventDescriptor(type=EventType.GET,
                            write_stream=WriteStreamDescriptor(
                                name='mock_write_stream_event')),
            "mock_parallelize_event":
            EventDescriptor(type=EventType.GET),
            "mock_file_response":
            EventDescriptor(type=EventType.GET),
            "mock_stream_response":
            EventDescriptor(type=EventType.GET),
            "mock_file_response_content_type":
            EventDescriptor(type=EventType.GET),
            "mock_auth":
            EventDescriptor(type=EventType.GET, auth=[AuthType.BASIC]),
            "mock_post_auth":
            EventDescriptor(type=EventType.POST, auth=[AuthType.BASIC]),
            "mock_collector":
            EventDescriptor(type=EventType.POST),
            'mock_timeout':
            EventDescriptor(type=EventType.GET),
            'mock_read_write_stream':
            EventDescriptor(type=EventType.STREAM,
                            read_stream=ReadStreamDescriptor(
                                name='mock_read_write_stream.read',
                                consumer_group='mock_read_write_stream'),
                            write_stream=WriteStreamDescriptor(
                                name='mock_read_write_stream.write')),
            "mock_event_custom":
            EventDescriptor(type=EventType.GET,
                            impl="mock_app.mock_event_custom_impl"),
            "mock_event_dataobject_payload":
            EventDescriptor(
                type=EventType.STREAM,
                read_stream=ReadStreamDescriptor(
                    name='mock_read_write_stream.read',
                    consumer_group='mock_event_dataobject_payload'),
                dataobjects=["mock_app.MockData"])
        },
        server=ServerConfig(
            streams=StreamsConfig(
                stream_manager='mock_engine.MockStreamManager',
                delay_auto_start_seconds=0),
            logging=LoggingConfig(log_level="DEBUG",
                                  log_path="work/logs/test/"))).setup()
示例#13
0
def mock_app_config():
    return AppConfig(
        app=AppDescriptor(
            name='mock_app',
            version='test'
        ),
        plugins=[
            AppDescriptor('mock_plugin', 'test')
        ],
        engine=AppEngineConfig(
            import_modules=['mock_app'],
            read_stream_timeout=1,
            read_stream_interval=5,
            track_headers=['session_id'],
            cors_origin='http://test'
        ),
        env={
            'app': {
                'app_value': 'test_app_value'
            },
            'plugin': {
                'custom_value': 'test_custom_value_override'
            }
        },
        events={
            "mock_event": EventDescriptor(
                type=EventType.GET,
                route='mock-app/test/mock-event-test'
            ),
            "mock_event_logging": EventDescriptor(
                type=EventType.GET
            ),
            "mock_post_event": EventDescriptor(
                type=EventType.POST,
                route='mock-app/test/mock-event-test'
            ),
            "mock_multipart_event": EventDescriptor(
                type=EventType.MULTIPART,
                route='mock-app/test/mock-multipart-event-test'
            ),
            "mock_post_nopayload": EventDescriptor(
                type=EventType.POST,
                route='mock-app/test/mock-post-nopayload'
            ),
            "mock_post_preprocess": EventDescriptor(
                type=EventType.POST,
                route='mock-app/test/mock-post-preprocess'
            ),
            "mock_stream_event": EventDescriptor(
                type=EventType.STREAM,
                read_stream=ReadStreamDescriptor(
                    name='mock_stream',
                    consumer_group='mock_consumer_group'
                ),
                config=EventConfig(
                    logging=EventLoggingConfig(
                        extra_fields=['value'],
                        stream_fields=['msg_id']
                    )
                )
            ),
            "mock_stream_timeout": EventDescriptor(
                type=EventType.STREAM,
                read_stream=ReadStreamDescriptor(
                    name='mock_stream',
                    consumer_group='mock_consumer_group'
                ),
                config=EventConfig(
                    logging=EventLoggingConfig(
                        extra_fields=['value'],
                        stream_fields=['msg_id']
                    ),
                    stream=EventStreamConfig(
                        timeout=2
                    )
                )
            ),
            "mock_write_stream_event": EventDescriptor(
                type=EventType.GET,
                write_stream=WriteStreamDescriptor(
                    name='mock_write_stream_event'
                ),
                config=EventConfig(
                    stream=EventStreamConfig(
                        target_max_len=10
                    )
                )
            ),
            "mock_service_event": EventDescriptor(
                type=EventType.SERVICE,
                write_stream=WriteStreamDescriptor(
                    name='mock_write_stream_event'
                ),
                config=EventConfig(
                    stream=EventStreamConfig(
                        target_max_len=10,
                        throttle_ms=100,
                        batch_size=2
                    )
                )
            ),
            "mock_service_timeout": EventDescriptor(
                type=EventType.SERVICE,
                write_stream=WriteStreamDescriptor(
                    name='mock_write_stream_event'
                ),
                config=EventConfig(
                    response_timeout=2.0
                )
            ),
            "mock_spawn_event": EventDescriptor(
                type=EventType.GET,
                write_stream=WriteStreamDescriptor(
                    name='mock_write_stream_event'
                ),
                config=EventConfig(
                    stream=EventStreamConfig(
                        target_max_len=10,
                        throttle_ms=100,
                        batch_size=2
                    )
                )
            ),
            "mock_shuffle_event": EventDescriptor(
                type=EventType.GET,
                write_stream=WriteStreamDescriptor(
                    name='mock_write_stream_event'
                ),
                config=EventConfig(
                    stream=EventStreamConfig(
                        target_max_len=10,
                        throttle_ms=100
                    )
                )
            ),
            "mock_parallelize_event": EventDescriptor(
                type=EventType.GET
            ),
            "mock_file_response": EventDescriptor(
                type=EventType.GET
            ),
            "mock_file_response_content_type": EventDescriptor(
                type=EventType.GET
            ),
            "mock_auth": EventDescriptor(
                type=EventType.GET,
                auth=[AuthType.BASIC]
            ),
            "mock_post_auth": EventDescriptor(
                type=EventType.POST,
                auth=[AuthType.BASIC]
            ),
            "mock_collector": EventDescriptor(
                type=EventType.POST
            ),
            'mock_timeout': EventDescriptor(
                type=EventType.GET,
                config=EventConfig(response_timeout=2.0)
            ),
            'mock_read_write_stream': EventDescriptor(
                type=EventType.STREAM,
                read_stream=ReadStreamDescriptor(
                    name='mock_read_write_stream.read',
                    consumer_group='mock_read_write_stream'
                ),
                write_stream=WriteStreamDescriptor(
                    name='mock_read_write_stream.write'
                )
            )
        },
        server=ServerConfig(
            streams=StreamsConfig(
                stream_manager='mock_engine.MockStreamManager',
                delay_auto_start_seconds=0
            ),
            logging=LoggingConfig(
                log_level="DEBUG", log_path="work/logs/test/")
        )
    )