コード例 #1
0
async def test_read_write_stream_new_queue(
        monkeypatch,
        mock_app_config,
        mock_plugin_config  # noqa: F811
):
    payload = MockData("ok")
    expected = MockResult("ok: ok")
    setup_mocks(monkeypatch)
    monkeypatch.setattr(MockEventHandler, 'input_payload', payload)
    monkeypatch.setattr(MockEventHandler, 'expected_result', expected)
    monkeypatch.setattr(
        MockEventHandler, 'test_track_ids', {
            'track.operation_id': 'test_operation_id',
            'track.request_id': 'test_request_id',
            'track.request_ts': '2020-02-05T17:07:37.771396+00:00',
            'track.session_id': 'test_session_id',
            'stream.name': 'test_stream',
            'stream.msg_id': '0000000000-0',
            'stream.consumer_group': 'test_group',
            'event.app': 'mock_app.test'
        })
    monkeypatch.setattr(MockStreamManager, 'test_payload', payload)
    mock_app_config.events['mock_read_write_stream'].write_stream.queues = \
        ['custom']
    engine = await create_engine(app_config=mock_app_config,
                                 plugin=mock_plugin_config)
    monkeypatch.setattr(engine, 'stream_manager',
                        MockStreamManager(address='test'))
    res = await engine.read_stream(event_name='mock_read_write_stream',
                                   test_mode=True)
    assert res == expected
    assert engine.stream_manager.write_stream_name == 'mock_read_write_stream.write.custom'
    assert engine.stream_manager.write_stream_queue == 'custom'
    assert engine.stream_manager.write_stream_payload == expected
    await engine.stop()
コード例 #2
0
async def test_write_stream_batch(monkeypatch, mock_app_config,
                                  mock_plugin_config):  # noqa: F811
    payload = "ok"
    expected = MockData("stream: ok.3")
    setup_mocks(monkeypatch)
    monkeypatch.setattr(MockEventHandler, 'input_payload', payload)
    monkeypatch.setattr(MockEventHandler, 'expected_result', expected)
    monkeypatch.setattr(MockStreamManager, 'test_payload', payload)
    monkeypatch.setattr(MockEventHandler, 'test_track_ids', None)
    engine = await create_engine(app_config=mock_app_config,
                                 plugin=mock_plugin_config)
    stream_manager = MockStreamManager(address='test')
    monkeypatch.setattr(engine, 'stream_manager', stream_manager)
    event_info = mock_app_config.events['mock_write_stream_event']
    await invoke_execute(engine=engine,
                         from_app=engine.app_config,
                         event_name='mock_spawn_event',
                         query_args={},
                         payload=payload,
                         expected=expected,
                         track_ids={
                             "track.request_id": "test_request_id",
                             "track.request_ts":
                             "2020-02-05T17:07:37.771396+00:00",
                             "track.session_id": "test_session_id"
                         })
    assert stream_manager.write_stream_name == event_info.write_stream.name
    assert stream_manager.write_stream_payload == expected
    assert stream_manager.write_target_max_len == 10
    await engine.stop()
コード例 #3
0
async def test_read_stream_event_fail_and_process_next(
        monkeypatch, mock_app_config, mock_plugin_config):  # noqa: F811
    setup_mocks(monkeypatch)

    payload = MockData("cancel")
    expected = MockResult("none")
    monkeypatch.setattr(MockEventHandler, 'input_payload', payload)
    monkeypatch.setattr(MockEventHandler, 'expected_result', expected)
    monkeypatch.setattr(MockStreamManager, 'test_payload', payload)
    engine = await create_engine(app_config=mock_app_config,
                                 plugin=mock_plugin_config)
    monkeypatch.setattr(engine, 'stream_manager',
                        MockStreamManager(address='test'))
    res = await engine.read_stream(event_name='mock_stream_timeout',
                                   test_mode=True)
    assert isinstance(res, asyncio.CancelledError)

    payload = MockData("fail")
    expected = MockResult("none")
    monkeypatch.setattr(MockEventHandler, 'input_payload', payload)
    monkeypatch.setattr(MockEventHandler, 'expected_result', expected)
    monkeypatch.setattr(MockStreamManager, 'test_payload', payload)
    engine = await create_engine(app_config=mock_app_config,
                                 plugin=mock_plugin_config)
    monkeypatch.setattr(engine, 'stream_manager',
                        MockStreamManager(address='test'))
    res = await engine.read_stream(event_name='mock_stream_timeout',
                                   test_mode=True)
    assert isinstance(res, ValueError)

    payload = MockData("ok")
    expected = MockResult("ok: ok")
    monkeypatch.setattr(MockEventHandler, 'input_payload', payload)
    monkeypatch.setattr(MockEventHandler, 'expected_result', expected)
    monkeypatch.setattr(MockStreamManager, 'test_payload', payload)
    res = await engine.read_stream(event_name='mock_stream_timeout',
                                   test_mode=True)
    assert res == expected

    await engine.stop()
コード例 #4
0
async def test_read_write_stream_multiple_queues_propagate(
        monkeypatch,
        mock_app_config,
        mock_plugin_config  # noqa: F811
):
    payload = MockData("ok")
    expected = MockResult("ok: ok")
    setup_mocks(monkeypatch)
    monkeypatch.setattr(MockEventHandler, 'input_payload', payload)
    monkeypatch.setattr(MockEventHandler, 'expected_result', expected)
    monkeypatch.setattr(
        MockEventHandler, 'test_track_ids', {
            'track.operation_id': 'test_operation_id',
            'track.request_id': 'test_request_id',
            'track.request_ts': '2020-02-05T17:07:37.771396+00:00',
            'track.session_id': 'test_session_id',
            'stream.name': 'test_stream',
            'stream.msg_id': '0000000000-0',
            'stream.consumer_group': 'test_group',
            'event.app': 'mock_app.test'
        })
    monkeypatch.setattr(MockStreamManager, 'test_payload', payload)
    monkeypatch.setattr(MockStreamManager, 'test_queue',
                        None)  # Will use last part of stream name
    mock_app_config.events['mock_read_write_stream'].read_stream.queues = \
        ['q1', 'q2']
    mock_app_config.events['mock_read_write_stream'].write_stream.queues = \
        ['q3', 'q4']
    mock_app_config.events['mock_read_write_stream'].write_stream.queue_strategy = \
        StreamQueueStrategy.PROPAGATE
    engine = await create_engine(app_config=mock_app_config,
                                 plugin=mock_plugin_config)
    monkeypatch.setattr(engine, 'stream_manager',
                        MockStreamManager(address='test'))
    res = await engine.read_stream(event_name='mock_read_write_stream',
                                   test_mode=True)
    assert res == expected
    assert engine.stream_manager.write_stream_name == 'mock_read_write_stream.write.q4'
    assert engine.stream_manager.write_stream_queue == 'q2'
    assert engine.stream_manager.write_stream_payload == expected
    assert MockStreamManager.last_read_stream_names[-2:] == \
        ['mock_read_write_stream.read.q1', 'mock_read_write_stream.read.q2']
    assert MockStreamManager.last_read_queue_names[-2:] == \
        ['q1', 'q2']
    assert MockStreamManager.last_write_stream_names[-4:] == [
        'mock_read_write_stream.write.q3', 'mock_read_write_stream.write.q4',
        'mock_read_write_stream.write.q3', 'mock_read_write_stream.write.q4'
    ]
    assert MockStreamManager.last_write_queue_names[-4:] == \
        ['q1', 'q1', 'q2', 'q2']
    await engine.stop()
コード例 #5
0
async def test_read_stream_failed(monkeypatch, mock_app_config,
                                  mock_plugin_config):  # noqa: F811
    payload = MockData("fail")
    setup_mocks(monkeypatch)
    monkeypatch.setattr(MockEventHandler, 'input_payload', payload)
    monkeypatch.setattr(MockEventHandler, 'expected_result', None)
    monkeypatch.setattr(MockStreamManager, 'test_payload', payload)
    engine = await create_engine(app_config=mock_app_config,
                                 plugin=mock_plugin_config)
    monkeypatch.setattr(engine, 'stream_manager',
                        MockStreamManager(address='test'))
    res = await engine.read_stream(event_name='mock_stream_event',
                                   test_mode=True)
    assert isinstance(res, ValueError)
    await engine.stop()
コード例 #6
0
async def test_read_stream_timeout_ok(monkeypatch, mock_app_config,
                                      mock_plugin_config):  # noqa: F811
    payload = MockData("ok")
    expected = MockResult("ok: ok")
    setup_mocks(monkeypatch)
    monkeypatch.setattr(MockEventHandler, 'input_payload', payload)
    monkeypatch.setattr(MockEventHandler, 'expected_result', expected)
    monkeypatch.setattr(MockStreamManager, 'test_payload', payload)
    engine = await create_engine(app_config=mock_app_config,
                                 plugin=mock_plugin_config)
    monkeypatch.setattr(engine, 'stream_manager',
                        MockStreamManager(address='test'))
    res = await engine.read_stream(event_name='mock_stream_timeout',
                                   test_mode=True)
    assert res == expected
    await engine.stop()
コード例 #7
0
async def test_service_loop(monkeypatch, mock_app_config,
                            mock_plugin_config):  # noqa: F811
    payload = "stream: service.0"
    expected = MockData("stream: service.0")
    setup_mocks(monkeypatch)
    monkeypatch.setattr(MockEventHandler, 'input_payload', payload)
    monkeypatch.setattr(MockEventHandler, 'expected_result', expected)
    monkeypatch.setattr(MockStreamManager, 'test_payload', payload)
    monkeypatch.setattr(MockEventHandler, 'test_track_ids', None)
    engine = await create_engine(app_config=mock_app_config,
                                 plugin=mock_plugin_config)
    monkeypatch.setattr(engine, 'stream_manager',
                        MockStreamManager(address='test'))
    res = await engine.service_loop(event_name='mock_service_event',
                                    test_mode=True)
    assert res == expected
    await engine.stop()
コード例 #8
0
async def test_read_stream(monkeypatch, mock_app_config,
                           mock_plugin_config):  # noqa: F811
    payload = MockData("ok")
    expected = MockResult("ok: ok")
    setup_mocks(monkeypatch)
    from mock_app import mock_event_dataobject_payload
    monkeypatch.setattr(MockEventHandler, 'input_payload', payload)
    monkeypatch.setattr(MockEventHandler, 'call_function',
                        mock_event_dataobject_payload.entry_point)
    monkeypatch.setattr(MockStreamManager, 'test_payload', payload)
    engine = await create_engine(app_config=mock_app_config,
                                 plugin=mock_plugin_config)
    monkeypatch.setattr(engine, 'stream_manager',
                        MockStreamManager(address='test'))
    res = await engine.read_stream(event_name='mock_stream_event',
                                   test_mode=True)
    assert res == expected
    await engine.stop()
コード例 #9
0
async def test_service_loop_timeout(monkeypatch, mock_app_config,
                                    mock_plugin_config):  # noqa: F811
    payload = MockData("timeout")
    expected = MockData("stream: service.1")
    setup_mocks(monkeypatch)
    monkeypatch.setattr(MockEventHandler, 'input_payload', payload)
    monkeypatch.setattr(MockEventHandler, 'expected_result', expected)
    monkeypatch.setattr(MockStreamManager, 'test_payload', payload)
    monkeypatch.setattr(MockEventHandler, 'test_track_ids', None)
    engine = await create_engine(app_config=mock_app_config,
                                 plugin=mock_plugin_config)
    monkeypatch.setattr(engine, 'stream_manager',
                        MockStreamManager(address='test'))
    res = await engine.service_loop(event_name='mock_service_timeout',
                                    test_mode=True)
    # Result could be TimeoutError ot CancelledError depending on execution environment
    assert isinstance(res, asyncio.TimeoutError) or isinstance(
        res, asyncio.CancelledError)
    await engine.stop()